diff --git a/primary/.gitignore b/primary/.gitignore
deleted file mode 100644
index c4c53c804943031be0c755915d85c53e73beca7b..0000000000000000000000000000000000000000
--- a/primary/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/var
diff --git a/primary/app.js b/primary/app.js
deleted file mode 100644
index 9aee24b82fa72d8d1a29753e3a6dcf17d2903bc5..0000000000000000000000000000000000000000
--- a/primary/app.js
+++ /dev/null
@@ -1,60 +0,0 @@
-const        path = require('path'),
-fs = require('fs'),
-url = require('url'),
-wsapi = require('./lib/wsapi.js'),
-httputils = require('./lib/httputils.js'),
-webfinger = require('./lib/webfinger.js'),
-sessions = require('cookie-sessions'),
-secrets = require('./lib/secrets.js');
-
-// create the var directory if it doesn't exist
-var VAR_DIR = path.join(__dirname, "var");
-try { fs.mkdirSync(VAR_DIR, 0755); } catch(e) { }
-
-const STATIC_DIR = path.join(__dirname, "static");
-
-const COOKIE_SECRET = secrets.hydrateSecret('cookie_secret', VAR_DIR);
-
-function handler(request, response, next) {
-    // dispatch!
-    var urlpath = url.parse(request.url).pathname;
-
-    if (urlpath === '/sign_in') {
-        request.url = "/dialog/index.html";
-        next();
-    } else if (/^\/wsapi\/\w+$/.test(urlpath)) {
-        try {
-            var method = path.basename(urlpath);
-            wsapi[method](request, response);
-        } catch(e) {
-            var errMsg = "oops, error executing wsapi method: " + method + " (" + e.toString() +")";
-            console.log(errMsg);
-            httputils.fourOhFour(response, errMsg);
-        }
-    } else if (/^\/users\/[^\/]+.xml$/.test(urlpath)) {
-        var identity = path.basename(urlpath).replace(/.xml$/, '').replace(/^acct:/, '');
-
-        webfinger.renderUserPage(identity, function (resultDocument) {
-            if (resultDocument === undefined) {
-                httputils.fourOhFour(response, "I don't know anything about: " + identity + "\n");
-            } else {
-                httputils.xmlResponse(response, resultDocument);
-            }
-        });
-    } else if (urlpath === "/code_update") {
-        console.log("code updated.  shutting down.");
-        process.exit();
-    }
-};
-
-exports.varDir = VAR_DIR;
-
-exports.setup = function(app) {
-    var week = (7 * 24 * 60 * 60 * 1000);
-    app.use(sessions({
-        secret: COOKIE_SECRET,
-        session_key: "primary_state",
-        path: '/'
-    }));
-    app.use(handler);
-};
diff --git a/primary/lib/db.js b/primary/lib/db.js
deleted file mode 100644
index e30356da5db9df584a0ee27061764ee12d78811b..0000000000000000000000000000000000000000
--- a/primary/lib/db.js
+++ /dev/null
@@ -1,141 +0,0 @@
-const sqlite = require('sqlite'),
-        path = require('path');
-
-var db = new sqlite.Database();
-
-db.open(path.join(path.dirname(__dirname), "var", "userdb.sqlite"), function (error) {
-  if (error) {
-    console.log("Couldn't open database: " + error);
-    throw error;
-  }
-
-  function createTable(name, sql) {
-    db.execute(sql, function (error, rows) {
-      if (error) {
-        console.log("Couldn't create " + name + " table: " + error);
-        throw error;
-      }
-    });
-  }
-
-  createTable('users',  "CREATE TABLE IF NOT EXISTS users  ( id INTEGER PRIMARY KEY, name TEXT, password TEXT )");// NB "password" is SHA1 of actual PW
-  createTable('keys',   "CREATE TABLE IF NOT EXISTS keys   ( id INTEGER PRIMARY KEY, user INTEGER, key TEXT, expires INTEGER )");
-});
-
-function executeTransaction(statements, cb) {
-  function executeTransaction2(statements, cb) {
-    if (statements.length == 0) cb();
-    else {
-      var s = statements.shift();
-      db.execute(s[0], s[1], function(err, rows) {
-        if (err) cb(err);
-        else executeTransaction2(statements, cb);
-      });
-    }
-  }
-
-  db.execute('BEGIN', function(err, rows) {
-    executeTransaction2(statements, function(err) {
-      if (err) cb(err);
-      else db.execute('COMMIT', function(err, rows) {
-        cb(err);
-      });
-    });
-  });
-}
-
-exports.usernameToUserID = function(username, cb) {
-  db.execute(
-    "SELECT id FROM users WHERE name = ?",
-    [ username ],
-    function (err, rows) {
-      if (rows && rows.length == 1) {
-        cb(rows[0].id);
-      } else {
-        if (err) console.log("database error: " + err);
-        cb(undefined);
-      }
-    });
-}
-
-
-
-exports.userIDToUsername = function(userid, cb) {
-  db.execute(
-    "SELECT name FROM users WHERE id = ?",
-    [ userid ],
-    function (err, rows) {
-      if (rows && rows.length == 1) {
-        cb(rows[0].name);
-      } else {
-        if (err) console.log("database error: " + err);
-        cb(undefined);
-      }
-    });
-}
-
-exports.usernameKnown = function(username, cb) {
-  db.execute(
-    "SELECT id FROM users WHERE name = ?",
-    [ username ],
-    function(error, rows) {
-      cb(rows && rows.length > 0);
-    });
-};
-
-/* Given a username, adds a public key to it */
-exports.addKeyToAccount = function(userID, pubkey, cb) {
-  executeTransaction([
-     [ "INSERT INTO keys (user, key, expires) VALUES(?,?,?)",
-       [ userID, pubkey, ((new Date()).getTime() + (14 * 24 * 60 * 60 * 1000)) ]
-     ]
-    ], function (error) {
-       if (error) cb(error);
-       else cb();
-  });
-}
-
-/* create a user account, with no saved keys */
-exports.create_user = function(username, password, cb) {
-
-  if (exports.usernameKnown(username, function(known) {
-    if (known) cb("email already exists!");
-    else {
-      executeTransaction([
-        [ "INSERT INTO users (name, password) VALUES(?,?)", [ username, password ] ]
-      ], function (error) {
-        if (error) cb(error);
-        else cb();
-      });
-    }
-  }));
-};
-
-/* check username and password; returns true if the password hash matches. */
-exports.checkAuth = function(username, pass, cb) {
-  db.execute("SELECT id FROM users WHERE name = ? AND password = ?",
-             [ username, pass ],
-             function (error, rows) {
-                if (rows.length == 1) {
-                  cb(rows[0].id);
-                } else {
-                  cb(null);
-                }
-             });
-};
-
-/* Given a username return an array of public keys for it */
-exports.pubkeysForUsername = function(username, cb) {
-  db.execute('SELECT keys.key FROM keys, users WHERE users.name = ? AND keys.user = users.id',
-     [ username ],
-     function(err, rows) {
-       var keys = undefined;
-       if (!err && rows && rows.length) {
-         keys = [ ];
-         for (var i = 0; i < rows.length; i++) keys.push(rows[i].key);
-       }
-       cb(keys);
-     });
-};
-
-/* TODO: write flush_keys */
\ No newline at end of file
diff --git a/primary/lib/httputils.js b/primary/lib/httputils.js
deleted file mode 100644
index 669cc049449a9958eee9958726404a01ea5fd0f8..0000000000000000000000000000000000000000
--- a/primary/lib/httputils.js
+++ /dev/null
@@ -1,52 +0,0 @@
-// various little utilities to make crafting boilerplate responses
-// simple
-
-exports.fourOhFour = function(resp, reason)
-{
-  resp.writeHead(404, {"Content-Type": "text/plain"});
-  resp.write("Not Found");
-  if (reason) {
-    resp.write(": " + reason);
-  }
-  resp.end();
-};
-
-exports.serverError = function(resp, reason)
-{
-  resp.writeHead(500, {"Content-Type": "text/plain"});
-  if (reason) resp.write(reason);
-  resp.end();
-};
-
-exports.badRequest = function(resp, reason)
-{
-  resp.writeHead(400, {"Content-Type": "text/plain"});
-  resp.write("Bad Request");
-  if (reason) {
-    resp.write(": " + reason);
-  }
-  resp.end();
-};
-
-exports.jsonResponse = function(resp, obj)
-{
-  resp.writeHead(200, {"Content-Type": "application/json"});
-  if (obj !== undefined) resp.write(JSON.stringify(obj));
-  resp.end();
-};
-
-exports.xmlResponse = function(resp, doc)
-{
-  resp.writeHead(200, {"Content-Type": "text/xml"});
-  if (doc !== undefined) resp.write(doc);
-  resp.end();
-};
-
-exports.checkGetArgs = function(req, args) {
-    [ "email", "pass", "pubkey" ].forEach(function(k) {
-      if (!urlobj.hasOwnProperty(k) || typeof urlobj[k] !== 'string') {
-        throw k;
-      }
-    });
-
-};
diff --git a/primary/lib/secrets.js b/primary/lib/secrets.js
deleted file mode 100644
index 6923a989954b06fd4ffa1bb3ab1d9de94251e9ea..0000000000000000000000000000000000000000
--- a/primary/lib/secrets.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const path = require('path'),
-        fs = require('fs');
-
-function generateSecret() {
-  var str = "";
-  const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-  for (var i=0; i < 128; i++) {
-    str += alphabet.charAt(Math.floor(Math.random() * alphabet.length));
-  }
-  return str;
-}
-
-exports.hydrateSecret = function(name, dir) {
-  var p = path.join(dir, name + ".sekret");
-  var fileExists = false;
-  var secret = undefined;
-    
-  try{ secret = fs.readFileSync(p).toString(); } catch(e) {};
-
-  if (secret === undefined) {
-    console.log("Generating server secret ("+name+")...");
-    secret = generateSecret();
-    fs.writeFileSync(p, secret);
-  }
-  return secret;
-};
diff --git a/primary/lib/webfinger.js b/primary/lib/webfinger.js
deleted file mode 100644
index dae0541afbdf67a25ffda3829d73bbcbea492b6e..0000000000000000000000000000000000000000
--- a/primary/lib/webfinger.js
+++ /dev/null
@@ -1,22 +0,0 @@
-const  db = require('./db.js'),
-       fs = require('fs'),
- mustache = require('mustache'),
-     path = require('path');
-
-const TEMPLATE = fs.readFileSync(path.join(__dirname, "webfinger_template.xml")).toString();
-
-exports.renderUserPage = function(identity, cb) {
-
-  var idParts = identity.split("@");
-  var userpart = idParts[0];
-
-  db.pubkeysForUsername(userpart, function(keys) {
-    if (!keys || keys.length === 0) cb(undefined);
-    else {
-      cb(mustache.to_html(TEMPLATE, {
-        keys: keys,
-        email: identity
-      }));
-    }
-  });
-};
diff --git a/primary/lib/webfinger_template.xml b/primary/lib/webfinger_template.xml
deleted file mode 100644
index 99d568b69d47ae0cd45f4f2dbbb0936efc8d0a99..0000000000000000000000000000000000000000
--- a/primary/lib/webfinger_template.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'
-     xmlns:hm='http://host-meta.net/xrd/1.0'>
-  <Subject>acct:{{email}}</Subject>
-{{#keys}}
-  <Link
-    rel='public-key'
-    value="{{.}}"
-  />
-{{/keys}}
-</XRD>
diff --git a/primary/lib/wsapi.js b/primary/lib/wsapi.js
deleted file mode 100644
index 7de31c829bcea6144e8cb2a6e67543c6651d72de..0000000000000000000000000000000000000000
--- a/primary/lib/wsapi.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// a module which implements the primary authority web server api.
-// every export is a function which is a WSAPI method handler
-
-const     db = require('./db.js'),
-         url = require('url'),
-   httputils = require('./httputils.js');
-
-function logRequest(method, args) {
-  console.log("WSAPI ("+method+") " + (args ? JSON.stringify(args) : "")); 
-}
-
-function checkParams(getArgs, resp, params) {
-  try {
-    params.forEach(function(k) {
-      if (!getArgs.hasOwnProperty(k) || typeof getArgs[k] !== 'string') {
-        throw k;
-      }
-    });
-  } catch(e) {
-    httputils.badRequest(resp, "missing '" + e + "' argument");
-    return false;
-  }
-  return true;
-}
-
-function isAuthed(req) {
-  return (req.session && typeof req.session.userid === 'number');
-}
-
-function checkAuthed(req, resp) {
-  if (!isAuthed(req)) {
-    httputils.badRequest(resp, "requires authentication");
-    return false;
-  }
-  return true;
-}
-
-function normalizeUsername(uname) {
-  if (typeof uname === "string") return uname.toLowerCase();
-  return undefined;
-}
-
-/* checks to see if a username address is known to the server
- * takes 'username' as a GET argument */
-exports.username_available = function(req, resp) {
-  // get inputs from get data!
-  var username = normalizeUsername(url.parse(req.url, true).query['username']);
-  logRequest("username_available", {username: username});
-  db.usernameKnown(username, function(known) { 
-    resp.json(known);
-  });
-};
-
-/* Account creation.  Takes a username and password and puts it
- * into the database. */
-exports.create_user = function(req, resp) {
-  var urlobj = url.parse(req.url, true);
-  var getArgs = urlobj.query;
-
-  if (!checkParams(getArgs, resp, [ "username", "pass" ])) return;
-
-  logRequest("create_user", getArgs);
-
-  try {
-    var normalized_username = normalizeUsername(getArgs["username"]);
-    db.create_user(normalized_username, getArgs["pass"], function(error) {
-      if (error) {
-        logRequest("create_user", error);
-        resp.json(undefined);
-      } else {
-        if (!req.session) req.session = {};
-        db.usernameToUserID(normalized_username, function(userid) {
-          req.session.userid = userid;
-          resp.json({ username: normalized_username, id: userid });
-        });
-      }
-    });
-  } catch(e) {
-    // we should differentiate tween' 400 and 500 here.
-    httputils.badRequest(resp, e.toString());
-  }
-};
-
-exports.authenticate_user = function(req, resp) {
-  var urlobj = url.parse(req.url, true);
-  var getArgs = urlobj.query;
-
-  logRequest("authenticate_user", getArgs);
-  if (!checkParams(getArgs, resp, [ "username", "pass" ])) return;
-  var normalized_username = normalizeUsername(getArgs.username);
-  db.checkAuth(normalized_username, getArgs.pass, function(userid) {
-    logRequest("authenticate_user", "login attempt status: " + userid);
-    if (userid) {
-      if (!req.session) req.session = {};
-      req.session.userid = userid;
-    }
-    var rp = {username: normalized_username, status: userid != null};
-    resp.json(rp);
-  });
-};
-
-exports.signout = function(req, resp) {
-
-  if (req.session) {
-    req.session.userid = undefined;// can I reference undefined safely like this?
-  }
-  resp.json({});
-};
-
-exports.add_key = function (req, resp) {
-  var urlobj = url.parse(req.url, true);
-  var getArgs = urlobj.query;
-
-  if (!checkParams(getArgs, resp, [ "pubkey" ])) {
-    logRequest("add_key", "Missing required pubkey");
-    return;
-  }
-  if (!checkAuthed(req, resp)) {
-    logRequest("add_key", "Not authed - req.session is " + req.session);
-    return;
-  }
-
-  logRequest("add_key", getArgs);
-  db.addKeyToAccount(req.session.userid, getArgs.pubkey, function (rv) {
-    logRequest("add_key", "Success");
-    resp.json(rv);
-  });
-};
-
-exports.am_authed = function(req,resp) {
-  logRequest("am_authed", req.session);
-  resp.json(isAuthed(req));
-};
-
-exports.current_username = function(req,resp) {
-  logRequest("current_username", req.session);
-  try {
-    if (isAuthed(req)) {
-      logRequest("current_username", "isAuthed");
-      db.userIDToUsername(req.session.userid, function(username) {
-        if (username !== undefined) {
-          logRequest("current_username", username);
-          resp.json(username);
-        } else {
-          logRequest("current_username", "userid doesn't exist: " + req.session.userid);
-          req.session.userid = undefined;
-          resp.json(false);
-        }
-      });
-    } else {
-      logRequest("current_username", "notAuthed");
-      resp.json(false);
-    }
-  } catch (e) {
-    console.log(e);
-  }
-};
-
diff --git a/primary/run.js b/primary/run.js
deleted file mode 100755
index 228d290925afbb7cc614b02ad39143dd0bb4660c..0000000000000000000000000000000000000000
--- a/primary/run.js
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env node
-
-var   sys = require("sys"),
-     path = require("path"),
-       fs = require("fs"),
-  express = require("express");
-
-var PRIMARY_HOST = "127.0.0.1";
-var PRIMARY_PORT = 62900;
-
-var handler = require("./app.js");
-
-var app = express.createServer();
-
-app.use(express.logger({
-    stream: fs.createWriteStream(path.join(handler.varDir, "server.log"))
-}));
-
-// let the specific server interact directly with the connect server to register their middleware
-if (handler.setup) handler.setup(app);
-
-// use the connect 'static' middleware for serving of static files (cache headers, HTTP range, etc)
-app.use(express.static(path.join(__dirname, "static")));
-
-app.listen(PRIMARY_PORT, PRIMARY_HOST);
diff --git a/primary/static/.well-known/host-meta b/primary/static/.well-known/host-meta
deleted file mode 100644
index f87cbf8918335b2ee10a25339b0bdfecd0707e6d..0000000000000000000000000000000000000000
--- a/primary/static/.well-known/host-meta
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-
-<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0' 
-     xmlns:hm='http://host-meta.net/xrd/1.0'>
-
-  <hm:Host xmlns='http://host-meta.net/xrd/1.0'>eyedee.me</hm:Host>
-
-  <Link rel='lrdd' template='http://primary.eyedee.me/users/{uri}.xml'></Link>
-
-  <Link rel='other' value='something-different'></Link>
-</XRD>
diff --git a/primary/static/include.js b/primary/static/include.js
deleted file mode 100644
index 5a12ee5ad784818d8ff227246aa905b54249e0e3..0000000000000000000000000000000000000000
--- a/primary/static/include.js
+++ /dev/null
@@ -1,585 +0,0 @@
-// this is the file that the RP includes to shim in the
-// navigator.id.getVerifiedEmail() function
-
-if (!navigator.id) {
-  navigator.id = {};
-}
-
-if (!navigator.id.getVerifiedEmail || navigator.id._getVerifiedEmailIsShimmed)
-{
-  // local embedded copy of jschannel: http://github.com/mozilla/jschannel 
-  var Channel = (function() {
-    // current transaction id, start out at a random *odd* number between 1 and a million
-    // There is one current transaction counter id per page, and it's shared between
-    // channel instances.  That means of all messages posted from a single javascript
-    // evaluation context, we'll never have two with the same id.
-    var s_curTranId = Math.floor(Math.random()*1000001);
-
-    // no two bound channels in the same javascript evaluation context may have the same origin & scope.
-    // futher if two bound channels have the same scope, they may not have *overlapping* origins
-    // (either one or both support '*').  This restriction allows a single onMessage handler to efficiently
-    // route messages based on origin and scope.  The s_boundChans maps origins to scopes, to message
-    // handlers.  Request and Notification messages are routed using this table.
-    // Finally, channels are inserted into this table when built, and removed when destroyed.
-    var s_boundChans = { };
-
-    // add a channel to s_boundChans, throwing if a dup exists
-    function s_addBoundChan(origin, scope, handler) {
-      // does she exist?
-      var exists = false;
-      if (origin === '*') {
-        // we must check all other origins, sadly.
-        for (var k in s_boundChans) {
-          if (!s_boundChans.hasOwnProperty(k)) continue;
-          if (k === '*') continue;
-          if (typeof s_boundChans[k][scope] === 'object') {
-            exists = true;
-          }
-        }
-      } else {
-        // we must check only '*'
-        if ((s_boundChans['*'] && s_boundChans['*'][scope]) ||
-            (s_boundChans[origin] && s_boundChans[origin][scope]))
-        {
-          exists = true;
-        }
-      }
-      if (exists) throw "A channel already exists which overlaps with origin '"+ origin +"' and has scope '"+scope+"'";
-
-      if (typeof s_boundChans[origin] != 'object') s_boundChans[origin] = { };
-      s_boundChans[origin][scope] = handler;
-    }
-
-    function s_removeBoundChan(origin, scope) {
-      delete s_boundChans[origin][scope];
-      // possibly leave a empty object around.  whatevs.
-    }
-
-    function s_isArray(obj) {
-      if (Array.isArray) return Array.isArray(obj);
-      else {
-        return (obj.constructor.toString().indexOf("Array") != -1);
-      }
-    }
-
-    // No two outstanding outbound messages may have the same id, period.  Given that, a single table
-    // mapping "transaction ids" to message handlers, allows efficient routing of Callback, Error, and
-    // Response messages.  Entries are added to this table when requests are sent, and removed when
-    // responses are received.
-    var s_transIds = { };
-
-    // class singleton onMessage handler
-    // this function is registered once and all incoming messages route through here.  This
-    // arrangement allows certain efficiencies, message data is only parsed once and dispatch
-    // is more efficient, especially for large numbers of simultaneous channels.
-    var s_onMessage = function(e) {
-      var m = JSON.parse(e.data);
-      if (typeof m !== 'object') return;
-
-      var o = e.origin;
-      var s = null;
-      var i = null;
-      var meth = null;
-
-      if (typeof m.method === 'string') {
-        var ar = m.method.split('::');
-        if (ar.length == 2) {
-          s = ar[0];
-          meth = ar[1];
-        } else {
-          meth = m.method;
-        }
-      }
-
-      if (typeof m.id !== 'undefined') i = m.id;
-
-      // o is message origin
-      // m is parsed message
-      // s is message scope
-      // i is message id (or null)
-      // meth is unscoped method name
-      // ^^ based on these factors we can route the message
-
-      // if it has a method it's either a notification or a request,
-      // route using s_boundChans
-      if (typeof meth === 'string') {
-        if (s_boundChans[o] && s_boundChans[o][s]) {
-          s_boundChans[o][s](o, meth, m);
-        } else if (s_boundChans['*'] && s_boundChans['*'][s]) {
-          s_boundChans['*'][s](o, meth, m);
-        }
-      }
-      // otherwise it must have an id (or be poorly formed
-      else if (typeof i != 'undefined') {
-        if (s_transIds[i]) s_transIds[i](o, meth, m);
-      }
-    };
-
-    // Setup postMessage event listeners
-    if (window.addEventListener) window.addEventListener('message', s_onMessage, false);
-    else if(window.attachEvent) window.attachEvent('onmessage', s_onMessage);
-
-    /* a messaging channel is constructed from a window and an origin.
-     * the channel will assert that all messages received over the
-     * channel match the origin
-     *
-     * Arguments to Channel.build(cfg):
-     *
-     *   cfg.window - the remote window with which we'll communication
-     *   cfg.origin - the expected origin of the remote window, may be '*'
-     *                which matches any origin
-     *   cfg.scope  - the 'scope' of messages.  a scope string that is
-     *                prepended to message names.  local and remote endpoints
-     *                of a single channel must agree upon scope. Scope may
-     *                not contain double colons ('::').
-     *   cfg.debugOutput - A boolean value.  If true and window.console.log is
-     *                a function, then debug strings will be emitted to that
-     *                function.
-     *   cfg.debugOutput - A boolean value.  If true and window.console.log is
-     *                a function, then debug strings will be emitted to that
-     *                function.
-     *   cfg.postMessageObserver - A function that will be passed two arguments,
-     *                an origin and a message.  It will be passed these immediately
-     *                before messages are posted.
-     *   cfg.gotMessageObserver - A function that will be passed two arguments,
-     *                an origin and a message.  It will be passed these arguments
-     *                immediately after they pass scope and origin checks, but before
-     *                they are processed.
-     *   cfg.onReady - A function that will be invoked when a channel becomes "ready",
-     *                this occurs once both sides of the channel have been
-     *                instantiated and an application level handshake is exchanged.
-     *                the onReady function will be passed a single argument which is
-     *                the channel object that was returned from build().
-     */
-    return {
-      build: function(cfg) {
-        var debug = function(m) {
-          if (cfg.debugOutput && window.console && window.console.log) {
-            // try to stringify, if it doesn't work we'll let javascript's built in toString do its magic
-            try { if (typeof m !== 'string') m = JSON.stringify(m); } catch(e) { }
-            console.log("["+chanId+"] " + m);
-          }
-        }
-
-        /* browser capabilities check */
-        if (!window.postMessage) throw("jschannel cannot run this browser, no postMessage");
-        if (!window.JSON || !window.JSON.stringify || ! window.JSON.parse) {
-          throw("jschannel cannot run this browser, no JSON parsing/serialization");
-        }
-
-        /* basic argument validation */
-        if (typeof cfg != 'object') throw("Channel build invoked without a proper object argument");
-
-        if (!cfg.window || !cfg.window.postMessage) throw("Channel.build() called without a valid window argument");
-
-        /* we'd have to do a little more work to be able to run multiple channels that intercommunicate the same
-         * window...  Not sure if we care to support that */
-        if (window === cfg.window) throw("target window is same as present window -- not allowed");
-
-        // let's require that the client specify an origin.  if we just assume '*' we'll be
-        // propagating unsafe practices.  that would be lame.
-        var validOrigin = false;
-        if (typeof cfg.origin === 'string') {
-          var oMatch;
-          if (cfg.origin === "*") validOrigin = true;
-          // allow valid domains under http and https.  Also, trim paths off otherwise valid origins.
-          else if (null !== (oMatch = cfg.origin.match(/^https?:\/\/(?:[-a-zA-Z0-9\.])+(?::\d+)?/))) {
-            cfg.origin = oMatch[0];
-            validOrigin = true;
-          }
-        }
-
-        if (!validOrigin) throw ("Channel.build() called with an invalid origin");
-
-        if (typeof cfg.scope !== 'undefined') {
-          if (typeof cfg.scope !== 'string') throw 'scope, when specified, must be a string';
-          if (cfg.scope.split('::').length > 1) throw "scope may not contain double colons: '::'"
-        }
-
-        /* private variables */
-        // generate a random and psuedo unique id for this channel
-        var chanId = (function () {
-          var text = "";
-          var alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-          for(var i=0; i < 5; i++) text += alpha.charAt(Math.floor(Math.random() * alpha.length));
-          return text;
-        })();
-
-        // registrations: mapping method names to call objects
-        var regTbl = { };
-        // current oustanding sent requests
-        var outTbl = { };
-        // current oustanding received requests
-        var inTbl = { };
-        // are we ready yet?  when false we will block outbound messages.
-        var ready = false;
-        var pendingQueue = [ ];
-
-        var createTransaction = function(id,origin,callbacks) {
-          var shouldDelayReturn = false;
-          var completed = false;
-
-          return {
-            origin: origin,
-            invoke: function(cbName, v) {
-              // verify in table
-              if (!inTbl[id]) throw "attempting to invoke a callback of a non-existant transaction: " + id;
-              // verify that the callback name is valid
-              var valid = false;
-              for (var i = 0; i < callbacks.length; i++) if (cbName === callbacks[i]) { valid = true; break; }
-              if (!valid) throw "request supports no such callback '" + cbName + "'";
-
-              // send callback invocation
-              postMessage({ id: id, callback: cbName, params: v});
-            },
-            error: function(error, message) {
-              completed = true;
-              // verify in table
-              if (!inTbl[id]) throw "error called for non-existant message: " + id;
-
-              // remove transaction from table
-              delete inTbl[id];
-
-              // send error
-              postMessage({ id: id, error: error, message: message });
-            },
-            complete: function(v) {
-              completed = true;
-              // verify in table
-              if (!inTbl[id]) throw "complete called for non-existant message: " + id;
-              // remove transaction from table
-              delete inTbl[id];
-              // send complete
-              postMessage({ id: id, result: v });
-            },
-            delayReturn: function(delay) {
-              if (typeof delay === 'boolean') {
-                shouldDelayReturn = (delay === true);
-              }
-              return shouldDelayReturn;
-            },
-            completed: function() {
-              return completed;
-            }
-          };
-        }
-
-        var onMessage = function(origin, method, m) {
-          // if an observer was specified at allocation time, invoke it
-          if (typeof cfg.gotMessageObserver === 'function') {
-            // pass observer a clone of the object so that our
-            // manipulations are not visible (i.e. method unscoping).
-            // This is not particularly efficient, but then we expect
-            // that message observers are primarily for debugging anyway.
-            try {
-              cfg.gotMessageObserver(origin, m);
-            } catch (e) {
-              debug("gotMessageObserver() raised an exception: " + e.toString());
-            }
-          }
-
-          // now, what type of message is this?
-          if (m.id && method) {
-            // a request!  do we have a registered handler for this request?
-            if (regTbl[method]) {
-              var trans = createTransaction(m.id, origin, m.callbacks ? m.callbacks : [ ]);
-              inTbl[m.id] = { };
-              try {
-                // callback handling.  we'll magically create functions inside the parameter list for each
-                // callback
-                if (m.callbacks && s_isArray(m.callbacks) && m.callbacks.length > 0) {
-                  for (var i = 0; i < m.callbacks.length; i++) {
-                    var path = m.callbacks[i];
-                    var obj = m.params;
-                    var pathItems = path.split('/');
-                    for (var j = 0; j < pathItems.length - 1; j++) {
-                      var cp = pathItems[j];
-                      if (typeof obj[cp] !== 'object') obj[cp] = { };
-                      obj = obj[cp];
-                    }
-                    obj[pathItems[pathItems.length - 1]] = (function() {
-                      var cbName = path;
-                      return function(params) {
-                        return trans.invoke(cbName, params);
-                      }
-                    })();
-                  }
-                }
-                var resp = regTbl[method](trans, m.params);
-                if (!trans.delayReturn() && !trans.completed()) trans.complete(resp);
-              } catch(e) {
-                // automagic handling of exceptions:
-                var error = "runtime_error";
-                var message = null;
-                // * if its a string then it gets an error code of 'runtime_error' and string is the message
-                if (typeof e === 'string') {
-                  message = e;
-                } else if (typeof e === 'object') {
-                  // either an array or an object
-                  // * if its an array of length two, then  array[0] is the code, array[1] is the error message
-                  if (e && s_isArray(e) && e.length == 2) {
-                    error = e[0];
-                    message = e[1];
-                  }
-                  // * if its an object then we'll look form error and message parameters
-                  else if (typeof e.error === 'string') {
-                    error = e.error;
-                    if (!e.message) message = "";
-                    else if (typeof e.message === 'string') message = e.message;
-                    else e = e.message; // let the stringify/toString message give us a reasonable verbose error string
-                  }
-                }
-
-                // message is *still* null, let's try harder
-                if (message === null) {
-                  try {
-                    message = JSON.stringify(e);
-                  } catch (e2) {
-                    message = e.toString();
-                  }
-                }
-
-                trans.error(error,message);
-              }
-            }
-          } else if (m.id && m.callback) {
-            if (!outTbl[m.id] ||!outTbl[m.id].callbacks || !outTbl[m.id].callbacks[m.callback])
-            {
-              debug("ignoring invalid callback, id:"+m.id+ " (" + m.callback +")");
-            } else {
-              // XXX: what if client code raises an exception here?
-              outTbl[m.id].callbacks[m.callback](m.params);
-            }
-          } else if (m.id) {
-            if (!outTbl[m.id]) {
-              debug("ignoring invalid response: " + m.id);
-            } else {
-              // XXX: what if client code raises an exception here?
-              if (m.error) {
-                (1,outTbl[m.id].error)(m.error, m.message);
-              } else {
-                if (m.result !== undefined) (1,outTbl[m.id].success)(m.result);
-                else (1,outTbl[m.id].success)();
-              }
-              delete outTbl[m.id];
-              delete s_transIds[m.id];
-            }
-          } else if (method) {
-            // tis a notification.
-            if (regTbl[method]) {
-              // yep, there's a handler for that.
-              // transaction is null for notifications.
-              regTbl[method](null, m.params);
-              // if the client throws, we'll just let it bubble out
-              // what can we do?  Also, here we'll ignore return values
-            }
-          }
-        }
-
-        // now register our bound channel for msg routing
-        s_addBoundChan(cfg.origin, ((typeof cfg.scope === 'string') ? cfg.scope : ''), onMessage);
-
-        // scope method names based on cfg.scope specified when the Channel was instantiated
-        var scopeMethod = function(m) {
-          if (typeof cfg.scope === 'string' && cfg.scope.length) m = [cfg.scope, m].join("::");
-          return m;
-        }
-
-        // a small wrapper around postmessage whose primary function is to handle the
-        // case that clients start sending messages before the other end is "ready"
-        var postMessage = function(msg, force) {
-          if (!msg) throw "postMessage called with null message";
-
-          // delay posting if we're not ready yet.
-          var verb = (ready ? "post  " : "queue ");
-          debug(verb + " message: " + JSON.stringify(msg));
-          if (!force && !ready) {
-            pendingQueue.push(msg);
-          } else {
-            if (typeof cfg.postMessageObserver === 'function') {
-              try {
-                cfg.postMessageObserver(cfg.origin, msg);
-              } catch (e) {
-                debug("postMessageObserver() raised an exception: " + e.toString());
-              }
-            }
-
-            cfg.window.postMessage(JSON.stringify(msg), cfg.origin);
-          }
-        }
-
-        var onReady = function(trans, type) {
-          debug('ready msg received');
-          if (ready) throw "received ready message while in ready state.  help!";
-
-          if (type === 'ping') {
-            chanId += '-R';
-          } else {
-            chanId += '-L';
-          }
-
-          obj.unbind('__ready'); // now this handler isn't needed any more.
-          ready = true;
-          debug('ready msg accepted.');
-
-          if (type === 'ping') {
-            obj.notify({ method: '__ready', params: 'pong' });
-          }
-
-          // flush queue
-          while (pendingQueue.length) {
-            postMessage(pendingQueue.pop());
-          }
-
-          // invoke onReady observer if provided
-          if (typeof cfg.onReady === 'function') cfg.onReady(obj);
-        };
-
-        var obj = {
-          // tries to unbind a bound message handler.  returns false if not possible
-          unbind: function (method) {
-            if (regTbl[method]) {
-              if (!(delete regTbl[method])) throw ("can't delete method: " + method);
-              return true;
-            }
-            return false;
-          },
-          bind: function (method, cb) {
-            if (!method || typeof method !== 'string') throw "'method' argument to bind must be string";
-            if (!cb || typeof cb !== 'function') throw "callback missing from bind params";
-
-            if (regTbl[method]) throw "method '"+method+"' is already bound!";
-            regTbl[method] = cb;
-          },
-          call: function(m) {
-            if (!m) throw 'missing arguments to call function';
-            if (!m.method || typeof m.method !== 'string') throw "'method' argument to call must be string";
-            if (!m.success || typeof m.success !== 'function') throw "'success' callback missing from call";
-
-            // now it's time to support the 'callback' feature of jschannel.  We'll traverse the argument
-            // object and pick out all of the functions that were passed as arguments.
-            var callbacks = { };
-            var callbackNames = [ ];
-
-            var pruneFunctions = function (path, obj) {
-              if (typeof obj === 'object') {
-                for (var k in obj) {
-                  if (!obj.hasOwnProperty(k)) continue;
-                  var np = path + (path.length ? '/' : '') + k;
-                  if (typeof obj[k] === 'function') {
-                    callbacks[np] = obj[k];
-                    callbackNames.push(np);
-                    delete obj[k];
-                  } else if (typeof obj[k] === 'object') {
-                    pruneFunctions(np, obj[k]);
-                  }
-                }
-              }
-            };
-            pruneFunctions("", m.params);
-
-            // build a 'request' message and send it
-            var msg = { id: s_curTranId, method: scopeMethod(m.method), params: m.params };
-            if (callbackNames.length) msg.callbacks = callbackNames;
-
-            // insert into the transaction table
-            outTbl[s_curTranId] = { callbacks: callbacks, error: m.error, success: m.success };
-            s_transIds[s_curTranId] = onMessage;
-
-            // increment current id
-            s_curTranId++;
-
-            postMessage(msg);
-          },
-          notify: function(m) {
-            if (!m) throw 'missing arguments to notify function';
-            if (!m.method || typeof m.method !== 'string') throw "'method' argument to notify must be string";
-
-            // no need to go into any transaction table
-            postMessage({ method: scopeMethod(m.method), params: m.params });
-          },
-          destroy: function () {
-            s_removeBoundChan(cfg.origin, ((typeof cfg.scope === 'string') ? cfg.scope : ''));
-            if (window.removeEventListener) window.removeEventListener('message', onMessage, false);
-            else if(window.detachEvent) window.detachEvent('onmessage', onMessage);
-            ready = false;
-            regTbl = { };
-            inTbl = { };
-            outTbl = { };
-            cfg.origin = null;
-            pendingQueue = [ ];
-            debug("channel destroyed");
-            chanId = "";
-          }
-        };
-
-        obj.bind('__ready', onReady);
-        setTimeout(function() {
-          postMessage({ method: scopeMethod('__ready'), params: "ping" }, true);
-        }, 0);
-
-        return obj;
-      }
-    };
-  })();
-
-  function JWTWrapper(jwtBlob) {
-    var obj = {
-      jwt: jwtBlob,
-      email: undefined,
-      audience: undefined,
-      issuer: undefined,
-      "valid-until": undefined,
-      toString: function() { return this.jwt; }
-    };
-    // attempt to decode the middle part of the assertion to populate object keys
-    try {
-      var jwtContents = JSON.parse(window.atob(jwtBlob.split(".")[1]));
-      for (var k in obj) {
-        if (obj.hasOwnProperty(k) && obj[k] === undefined) {
-          if (typeof jwtContents[k] === 'string' || typeof jwtContents[k] === 'number') obj[k] = jwtContents[k];
-        }
-      }
-    } catch(e) {
-      // failure is an option.
-    }
-
-    return obj;
-  }
-
-  var chan = undefined;
-
-  navigator.id.getVerifiedEmail = function(onsuccess, onerror) {
-    var ipServer = "https://eyedee.me"
-    var w = window.open(
-      ipServer + "/sign_in", "_mozid_signin",
-      "menubar=0,location=0,resizable=0,scrollbars=0,status=0,dialog=1,width=600,height=400");
-
-    // clean up a previous channel that never was reaped
-    if (chan) chan.destroy();
-    chan = Channel.build({window: w, origin: ipServer, scope: "mozid"});
-
-    function cleanup() {
-      chan.destroy();
-      chan = undefined;
-      w.close();
-    }
-
-    chan.call({
-      method: "getVerifiedEmail",
-      success: function(rv) {
-        if (onsuccess) {
-          // wrap the raw JWT with a handy dandy object that exposes everything in a readable form
-          onsuccess(JWTWrapper(rv));
-        }
-        cleanup();
-      },
-      error: function(code, msg) {
-        if (onerror) onerror(code, msg);
-        cleanup();
-      }
-    });
-  };
-
-  navigator.id._getVerifiedEmailIsShimmed = true;
-}
diff --git a/primary/static/index.html b/primary/static/index.html
deleted file mode 100644
index efa12b4d229267375ba08062384f82ff829e1626..0000000000000000000000000000000000000000
--- a/primary/static/index.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<html>
-<head>
-  <title>BrowserID Demo Primary</title>
-  <link href="style.css" type="text/css" media="screen" rel="stylesheet"></link>
-</head>
-<body id="body">
-
-<div id="logged_in" class="status">
-<div>You are <b>signed in</b> to PrimaryCo as <span id="username"></span></div>
-
-<div><a id="sign_out" href="#">Sign out</a>.</div>
-</div>
-
-<div id="logged_out" class="status">
-<div>You are <b>not signed in</b> to PrimaryCo.</div>
-
-<div><a id="sign_in" href="#">Sign in now.</a></div>
-</div>
-
-<div id="authenticate_dialog" class="dialog">
-  <div class="title"> Sign in to PrimaryCo </div>
-  <div class="content">
-    <div class="summary">Sign in to your PrimaryCo account: <span class="sitename bad"></span>:</div>
-    <div class="input">
-      <div class="label"> Account </div>
-      <div class="input"> <input type="text"></input></div>
-    </div>
-    <div class="input">
-      <div class="label"> Password </div>
-      <div class="input"> <input type="password"></input></div>
-      <div class="note"> <a href="#">I forgot my password</a> </div>
-    </div>
-    <div class="attention_lame">
-      No such account exists with that username and/or password
-    </div>
-    <div class="actions">
-      <div class="action"><a href="#">Don't have a PrimaryCo account yet?</a></div>
-    </div>
-    <div class="bottom-bar">
-      <button id="signin_submit" class="righty action">Sign In</button>
-      <button id="signin_cancel" class="righty">Cancel</button>
-    </div>
-  </div>
-</div>
-<div id="create_dialog" class="dialog">
-  <div class="title"> Create an Account With PrimaryCo. </div>
-  <div class="content">
-    <div class="summary"><p>PrimaryCo provides such valuable services that you want to use it as your identifier online!</p>
-      <p>Please pick a name - this will become your @primaryco.com address!</p></div>
-    <div class="input">
-      <div class="label"> Username </div>
-      <div class="input"> <input type="text"></input></div>
-      <div class="note"></div>
-    </div>
-    <div class="input">
-      <div class="label"> Password </div>
-      <div class="input"> <input type="password"></input></div>
-    </div>
-    <div class="input">
-      <div class="label"> Verify </div>
-      <div class="input"> <input type="password"></input></div>
-      <div class="note"><span class="bad">Enter a password</span></div>
-    </div>
-    <div class="attention_lame">
-      <span id="in_use_email">Username</span> is already registered.  Did you already register it?  You can <a href="#">sign in</a> if you like.
-    </div>
-    <div class="bottom-bar">
-      <button id="create_submit" class="righty action">Sign In</button>
-      <button id="create_cancel" class="righty">Cancel</button>
-    </div>
-  </div>
-</div>
-
-<div id="welcome_dialog" class="dialog">
-  <div class="title"> Welcome to PrimaryCo!</div>
-  <div class="content">
-    <div class="summary">Your PrimaryCo email address is
-      <div id="welcome_address"></div>
-    </div>
-    <div class="bottom-bar">
-      <button id="create_welcome" class="righty action">Let's Go</button>
-    </div>
-  </div>
-</div>
-
-<div id="error_dialog" class="dialog">
-  <div class="title"></div>
-  <div class="content"></div>
-  <div class="bottom-bar">
-    <button id="error_submit" class="righty action">Rats</button>
-  </div>
-</div>
-
-
-</body>
-<!-- XXX: jquery shouldn't be used, it's too big.  we're using it now cause this is a proof of concept -->
-<script src="jquery-min.js"></script>
-<script src="https://eyedee.me/include.js"></script>
-<script src="main.js"></script>
-</html>
diff --git a/primary/static/jquery-min.js b/primary/static/jquery-min.js
deleted file mode 100644
index f78f96a12f13973ee16bc9d334e403b55502c66a..0000000000000000000000000000000000000000
--- a/primary/static/jquery-min.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.5.2
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Mar 31 15:28:23 2011 -0400
- */
-(function(a,b){function ci(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h==="string"&&(f[h.toLowerCase()]=a.converters[h]);l=k,k=e[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=f[m]||f["* "+k];if(!n){p=b;for(o in f){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=f[j[1]+" "+k];if(p){o=f[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&d.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bR(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bQ(a,b,c,e){if(d.isArray(b)&&b.length)d.each(b,function(b,f){c||bs.test(a)?e(a,f):bQ(a+"["+(typeof f==="object"||d.isArray(f)?b:"")+"]",f,c,e)});else if(c||b==null||typeof b!=="object")e(a,b);else if(d.isArray(b)||d.isEmptyObject(b))e(a,"");else for(var f in b)bQ(a+"["+f+"]",b[f],c,e)}function bP(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bJ,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l==="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bP(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bP(a,c,d,e,"*",g));return l}function bO(a){return function(b,c){typeof b!=="string"&&(c=b,b="*");if(d.isFunction(c)){var e=b.toLowerCase().split(bD),f=0,g=e.length,h,i,j;for(;f<g;f++)h=e[f],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bq(a,b,c){var e=b==="width"?bk:bl,f=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return f;d.each(e,function(){c||(f-=parseFloat(d.css(a,"padding"+this))||0),c==="margin"?f+=parseFloat(d.css(a,"margin"+this))||0:f-=parseFloat(d.css(a,"border"+this+"Width"))||0});return f}function bc(a,b){b.src?d.ajax({url:b.src,async:!1,dataType:"script"}):d.globalEval(b.text||b.textContent||b.innerHTML||""),b.parentNode&&b.parentNode.removeChild(b)}function bb(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function ba(a,b){if(b.nodeType===1){var c=b.nodeName.toLowerCase();b.clearAttributes(),b.mergeAttributes(a);if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(d.expando)}}function _(a,b){if(b.nodeType===1&&d.hasData(a)){var c=d.expando,e=d.data(a),f=d.data(b,e);if(e=e[c]){var g=e.events;f=f[c]=d.extend({},e);if(g){delete f.handle,f.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)d.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function $(a,b){return d.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Q(a,b,c){if(d.isFunction(b))return d.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return d.grep(a,function(a,d){return a===b===c});if(typeof b==="string"){var e=d.grep(a,function(a){return a.nodeType===1});if(L.test(b))return d.filter(b,e,!c);b=d.filter(b,e)}return d.grep(a,function(a,e){return d.inArray(a,b)>=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;i<t.length;i++)g=t[i],g.origType.replace(r,"")===a.type?q.push(g.selector):t.splice(i--,1);f=d(a.target).closest(q,a.currentTarget);for(j=0,k=f.length;j<k;j++){m=f[j];for(i=0;i<t.length;i++){g=t[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,e=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,e=d(a.relatedTarget).closest(g.selector)[0];(!e||e!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){f=p[j];if(c&&f.level>c)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function h(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeof e==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){function G(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){return this.length},toArray:function(){return C.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),x.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){e=i[c],f=a[c];if(i===f)continue;l&&f&&(d.isPlainObject(f)||(g=d.isArray(f)))?(g?(g=!1,h=e&&d.isArray(e)?e:[]):h=e&&d.isPlainObject(e)?e:{},i[c]=d.extend(l,h,f)):f!==b&&(i[c]=f)}return i},d.extend({noConflict:function(b){a.$=f,b&&(a.jQuery=e);return d},isReady:!1,readyWait:1,ready:function(a){a===!0&&d.readyWait--;if(!d.readyWait||a!==!0&&!d.isReady){if(!c.body)return setTimeout(d.ready,1);d.isReady=!0;if(a!==!0&&--d.readyWait>0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g<h;)if(c.apply(a[g++],e)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(var j=a[0];g<h&&c.call(j,g,j)!==!1;j=a[++g]){}return a},trim:D?function(a){return a==null?"":D.call(a)}:function(a){return a==null?"":(a+"").replace(j,"").replace(k,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var e=d.type(a);a.length==null||e==="string"||e==="function"||e==="regexp"||d.isWindow(a)?B.call(c,a):d.merge(c,a)}return c},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,b,c){var d=[],e;for(var f=0,g=a.length;f<g;f++)e=b(a[f],f,c),e!=null&&(d[d.length]=e);return d.concat.apply([],d)},guid:1,proxy:function(a,c,e){arguments.length===2&&(typeof c==="string"?(e=a,a=e[c],c=b):c&&!d.isFunction(c)&&(e=c,c=b)),!c&&a&&(c=function(){return a.apply(e||this,arguments)}),a&&(c.guid=a.guid=a.guid||c.guid||d.guid++);return c},access:function(a,c,e,f,g,h){var i=a.length;if(typeof c==="object"){for(var j in c)d.access(a,j,c[j],f,g,e);return a}if(e!==b){f=!h&&f&&d.isFunction(e);for(var k=0;k<i;k++)g(a[k],c,f?e.call(a[k],k,g(a[k],c)):e,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){F["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),E&&(d.inArray=function(a,b){return E.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?y=function(){c.removeEventListener("DOMContentLoaded",y,!1),d.ready()}:c.attachEvent&&(y=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",y),d.ready())});return d}(),e="then done fail isResolved isRejected promise".split(" "),f=[].slice;d.extend({_Deferred:function(){var a=[],b,c,e,f={done:function(){if(!e){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=d.type(i),j==="array"?f.done.apply(f,i):j==="function"&&a.push(i);k&&f.resolveWith(k[0],k[1])}return this},resolveWith:function(d,f){if(!e&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(d,f)}finally{b=[d,f],c=0}}return this},resolve:function(){f.resolveWith(this,arguments);return this},isResolved:function(){return c||b},cancel:function(){e=1,a=[];return this}};return f},Deferred:function(a){var b=d._Deferred(),c=d._Deferred(),f;d.extend(b,{then:function(a,c){b.done(a).fail(c);return this},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,promise:function(a){if(a==null){if(f)return f;f=a={}}var c=e.length;while(c--)a[e[c]]=b[e[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}var b=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c<e;c++)b[c]&&d.isFunction(b[c].promise)?b[c].promise().then(i(c),h.reject):--g;g||h.resolveWith(h,b)}else h!==a&&h.resolveWith(h,e?[a]:[]);return h.promise()}}),function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0,reliableMarginRight:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e)}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(a.style.width="1px",a.style.marginRight="0",d.support.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(a,null).marginRight,10)||0)===0),b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}}();var g=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!i(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,j=g?b[d.expando]:d.expando;if(!h[j])return;if(c){var k=e?h[j][f]:h[j];if(k){delete k[c];if(!i(k))return}}if(e){delete h[j][f];if(!i(h[j]))return}var l=h[j][f];d.support.deleteExpando||h!=a?delete h[j]:h[j]=null,l?(h[j]={},g||(h[j].toJSON=d.noop),h[j][f]=l):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var f=this[0].attributes,g;for(var i=0,j=f.length;i<j;i++)g=f[i].name,g.indexOf("data-")===0&&(g=g.substr(5),h(this[0],g,e[g]))}}return e}if(typeof a==="object")return this.each(function(){d.data(this,a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(c===b){e=this.triggerHandler("getData"+k[1]+"!",[k[0]]),e===b&&this.length&&(e=d.data(this[0],a),e=h(this[0],a,e));return e===b&&k[1]?this.data(k[0]):e}return this.each(function(){var b=d(this),e=[k[0],c];b.triggerHandler("setData"+k[1]+"!",e),d.data(this,a,c),b.triggerHandler("changeData"+k[1]+"!",e)})},removeData:function(a){return this.each(function(){d.removeData(this,a)})}}),d.extend({queue:function(a,b,c){if(a){b=(b||"fx")+"queue";var e=d._data(a,b);if(!c)return e||[];!e||d.isArray(c)?e=d._data(a,b,d.makeArray(c)):e.push(c);return e}},dequeue:function(a,b){b=b||"fx";var c=d.queue(a,b),e=c.shift();e==="inprogress"&&(e=c.shift()),e&&(b==="fx"&&c.unshift("inprogress"),e.call(a,function(){d.dequeue(a,b)})),c.length||d.removeData(a,b+"queue",!0)}}),d.fn.extend({queue:function(a,c){typeof a!=="string"&&(c=a,a="fx");if(c===b)return d.queue(this[0],a);return this.each(function(b){var e=d.queue(this,a,c);a==="fx"&&e[0]!=="inprogress"&&d.dequeue(this,a)})},dequeue:function(a){return this.each(function(){d.dequeue(this,a)})},delay:function(a,b){a=d.fx?d.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){d.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var j=/[\n\t\r]/g,k=/\s+/,l=/\r/g,m=/^(?:href|src|style)$/,n=/^(?:button|input)$/i,o=/^(?:button|input|object|select|textarea)$/i,p=/^a(?:rea)?$/i,q=/^(?:radio|checkbox)$/i;d.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"},d.fn.extend({attr:function(a,b){return d.access(this,a,b,!0,d.attr)},removeAttr:function(a,b){return this.each(function(){d.attr(this,a,""),this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.addClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"){var b=(a||"").split(k);for(var c=0,e=this.length;c<e;c++){var f=this[c];if(f.nodeType===1)if(f.className){var g=" "+f.className+" ",h=f.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=" "+b[i]);f.className=d.trim(h)}else f.className=a}}return this},removeClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"||a===b){var c=(a||"").split(k);for(var e=0,f=this.length;e<f;e++){var g=this[e];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(j," ");for(var i=0,l=c.length;i<l;i++)h=h.replace(" "+c[i]+" "," ");g.className=d.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,e=typeof b==="boolean";if(d.isFunction(a))return this.each(function(c){var e=d(this);e.toggleClass(a.call(this,c,e.attr("class"),b),b)});return this.each(function(){if(c==="string"){var f,g=0,h=d(this),i=b,j=a.split(k);while(f=j[g++])i=e?i:!h.hasClass(f),h[i?"addClass":"removeClass"](f)}else if(c==="undefined"||c==="boolean")this.className&&d._data(this,"__className__",this.className),this.className=this.className||a===!1?"":d._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(j," ").indexOf(b)>-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var j=i?f:0,k=i?f+1:h.length;j<k;j++){var m=h[j];if(m.selected&&(d.support.optDisabled?!m.disabled:m.getAttribute("disabled")===null)&&(!m.parentNode.disabled||!d.nodeName(m.parentNode,"optgroup"))){a=d(m).val();if(i)return a;g.push(a)}}if(i&&!g.length&&h.length)return d(h[f]).val();return g}if(q.test(c.type)&&!d.support.checkOn)return c.getAttribute("value")===null?"on":c.value;return(c.value||"").replace(l,"")}return b}var n=d.isFunction(a);return this.each(function(b){var c=d(this),e=a;if(this.nodeType===1){n&&(e=a.call(this,b,c.val())),e==null?e="":typeof e==="number"?e+="":d.isArray(e)&&(e=d.map(e,function(a){return a==null?"":a+""}));if(d.isArray(e)&&q.test(this.type))this.checked=d.inArray(c.val(),e)>=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=m.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&n.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var k=a.getAttributeNode("tabIndex");return k&&k.specified?k.value:o.test(a.nodeName)||p.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var l=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return l===null?b:l}h&&(a[c]=e);return a[c]}});var r=/\.(.*)$/,s=/^(?:textarea|input|select)$/i,t=/\./g,u=/ /g,v=/[^\w\s.|`]/g,w=function(a){return a.replace(v,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=x;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(a){return typeof d!=="undefined"&&d.event.triggered!==a.type?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=x);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),w).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))d.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=d.event.special[h]||{};for(j=f||0;j<p.length;j++){q=p[j];if(e.guid===q.guid){if(l||n.test(q.namespace))f==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(f!=null)break}}if(p.length===0||f!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&d.removeEvent(a,h,s.handle),g=null,delete t[h]}if(d.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,d.isEmptyObject(s)&&d.removeData(a,b,!0)}}},trigger:function(a,c,e){var f=a.type||a,g=arguments[3];if(!g){a=typeof a==="object"?a[d.expando]?a:d.extend(d.Event(f),a):d.Event(f),f.indexOf("!")>=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(r,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=a.type,l[m]())}catch(p){}k&&(l["on"+m]=k),d.event.triggered=b}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l<m;l++){var n=f[l];if(e||h.test(n.namespace)){c.handler=n.handler,c.data=n.data,c.handleObj=n;var o=n.handler.apply(this,k);o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[d.expando])return a;var e=a;a=d.Event(e);for(var f=this.props.length,g;f;)g=this.props[--f],a[g]=e[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=c.documentElement,i=c.body;a.pageX=a.clientX+(h&&h.scrollLeft||i&&i.scrollLeft||0)-(h&&h.clientLeft||i&&i.clientLeft||0),a.pageY=a.clientY+(h&&h.scrollTop||i&&i.scrollTop||0)-(h&&h.clientTop||i&&i.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:d.proxy,special:{ready:{setup:d.bindReady,teardown:d.noop},live:{add:function(a){d.event.add(this,H(a.origType,a.selector),d.extend({},a,{handler:G,guid:a.handler.guid}))},remove:function(a){d.event.remove(this,H(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){d.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},d.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},d.Event=function(a){if(!this.preventDefault)return new d.Event(a);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?y:x):this.type=a,this.timeStamp=d.now(),this[d.expando]=!0},d.Event.prototype={preventDefault:function(){this.isDefaultPrevented=y;var a=this.originalEvent;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=y;var a=this.originalEvent;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=y,this.stopPropagation()},isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x};var z=function(a){var b=a.relatedTarget;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&(a.type=a.data,d.event.handle.apply(this,arguments))}catch(e){}},A=function(a){a.type=a.data,d.event.handle.apply(this,arguments)};d.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){d.event.special[a]={setup:function(c){d.event.add(this,b,c&&c.selector?A:z,a)},teardown:function(a){d.event.remove(this,b,a&&a.selector?A:z)}}}),d.support.submitBubbles||(d.event.special.submit={setup:function(a,b){if(this.nodeName&&this.nodeName.toLowerCase()!=="form")d.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&d(b).closest("form").length&&E("submit",this,arguments)}),d.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&d(b).closest("form").length&&a.keyCode===13&&E("submit",this,arguments)});else return!1},teardown:function(a){d.event.remove(this,".specialSubmit")}});if(!d.support.changeBubbles){var B,C=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},D=function D(a){var c=a.target,e,f;if(s.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=C(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:D,beforedeactivate:D,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&D.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&D.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",C(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in B)d.event.add(this,c+".specialChange",B[c]);return s.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return s.test(this.nodeName)}},B=d.event.special.change.filters,B.focus=B.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function f(a){var c=d.event.fix(a);c.type=b,c.originalEvent={},d.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var e=0;d.event.special[b]={setup:function(){e++===0&&c.addEventListener(a,f,!0)},teardown:function(){--e===0&&c.removeEventListener(a,f,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i<j;i++)d.event.add(this[i],a,h,e);return this}}),d.fn.extend({unbind:function(a,b){if(typeof a!=="object"||a.preventDefault)for(var e=0,f=this.length;e<f;e++)d.event.remove(this[e],a,b);else for(var c in a)this.unbind(c,a[c]);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){d.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var c=d.Event(a);c.preventDefault(),c.stopPropagation(),d.event.trigger(c,b,this[0]);return c.result}},toggle:function(a){var b=arguments,c=1;while(c<b.length)d.proxy(a,b[c++]);return this.click(d.proxy(a,function(e){var f=(d._data(this,"lastToggle"+a.guid)||0)%c;d._data(this,"lastToggle"+a.guid,f+1),e.preventDefault();return b[f].apply(this,arguments)||!1}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var F={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};d.each(["live","die"],function(a,c){d.fn[c]=function(a,e,f,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:d(this.context);if(typeof a==="object"&&!a.preventDefault){for(var o in a)n[c](o,e,a[o],m);return this}d.isFunction(e)&&(f=e,e=b),a=(a||"").split(" ");while((h=a[i++])!=null){j=r.exec(h),k="",j&&(k=j[0],h=h.replace(r,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,h==="focus"||h==="blur"?(a.push(F[h]+k),h=h+k):h=(F[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)d.event.add(n[p],"live."+H(h,m),{data:e,selector:m,handler:f,origType:h,origHandler:f,preType:l});else n.unbind("live."+H(h,m),f)}return this}}),d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){d.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!=="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(f){if(f===!0)continue}else g=o=!0}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b==="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1){}a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=u;typeof b==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=u;typeof b==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return"text"===c&&(b===c||b===null)},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(a===b){g=!0;return 0}if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};d.find=k,d.expr=k.selectors,d.expr[":"]=d.expr.filters,d.unique=k.uniqueSort,d.text=k.getText,d.isXMLDoc=k.isXML,d.contains=k.contains}();var I=/Until$/,J=/^(?:parents|prevUntil|prevAll)/,K=/,/,L=/^.[^:#\[\.,]*$/,M=Array.prototype.slice,N=d.expr.match.POS,O={children:!0,contents:!0,next:!0,prev:!0};d.fn.extend({find:function(a){var b=this.pushStack("","find",a),c=0;for(var e=0,f=this.length;e<f;e++){c=b.length,d.find(a,this[e],b);if(e>0)for(var g=c;g<b.length;g++)for(var h=0;h<c;h++)if(b[h]===b[g]){b.splice(g--,1);break}}return b},has:function(a){var b=d(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(d.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(Q(this,a,!1),"not",a)},filter:function(a){return this.pushStack(Q(this,a,!0),"filter",a)},is:function(a){return!!a&&d.filter(a,this).length>0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e<f;e++)i=a[e],j[i]||(j[i]=d.expr.match.POS.test(i)?d(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=N.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e<f;e++){g=this[e];while(g){if(l?l.index(g)>-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(P(c[0])||P(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=M.call(arguments);I.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!O[a]?d.unique(f):f,(this.length>1||K.test(e))&&J.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var R=/ jQuery\d+="(?:\d+|null)"/g,S=/^\s+/,T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,U=/<([\w:]+)/,V=/<tbody/i,W=/<|&#?\w+;/,X=/<(?:script|object|embed|option|style)/i,Y=/checked\s*(?:[^=]|=\s*.checked.)/i,Z={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};Z.optgroup=Z.option,Z.tbody=Z.tfoot=Z.colgroup=Z.caption=Z.thead,Z.th=Z.td,d.support.htmlSerialize||(Z._default=[1,"div<div>","</div>"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(R,""):null;if(typeof a!=="string"||X.test(a)||!d.support.leadingWhitespace&&S.test(a)||Z[(U.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(T,"<$1></$2>");try{for(var c=0,e=this.length;c<e;c++)this[c].nodeType===1&&(d.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(f){this.empty().append(a)}}return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(d.isFunction(a))return this.each(function(b){var c=d(this),e=c.html();c.replaceWith(a.call(this,b,e))});typeof a!=="string"&&(a=d(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;d(this).remove(),b?d(b).before(a):d(c).append(a)})}return this.length?this.pushStack(d(d.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,e){var f,g,h,i,j=a[0],k=[];if(!d.support.checkClone&&arguments.length===3&&typeof j==="string"&&Y.test(j))return this.each(function(){d(this).domManip(a,c,e,!0)});if(d.isFunction(j))return this.each(function(f){var g=d(this);a[0]=j.call(this,f,c?g.html():b),g.domManip(a,c,e)});if(this[0]){i=j&&j.parentNode,d.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?f={fragment:i}:f=d.buildFragment(a,this,k),h=f.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&d.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)e.call(c?$(this[l],g):this[l],f.cacheable||m>1&&l<n?d.clone(h,!0,!0):h)}k.length&&d.each(k,bc)}return this}}),d.buildFragment=function(a,b,e){var f,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]==="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!X.test(a[0])&&(d.support.checkClone||!Y.test(a[0]))&&(g=!0,h=d.fragments[a[0]],h&&(h!==1&&(f=h))),f||(f=i.createDocumentFragment(),d.clean(a,i,f,e)),g&&(d.fragments[a[0]]=h?f:1);return{fragment:f,cacheable:g}},d.fragments={},d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(c){var e=[],f=d(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&f.length===1){f[b](this[0]);return this}for(var h=0,i=f.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){ba(a,e),f=bb(a),g=bb(e);for(h=0;f[h];++h)ba(f[h],g[h])}if(b){_(a,e);if(c){f=bb(a),g=bb(e);for(h=0;f[h];++h)_(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||W.test(i)){if(typeof i==="string"){i=i.replace(T,"<$1></$2>");var j=(U.exec(i)||["",""])[1].toLowerCase(),k=Z[j]||Z._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=V.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]==="<table>"&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&S.test(i)&&m.insertBefore(b.createTextNode(S.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bd=/alpha\([^)]*\)/i,be=/opacity=([^)]*)/,bf=/-([a-z])/ig,bg=/([A-Z]|^ms)/g,bh=/^-?\d+(?:px)?$/i,bi=/^-?\d/,bj={position:"absolute",visibility:"hidden",display:"block"},bk=["Left","Right"],bl=["Top","Bottom"],bm,bn,bo,bp=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bm(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bm)return bm(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bf,bp)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bq(a,b,e):d.swap(a,bj,function(){f=bq(a,b,e)});if(f<=0){f=bm(a,b,b),f==="0px"&&bo&&(f=bo(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bh.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return be.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bd.test(f)?f.replace(bd,e):c.filter+" "+e}}),d(function(){d.support.reliableMarginRight||(d.cssHooks.marginRight={get:function(a,b){var c;d.swap(a,{display:"inline-block"},function(){b?c=bm(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bn=function(a,c,e){var f,g,h;e=e.replace(bg,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bo=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bh.test(d)&&bi.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bm=bn||bo,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var br=/%20/g,bs=/\[\]$/,bt=/\r?\n/g,bu=/#.*$/,bv=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bw=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bx=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,by=/^(?:GET|HEAD)$/,bz=/^\/\//,bA=/\?/,bB=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bC=/^(?:select|textarea)/i,bD=/\s+/,bE=/([?&])_=[^&]*/,bF=/(^|\-)([a-z])/g,bG=function(a,b,c){return b+c.toUpperCase()},bH=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bI=d.fn.load,bJ={},bK={},bL,bM;try{bL=c.location.href}catch(bN){bL=c.createElement("a"),bL.href="",bL=bL.href}bM=bH.exec(bL.toLowerCase())||[],d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bI)return bI.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("<div>").append(c.replace(bB,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bC.test(this.nodeName)||bw.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bt,"\r\n")}}):{name:b.name,value:c.replace(bt,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bL,isLocal:bx.test(bM[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bO(bJ),ajaxTransport:bO(bK),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bR(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bS(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bF,bG)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bv.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bu,"").replace(bz,bM[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bD),e.crossDomain==null&&(q=bH.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bM[1]||q[2]!=bM[2]||(q[3]||(q[1]==="http:"?80:443))!=(bM[3]||(bM[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bP(bJ,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!by.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(bA.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bE,"$1_="+w);e.url=x+(x===e.url?(bA.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bP(bK,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bQ(g,a[g],c,f);return e.join("&").replace(br,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bT=d.now(),bU=/(\=)\?(&|$)|\?\?/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bT++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bU.test(b.url)||f&&bU.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bU,l),b.url===j&&(f&&(k=k.replace(bU,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bV=d.now(),bW,bX;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bZ()||b$()}:bZ,bX=d.ajaxSettings.xhr(),d.support.ajax=!!bX,d.support.cors=bX&&"withCredentials"in bX,bX=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),!a.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bW[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bW||(bW={},bY()),h=bV++,g.onreadystatechange=bW[h]=c):c()},abort:function(){c&&c(0,1)}}}});var b_={},ca=/^(?:toggle|show|hide)$/,cb=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cc,cd=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(ce("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)e=this[g],f=e.style.display,!d._data(e,"olddisplay")&&f==="none"&&(f=e.style.display=""),f===""&&d.css(e,"display")==="none"&&d._data(e,"olddisplay",cf(e.nodeName));for(g=0;g<h;g++){e=this[g],f=e.style.display;if(f===""||f==="none")e.style.display=d._data(e,"olddisplay")||""}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ce("hide",3),a,b,c);for(var e=0,f=this.length;e<f;e++){var g=d.css(this[e],"display");g!=="none"&&!d._data(this[e],"olddisplay")&&d._data(this[e],"olddisplay",g)}for(e=0;e<f;e++)this[e].style.display="none";return this},_toggle:d.fn.toggle,toggle:function(a,b,c){var e=typeof a==="boolean";d.isFunction(a)&&d.isFunction(b)?this._toggle.apply(this,arguments):a==null||e?this.each(function(){var b=e?a:d(this).is(":hidden");d(this)[b?"show":"hide"]()}):this.animate(ce("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,e){var f=d.speed(b,c,e);if(d.isEmptyObject(a))return this.each(f.complete);return this[f.queue===!1?"each":"queue"](function(){var b=d.extend({},f),c,e=this.nodeType===1,g=e&&d(this).is(":hidden"),h=this;for(c in a){var i=d.camelCase(c);c!==i&&(a[i]=a[c],delete a[c],c=i);if(a[c]==="hide"&&g||a[c]==="show"&&!g)return b.complete.call(this);if(e&&(c==="height"||c==="width")){b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(d.css(this,"display")==="inline"&&d.css(this,"float")==="none")if(d.support.inlineBlockNeedsLayout){var j=cf(this.nodeName);j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)}else this.style.display="inline-block"}d.isArray(a[c])&&((b.specialEasing=b.specialEasing||{})[c]=a[c][1],a[c]=a[c][0])}b.overflow!=null&&(this.style.overflow="hidden"),b.curAnim=d.extend({},a),d.each(a,function(c,e){var f=new d.fx(h,b,c);if(ca.test(e))f[e==="toggle"?g?"show":"hide":e](a);else{var i=cb.exec(e),j=f.cur();if(i){var k=parseFloat(i[2]),l=i[3]||(d.cssNumber[c]?"":"px");l!=="px"&&(d.style(h,c,(k||1)+l),j=(k||1)/f.cur()*j,d.style(h,c,j+l)),i[1]&&(k=(i[1]==="-="?-1:1)*k+j),f.custom(j,k,l)}else f.custom(j,e,"")}});return!0})},stop:function(a,b){var c=d.timers;a&&this.queue([]),this.each(function(){for(var a=c.length-1;a>=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:ce("show",1),slideUp:ce("hide",1),slideToggle:ce("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!cc&&(cc=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||d.fx.stop()},interval:13,stop:function(){clearInterval(cc),cc=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){d.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),d.expr&&d.expr.filters&&(d.expr.filters.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length});var cg=/^t(?:able|d|h)$/i,ch=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?d.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,g=f.documentElement;if(!c||!d.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=f.body,i=ci(f),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||d.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||d.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:d.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);d.offset.initialize();var c,e=b.offsetParent,f=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(d.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===e&&(l+=b.offsetTop,m+=b.offsetLeft,d.offset.doesNotAddBorder&&(!d.offset.doesAddBorderForTableAndCells||!cg.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),f=e,e=b.offsetParent),d.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;d.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},d.offset={initialize:function(){var a=c.body,b=c.createElement("div"),e,f,g,h,i=parseFloat(d.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=(e==="absolute"||e==="fixed")&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=ch.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!ch.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=ci(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=ci(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window);
\ No newline at end of file
diff --git a/primary/static/main.js b/primary/static/main.js
deleted file mode 100644
index e936ef800f6acea85c868718714c09e3cbc9860e..0000000000000000000000000000000000000000
--- a/primary/static/main.js
+++ /dev/null
@@ -1,341 +0,0 @@
-// this is the picker code!  it runs in the identity provider's domain, and
-// fiddles the dom expressed by picker.html
-(function() {
-
-  function refreshAuthStatus() {
-    $.ajax({
-      url: '/wsapi/current_username',
-      success: function(status, textStatus, jqXHR) {
-        var currentUsername = JSON.parse(jqXHR.responseText);
-        if (!currentUsername) {
-          $("#logged_out").show();
-        } else {
-          $("#username").text(currentUsername);
-          $("#logged_in").show();
-        }
-      },
-      error: function() {
-        runErrorDialog(
-          "serverError",
-          "Error Communicating With Server!",
-          "There was a technical problem while trying to log you in.  Yucky!");
-      }
-    });
-  }
-
-  function runErrorDialog(code, title, message, onsuccess, onerror) {
-    $(".dialog").hide();
-
-    $("#error_dialog div.title").text(title);
-    $("#error_dialog div.content").text(message);
-
-    $("#back").hide();
-    $("#cancel").hide();
-    $("#submit").show().unbind('click').click(function() {
-      onerror(code);
-    }).text("Close");
-
-    $("#error_dialog").fadeIn(500);
-  }
-
-  function runConfirmationDialog(username) {
-    refreshAuthStatus();
-    $("#welcome_address").text(username + "@primary.eyedee.me");
-    $("#welcome_dialog").fadeIn(500);
-    $("#create_welcome").show().unbind('click').click(function() {
-      $("#welcome_dialog").fadeOut(500);
-    });
-  };
-
-  function runCreateDialog() {
-    $(".dialog").hide();
-
-    $("#back").show().unbind('click').click(function() {
-      runAuthenticateDialog(undefined);
-    });
-    $("#create_cancel").show().unbind('click').click(function() {
-      onerror("canceled");
-    });
-    $("#create_submit").show().unbind('click').click(function() {
-      // ignore the click if we're disabled
-      if ($(this).hasClass('disabled')) return true;
-
-      // now we need to actually try to stage the creation of this account.
-      var username = $("#create_dialog input:eq(0)").val();
-      var pass = $("#create_dialog input:eq(1)").val();
-
-      // Go do it...
-      $.ajax({
-        url: '/wsapi/create_user?username=' + encodeURIComponent(username) + '&pass=' + encodeURIComponent(pass),
-        success: function(result) {
-          $(".dialog").hide();
-          if (result) {
-            // the server may have "normalized" our username, a success payload includes the actual
-            // username registered
-            username = result.username;
-            $("#create_dialog input:eq(0)").val(username);
-            runConfirmationDialog(username);
-            try {
-              navigator.id.registerVerifiedEmail(username + "@primary.eyedee.me", function(publicKey) {
-                $.ajax({
-                  url: '/wsapi/add_key?pubkey=' + encodeURIComponent(publicKey),
-                  success: function() {
-                    // key is saved - we're done?
-                  },
-                  error: function() {
-                  }});
-              }, function(error) {
-                runErrorDialog(
-                  "serverError",
-                  "Error Registering Address!",
-                  "There was a technical problem while trying to register your address.  Sorry.");
-              });
-            } catch (e) {
-              alert("Whoops, unable to register verified email: " + e);
-            }
-          } else {
-            runErrorDialog(
-              "serverError",
-              "Error Creating Account!",
-              "There was a technical problem while trying to create your account.  Sorry.");
-          }
-        },
-        error: function() {
-          runErrorDialog(
-            "serverError",
-            "Error Creating Account!",
-            "There was a technical problem while trying to create your account.  Yucky.");
-        }
-      });
-    }).text("Continue").addClass("disabled");
-
-    $("#create_dialog div.attention_lame").hide();
-    $("#create_dialog div.attention_lame a").unbind('click').click(function() {
-      var username = $("#create_dialog input:eq(0)").val();
-      runAuthenticateDialog(username);
-    });
-
-    function checkInput() {
-      $("#create_submit").removeClass("disabled");
-
-      // check the username
-      var email = $("#create_dialog input:eq(0)").val();
-      $("#create_dialog div.note:eq(0)").empty();
-      if (typeof email === 'string' && email.length) {
-
-        var valid = checkedEmails[email];
-        if (typeof valid === 'string') {
-          // oh noes.  we tried to check this email, but it failed.  let's just not tell the
-          // user anything, cause this is a non-critical issue
-
-        } else if (typeof valid === 'boolean') {
-          if (valid) {
-            $("#create_dialog div.note:eq(0)").html($('<span class="good"/>').text("Username available!"));
-            $("#create_dialog div.attention_lame").hide();
-          } else {
-            $("#create_dialog div.attention_lame").fadeIn(300);
-            $("#create_dialog div.attention_lame span.email").text(email);
-            $("#create_submit").addClass("disabled");
-          }
-        } else {
-          // this is an email that needs to be checked!
-          if (emailCheckState !== 'querying') {
-            if (emailCheckState) window.clearTimeout(emailCheckState);
-            emailCheckState = setTimeout(function() {
-              emailCheckState = 'querying';
-              var checkingNow = nextEmailToCheck;
-              // bounce off the server and enter the 'querying' state
-              $.ajax({
-                url: '/wsapi/username_available?username=' + encodeURIComponent(checkingNow),
-                success: function(data, textStatus, jqXHR) {
-                  checkedEmails[checkingNow] = !JSON.parse(data);
-                  emailCheckState = undefined;
-                  checkInput();
-                }, error: function(jqXHR, textStatus, errorThrown) {
-                  // some kind of error was encountered.  This is non-critical, we'll simply ignore it
-                  // and mark this email check as failed.
-                  checkedEmails[checkingNow] = "server failed";
-                  emailCheckState = undefined;
-                  checkInput();
-                }
-              });
-            }, 700);
-          } else {
-            $("#create_dialog div.note:eq(0)").html($('<span class="warning"/>').text("Checking address"));
-          }
-          nextEmailToCheck = email;
-          $("#create_submit").addClass("disabled");
-        }
-      } else {
-        $("#create_submit").addClass("disabled");
-      }
-
-      // next let's check the password entry
-      var pass = $("#create_dialog input:eq(1)").val();
-      var match = pass === $("#create_dialog input:eq(2)").val();
-      if (!match) {
-        $("#create_submit").addClass("disabled");
-        $("#create_dialog div.note:eq(1)").html($('<span class="bad"/>').text("Passwords different"));
-      } else {
-        if (!pass) {
-          $("#create_submit").addClass("disabled");
-          $("#create_dialog div.note:eq(1)").html($('<span class="bad"/>').text("Enter a password"));
-        } else if (pass.length < 5) {
-          $("#create_submit").addClass("disabled");
-          $("#create_dialog div.note:eq(1)").html($('<span class="bad"/>').text("Password too short"));
-        } else {
-          $("#create_dialog div.note:eq(1)").html($('<span class="good"/>').text("Password OK"))
-        }
-      }
-    }
-
-    // watch input dialogs
-    $("#create_dialog input").unbind('keyup').bind('keyup', checkInput);
-
-    // do a check at load time, in case the user is using the back button (enables the continue button!)
-    checkInput();
-
-    $("#create_dialog").fadeIn(500);
-  } // end runCreateDialog
-
-  // a handle to a timeout of a running email check
-  var emailCheckState = undefined;
-  // the next email to check, if one is entered while a check is running
-  var nextEmailToCheck = undefined;
-  // a set of emails that we've checked for this session
-  var checkedEmails = {
-  };
-
-  function runAuthenticateDialog(email, onsuccess, onerror) {
-    $(".status").hide();
-
-    $(".dialog").hide();
-    $("#back").hide();
-    $("#cancel").show().unbind('click').click(function() {
-      onerror("canceled");
-    });
-    $("#signin_submit").show().unbind('click').click(function() {
-      if ($(this).hasClass('disabled')) return true;
-
-      var email = $("#authenticate_dialog input:eq(0)").val();
-      var pass = $("#authenticate_dialog input:eq(1)").val();
-
-      $.ajax({
-        url: '/wsapi/authenticate_user?username=' + encodeURIComponent(email) + '&pass=' + encodeURIComponent(pass),
-        success: function(status, textStatus, jqXHR) {
-          var authenticated = JSON.parse(jqXHR.responseText);
-          if (!authenticated) {
-            $("#authenticate_dialog div.attention_lame").hide().fadeIn(400);
-          } else {
-            navigator.id.registerVerifiedEmail(status.username + "@primary.eyedee.me", function(publicKey) {
-              $.ajax({
-                url: '/wsapi/add_key?pubkey=' + encodeURIComponent(publicKey),
-                success: function() {
-                  // key is saved - we're done?
-                },
-                error: function() {
-                }});
-            }, function(error) {
-              runErrorDialog(
-                "serverError",
-                "Error Registering Address!",
-                "There was a technical problem while trying to register your address.  Sorry.");
-            });
-
-            $("#authenticate_dialog").hide(500);
-            refreshAuthStatus();
-          }
-        },
-        error: function() {
-          runErrorDialog(
-            "serverError",
-            "Error Authenticating!",
-            "There was a technical problem while trying to log you in.  Yucky!",
-            onsuccess, onerror);
-        }
-      });
-    }).text("Sign In").addClass("disabled");;
-
-    // preseed the email input if whoever triggered us told us to
-    if (email) {
-      $("#authenticate_dialog input:eq(0)").val(email);
-    }
-
-    $("#authenticate_dialog div.note > a").unbind('click').click(function() {
-      onerror("notImplemented");
-    });
-    $("#authenticate_dialog div.actions div.action").unbind('click').click(function() {
-      runCreateDialog(onsuccess, onerror);
-    });
-
-    $("#authenticate_dialog div.attention_lame").hide();
-
-    $("#authenticate_dialog input").unbind('keyup').bind('keyup', function() {
-      var email = $("#authenticate_dialog input:eq(0)").val();
-      var pass = $("#authenticate_dialog input:eq(1)").val();
-      if (email.length > 0 && pass.length > 0) $("#signin_submit").removeClass('disabled');
-      else $("#signin_submit").addClass('disabled');
-    });
-//    $("#authenticate_dialog .bottom-bar button").hide();
-    $("#authenticate_dialog").fadeIn(
-      500,
-      function() {
-        // where should we put the focus?  On login if empty, else password
-        var email = $("#authenticate_dialog input:eq(0)").val();
-        if (typeof email === 'string' && email.length) {
-          $("#authenticate_dialog input:eq(1)").focus();
-        } else {
-          $("#authenticate_dialog input:eq(0)").focus();
-        }
-      });
-  }
-
-  function runErrorDialog(code, title, message) {
-    $(".dialog").hide();
-
-    $("#error_dialog div.title").text(title);
-    $("#error_dialog div.content").text(message);
-
-    $("#error_submit").show().unbind('click').click(function() {
-      $("#error_dialog").fadeOut(500);
-    }).text("Close");
-
-    $("#error_dialog").fadeIn(500);
-  }
-
-
-
-  // Set up initial bindings
-  $("#sign_in").click(function() {
-    runAuthenticateDialog(undefined);
-  });
-  
-  $("#sign_out").click(function() {
-    $("#logged_in").hide();
-    $("#logged_out").hide();
-    $.ajax({
-      url: '/wsapi/signout',
-      success: function(status, textStatus, jqXHR) {
-        refreshAuthStatus();
-      },
-      error: function() {
-        runErrorDialog(
-          "serverError",
-          "Error Communicating With Server!",
-          "There was a technical problem while trying to log you out.  Sorry!",
-          onsuccess, onerror);
-      }
-    });
-  });
-  
-  refreshAuthStatus();
-
-/*  // 'Enter' in any input field triggers a click on the submit button
-  $('input').keypress(function(e){
-    if(e.which == 13) {
-      $('#submit').click();
-      e.preventDefault();
-    }
-  });
-  */      
-})();
diff --git a/primary/static/ping.txt b/primary/static/ping.txt
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/primary/static/style.css b/primary/static/style.css
deleted file mode 100644
index 5eb84c23c0b9916cc26b07ce684f75b43caeb48d..0000000000000000000000000000000000000000
--- a/primary/static/style.css
+++ /dev/null
@@ -1,236 +0,0 @@
-body {
-    position: absolute;
-    font-family: Helvetica Narrow, sans-serif;
-    font-size: 11pt;
-    width: 598px;
-    height: 398px;
-    padding: 0;
-    margin: 0;
-}
-span.sitename, span.email {
-    font-weight: bold;
-}
-.title {
-    font-size: 2em;
-    font-weight: bold;
-    margin: auto;
-    margin-top: 1.5em;
-    margin-bottom: 1em;
-}
-
-#logo {
-    margin: 0;
-    padding: 0;
-    width: 575px;
-    position: fixed;
-    left: 30px;
-    top: 120px;
-    opacity: .1;
-    -moz-transform: rotate(-25deg);
-    -webkit-transform: rotate(-25deg);
-    transform: rotate(-25deg);
-    z-index: -5;
-}
-
-#logo > img {
-    width: 100%;
-}
-
-.dialog {
-    display: none;
-    position: relative;
-    top: 0;
-    left: 0;
-    width:450px;
-    margin: auto;
-    text-align: center;
-/*    border: 2px solid rgb(218, 230, 237);    */
-    -moz-border-radius: 4px;
-    -webkit-border-radius: 4px;
-}
-
-.bottom-bar {
-    margin: 0;
-    padding: 0;
-    border: 0;
-/*    left: 0;*/
-/*    top: 450px;*/
-    height: 60px;
-    width: 450px;
-    border-top: 2px solid rgb(218, 230, 237);
-    background-color: rgb(244, 247, 251);
-}
-
-.bottom-bar button {
-    height: 25px;
-    border: 1px solid rgb(145, 145, 145);
-    -moz-border-radius: 4px;
-    -webkit-border-radius: 4px;
-    border-radius: 4px;
-    background-color: rgb(242, 242, 242);
-    padding-left: 2em;
-    padding-right: 2em;
-    margin-left: 1em;
-    margin-right: 1em;
-    margin-top: 16px;
-    z-index: 0;
-}
-
-.bottom-bar button.righty {
-    float: right;
-}
-
-.bottom-bar button.action {
-    background-color: rgb(0,128,211);
-    color: #fff;
-    font-weight: bold;
-}
-
-div.actions > div.action {
-    float: left;
-    margin-right: 1em;
-}
-
-div.actions > div.action a {
-    cursor: pointer;
-    color: rgb(65, 126, 208);
-    text-decoration: none;
-}
-
-div.actions {
-/*    position: fixed;
-    top: 268px;*/
-    height: 32px;
-    font-size: .8em;
-    margin-left: 79px;
-}
-
-#identities {
-    width: 450px;
-    margin: auto;
-}
-
-#identities > div {
-    margin-bottom: .5em;
-    height: 1.4em;
-    font-size: .9em;
-}
-
-#identities > div > * {
-    float: left;
-    cursor: pointer;
-}
-
-button {
-    cursor: pointer;
-}
-
-button.disabled {
-    cursor: default;
-    opacity: .3;
-}
-
-div.input > * {
-    float: left;
-}
-
-div.input > div.note {
-    float: right;
-    margin-top: .7em;
-}
-
-div.content {
-    width: 450px;
-    margin: auto;
-    text-align: left;
-}
-
-div.content > div.input {
-    height: 3em;
-    font-size: .8em;
-}
-
-div.content > div.summary {
-    text-align: left;
-    margin-bottom: 2em;
-}
-
-div.content > div.input > div.label {
-    width: 80px;
-    text-align: left;
-    margin-top: .7em;
-}
-
-
-div.input input {
-    border: 1px solid black;
-    width: 240px;
-    height: 2em;
-    padding: .4em;
-}
-
-a {
-    color: rgb(65, 126, 208);
-    text-decoration: none;
-}
-
-span.warning {
-    color: rgb(153,153,84);
-}
-
-span.bad {
-    color: rgb(149,43,9);
-}
-
-span.good {
-    color: rgb(0,161,51);
-}
-
-div.subtle {
-    opacity: .7;
-}
-
-div.dialog div.attention, div.dialog div.attention_awesome, div.dialog div.attention_lame  {
-    -moz-border-radius: 4px;
-    -webkit-border-radius: 4px;
-    border-radius: 4px;
-    width: 400px;
-    padding:13px;
-    margin: auto;
-    text-align: left;
-    margin-top: 1em;
-}
-
-div.dialog div.attention {
-    border: 1px solid rgb(219,231,238);
-    background-color: rgb(244,247,251);
-}
-
-div.dialog div.attention_awesome {
-    border: 1px solid rgb(0,161,51);
-    background-color: rgb(0,161,51);
-    color: white;
-    font-weight: bold;
-}
-
-div.dialog div.attention_lame {
-    border: 1px solid rgb(224,178,139);
-    background-color: rgb(253,239,208);
-    color: rgb(120,43,9);
-    font-size: .8em;
-}
-
-#logged_in {
-  display:none;
-}
-#logged_out {
-  display:none;
-}
-
-.status {
-  margin-left:40px;
-  margin-top:40px;
-}
-.status div {
-  margin-bottom:20px;
-}
\ No newline at end of file