From 82d5a911c0f2683b0e480dc0f772bf20f4e1e98a Mon Sep 17 00:00:00 2001 From: kload Date: Sat, 22 Aug 2015 20:24:46 +0200 Subject: [PATCH] Init --- README.md | 6 + conf/config.js | 250 + conf/nginx.conf | 6 + conf/systemd.service | 11 + conf/user.json | 6 + manifest.json | 45 + scripts/install | 69 + scripts/remove | 14 + scripts/upgrade | 50 + sources/.travis.yml | 3 + sources/CHANGELOG.md | 164 + sources/Gruntfile.js | 41 + sources/README.md | 45 + sources/client/audio/pop.ogg | Bin 0 -> 11652 bytes sources/client/css/bootstrap.css | 1283 +++ sources/client/css/fonts/fontawesome.svg | 520 + sources/client/css/fonts/fontawesome.woff | Bin 0 -> 65452 bytes sources/client/css/fonts/inconsolatag.ttf | Bin 0 -> 33680 bytes sources/client/css/fonts/inconsolatag.woff | Bin 0 -> 17280 bytes sources/client/css/style.css | 1136 ++ .../client/img/apple-touch-icon-120x120.png | Bin 0 -> 3850 bytes sources/client/img/favicon.png | Bin 0 -> 16163 bytes sources/client/img/logo-64.png | Bin 0 -> 2571 bytes sources/client/img/logo-dark.svg | 7 + sources/client/img/logo.svg | 7 + sources/client/img/touch-icon-192x192.png | Bin 0 -> 5609 bytes sources/client/index.html | 293 + sources/client/js/libs.min.js | 11 + sources/client/js/libs/favico.js | 839 ++ sources/client/js/libs/handlebars.js | 660 ++ sources/client/js/libs/handlebars/diff.js | 12 + sources/client/js/libs/handlebars/equal.js | 11 + sources/client/js/libs/handlebars/modes.js | 13 + sources/client/js/libs/handlebars/parse.js | 143 + .../client/js/libs/handlebars/stringcolor.js | 5 + sources/client/js/libs/handlebars/tz.js | 10 + sources/client/js/libs/handlebars/users.js | 5 + sources/client/js/libs/jquery.js | 9190 +++++++++++++++++ sources/client/js/libs/jquery/bootstrap.js | 529 + sources/client/js/libs/jquery/cookie.js | 117 + sources/client/js/libs/jquery/inputhistory.js | 74 + sources/client/js/libs/jquery/jquery-ui.js | 4491 ++++++++ sources/client/js/libs/jquery/mousetrap.js | 953 ++ sources/client/js/libs/jquery/stickyscroll.js | 67 + sources/client/js/libs/jquery/tabcomplete.js | 256 + sources/client/js/libs/jquery/tse.js | 357 + sources/client/js/libs/moment.js | 2610 +++++ sources/client/js/libs/notification.js | 218 + sources/client/js/libs/socket.io.js | 6172 +++++++++++ sources/client/js/libs/string.contains.js | 18 + sources/client/js/libs/stringcolor.js | 87 + sources/client/js/libs/uri.js | 2003 ++++ sources/client/js/shout.js | 880 ++ sources/client/js/shout.templates.js | 218 + sources/client/robots.txt | 2 + sources/client/themes/crypto.css | 126 + sources/client/themes/example.css | 6 + sources/client/themes/morning.css | 197 + sources/client/themes/zenburn.css | 208 + sources/client/views/chan.tpl | 7 + sources/client/views/chat.tpl | 38 + sources/client/views/msg.tpl | 25 + sources/client/views/network.tpl | 5 + sources/client/views/toggle.tpl | 19 + sources/client/views/user.tpl | 20 + sources/defaults/config.js | 250 + sources/index.js | 3 + sources/package.json | 48 + sources/src/client.js | 379 + sources/src/clientManager.js | 140 + sources/src/command-line/add.js | 60 + sources/src/command-line/config.js | 17 + sources/src/command-line/edit.js | 22 + sources/src/command-line/index.js | 39 + sources/src/command-line/list.js | 21 + sources/src/command-line/remove.js | 32 + sources/src/command-line/reset.js | 39 + sources/src/command-line/start.js | 37 + sources/src/helper.js | 10 + sources/src/identd.js | 47 + sources/src/log.js | 45 + sources/src/models/chan.js | 58 + sources/src/models/msg.js | 34 + sources/src/models/network.js | 68 + sources/src/models/user.js | 10 + sources/src/plugins/inputs/action.js | 38 + sources/src/plugins/inputs/connect.js | 11 + sources/src/plugins/inputs/invite.js | 9 + sources/src/plugins/inputs/join.js | 9 + sources/src/plugins/inputs/kick.js | 9 + sources/src/plugins/inputs/mode.js | 30 + sources/src/plugins/inputs/msg.js | 31 + sources/src/plugins/inputs/nick.js | 9 + sources/src/plugins/inputs/notice.js | 7 + sources/src/plugins/inputs/part.js | 20 + sources/src/plugins/inputs/quit.js | 19 + sources/src/plugins/inputs/raw.js | 9 + sources/src/plugins/inputs/services.js | 26 + sources/src/plugins/inputs/topic.js | 12 + sources/src/plugins/inputs/whois.js | 9 + sources/src/plugins/irc-events/ctcp.js | 24 + sources/src/plugins/irc-events/error.js | 22 + sources/src/plugins/irc-events/join.js | 43 + sources/src/plugins/irc-events/kick.js | 44 + sources/src/plugins/irc-events/link.js | 139 + sources/src/plugins/irc-events/message.js | 65 + sources/src/plugins/irc-events/mode.js | 34 + sources/src/plugins/irc-events/motd.js | 19 + sources/src/plugins/irc-events/names.js | 21 + sources/src/plugins/irc-events/nick.js | 50 + sources/src/plugins/irc-events/notice.js | 32 + sources/src/plugins/irc-events/part.js | 37 + sources/src/plugins/irc-events/quit.js | 30 + sources/src/plugins/irc-events/topic.js | 35 + sources/src/plugins/irc-events/welcome.js | 24 + sources/src/plugins/irc-events/whois.js | 47 + sources/src/server.js | 190 + 117 files changed, 37021 insertions(+) create mode 100644 README.md create mode 100644 conf/config.js create mode 100644 conf/nginx.conf create mode 100644 conf/systemd.service create mode 100644 conf/user.json create mode 100644 manifest.json create mode 100644 scripts/install create mode 100644 scripts/remove create mode 100644 scripts/upgrade create mode 100644 sources/.travis.yml create mode 100644 sources/CHANGELOG.md create mode 100644 sources/Gruntfile.js create mode 100644 sources/README.md create mode 100644 sources/client/audio/pop.ogg create mode 100644 sources/client/css/bootstrap.css create mode 100644 sources/client/css/fonts/fontawesome.svg create mode 100644 sources/client/css/fonts/fontawesome.woff create mode 100644 sources/client/css/fonts/inconsolatag.ttf create mode 100644 sources/client/css/fonts/inconsolatag.woff create mode 100644 sources/client/css/style.css create mode 100644 sources/client/img/apple-touch-icon-120x120.png create mode 100644 sources/client/img/favicon.png create mode 100644 sources/client/img/logo-64.png create mode 100644 sources/client/img/logo-dark.svg create mode 100644 sources/client/img/logo.svg create mode 100644 sources/client/img/touch-icon-192x192.png create mode 100644 sources/client/index.html create mode 100644 sources/client/js/libs.min.js create mode 100644 sources/client/js/libs/favico.js create mode 100644 sources/client/js/libs/handlebars.js create mode 100644 sources/client/js/libs/handlebars/diff.js create mode 100644 sources/client/js/libs/handlebars/equal.js create mode 100644 sources/client/js/libs/handlebars/modes.js create mode 100644 sources/client/js/libs/handlebars/parse.js create mode 100644 sources/client/js/libs/handlebars/stringcolor.js create mode 100644 sources/client/js/libs/handlebars/tz.js create mode 100644 sources/client/js/libs/handlebars/users.js create mode 100644 sources/client/js/libs/jquery.js create mode 100644 sources/client/js/libs/jquery/bootstrap.js create mode 100644 sources/client/js/libs/jquery/cookie.js create mode 100644 sources/client/js/libs/jquery/inputhistory.js create mode 100644 sources/client/js/libs/jquery/jquery-ui.js create mode 100644 sources/client/js/libs/jquery/mousetrap.js create mode 100644 sources/client/js/libs/jquery/stickyscroll.js create mode 100644 sources/client/js/libs/jquery/tabcomplete.js create mode 100644 sources/client/js/libs/jquery/tse.js create mode 100644 sources/client/js/libs/moment.js create mode 100644 sources/client/js/libs/notification.js create mode 100644 sources/client/js/libs/socket.io.js create mode 100644 sources/client/js/libs/string.contains.js create mode 100644 sources/client/js/libs/stringcolor.js create mode 100644 sources/client/js/libs/uri.js create mode 100644 sources/client/js/shout.js create mode 100644 sources/client/js/shout.templates.js create mode 100644 sources/client/robots.txt create mode 100644 sources/client/themes/crypto.css create mode 100644 sources/client/themes/example.css create mode 100644 sources/client/themes/morning.css create mode 100644 sources/client/themes/zenburn.css create mode 100644 sources/client/views/chan.tpl create mode 100644 sources/client/views/chat.tpl create mode 100644 sources/client/views/msg.tpl create mode 100644 sources/client/views/network.tpl create mode 100644 sources/client/views/toggle.tpl create mode 100644 sources/client/views/user.tpl create mode 100644 sources/defaults/config.js create mode 100755 sources/index.js create mode 100644 sources/package.json create mode 100644 sources/src/client.js create mode 100644 sources/src/clientManager.js create mode 100644 sources/src/command-line/add.js create mode 100644 sources/src/command-line/config.js create mode 100644 sources/src/command-line/edit.js create mode 100644 sources/src/command-line/index.js create mode 100644 sources/src/command-line/list.js create mode 100644 sources/src/command-line/remove.js create mode 100644 sources/src/command-line/reset.js create mode 100644 sources/src/command-line/start.js create mode 100644 sources/src/helper.js create mode 100644 sources/src/identd.js create mode 100644 sources/src/log.js create mode 100644 sources/src/models/chan.js create mode 100644 sources/src/models/msg.js create mode 100644 sources/src/models/network.js create mode 100644 sources/src/models/user.js create mode 100644 sources/src/plugins/inputs/action.js create mode 100644 sources/src/plugins/inputs/connect.js create mode 100644 sources/src/plugins/inputs/invite.js create mode 100644 sources/src/plugins/inputs/join.js create mode 100644 sources/src/plugins/inputs/kick.js create mode 100644 sources/src/plugins/inputs/mode.js create mode 100644 sources/src/plugins/inputs/msg.js create mode 100644 sources/src/plugins/inputs/nick.js create mode 100644 sources/src/plugins/inputs/notice.js create mode 100644 sources/src/plugins/inputs/part.js create mode 100644 sources/src/plugins/inputs/quit.js create mode 100644 sources/src/plugins/inputs/raw.js create mode 100644 sources/src/plugins/inputs/services.js create mode 100644 sources/src/plugins/inputs/topic.js create mode 100644 sources/src/plugins/inputs/whois.js create mode 100644 sources/src/plugins/irc-events/ctcp.js create mode 100644 sources/src/plugins/irc-events/error.js create mode 100644 sources/src/plugins/irc-events/join.js create mode 100644 sources/src/plugins/irc-events/kick.js create mode 100644 sources/src/plugins/irc-events/link.js create mode 100644 sources/src/plugins/irc-events/message.js create mode 100644 sources/src/plugins/irc-events/mode.js create mode 100644 sources/src/plugins/irc-events/motd.js create mode 100644 sources/src/plugins/irc-events/names.js create mode 100644 sources/src/plugins/irc-events/nick.js create mode 100644 sources/src/plugins/irc-events/notice.js create mode 100644 sources/src/plugins/irc-events/part.js create mode 100644 sources/src/plugins/irc-events/quit.js create mode 100644 sources/src/plugins/irc-events/topic.js create mode 100644 sources/src/plugins/irc-events/welcome.js create mode 100644 sources/src/plugins/irc-events/whois.js create mode 100644 sources/src/server.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..80a6718 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +Shout +----- + +Shout is a web IRC client that you host on your own server. + +See http://shout-irc.com/ diff --git a/conf/config.js b/conf/config.js new file mode 100644 index 0000000..3867e07 --- /dev/null +++ b/conf/config.js @@ -0,0 +1,250 @@ +module.exports = { + // + // Set the server mode. + // Public servers does not require authentication. + // + // Set to 'false' to enable users. + // + // @type boolean + // @default false + // + public: false, + + // + // Allow connections from this host. + // + // @type string + // @default "0.0.0.0" + // + host: "127.0.0.1", + + // + // Set the port to listen on. + // + // @type int + // @default 9000 + // + port: 9191, + + // + // Set the local IP to bind to. + // + // @type string + // @default "0.0.0.0" + // + bind: undefined, + + // + // Set the default theme. + // + // @type string + // @default "themes/example.css" + // + theme: "themes/example.css", + + // + // Autoload users + // + // When this setting is enabled, your 'users/' folder will be monitored. This is useful + // if you want to add/remove users while the server is running. + // + // @type boolean + // @default true + // + autoload: true, + + // + // Prefetch URLs + // + // If enabled, Shout will try to load thumbnails and site descriptions from + // URLs posted in channels. + // + // @type boolean + // @default true + // + prefetch: true, + + // + // Display network + // + // If set to false Shout will not expose network settings in login + // form, limiting client to connect to the configured network. + // + // @type boolean + // @default true + // + displayNetwork: true, + + // + // Log settings + // + // Logging has to be enabled per user. If enabled, logs will be stored in + // the '/users//logs/' folder. + // + // @type object + // @default {} + // + logs: { + // + // Timestamp format + // + // @type string + // @default "YYYY-MM-DD HH:mm:ss" + // + format: "YYYY-MM-DD HH:mm:ss", + + // + // Timezone + // + // @type string + // @default "UTC+00:00" + // + timezone: "UTC+00:00" + }, + + // + // Default values for the 'Connect' form. + // + // @type object + // @default {} + // + defaults: { + // + // Name + // + // @type string + // @default "Freenode" + // + name: "Freenode", + + // + // Host + // + // @type string + // @default "irc.freenode.org" + // + host: "irc.freenode.org", + + // + // Port + // + // @type int + // @default 6697 + // + port: 6697, + + // + // Password + // + // @type string + // @default "" + // + password: "", + + // + // Enable TLS/SSL + // + // @type boolean + // @default true + // + tls: true, + + // + // Nick + // + // @type string + // @default "shout-user" + // + nick: "shout-user", + + // + // Username + // + // @type string + // @default "shout-user" + // + username: "shout-user", + + // + // Real Name + // + // @type string + // @default "Shout User" + // + realname: "Shout User", + + // + // Channels + // + // @type string + // @default "#foo, #shout-irc" + // + join: "#foo, #shout-irc" + }, + + // + // Set socket.io transports + // + // @type array + // @default ["polling', "websocket"] + // + transports: ["polling", "websocket"], + + // + // Run Shout with HTTPS support. + // + // @type object + // @default {} + // + https: { + // + // Enable HTTPS support. + // + // @type boolean + // @default false + // + enable: false, + + // + // Path to the key. + // + // @type string + // @example "sslcert/key.pem" + // @default "" + // + key: "", + + // + // Path to the certificate. + // + // @type string + // @example "sslcert/key-cert.pem" + // @default "" + // + certificate: "" + }, + + // + // Run Shout with identd support. + // + // @type object + // @default {} + // + identd: { + // + // Run the identd daemon on server start. + // + // @type boolean + // @default false + // + enable: false, + + // + // Port to listen for ident requests. + // + // @type int + // @default 113 + // + port: 113 + } +}; diff --git a/conf/nginx.conf b/conf/nginx.conf new file mode 100644 index 0000000..2456617 --- /dev/null +++ b/conf/nginx.conf @@ -0,0 +1,6 @@ +location LOCATIONTOCHANGE { + if ($scheme = http) { + rewrite ^ https://$server_name$request_uri? permanent; + } + proxy_pass http://127.0.0.1:9191/; +} diff --git a/conf/systemd.service b/conf/systemd.service new file mode 100644 index 0000000..29cdea0 --- /dev/null +++ b/conf/systemd.service @@ -0,0 +1,11 @@ +[Service] +ExecStart=/usr/bin/node /var/www/shout/index.js +Restart=always +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=shout +User=shout +Environment=NODE_ENV=production + +[Install] +WantedBy=multi-user.target diff --git a/conf/user.json b/conf/user.json new file mode 100644 index 0000000..11ab357 --- /dev/null +++ b/conf/user.json @@ -0,0 +1,6 @@ +{ + "user": "USERTOCHANGE", + "password": "$2a$08$Ep", + "log": false, + "networks": [] +} diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..68a77c4 --- /dev/null +++ b/manifest.json @@ -0,0 +1,45 @@ +{ + "name": "Shout", + "id": "shout", + "description": { + "en": "Web IRC client", + "fr": "Client Web IRC" + }, + "maintainer": { + "name": "kload", + "email": "kload@kload.fr" + }, + "multi_instance": "false", + "arguments": { + "install" : [ + { + "name": "domain", + "type": "domain", + "ask": { + "en": "Choose a domain for Shout", + "fr": "Choisissez un domaine pour Shout" + }, + "example": "domain.org" + }, + { + "name": "path", + "type": "path", + "ask": { + "en": "Choose a path for Shout", + "fr": "Choisissez un chemin pour Shout" + }, + "example": "/irc", + "default": "/irc" + }, + { + "name": "is_public", + "ask": { + "en": "Is it a public instance ?", + "fr": "Est-ce une instance public ?" + }, + "choices": ["Yes", "No"], + "default": "No" + } + ] + } +} diff --git a/scripts/install b/scripts/install new file mode 100644 index 0000000..ce2b9ae --- /dev/null +++ b/scripts/install @@ -0,0 +1,69 @@ +#!/bin/bash + +set -e + +# Retrieve arguments +domain=$1 +path=$2 +is_public=$3 +final_path=/var/www/shout + +# Ensure that it is installed on Debian Jessie +VERSION=$(sed 's/\..*//' /etc/debian_version) +if [[ "$VERSION" == '7' ]]; then + echo "You need at least Debian 8 (Jessie) to run this app" && exit 1 +fi + +# Check domain/path availability +sudo yunohost app checkurl $domain$path -a shout +path=${path%/} + +# Install dependencies +sudo apt-get update +sudo apt-get install nodejs-legacy npm -y + +# Create user +sudo useradd -d $final_path shout \ + || echo "User already created" + +# Modify the random username +user=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p') +sed -i "s@USERTOCHANGE@$user@g" ../conf/user.json + +# Copy files to the right place +sudo mkdir -p $final_path/.shout/users +sudo cp ../conf/user.json $final_path/.shout/users/$user.json +sudo cp -a ../sources/* $final_path/ + +# Set permissions +sudo chown -hR shout $final_path + +# Install dependencies +sudo su -c "cd $final_path && /usr/bin/npm install --production" shout + +# Modify Nginx configuration file and copy it to Nginx conf directory +if [[ "$path" == "" ]]; then + sed -i "s@LOCATIONTOCHANGE@/@g" ../conf/nginx.conf +else + sed -i "s@LOCATIONTOCHANGE@$path@g" ../conf/nginx.conf +fi +sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/shout.conf + +# Copy systemd service +sudo cp ../conf/systemd.service /etc/systemd/system/shout.service + +# Add YunoHost service +sudo yunohost service add shout -l /var/log/syslog + +# Make app public if necessary +sudo yunohost app setting shout is_public -v "$is_public" +if [ "$is_public" = "Yes" ]; +then + sudo yunohost app setting shout unprotected_uris -v "/" +fi + +# Reload Nginx, shout and regenerate SSOwat conf +sudo service nginx reload +sudo systemctl enable shout +sudo systemctl start shout || sudo systemctl restart shout +sudo yunohost app ssowatconf diff --git a/scripts/remove b/scripts/remove new file mode 100644 index 0000000..a51421b --- /dev/null +++ b/scripts/remove @@ -0,0 +1,14 @@ +#!/bin/bash + +domain=$(sudo yunohost app setting shout domain) + +sudo systemctl stop shout +sudo systemctl disable shout +sudo yunohost service remove shout + +sudo rm -rf /var/www/shout +sudo rm -f /etc/nginx/conf.d/$domain.d/shout.conf +sudo rm -f /etc/systemd/system/shout.service + +sudo service nginx reload +sudo yunohost app ssowatconf diff --git a/scripts/upgrade b/scripts/upgrade new file mode 100644 index 0000000..7312fbb --- /dev/null +++ b/scripts/upgrade @@ -0,0 +1,50 @@ +#!/bin/bash + +set -e + +# Retrieve arguments +domain=$(sudo yunohost app setting shout domain) +path=$(sudo yunohost app setting shout path) +is_public=$(sudo yunohost app setting shout is_public) +final_path=/var/www/shout + +# Remove trailing "/" from the path +path=${path%/} + +# Copy files to the right place +sudo mkdir -p $final_path/.shout/users +sudo cp -a ../sources/* $final_path/ + +# Set permissions +sudo chown -hR shout $final_path + +# Install dependencies +sudo su -c "cd $final_path && /usr/bin/npm install --production" shout + +# Modify Nginx configuration file and copy it to Nginx conf directory +if [[ "$path" == "" ]]; then + sed -i "s@LOCATIONTOCHANGE@/@g" ../conf/nginx.conf +else + sed -i "s@LOCATIONTOCHANGE@$path@g" ../conf/nginx.conf +fi +sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/shout.conf + +# Copy systemd service +sudo cp ../conf/systemd.service /etc/systemd/system/shout.service + +# Add YunoHost service +sudo yunohost service add shout -l /var/log/syslog \ + || echo "Service already exist" + +# Make app public if necessary +sudo yunohost app setting shout is_public -v "$is_public" +if [ "$is_public" = "Yes" ]; +then + sudo yunohost app setting shout unprotected_uris -v "/" +fi + +# Reload Nginx, shout and regenerate SSOwat conf +sudo service nginx reload +sudo systemctl enable shout +sudo systemctl start shout || sudo systemctl restart shout +sudo yunohost app ssowatconf diff --git a/sources/.travis.yml b/sources/.travis.yml new file mode 100644 index 0000000..6e5919d --- /dev/null +++ b/sources/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - "0.10" diff --git a/sources/CHANGELOG.md b/sources/CHANGELOG.md new file mode 100644 index 0000000..59ca5bd --- /dev/null +++ b/sources/CHANGELOG.md @@ -0,0 +1,164 @@ +0.51.1 / 2015-04-29 +=================== + +* Increase process.setMaxListeners to prevent link preview to cause a crash + +0.51.0 / 2015-04-16 +================== + + * Added 'Crypto' theme by @aynik + * Link preview now ignores links from localhost + * Added 'displayNetwork' setting + +0.49.3 / 2015-01-04 +=================== + + * Fully expand chat when userlist is hidden + * Remove vertical whitespace in chat windows + * Support @mention + +0.49.2 / 2015-01-04 +=================== + + * Fix crash on broken links + +0.49.1 / 2015-01-04 +=================== + + * Fix undefined content-type (link plugin) + +0.49.0 / 2014-12-23 +=================== + + * Replaced superagent with request + * Solves a problem where some links would crash the server + +0.48.0 / 2014-12-12 +=================== + + * Fetch max 1 link per message + * Fix '/me' message color + * Periodically hide older messages for inactive channels + * Only confirm exit in public mode + * Added '/ns' NickServ and '/cs' ChanServ shortcuts + +0.47.0 / 2014-11-19 +=================== + + * Shout now supports fullscreen on iOS + +0.46.0 / 2014-11-14 +=================== + + * Fix commands being removed from user.json + * Added dynamic title + * Turn off input autocomplete + +0.45.5 / 2014-11-05 +=================== + + * Minor bugfixes + +0.45.4 / 2014-11-05 +=================== + + * Added username input + * Added 'morning' theme by @rikukissa + +0.45.3 / 2014-10-27 +=================== + + * Remove password argument from add command + * Support MIRC style terminators + * Fix edit command + * Fix URLs preventing proper closure of bold and color tags + * Send NOTICE messages to the correct channel + +0.45.2 / 2014-10-16 +=================== + + * Fix crash on failed TLS connect + * Hide mode from badge count + +0.45.0 / 2014-10-14 +=================== + + * Added identd daemon + * Remember user networks and channels on restart + * Show link thumbnails + * Pull link description from meta tags + * Allow binding to local IP via `--bind ` + * Change 'users/' folder structure + * Change 'logs/' location + +0.44.0 / 2014-10-11 +=================== + + * Added text color + * Added 'prefetch' option + * Added drag-and-drop tolerance + * Always show right toggle + +0.43.1 / 2014-10-09 +=================== + + * Disable login button on authentication + * Fix 'shout edit' command + +0.43.0 / 2014-10-08 +=================== + + * Smarter nick completion + * Prevent multiple logins + * Fix highlight checking by lower-casing everything + * Allow relative '--home' path + +0.42.0 / 2014-10-04 +=================== + + * Split users by mode in the sidebar + * Show user mode in channel + +0.41.1 / 2014-10-03 +=================== + + * Now installs properly on Windows + +0.41.0 / 2014-10-03 +=================== + + * Use 'bcrypt-nodejs' package + * No need to compile with node-gyp during install + +0.40.3 / 2014-10-02 +=================== + + * Fix issue where actions from other users do not display + +0.40.2 / 2014-10-01 +=================== + + * Fix existsSync + +0.40.1 / 2014-10-01 +=================== + + * Fix config overwrite + +0.40.0 / 2014-10-01 +=================== + + * Prevent private mode when no user exists + * Move config to ~/.shout/ + +0.39.1 / 2014-09-30 +=================== + + * Scrolling now works correctly when loading thumbnails + * List users on server start + +0.39.0 / 2014-09-30 +=================== + + * Added changelog + * Added colored nicknames (optional) diff --git a/sources/Gruntfile.js b/sources/Gruntfile.js new file mode 100644 index 0000000..f4c637e --- /dev/null +++ b/sources/Gruntfile.js @@ -0,0 +1,41 @@ +module.exports = function(grunt) { + var libs = "client/js/libs/**/*.js"; + grunt.initConfig({ + watch: { + files: libs, + tasks: ["uglify"] + }, + uglify: { + options: { + compress: false + }, + js: { + files: { + "client/js/libs.min.js": libs + } + } + } + }); + grunt.loadNpmTasks("grunt-contrib-uglify"); + grunt.loadNpmTasks("grunt-contrib-watch"); + grunt.registerTask( + "build", + function() { + grunt.util.spawn({ + cmd: "node", + args: [ + "node_modules/handlebars/bin/handlebars", + "client/views/", + "-e", "tpl", + "-f", "client/js/shout.templates.js" + ] + }, function(err) { + if (err) console.log(err); + }); + } + ); + grunt.registerTask( + "default", + ["uglify", "build"] + ); +}; diff --git a/sources/README.md b/sources/README.md new file mode 100644 index 0000000..78e57b9 --- /dev/null +++ b/sources/README.md @@ -0,0 +1,45 @@ +# Shout [![](https://badge.fury.io/js/shout.png)](https://www.npmjs.org/package/shout) + +### [Try the Demo](http://demo.shout-irc.com/) + +__What is it?__ +Shout is a web IRC client that you host on your own server. + +__What features does it have?__ +- Multiple user support +- Stays connected even when you close the browser +- Connect from multiple devices at once +- Responsive layout — works well on your smartphone +- _.. and more!_ + +## Install + +``` +sudo npm install -g shout +``` + +## Usage + +When the install is complete, go ahead and run this in your terminal: + +``` +shout --help +``` + +For more information, read the [documentation](http://shout-irc.com/docs/). + +## Development setup + +To run the app from source, just clone the code and run this in your terminal: + +``` +npm install +grunt +./index.js --port 8080 +``` + +And if you don't have [grunt](http://gruntjs.com/getting-started) installed already, just run `npm install -g grunt-cli`. + +## License + +Available under [the MIT license](http://mths.be/mit). diff --git a/sources/client/audio/pop.ogg b/sources/client/audio/pop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1fe623f5a6199ce77327c80ff7b707300edd6b56 GIT binary patch literal 11652 zcmb_?bzD?U7w`o^Qlz`3mabJ&Nr9zdmoDj&Mnn`*>2_ICI;BNQDN*Teq!FY`VnGz) zyNl2JywCId{`lTMzWL1#b7sz*JE!KHxfg8*2Ymn=_^YVZ#28_^t>=Q#Sj<=t+`X)w zyfFjVN@ZZX3nKpYdxxcsS^0Otti%GL$c=k9Nd+$cRXnf!A;bjE8##G63Tk^fu(~=~ z8(flSRbv$u78Vnh6qdwL!@~W8%%`AefCb=#BO)3+Z9zlv2ml}j0M?Y7q%K9Z6DBUt z^B4A3!%Jhti#y~Q>=R+Md@BWkWSVY#G+lS zFEm6q^7CS)Hp{99q=*D+h7^da+Q{|qLno%aNqcw-PBEk-2S z1et8Sxm?bOXX--+bc z7K0-6Wf5@bxW4Q-9PvMtXP5Q@GJ=(1pW+;ZFNQR}6iX0Dmh>61KJlL?fe5NEzi~t$ z6ZBw`#K?AzVief(r%X_RcGLb>jhG%Wa)sw|RxKLY&Qq+1!9yi*L%Y9#y}#5A;u*&y zxdk@p!Jb+y@~Xhp7&sfDhvJc(%KR6-(`?jrh0A5{rxRRcFMD)(sPAh3C57qr{4pOn z00{D&;0eo3Sbyvp>Qx9)VgzyKPTiZ&d-hHEh&53C)&$j{a3S92HGtPv}c5!VUq7u(tXf?O_QI@)celVJ(>Fwvmg<>{Euq$x90!~pif@9Bg#5bWG(vz zsRHDWg8%XyWlze^myBvi4)wSE{UhKL#I=u<29Mx_RCdGE_Xp9g!^dXYXt*{NLLX{A ziom$cIKmF`;QmbAKdaq8JO{}RL9$E6-jGD%{KIp2B9|m$zZoGposc}KNzU)nwl^{b zH*-n;?KxKAp^o9PjuB}*k-7g{{o4uu_8b*2j!r#(&~w`V`!Znk zz#;*E)CxIleAqz}SU?nqKeHOSGLj=wykGoY8nQ5gU0X~!(;-bmACXgn0sAR5)BXZ8 zc}lp(eauTX8*HcQ?#*QKr19$e{tbd|&oQWvNV87^NkwEjDM}5o- zH%c@{ecxB`D<)ln#SQ-f!M&+w7Gl;qr8ylaAwryCX$~cSKyq0`NJ(Vj1_n8`aLdcw zIFvss_g~-@02tEHPm0LgI#8Oli>x4;9LIpUTja8noM|8kMU2-K7xL>Pj8_}p5*yzH z!PJt!!K>izFH2ByNu4IbF4eh5bTZMd>+N4)@n0Z#NMPXsK>$UM94JDpARYh+TUN!$ zsk4e-lR`Px#yE{DlB4^r%%J!^V^EGm;)7zEj%hq;T$soQ5Hf;)T!&CbjM*3?kW&SM z+C4!_lNmfz8Wu++E*m8k`e$;d6_%9nVkjQU=!$EChcVLDIFmav*D(zg{u};53T4c& zueoE|T12i>Nl9sgpm_f!g>heVnxq1!KbRH7;+mA2`k*%^ViJdc74TeUlmKHDtvoj! zg8E(_0S$A|e+()}BwVB|3%*44I0Nz}|1Ajz0mwYh;fOWLqfFvFp^e$wLH8`F=59K{1??|TCBZ<#eGr_yU z2p*m=I&TsMd`LmGfJ9H-id_@$R3)R7>|${10Ck(K9Cj^J7KM_MJD{)LVupajh(4>fcV z=7^;KN(Bp8Bp?CgaBr5ydgzH$8##8t09MebM6R;g5i9i2+EQXRN=gm@!i!*hvr?er z5x3<8;t2tO_H&9iDNGHb5H7ODnm=X|LTW>*pjup;FVew^Lh8Aw*+k3pa28A;VHpWX zJ?C=HNhxl&f(dJNSTP(1D{oIh=@p|;CQ%{~I~Q1SJFSf#Yz+jcR&6!Dz1l6X~F}A!P%bKFRQSJuoMtg-2q>NEEuj zF%djA+h~!s^cSR};8?UgKAm?gxYuA3sZMa26kZ0n44=&>T4XgHOiHjZ2F{>-lbe=+ z7sDedcw}IB1lMsE5VEbY`j996VFN6gLPoA;#%5ZQnp|?D28^{;OK(x_h2Rq z%3(F#8#JGs7o>Uxv|taDX@a2*1x}=R4}erbP?Zj37vvr@5gZTe`FjGNtzhi0i5zei zR{Up$o&rGuXq|YMqzZz`F@}JWx&$%#1IS+pNQx6=51%a`rALUtgXDmGgNX)cHEdvf z=ix-fV^SDW1)dxb4^jZ)!Pqc85D#PWa10)10)@#2LN0q?2SXnQLFrtkF&F|Uy+1>j z1Rw=^;6yMv=0PA{!5;$1KX|;Hn56}vK0&_>0&egMv}uV|$Y85bifYJ(gqGm|dZ6{& z{1F3u=#OY#|0R`6(ft2uFnJBA2&~pQ8j_&f6#w!s@cJMe3Yw|6j$Q$!_kaizm|Q~yHEl4;`ua8bX!&AgyAGa}{8dWc0#rhZdKXHs&)9|2M+0(K zAdy_5gR*AAI-1jG#Ck^-4DG~Vlwk#0<%0WguyJ*)z+;Gnlsq2@`h>06=|M&suinKY z%)>}ApjLDZkRxRmQ)0IkQPp^TH8OGou=0Gy#sY|n-y9JX%JyL|Mtp+A8195;49T3gNiAq@0BJ z!>X?Z*{#^FP$F9SVfh@Qz=#PHi~gkTcoVDZ`qPUayLZ@%e27$Sc?AauUW{LP!xDIY zI5)>8yYGe-Q6`hBYhhrlOIHFpn-YA;(HnB#jm7_;CnGDO4#raBof+ zg^hll4pFBOG=JywbtGi;p0d2MvOHB)Ze}Rdxh=wEI5*dKlfG!othh>9muf5=7rdPV zP%XNUNZm4Q;|RFjvxo@uUu0kE!lGEyt4NBfNLSX6(x0G)%+l4rucE&lxR1Ki{uolL6t z6TEcp-zU?yJ9C$f;GVF&le>MbJqkYTKW1!6zd<$0?K(~{7ZbDTw%A6_m{6;_(q10r zNk`5QxayrF`ks1@WuY+Em|8sgw}vB+L+#Or+v_RH1+x?lv@w1xvWCs;cW+Hi!;)^y z%{TZ1SFsM8?qH2}(A6v;n5_}yYf_-b*16r$m1FW_tR8a<8TX5>JgmtZnlQ{-uyIqH zO6=4Q#50?hWm%WBd-#lCF`IP!N#Mk6Z0GaP9*3xHhkyt4)eph~!`l5-*4QfhEOIA5 z7IaA;B_=XX}osY$fM?1oWI$yL%Q z+uafpam7<+ac2YeR5bR#s-b>GQo#SY-)%q7Ob^RYJJtR-Lc?&vx z?s&styH5-KKey4W%QwdV+U>sEQ2rU>eEjJwJ7p>&BlH{F#T-TD%+8yqv>zO0a0rIQ z&J_0Mb3V*vlkxw&p|D$!`V#gj;8_vhr*?b)s%rUgT{DvgOo zr{67%Cx_Kn1h?gWwPEvIS)8+Mz3O2*_rb`gV|QLqtVYN#7>~0L2&BqmCexdoEK5^)bt)c^Y{F&e3p3Lvg0eA;cLD> zFh8-LWFy0JFVlPO_t6sD??X`u@ef-`>g9A7_qdKI`Ymhok{p6Jc*6defAp)Bl^K^ol+&F~N9eM7mf$)TG9hqx&m`?hL9$f+vEGgZ=C!bNK9$rruTRv)+_HvI?ODFx&ztfO zhiYw1*oFz(bNE_)DWF-f5*c>cm(tS+dpcbg%?u zB;UIja8t3gP*Z)quYb{?IGo+sF>j0?3ozVwJDyR492Qj1Gi;-4@gE-SeouCd%NK@J zBkFPJDg|<9s}5t&b41V^xA3?YQFGBt8^J)Ar7%T+wkqEAzHfVTTj|1zY{N8@#p)R?bWsv^46q2l_ z!0Y$$5~e&VU)-+^%)@~o$Xx?Ae43STKkpQ~4+y=_qRJf2Vj&2$^q~FS%aS#%emq`J zg{Bz1Pzkc%e|%hC9xMKeK;tzFwhen)#6l~!&(1b&+nO_82X981J$6+JPu^3Tx|1(* z1Of%DDKk;((t~rEf>}^4>EHU>Sy2;uHgU2v0vG*j7Q+>iXO9fWHI4)gtJ@i-;-@Dq ze&S>`3Yoaq??k)`$awFJ?YiN5jg+hT23cO?^!|JZ*G8UUbLnIKs5)V`SSnhbxs2fX zbJ(H9Y~c97+WiH;eRDs^@w)rr_E4PvD^ck5XpSaBC*AUbIMQBHPVzUudDDL{AQjx2$eA#-%HcoSb( zV!&OqJ|$))gH_?UT8X+z?q|J;fX0sS^)Jo0W>&wJQ`YJaT_=m$842QUzhy6*u^QBk zz$wPrq6y$luWWQZx9K}~?zVUknME+?@Bj77smQ(Tr6H@AB42joupFccOoKhN*DP^F z&U@OZ?|V|aRJc)T>{AjQwBH_#_6VT#i*P_&osR^L$}_vg9X$RmQChT>RMoC6?e31p zHp2I!Zf#}zuwm+8YeXV$e)`9NW(Be7`#O95f(GOA6PE`wg@|5yk0qZ1a4H4*@rfVC7HM_*k zx4cX$9wS8eaw|>Tu^RC0-H#I>Sv5<3$C!O*bS%T+c1piH;jciM-Cvt8m>c)Tn>PBJEA`_L+_MQ* zSYNQ}i>?XYF&N; zehjS}(bvXtk!}{|r?QqGv!d8Oc-&j$c&;@77m=BT`#o|tHqSUt&l{ntQKdY&W8H?j ze@#Pjtb&SiOka%*K{9_XEXY7?LzEhI<3>wBbd6ij0EejPhN||;sCLMsou~?_y>G zF);*GM`gDxAGy&~KXdx@&I%%3lZ5?ayh==Ef;sc1(E>ZW0x|m%o1PGR%kv(saTpXK zbd@mcyTJXK0*P??8R!cmDmf0F8$BbeIJaIm7jR?$exS4W#)E-zR%t3?cthc}gnGLX z6%!P9C#K3bWZx?qn#XFiOu2UWW?)fA$dB=D^W;VvzEB(irS^hSC`(mlB#{QcG>-DC zTb~tPmW7I{$Iyg_5_33<|NJf0A;iGR^{VTpbkI`rUAn@rb062+N$6qtGV_mt9Xezz zH4mxub-hQA{nhI7$-Se4&f<+JKFhUWJFbo`BfEP1P3>qHEC+y0G@nzMF*I&cwJoV% zxEDK?Cr0T|hPCdC2eR+$Qj66llw2#I`Oy=Wih_X2kx$P)o?zbuo~GZL7kXFNFfi6< zPvxuu09{G(exDYox#?b<$od&Rk-7FXFIWt>y`tf~@4>Q}f-Dzh+X3s^9wm+`FQQ3XmVchG6?`-htaiZA(catoRu|SJ?ik} z^!*KKYm4W^$fauV&evf7?8EWuK}?sozyrsJM0Rf`)pbG!p*HEqEUf6jn@y{WxSeDu{)ydSTyQA%9@?{#J2b>`_*gxAH`fX~vdq=U_t;kC4zk;p?2_o<_4xRwnz@ zZo74-+LPre2G*-_H>2D~efkNWzYEs>_^I~2Jh7rvH9?WCz|zIfd?C@e=gDsSxxb^1 z2Cnqn7!!v&3g}y$X&#P9*U7q0v=t6rvqF1N^=?HJEN0op z-fth=6PFUDU~0;Wo0IvvfaF7Lc~5JwYCHdER!!%1x8%CmXyxundUV}=9dF^oQ>xc2 zG(%IxslmGumXe;{nI{tYgym-?9A8n*WA{iCi>iCx{=oOLwTHd?iOf!wg}vk%P6>Moy%8@i^Ae(j2b2c=3IhmqaBfpf=@8PVqJ zef;*C;XLtK+w-ks!{odGe`Ol!l}?i78RL@e+w>>A?Sc41sLY@X)+y`v0GH}&ce}Y% zc@eYDwR8548c8|Tge6N6;4gK$X1@I*;pm!`iKz04%f(Y{# zVdwHy0{DIb_u}GeX{^ctwlSn~+(A(0xr7x~z1FM;j@Lo$y&Sk)pw^YIFZM#p|qkwB+cgtHy zps9*6DlSY#=I`q?H`HI}Q5S6XwcdIeBOe->v;gzqH6ia*DdepXdw`^1(zoH$axxc-|GnUP}#oMpe z!_Q|@h92p$oi#f(OXq#sQls-bb8W!Uen&=Z*)XYTlYc2G5qb)4N#=*s_Vw=wmR-?87{%7UD}5cs#9~qBo)9_H+?*xn+g`0XB%MmB-*F`}{N=kL znT9LHfkQmEnc`bcDc?s_^ckOV2u+#y%-84l)h%9WL7OUX(y^IgwIyj&dq9g*5*u~g*EV- z!*Q7`16B=5b*%G6iWmE3SgJzX>zI!Uiv4O^Q3x9GLTMH+SmlG^o#VH<9dwydWFPZd zTf$)_jjQ7o(JE0x&$l{iBZ?R__m-a_uyGcQblCyZPK`& zhL1WYaaWuwEo(S&?xeG8=R7dp5Paveqh2MJ+yyu0Ym)y2ca+>TEWT}^q-VO0%IwXj zULun+7geo|4BiemPhw4*o=*OmS+YjfaCNX3f6KDymczVTqi-EG=NyVRCY`>>g0QY9 zNG6}5K9|PsroU1e?fMY}(s?!zNqa%NbY|_Es6LQBH-pPx^D)t~s=5?=AQ&xlqw{>< zC22ZBgQ1+L>GXzz5d{(y!5^n`hXQmLLKJ8e&i=A{dCcz;wH8s~J1y4d4C>l2OdJKtCA zR4I}^*4Tg__+=_wFAYl}E#AJy1L$BeqZyR@`d*X<9i{$^;i5`tc*B7;<(00TiUWy9 zGI_>)*JvE?jB@p=?YDuhU&EHw4E%-2fb&Q2abp1<-@;RK-GV;$#^wuzidy9E&GSin zo-;G3%*#wwxH)L&Jh&#R8&g;#so=x58K_J`|^|<3MGu=M{~6z z%flxRLskY`H8-59YJLa`sV{ulEz@M==En|j{*tY#(o#-~ZT#Y{*v!s3)7V(b15&iw zJNj`mBM}SkjPvEV9P!05X6xL6A1$|vA35`j4`^HRP)g^BD9oVT0~a*i))022q%iUB#okN zHgooU>Vm@AaPr$18#Y>UZfdcAvgl1DSG8BF;>Z*UzCs|^8^lw6$2-TO<8>WvqRz|d*FQ`N zZSM(Asi&5_p#JFD4gIJwmdzD*E@{~YfA%8>(oKi7ZSMZwI>x`5ME>GY=fGQ{%z?XO z3%J_3*6g0XIMC2JMB6yup!4#${!0{jx%?Jc#C(M>O~GqJA2v_u4M;7K3E^-~%P8ZK z=3wThFngm({u{X3ORv&BQr8iw9a{N? zrI&stxO-yu>8K$T(N^9ZyXxhmiyk&FG3C2<;I`M-?d`6LdKiH(X&c)ykgV$ZEX-_V z{iEhdll4WOF7*g9cfOQ{p`1Q-{Mmzuhby7b`nJ=~Mryy&!nF(}XIQ0-vzfW?uerhy z*_jN)xXY7M_{d-YJY2RnE9z;pck=^>5g&+Hn8QvKiw5GT-VwW;)eei_Vr3?#vS=i~ z*7zm4IQ(}ZYKu<(miz7fd{SfH8!7np@EY-79oWSsqE?(Ho%AjYXO?fifSxs;HKqPe4 z&1PD$LyCjt^tQZ4Tv=o^n;vvm(EMh6%+ev%9linNrn5528olMwvc83Gd2ME5Pudx| zwdK64-r-C=6Dndu_?hCMFiPK^=tbdRnqX!C@0vkyfkxN(y7|un)B-*?3tq`ybjqb$?jb2oi#ntL@ibH8#v1zLOZB(NH7 z*tcbj`n8fDm0#*KK+fhSTd7jp{DU*2v}oH`>|<7ICAr-Zjpos-L{Go7!CL7Rmzx^F zLv$C_zWhmnWw>|xwHrxN6=7X6BJQf;i!=Ih+O$N_WIn_mGWdERdd8%WPU{ZvHqa&2 zn_VG5JZR09Gs4=rCs3y*=j6wuW-&keF$*mNs?H~UiNgJXey4MD70bw~^e7eZJ05H) zG+p@-v45`c&%Es?I{|ZF%SxL*cr@3~o^S12aH6m^NXQ7W22yzBn9FHt!av!P9}D)< z)g6@dIH67Z3vu!3+wby3w7+$XXMM;|nS)z-%|>kHM(4+b#5~Uu zZ_COw9n~wH76J|ZLOSaBzio}a-?ON!}F%| zU%Sq!bzM@iZ<0;LdXFhz;X_!<$N4RE_<&;f?g@jNYgo0kF&@so-QaEFy6A6i5}gb4 zQRCHVVi)N6lmXAH(TyxeQ zX@ky12)P##x~3j}-Gb;ouKd`?yEu+>jp?P_?cWXo7jeoTahY+?qE{uf^NqvGd2)Fl zS{_R6*Hse8+mV=a`S;l%8s?5RdLyEvN1yCKKV}u}I_*09r>zt4wX=iYe!EG{Ql$*k zQbn(p4Kg47^z&{GJaMpOd-oPkpz?Z!@kJq9i+@hTkM!=_G4B~)rhI8d%0=QKhjmMI zv2<*DHvI4_7AONI20MBN8{YEY=@zmhu*^ z)t5G|^_6DA_51k5GrJ>gbMt4Q$qlD53CxK3_s44ND&k%}nNVRUw}iS*9xlP8wBZ${dTK2L0EHSPAg zEIfG%{^wSD=f>$LRGniCm0sEK)%A@M_;AV4zML;*VeQ@Z(KZ8si=UV zA6G64(wdeK_xTK#G+iInnD6e3rZ+94Dm|F`8W8yH%Z%y%kZvDmj~Tt`;TU|jm^z1pEPDIOmE3N9tK*U1~A0jJsd~xKWu7|+h*E( zs6M_~bUHf&76u^5XEp1N2JPLv;q~wS5A3;^<2psMF5dT!ZRCD9H}C}BAODn<)wGq7 n33yOrSUUds^JiO1c&PwllH94Vh+${gQT$N=U-?W%H}HP|oa+*c literal 0 HcmV?d00001 diff --git a/sources/client/css/bootstrap.css b/sources/client/css/bootstrap.css new file mode 100644 index 0000000..e1eda89 --- /dev/null +++ b/sources/client/css/bootstrap.css @@ -0,0 +1,1283 @@ +/*! + * Bootstrap v3.2.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! + * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=242b77ebf84da0cd12cf) + * Config saved to config.json and https://gist.github.com/242b77ebf84da0cd12cf + */ +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333333; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #428bca; + text-decoration: none; +} +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive { + display: block; + width: 100% \9; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + width: 100% \9; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +cite { + font-style: normal; +} +mark, +.mark { + background-color: #fcf8e3; + padding: .2em; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777777; +} +.text-primary { + color: #428bca; +} +a.text-primary:hover { + color: #3071a9; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #428bca; +} +a.bg-primary:hover { + background-color: #3071a9; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; + text-align: right; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +blockquote:before, +blockquote:after { + content: ""; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +.container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.row { + margin-left: -15px; + margin-right: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0%; +} +@media (min-width: 480px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + visibility: visible; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + right: 5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after { + content: " "; + display: table; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 479px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 479px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 479px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 479px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (max-width: 479px) { + .hidden-xs { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} diff --git a/sources/client/css/fonts/fontawesome.svg b/sources/client/css/fonts/fontawesome.svg new file mode 100644 index 0000000..d907b25 --- /dev/null +++ b/sources/client/css/fonts/fontawesome.svg @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/client/css/fonts/fontawesome.woff b/sources/client/css/fonts/fontawesome.woff new file mode 100644 index 0000000000000000000000000000000000000000..628b6a52a87e62c6f22426e17c01f6a303aa194e GIT binary patch literal 65452 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 q%u^)w#YX9ZIvhtu?9Cy6YRi6f6G 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 literal 0 HcmV?d00001 diff --git a/sources/client/css/fonts/inconsolatag.ttf b/sources/client/css/fonts/inconsolatag.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1a212c65f1a8cfb4424aaf0024899e725a123e1c GIT binary patch literal 33680 zcmdVD34B|{wLgAmt`_gMBwMm9TdO5`k!4x3B(L(mJ9fMzvEyt`?5vI*oP_`h5TIekl5Rb2xXg&%#ZP1c44sOl=!Y zs{8XHK~NvY_x`=3hxd^wVFP}z!2Q>HzpFlai%5saNBA{?UQ3_Awd>>~c}FNCxSJ-c5=BNT zkX|Uo!+WC739Glaj0yFEHQynY&w`GC?FIa%W4}`kJ%xi6SaHa31xJ4Vy6~Xj7J7vu zAwaakmxN71l@Jl07Dj|Ogh8Q1I3hF&9YV2CiK|`sY!H4SJTLh1t%Cn<5*l&VF7yav zLI8K}#QoL6I^5YTcyQH&r&&6NBO%I)QY{mpqm%8ZN`)A&1gUWGNYDz@%l7c`V!$I z;W^SNObaK4=g_{-13m_86J9?RG{VDpZ3WAfq7509B6#+CynZa40%b21`q37QDcL)h z^RqxU;2Y~nxq^b!W`k>8j`;_e_yEfkenZbDaPC`iv$tGsvBNe2UG>|sZ ziPBb+A+m`~lEb{T@AJ}Lvu0a!tyYv)d1h&|zn*=1_Nmz?W*?dT=IlMQpPM~7d&lhU zv$xIOI(zf%iP;-xub#bZc1rq@R4dg;)l%s@e}CtrcmDRy2k-pyombwu@13c)|L5)N z-ah_z>YFn%1pwXu&Yy}Vv4WWBSX3aHlRZq5ob6A3QWO+u1C^kL)JhbRgk-cws*on6 zgM&1J7SbXUJwq=TglzPn9B^l@kcT$6fX+6-E;zuoPV^?XP#_dSW)y?}O2A{Kf=?(z ze+~%c;NKAXWCi+q6(m6o_%9;Vq3s*MGfm*X7Vu{qc)dgD1jlv@tH4jaoZtGvOM~dg zYr*eB;PUn0-wnb>$fV7}7W7;}xKg-ExCVXtCgFDBbHd$_B=-pSfrsxG9uU3^>Gh!S z72&JGL&DdDuM6K0z9oE9ctm(icvN^ocwG2T;Yp$chmWBT?IKyiVc`qHK4A~Z6%Glz zQTEls9r)bOiMT^JpC9Fq2}nT!vg+HyF=3l9iDr#u`K|Cfc00)c zZ>N$p;Xm-@yTbnvBRJhaviWbB!UZH9a#j$ofLyv<_@r>HaD#B8@G11ATZCJ2{buyQ z&kCOrULhh$7S2OYNg#>Bh2ZccqF`mr{dqv28-))^4Y`>-OkO1)Qa$z1Zn~aM&?EFI zdP+oVk5yV#x9URG3Dp->zf!Bzx#}ME zwEAlGJ?f{_Qi3<(vV=zxq{NKG=ESv$(}~w7-jn!L;>(HeCjK)iB`GJVBI&ZEA13`X zxjy-D@`EYaDV-_1Q|?Upe#+~q=G6Ao>C|tg{wXajZEf0hX-}lRo=($q)BDpW)4!ko za)u|PAFqoup4231nl(E$M>OwiQ?x_cd$dn$Pif!L73e~`LES#x7j=Kq{ZD2^=1}JD z%o{WB$~=|%L6$jdXVx=%g}y-Ftv{fDSpQo?uA$y=yWugzYlhR=McM7y+q19EekA)( zMvrmY_*f3j*_!i6&Wom8(~#+A)62Qm+(_=B+^6!id0X=yG26|Tncuanx7=rW7ZPU7 z`mpr{>wC5&TgY~y?K#^&?M3!Y_AlArbEG-i9hW*Db9|Uzk$))v31^bC%6Y5v$1b01 zpX)x?d+vPqCimCezbyzA>@0Y!;LSpF;qJoU7bO*$i<*nJ7F}HQV9{$ur;E+S&Bcd{ z?<#)XljGUqxzY2>5`D=~$DahDfDFMh0yQARpG7S3&SVEcZMGhKNEg6{BHQe3Ufty#a8eW6<(kH zkc^9J$OR)5s!WyLRUYz-e!W4Tm8nvT4$(`3<>3$+E2u0es5EIUDrFMMs?yLzb;cmO zR6wsa8Z~C)rc~)EQtuwrS#(a6`ylxf`Jt$UgvmqC$TB!wp zL{#Q!@_#sYMxUPCnd`|_cvV#vM`PSM%61FM)K6c9jIuz@39IX!oHksnI2Or1W}q*LKcG*DPh#x&9u3i-DPE>8 zh%eG0eU^l2_*wCLY*g!={UNo`zd_1XK#~b0!03`k^ai!d?F!=U&Wh41%Ym<9y*ksN zH)vdLFAbK5!n&*o=!d(4X(S83ken`(u&2SVB!np3ZRN%TV;h@~_V`sqQMt}(DhX$d zt!@t0RqFNzf^{1DA*G5Wl_$BUj;Ip}Rr-?N)+GCPH&3N>w5iv$hzSYG+9Y8%B~@ST zGuCZNmTvrAQgdOYHEH^JRnQj7PedClg`(NN(JJ~5ut|qx&*$1>fH-u1hKs}Q0-y%F zDl1d(4+YCzgfRgw`SmV-F~F{ppY})-oqI#w-9fwqdWX~FaFPqU_jKcbkJstUHaO|2 z883Z%U1R;)b@h#FYYR%t3kym@g)@I>Si80!@0?;^si&ya512$DF#91!`qwe8c$q#& zI4o*ID9k_r#~D;=gW8=&WbncaAW)VO)8(+Mbc~w%fImWmMAtanTzOf32Bpd_cUfO^ zeg2M$o*lhS{TowT3w)(EtGCD-tSvEx^9}SDLyeWYEZ-_DS1M={RV&Ne>URaUmxOn& zYCe*`t*>F-rz?i^T?GY!Qt3nUdT&{S(PCf{pAap1nOq~PK*1_&jr&IW^UoRA+bLQH;BroCp7=VHgS<7;)9^usduZ zP?eNK`s{ZD;2@K9|RpE?kX=7(tx-2~kMpZtVw`hMFle$gi5{Pb)M*^AK{bviTEZr-kLCQCvFGa(Zf71)fL z{LGxN%@QzdJnAqP7vGQ`U8|93MJ?h#q{UU zg$&SU1c7%1E}T?mVhHI%F1J06>ilM!nMNIU)|(@gtk2eH3%Hw-QK6t) z!;wR4e47Kdyo!xJrJD8yPF$2{sIIV7^%fWvS~f=|LdWb!G##)N;tK`?Gx{93*Bu6d z(DztJ1tSOj;b^Z!D+4w%(-@3&T{U@0f0Ih3EbD3++1a0&)$K3v^wg}bEL%0b@hHtJ zU#rdBUO#kEe}_u1EL&Go-zhd|GwK|r4PpPP2{tYjaav-?@P!6)_>?*ZNCY6_xp|Q@0I#Hp>EHPviRTNoh?r?DE zvQKOdZFAJv9anig1E$1H9TlsMMWyuh#)v{EDpJyt9F==o3%!?4Ok7!3+JE;I>xb7% zUk`f5u3g((((Gb$d;(ospsBz)h2xAW)s9fur?YjFr-o~rtHzoKr=^GJsgfsex$nUz zpCRZHqEHDuEc6Xms`h zE@Xq3FuR@8SDj#RW%|}+=ZV!j*I#(nwon|3C_8o2gJJk`jD@ zhUuP5#&=xZ)7yFJm8<*Ll3`!LuFHqJx?#Se!Y?3a#>gKbXCU< zDdqF`>9z-$kS5S*!qg>~r<2R8CV!N)cT9&X$`m7>Yh*_2jox6Yx=*BVpW0-m*|UXB;dtgJtOO-`xRt}!X{ z%AG!6X}wG7%yPN)fwqtrV50sK=n78y7VvKdEx`m{NV|y0*uYF#)lt3(hpGvaNof>( z3YH0rI45ex9E^XUEKu4xRI+AuO};(cvC7@B$CQ#nTT9v^LzO}Add>OA zis`BJ?BWOZp8wSXZ8E)n=HZmAmTy1NX=LgftPTQA#MlBoCe}MN=pjAiap?r{N~g#k zshz&m{^w5Vqjq-x817f#erVHk_dCYOozlZ3P5Q8(zSQ>XR_U`ctpZ%GzCKSYnM{lc z*`OI_3X^7zg-KV_K1-!KLEBO48#3j$g!`K#m%p%mvY@LgY%i!;-AI4YP*J7SI(pTy(O26&WhgVj15^pcP1`p&kh@M7&JmxI<`2ens4 zHb|@Ksf47I#F;x60C7l)_>!X+EphlC%Wk=>GNbOv@^T( z7O~9yN^bXNJZHpn&{m+V5Rjk2>mZuuUQ)W2D3tZm)0iOrfo7`{64f(Zv~uP-#^)aJ zO9}LeOxV?+WkHs*eiW5%dgq)hi}5@46x+{>I9ghRHhZwO*%8@i_sk0B>X6MAuCWz# z!pfPwn(VxBT}zw3qW|)HE<=xMX8N+c&6H&(Ro(@Ia0y2aFB{i_vnGzWS-(;U^V zIRT16jHxqhngRO(<$ zUb>!`rC*VKWSjIp!@U^KdGTCA3?@*hc*EE4T>FzD-2Mf!N$Qe*O<>=`y{!M+qp;c3 z#OCJ{Gh*u}PZH@fWKDuDL9&wx=`MPza^|4~(pyRU*mHNy4w1iz2{BELjW2hRE@_q! zDt%K-XgU3JXacw|Za%AoFsBOXmKHJ*o6r(r$LuJ1L@tM*3=wbgi1aO(B_xS-vx441 zK}2won_xS8jnkO~bg%-r2zCBuz6VW2FrX|y`AAC9 zGqn+Ae33MfPWpR{%>pTuP95UW!^T+O?T5ag9!neG8LmZLYe?GUn_@ zUuy(EQOf)Zn04s5DvyC(Gq1x%Xf?N(VQQOQIt8e?;4@S1+XcBwZ?O46Fw#G6X ztk7sIJzFY>QJ25RQtGVhH9egUs`X=NR6JTDkcPmX$8;AS_ zUA0bEeNUlpASW;MMnOY*ny9oCIW$_Q$8Ip#J^7-jR$*BBxyNs7*xl4J)tv8fw~|+j z9QIYKjSjy)At9%rtu)wIk_Sd(^zGtfYaWxzM9t=x&|_sqE6nvQm}r?yFjd2fC}!9~ zmaeg#J%bfK*LcNwH{W`oZU^~x3udhfok_Q6c*CLkio)X0{pBPxI8dP$;|(kTD4R(k zO@MW1T_()4wJ=r0>>MavJtwYXBM*6OSfwP&0i|&$;O?k(7BqDig!->A`bu*1N`1!S z_Vnb$v|jQIsZ%Ef>vmNk&$b zMH~rz^#-rkM$NjS?m$_2MSr2LrlkM+W37|Tj{j=dlHp+82(%qQrPX4RT$@3S`6NuW zKpc#QsRXPHObP}Ad^SVK?b~ZyqKb%`NWQ%?BQcSDxCg% zy^UF#n7LD)e~U4_kxjteF1y2ZvU#+*c{J1+s2@m5&nPQ4?d!GMTvlViy~|Npm=oSw z-!xjDy{@<>zvvKYEcY~Y7yHdN?b?J2a&k*^^OlyzKuFyz<`kB7Or%(Ha}w2}n4S@F z=7!45dRLJl5;ph(f$Z+$RZ}zn%J+J*GzL>~R=yIpG)BJ>(2wBU%Jm#J3&()Kr-B&6 zK)Z4_Xfbl)^2iowXqJuT-mXktKTS)`^*CEIb3{ssGC`r1eo|Up=J5^ zm*c3AehQwr7!|!j{|S8!`mGM?l&ptpnI#8v@K3yaM0((=OK z*RAsg!kz76232Pn9oD=sd5jdtsscUMVN42v9G*F;0~K$iK4xP zs#5c8dHNou+LZ3f(NIl!UcSfXC@M4MLGgyFXHZIrp6_9;aj1Q^I9|dJJX7MpocWknWoln*SSRbVD{LpncEKS25H_O~HBmS=s^)^ljbC)WEQL{lBB3afg8`aP)`+7gptdiWypqYjcGn!JS;cTQrF*3;cE zHaH+=DAMvQrOqN_vQ4Q{8%-rSwd*)eBeQ?USn*XRyW#&}mYsAav6+Z8gZKD|!ToMw zM>z2A2qCCcsr<@ANutVc3pM2Q4fPeIrPJgi)Hxh?r$V+~ZROczCkboALvH*C3DI)!I*(Y9ec%i9+7Oal~QI0oDS%GKfAH6o<-s*%7x zo0hJ!hkCYd?4sI)^rU3zGIChD=Jk_)>F?6N$U5l(fP(TGz@RxOFQy+ebw>;s$U|!$ z{NCmh*KYduqa(*5XC>)_7hZrfO8E?)$)63;d^}@i@Mo$r0fP)aB){w<$l@lrP#vk; zsidD7Hz%#r+3(FV2KrjO#qf8fm^DRKofaZTm7buKE+n}FRgn>?tI|~I=@Qe4A~oHi zD{?dVm~O2@U9x?9Ubo&rPD=kts+nqCM%twpskTy@WU4j!6vwM=wvD_?e=XEA7~v{` z;9zEX5du03a)pginS2D3jcSaIsGt2-M7)$wy};J4V$x;^8qH#5hTB!>%5)Uu6gbmL z6}p^?!b*iN*<`Y5ii`9Zn{DY0N{hjtO*(R{jcMVuo#knn2};rk*KJ;JYA7x23T3CQ z>C@Gxt+S~U#RgH8o?Lc*c9*8xY+&#biXbkmGHKCgS8_2-tNY1Ba)P#s4K?f%# zQ>Fo?tiLjU$$=`AgHgVdhXYMuF5zPtCN`Dh7@vT%LX7*ugtgl81asxqGNP@jGK$kP3JzP!oR->} z{7Z^!2Fy0SKCwX4U6XMB;5vF+y+R`@($c${EuO|E@7fm8XRYy-dm7V|b!m}aPg`T5 zZPNix?;+toF|Ln6cg0vG*i~G2b%qT9$N<+dgAMLu*3Cg3)}_eCEiElunx)4I8+=uj zrS*mN4trf;eQ9NNX+vRy%|;c?O!d65u)%J_kG`rZc8}eGA4@AMVT>S%9uwe;c!_yS ziSo_11`0Kq3f0%=xA|=ul*^M0y)6)$djoDC5=lc+>8mt%T zV8>)V34in>Y3t0t$qB|&Yi6IqygM1b5?H}7%cAlufXM)+1~BUn|75ejFlHs(P9=|W zjQTQDpn*iz-PkkC63@o%-!~{Q3M7V$N@{8~1KAb+QdhofYHjuI{95><3C%EqB+^r;>fSbFt)i{#>-3F zs49u7GIMo7SHP0y(0ZEPb?Moy&Zg0@^zVcMW7wQ%P$xPKRkj2Ja6C@0BQJ`~3xrW7 z=D(74=#ZZfdzsx{_JN)Gs_8rIJo=A&MQC4Hh$!0ui&!CI`!F+OJ)=B0KNXGkWkw8b z%qy3b>5K-E*j1z|xH`E;K@&8VOiz7%iK#S|%_>^AjeX;H_uhM8|Gkppswb|(Klx)# zsX?isiZpFXI8fe^n{9U%?ds^iEIBr9lIL8d)$P*gkh#{B#YYtHYP z+Y+=M6541wc@cIMSb*gKi_&PE1u6Pk$#pk-A3Y@>i1W+7Ywq%X&m+DaRhA#$e~W@Wpd)pn@~0pHjq{_LvCW@0<#Zo;IR-lt-^1Lxpqo|cFQAs@|S81 z9ZZ-}u13#wWNDc1h$(F@2f1%yb4=|GnsTi!b62>%yQWBM$bo!W)DF_$Nq=%`smbC` z_*BBDZXk~BDQU)>bU3((@M(Gj`3`+C2J5GZOM0EY2n_=?x`jMQUZlSPKW5;2)CH=N zchGV&Hfk0b;UUO_@)a4wMUC4ucB1xCoRwX6XB| z9EGy6gI*aIhjN@a$?F(5A<1H~6U^+)&}Weo5s{CLeEv_=$8$!4&FexbM_n(em5FNU z34N`rme!OOSVI~S@d1~W1iFJ&{*;j-giLeudEi23`%FR+_D1Z|1zmC|+f6;dl z)x`SDA~6z+n_vT=Itby;R1#JrTJbpQx_Lujp~-*C_Q$m&cN%)2GrZ;xL*Db90Ijc0`1K(2e9?v52(; zg5lg`L&w1?v8e1MvxmAcA8Lg@RS4T&xt1Go!5nOOmMyw+bcbwea`Rb=J5%j4bZgQB zd6vrb^vK-B9P`5t&^j)S6}c=8$9Q%;1ZX8q(j{0^;IA%?s3<4XG(+dl<$+jniIU>?_nJrK&M+Bf@RqpE3BJVV7p`V!$I~o%?j3 zp>Ij;WJ6y58c=u?GU>k|lTtByF`FF^&_NS3*{J5eXEd{2#ci_Q<}r&uVr}2PJHM`| zs4lWLvXM)gpG|BHtqqv=Z5X}i=gplREp5HM(nCwi7B>c8LmlCVFsVJOY(cEp>{n@- zr~#B|pgBfYL_;OUMQ?@Ga8_}=wvs(z>1I-$UsV-+;7fb=O7B+>XB^RqS(ej(A|1c> ztRJ!7d<}h5x)VxL9wtd5%KkEK;bps+ErP{aLCRuKgo3bCA7dBA_{#3g>L?DidXmP> z52zGsr8J{0GnY}H%NnqV3i^%t`ajAqtS$ByBzD*pDq2-w^c!8&WjEN|VyZ~@%z*@X zn8oom0=iPfz17N4A)Ym^CvroO%nFM-A|jX;l4d8T2@SO78S>nN6}>^sToe|s-KWZM z7}HV{6ASa*=5maiVh11g0dv9BvRv3XccCMF(F-(OiM{_W|pnkQ7H*g zk}|nLVMqFas$iGpF%~f$SDs|TM4$j&YXKT_wkV?Z@Hgei6T(9*QZwR0EHpXEt>vCI zCVDUL5i@^UGR8vhoR6^(r?!FBl9l?w~A??2De-#epN2o|v7 zaTwxV+$PAz0ymUd=CXh_AHy^ga*P*LaTVNEUe}yeq)BxcQuVsjVtXLZ;K_4pvdnib ztTNj7s=-?Tcw> zxaaiV1(kq@V)fjCdNj}rAc6GlnB1m{Q`EGm|3GXHAW1%F#7qbmI_dM$z>bU30<>($)tmt_akBZ>EBAq$> zVjx^AcZ-b+3Xyw7!5kRq4>BAwPa?u*F-OK@bvm9U?^{rCJV$;fT0E8GNEXp(E}DeX z=-0835>B6ySXc?@!(&il&qnDp_bjK+)^k3)h&FSNUn0}SH&=j6m%_Q~K^M9Hv(aU) zxPQje<;Qb{#?$1f`Jz#F3G7&It|#Ql{&cXlJk^91hpFg@QRA~n(V<3f8ow*p<%mRv z`+Ng8ceS{}xq)!4rody?zjFFCJ*COweWV#=2my~6dv$#_UIPI9G_o7 zfD30Esd@!bE=*5Z1Pj-P&mC#QnT@RfUxj8K78T;!O3^a%xVD18pHIrnOD)wgos0EHiO>xs497!TmZTaM$cvxJR`_G=|7(yMjRW;4sJY1@? zCK#ztP4evfQ*nrgjM3{^eAp#DH4Gcs$~{9H0FI*3dDN0$i^k_Uowgb87MVDU(E_44uIob~dKeEt7Y zy($)`C-+)7pU#DHwA1chuJY&rbS|{P2QuC=k25cK)Or%rAeH9?g{b0(s}svX6wlUA zof9s3orah50lYJEd$6!9%l)i@lhhh0unPa(EmE%&vYV23UWx_l;MXgLk9K}#3nI!joisT)XGhJti^_@{dM;Yu5H7TPD*B4-&IX6gmT4>OEN>{t zNEgX_2x&D|H(oH{AJAt`cWk;OzrnO7QqrAeXiQAU;=Gk(gcjJiE#8Aff4Lz8qJ1ZjLr+I!|pVHD;TNZ7h@* z@sWPSPUK`PC)aPjILz;8?lUBmgjMgGUhz$vqv;C z$vt@Ps75Zbx1J@k@yxm*qYY=Tn@QyQ|HZnQ{IxQlLUc}Z_UiAIrS15+0f@@kva_Ji zWe}siEQ1QMQf#gd$26pKw1gNZaV}T^Q1PPX-LruPe&z9uoG;)TWHuu;3zy?-Yd%CH zyd=jn@{nR5{b-xT&9%_Ohx z+A=z=FIihvIZ&kg&Mj{o=?qqU=HQ`wYld5k5L%L_vlQAPE*M=|+@i$CVdgae{CuamDYJGb156 zCrMW>5e|7~`H&OKMp<$uBZVKQ0?;>B2jjm?NQ9U?Shkv|C?Gv&Rutt<>Cv;`!t^PY zQEb_kT(;untreS>0OgE^l!lgois?gg8_NABk4ePEJxI4)T#HmzNVYn_iSKRL;C?vo)bVWUwR1JqqcYnY%Y{Lf>R@mkFHzZRn-oen^{z7KH`Tm-5`_ z`K4npc|VvsTO8)%`q<3o?Derx^X~uC>gMoceS^(;qxSo=RvGOc7cX6Dw1-5N$5M>a zROUzcX%}5Kv`Pb!Pp*(KX!P^)3%VXNvqert?k zR`M(e?)vMw$b^0``$|8Fc-u_SNWaTAaM@T&*_^By6S9};Xvtn$M8b`;U^uX zeZHbVY0>HX7r72mzPtwP&nVx+ynYMH|G1OiZ^Q$kU-3Na&oTIZv%(n`8`n&;0a}Z- z{5r@(Gn;wH5yUK(D4Zpa(atzu_xr1g?U}mtWQ{)EQdaDfu311L7gnI9=~M}+K~sUH zvTGrg7>y7P!{he@n9(g+m-un#q~BZ!&~H{st%aac%Zf>cKF4zhaQh%~N3i~GfNe{C zjtl}UO5pml`fj;Fam@<+wR|ldmp9NvSpCYg%nO-tC(dOjf?Upgf62)odhk51Di#ex z)DC19==?HoBf#(Q{Z!?#zAb3P&f5b1E16@;P;;#n3F*2r^(rPmV@9XEgh zb@UCMuL13>!b&Kt&xm5Lj9N1JBH@^iQ(i3MAdkstOJ83)gM%m|{M2%J97G`z^X;`* z%a@7Flp)l~RwK`?WRw+VtYc(B{!xzzTk1ETjVgKv+1JY!H4c;x?mxQ5*LzXLs;-E& zN|U2X*0hkpZPuKuG<}XmpW|jr8)v+HSz~eN&I^v-Ql^_)v-Wa#UeQ2xb+)7US6yR> zT{UEA(>2*yR!ngiUH)(Se1llq>Bsn{Te#j{b_RI~9I$iLk@H!x*5Q%WY#At9{YZ?9 zmUBKXFZlEq%q{rT4Gm!(Xn?%2csb{1W*%R>V=d?|LB2CV|h1pEN|aZ z(lb7gfjqiUT1kJ4k33i?l0?f~>_Ovfkgq2#;T*BR0ul?ILbd@up9;%|g$qn;iWe*} zElkmCQ`N>yqn)^1#ld=a!Nl>x=EVz6%YD%Wr-5{nQLj(Z<>)K3{Q2S9)Og7Cg zK%I~O;4uoZUJ@6-L0*maiciO*8|@3R5DPwrGJ8ip`Wv^oL`xDEAbbXX-;ulX#ueB% z{>}Tg^zY?O8x%SGkV8tm8RIycN5^XkvXDn_V`fFZECqw)!qg`V2JWZNkp@M)IW}Hj zdCq(&is;%~re9u?!Gi{O#L~6Mj^g>0Es!hny4fE9US?mL zvre&6qN`_#2#q4Pgq9>Aa*@d+IWNp>u#zDr577BeIxw2!1JnD@vyGUN_OaF6W$&UH8zc$b*9X?aI53%kJ0ijtMrhTe; z{Fgcy-n=R4sm!Ebvcxu#2(q&fwJu3I6;UfX+dgO|rpz|(cO+4oQN|^p7%w6U5(?2c zCf@5x)9hv|k4HwZ_E`FIjxuFUzVt4ZS__tLD?#WA^Ti|Q4R13R%?)ac3*w1*yImL; zJH#VKUs@tu2xZAOITo)D%{p4vax04Yl<>1>+S<5&HgoCn=CwGOnQbbjr9g3rOV~3f zfp3TdUDicTPc8v`40a}qxy^#>eJF5Q@S|c_`u>?HP+9JtertIo*m}snA>Y$GEE^kR zcG<~;)%S7h+@l&#boDor!J3vemhpH)ZEm!N`K3{-D)WD>2nh7@jTX>%OtZVafUtaL;2vcm}BW zgaC6(!LtloD(d_NO01MpxC~)yatfWx4={)Mtgyvj)!^Cq@#hMnp~!DT4>&`3 zlLuE4QS{}mgT5Q_mR7AGnrPn6$oh;LS~uf8z~#hydHW(|Gn^cJ{PavJ@b2>^ED>4K zbd0`}Is4y;`F#u0lG*Qr7*yCIJuWtws=*ee@{kHKX0XH34z2)@Qj+q_efJ?0*jeQp zHsrW-`U)!^uxiT;W^ZC@somsDH_(S|vJ#i?Y42Kl&D|rlVd>-@y`FrZo184D^Lm@P zKApk+oO!UGl_8J3phG?ld5)2pM{H5HV=hj%JTV550qH#E(o!IcFw;~p31RC_c>X*N z#qMUz<%TammgcigCrMY#8OJt$qqILgrsi@>365%RKr=vnF43+Z( z@Od#jJdAJDi?Rf;kQWD+v=_wX3b0gcsMKi0LD}RMOBmoDHkFyOBq^xnEGO3}&S*^uIM44(IZ>&0v(jy%C7OQIH&!tX7CUQ`TA@1KDo8~1n~FWz2o zC^6b8KVCL3-g=~YMJc^_TYmjxr1b)P-O$Tr8~T#)ohy3-w}K?DFogqWgm1;AaVXTC zJ&gmWpP%PJGhi=>v-s~nR)#c^xx|95f3JwdXZZKuUNN~Dt^GVl#>c?rT=X|BfyrN2 z*c@lz;$3mm%=5JhyLiOo&O}3^h#$Q-yBBLK00xsYv#|$1( zL|NXlztalQkNFgA4QI^Nl;=c{R>aS<5Dk2`Welx$?RzKo|4n%tw!@ z&mEon>G*iDCzgxOUAQdk@HyjiW4=E*whfcErC>X&e|13|+t-)z{w<7J``+^YKbcm! zqO4EDGmg=dYtt*BP)wPwS&ld{{kh|uWPzSC?`KwXJq4pU)11%Y{hd>vXO^bKoCy>h3e3I?jz!w=Mw}^13m*9?OI<4^u3e+v1EsPw?X7@&b|4x!i5@^inY^NK8{* zK(d%n`s^71M)lD+0AqAxdtRQkb`zsFCw0 zYEMl=q6y5qM0sfii;==?9~K-Pa-`tE%mFmyN5OCd<(e)z_-g~)>}HG9t?*|m&=!A(ng zOYU3fAzA1X0bbMeAo(|sb6YkxYS|DddPcYt070KV2|CVlIwFWNr2w z`6Ahi+#8T0x^e^_%boz9i^26g-vP#Cb>&%oG%>mZOmxo!_U!ZIf!MQWjP}v(W8_^E z=;ezZ#u^%(BwCqCcx_qs;C#&Mc!SevPC3Y zqAr#jz7P4@K9cjvaT5_#JnR#s?0M>`o~NItAN{&z<`eWHgf-0H%Oobx=mK+6bYG#l zXZTa{bJ9~S|M*7>sprrBRQLzEmHY?qgVFU+!)b3ykW)d{O|$)?Bm%Ju&u}3Kj3{BdywA7^ZY}fGP4~H(UBuR59wKynGr|z zu59G1G8?78isb#A7g8O0eZ}qNw&qRdNK4q0*pyyM6bNe9)_aX(3N|W0? zkeu9P%}-5fYAY>pl~z@!x+=Fsni3NW98C>nZEyrr!Az$4eq?Hv9gfKQf6#`UCP>#6 zOoy=$mxyIo`8LuyQ0#G)IqbT+GWxbxdYVMMUmP5iZvIz&gdX`9nE=Y5W6$g_;8*@F z^H;G>G1Bu3Pc4?(Qx$mF3ie7O48TUJp+&^qU;6RurMj!a2^ghXS z-%l@?xhi^pgtTElmFvMxJpYoslgjmNyza)?Z&E$HJ&=ZB9@Cv=YYdU?6_TfK*RIdX z^<7VQkr%Lc*!=i*y*x{%H}RMbhC|#vF{{-J(VO0sZz95v>3;HM{% zzAPe~!f#)fe`8XaFTRt1WI1Iu@1()g#m?mdm6IOxQ1msQ7mb@LdaIBUl$b;9 z6}n7uO8Q$@2l9dj>MD^JloYNu1&oFFO8-b>y8N6bKWFq7WBNG1w;z0| z0$(Qc3_0`huSk44=OAX;klZe+JhFM@$OT(A9(ldaQRr~B);Npw8YkI)&rhGc=b@K> zczO58HTwrPw)9?Ed1(Qhy8>pD4}pU6-!tUe=s6Km>7M90#s0@fqvxVfh&j1@Kl0;< z#^||H$PhcC=g8tE9s-?-0z5^oM$z&)5prm6^qdNmUJyMOg?@TT^jv{^W}@dx!793= z=PDsbT#wa7)9}5GBInn*FeX@$&+Gzx_T$Pv?D%WNuBhYKm2?+AC-Lndb|u|~vmH3! ziL?DUPC<&Z-wxnx3TuklwNYGQrM2S9Bz|GXX*@NKJXBWHIfc?Mz?EINwiCZw5ijk- zD}=M9>t@gO-ewCHr z!Edbg1GuvaT5T!H-NvEXhim%*E5mjIM;ZE3l*x89X0WWnwK4p<9q)L`?FDq(`Bf{2 zmEk{%GRJT~tFIMzZ^f|;c7qt!l_*hYnjRlLFg|A8dV#fnbl*;E_xPb*{|ihtT`?H`{Q zAKi~)4^EDaPg@V{9Jda1bX$A(p=efwwR_jL@yY$;9_!8n2liE!mhRs+y=&ir{oeh% zCcG%Vw70d}Yh5)pwrl$?8MwWp+qdtsPK-}Yj!utFd91DDTdidQR&^z?=m5Igfa)Yj z$C!aJ)+oZycHpPUZBvu`rzS=ZjF#Z5{2yzYc?Mxb@q!hsXcFtP%(5n@%4`3dzrrkFM#`Tpk0e*o967maILg)`a3|7QDu3X{Hz{;*FwyUKPC{QvW=$qx#5W4GZ?VE^M=h2LWbYC3V2}Afpx?bDyeRw(J1_4LKEPhauL>^1Uc3j5J z%Q@J4IT!nqVZS=ICp57V8#41bpiw!6e+#FDcZJ^&7jcsUQb>xhr<8}32#*slln);% z<2yRvNBqKT!ha#4w;cPVzbU*Wyn~(O-^RYuj|$IVf9Y=t&tm`Qr?D^fmxU*V?+8zj zAPFJ=Uzk(~e<79F-@F>R>T0o1S{?v0W1rqX`G1 zC#pgDwgdd2Tr&+}tUSm*Q`f}Tk$N!xn`*sW>V^D}w0>;r!00xJ*#n9Tahibl#Q6UG zyE%#dO_kAOBRl$i;c~_JK}P?5qtnw<=O>Oq?(?&hL%a6x+KMOljcyxH+qP?Z+rhot zC&mwZw~g*g$tz5BTUbtmcW>gu@3 ziHZUM0{o^wegLrlm4R`;9O}Q?|DQxfm1O_`02zLDod2NyhbBl&SVZ(!lm6v+{{uN7 zotzRq)30Xz%hi9OuZs?qVPs=q|EmoG005~1005g}KJz}9894oFApiM-_zyon0KjI} ze@%Zi5&!_!DF6WbK{q@=O>+|iV*mio$6p)fU$B9YLzbBTiU0sy6uCxc|2E!Tk2a{{;b{9e}p2fsM(p zM)PY!^&6ilG7_E2-p?;Y>$TO4W(_4m&Q7h>kqXD~K4)YsoP zJuo)a2a{xBU^oRHYQW4RAedqe?(-KE6iHt@?12XcesBnJ5->1`!%0L~ASEd7?S%kH zhlPc6&#Fq)5Kk6F8Syh5W-gOz)zFh9RafP9SE#d5K)OO8HD ztVbVS+N?bmoqfV?>t+5St@m0fx7JwqZy;!ug2vwo`#aZv*Cdd8R+l%VzSdCNbvkE4 zOy_9*vXMlJ@tJvQrFWf)*7l)yq#O5iP8=>0Qi?nhL2x}Xfi>v-@31CmNkZ$K+IUjR zn@ibIvH)r}H`mNQr!*%iw)5^Eurr^Cr*sar)!dM#&`6z3e*WE*37Z5xRZ|e23 zX^Ju?`4`}5rf;FjiJq0_EL}7*g&dy}hz}}B)J`eg+%0ABYy(G{SlCw zq8fpJsM%#cxvGRymI|nEOtzwSk6w3GI${9QE0#`5E?}W7!DON&m8P`#jQX(zqw&Z( zuWT3EnYvE6s^+5LHos)iHWcaeE+!JcudTL^Fk-vlOv%Yz+a&6 z1Mz|@(m&^X??4ez`s2hOr1}boT5?{BHYfozF$D8SbKuy4bh@`3UO(?}I+K($SMQ;E zs?zoX* zUEikbWJ@zw8GtW9L75CX4web11eC|3{SK|7;q2zB_g4;`d0TMeXud?zvRXUe4gx!a zJ?XCHvzg_hs)myHwv)y{ic69rB0=%H4c>tF6Leox0+SLPwciUs7J10o$rYU_scFJl z)0-tdtOGz5=uuVqhRAOCwqtil(8unkZS4CS#AEO=i@BGxkMzs)eQqWvZ$V>-Yj13g z;B&}WYhut?YC|}Y9OcEsGI4utr%6`2F)wru9}d(jpCb4OEB6DSWY-Es477};Aau6B zb_|6K&;lp&TYnQ(fPg+YH_o_@K_^S6q;Fn0$wVK>e7&UM3Exdwh~mmgETn-p2G=E! zJ7isKnVO4tFRqI06q+o)&aKlQ88@xUgS1VMD z{H8i{{^c)E9m0>li4DWNWo&r{FfOTQ_59tVi%j(CIbIegH)x^)fJe2P8_`P^2|Z@S5&Xm#u%_ z(J9V?1QxGj@m4z%Y%ai{<^{*{+}OtnyAv!jl(owjOI)aqw=A7h_-p-_T24hF@LCLNDcEUPds-n z{_cUc?s@9ebS;x=e@tp4uS#wCe>huWvSX^TKa)x<1NCl8@v;Su=d+erFJp9kLzvyE zSZSz)M^?qmIrF#sf(7+i*n?O=71y0vGw(8girO3dHGUm$g6}f8kl$Az#d+Sn(BfeWf^>F@B=l{mjn0hNKke7w?qDpp7jC!*q5tFiX!zk%RPt?=9HiT zkhw^rW9tdJC`>D_1<1+Wd<+9(RiR9kqEaR+X?TGIKbMd`rmyGc&D7e=Ex*By2~l%V z2KzYaS7^||J8AN6hXIV*>$ns?|K7AADCN9m6T8Esi=D~I#^(C)-b(Oq;Pi~^m5KCE zk4hF)G-Rvo`$Bu_?nDD%>x^Cps?LI}f_$jC$a&G29|l`8RIjqYFq#ahMmBA{w265i zL!2(-)@J_YvD{#Rt(NO15ZGb8VhB9k&KRcBrL$D6mW&jMy%d$xoV&Zxq-nJlehQO4 zhwG;z^M<^c4E$dhq^6|V<-pGnq`6}eUxI^1fPK16N)m!TYJCw|VWk3<0tL}V|Fve} zlADYNI(&=Nv7-3ynDlI7O&#AwWDILR6@kZ7x-YP6W^*(&}xo5V>+-MWm+8n8yzOCu1d&8$(Ii{fC-W4an( z<_Q85Aq%4h>04^qg;2(eH#SvHtDQ9TpPvmbj_}tpwk2CNI<0^J6_zBx^14{TbR&3m z(Gt(iCfr9TR{O~PV|O3g?otyIB8Jy)a`mA7Q75XsdJoTEuax@Zel1o{CB~DAoTHEm zlPVp|+U#??=&Z!nMa%8#=Zlh4>3ttF!+U?&;5Yo9E9#}bi!J`aNtN)@vyXtBDiy_g zVqQ0Ejsr*23pMHqRyzC5?eW1 zFkOMQs=j|%fHD(l0vhr>a?u5g5B3EwQ9{Os?BT?yMk*VRu1N{DYjxLtdGuN&4Ozz* zR*mnVI@f{lXH=%A}OF}u-qaV>5!%EmLgbeHT zd4@ft1=R^`#UfYaST=yz5ZN4uSQ$#Ce+!acJOEdmy%2K^@Xej4{sY9!%3V*E7x+td zeommMJytXmu{z*)E}-2#+&#zElRdgc4P4U+()t3#6|3LQgQdNgfm3N$T^oO4B}~gP z^=&Js9Esq8J{XQ_dX(^^&@RMYaIO=cGkSKWpAQZ)u!g9 zt*t|d#~3iKbCL{8EoEHk)@Z?CZMfFjI)l$s{U4J;3!~<_)yoqfd~sRU&=KeJWlXb| z{O&#CEjV-zc&c$L!|9+gbxgK3#;cMx&NR_B^gtfW2w{pVM<*BxU^2^UkXj=vpDjq3 zjTPY635|`iRE3oMy&v&?CG7UKAZyKN$4vmNT=gWp53RJ?BLA#T-7O-Ldjs|w+; zC~+7l9;skFHr=!=GdsG-QSg{JIv0u7r&IfOe(}iZ>5X4oXfJ^2Syf3%Elt}Ktvl@f z`7`A&#`U)Ic&21Uho8~rKv9l#@Q9;KsBuZ1 zQQ$X$vCmZE9*#^gc$IRBeDv9Ei>W+@^lMafsH2}LT-tK6hLw{iPAzPDG*!U>65La zrH%^Yscqeyly)gS;Jj!FOjv_$(i;R={AMwTo%4 za3m)7oP3wEM49SD52%po8~l?K$zC_a7qp2v{BVFkQ|kUI4>3#Fq6Vh&V5K+le*QjT z&67(+XT-xTVsJhUk`ylsN+v)>+j~N-dz;0+-=h;h=a3(^Iq!0Ex(Bqfp$Ex)s^A0W zlrO0&<2c$cH0u9L|3hBu-rG)od2z%&j&eK9!-tyVmC!Tzv*uTn~sMcUBQE%Y-oi zH+);>X7Zyxt9!t2$Hyn+;#7L|GJKjQb=>c4zwp7GsG zQ!!Eu;L8m;gSat9Iyt1SJa-rTyVxz)9Q1IkP8=+ zI5cIo0~QYs~u#V9a>WeFR^tn4tp zm2M!B#mwAg`6beLObg(5o?$WB1i)^@Kc*^2cx6Wpa~Sz z%#}44+cn3zAXCuA{w_txZwkO($;L5J)Hee0O}oxua?G2Qyx&@*igPD#UVy{Kjotk7 zvrAe{4wK4e(l*mL*zi)M!|BR5>WSBcC%tJ%jX|Kfx57!1j>dTb+s<|8ro6Xa5Oc^sP{g&vbNX# zR+eCW#y^O&pOv|?8w(+^^EOA955myW&D~f|@P1(J|<(C-6!+z0zUR%}`&VcEGo@p8{Ik;Wk*X^kR2!=5VpRpyzF2-928z z(M|cBW*(j7gP%jFb8N{seg*L{%brU|9`f?4l= zytepr+WkCh!%YKdB}q^E*?{mszIyhxY7?Ja>C^l2^JwsYl;XfF4H$Usd^suY$~E$& zmhFvv<;CU#1KjHsAL0J;~!loSFQ2(i5uYd;xHt>XJI1 zDXpS-jiXFG>`3i8jx>Z_zN^hdPas-2RhfSw*W>C z-~_;UT#a*qJ5fV~AMv@ga7OstG7<(>q7O^!-wY*{LG7b9ShM1uh>+`tZB>kCo0qLOzT_1TGR*|_owT*<;PIGpk zk&D3!r_0HX&k5)hcP~5lY^6#8qs6myO-E_*^uCeo{@ zOl&lVDAeY{U`)*<66b>R+w%xDRYV@CWChC{KhS9mN1Mjbki5CCC!bEb}?!)@7TEAkpfygv+Fmpn%3u# ze{nhLC^NSf=g_2>G}cd}A1`TJRI#NnGE`MfvzErfL~icu(owKuhRWZ+fIm!s&LF^? zsg@5{IEzMK^xvj-1^?7oiRTc5fiR&8Gs29~#RR6r-IklO<-<(1^Wj}CSc>Wg7jW%f zE@D|g_$$*HyrK)i#tZ02{lJ;CsasKB84#g@eS(j#D6ir<{Vl~(bBw$9 z-9H-m99YqI&`LTez)^mPe|EJ8zI8y1i45aP2H_WYQ8S=oWlN4zIYL%KYQ3+@1_+@# zXb!oGmIw!tWL0S3)lsb!X9`-|W))QyCyD|ot zC!rPpPo=qCiL68zC=?)xa+0mVM}9mliLMZ;eBV^8clgb#SVe{G52!CJhcc#e#=taz zFaK(;yhRhD7446O|BJ=rATd`|5Zo4%CIfG`IB1^bm!pv${|n%F&lE*0TU@zO^}dn+ z_1h8zdgFGj%g5b@E6B+DmanZ&OC2q91K=oK$HU-I=(Usa%eM3Ndo;M4-KLN2bPs#s zsWRW@?4*af*$t-}kJF@_iv3 zW!R6x=40Ng?2iWRs>~nq&WVw=cB1XD2&XaFoE&*e7X1VxEGz`r;#o-x3OF^p+fE_v z&ED&jrIWUazZ-V2(O6`K%&8q(p;qjnQrDJQx|w}^stRl1Ik;)CK;8rn`}NCPHZk2$ zTgNgT@FaoHlTn4usu-EX;$oBL)+}j81w=*4l%=2(xamc(9T~$Hn~I>u9VH2L3}7l7 zO3`Pmim*00=9AyJE2!~yDTQokM-_gkU22l_$kLLdst!Q0=)%WDOqv_`u+2j*>}z23 z>v!Qz28Y6^n||!PX|p#9%H>uvm;Pr`eZEhAlItjsnp?w2xm>e5?Kaj))k(@}RfPX$ z4sktRD>r4#CrHQ~a+@u`JR=Jr0@??wW>G?Dz zCkmR4D;(S{SC#UEOhWriZWkm&6vSD=g-2qtzlQzTH<#uA$+T6j=q8eSN9SSCgi>{S zgj?5f9Ei--V?s#OP&0CsD3DoY*tWk#UIBJ=z}j~%RhF^1 z1I@jwyNi}~O=XKR>PAyXj@s#?v6LB8g`{dEP|{*hxC4eJ?7)uI>)Feco80u%CYuEf6HYPfysjaw&p{vj&^uF23D%qA51$!=4YBzJTe9;T}%`XTn zTSc6g=?htY@%CVE32RI0 z${jI6**L)q;b!b;NHoPP5xWVMXS#Rgplw2qv<3^)h(Jpb>RTfu0S!r0kR`7sgrAw} z{R}CFmv=cDj?_V874Twb>``(SnzEI5Y>+qxFIMflwJb;DCF^OpOf*B^#NPqhS2({Y z@7R(QE^g+^&u}#W`B1G&&PaMxzzFH9Tl!UXb zdZec24Xs4{*Hkv=(AMLyXt;18#Z&$*`Zi>gcw3DY9+9F<@ln4lpyg>_5D2%z5^~_r zW|Ce)#Ef!k`LNEWEpW&ylg~-L8F3hGh-#7=zqyodsE}(NF_ccN%QtKqQxy0FRk^b` zS4TPFJFtNzyArC|Nt@NRwt-Y`2hrrAWy3}>w!ipbw5{3!>y07%?~c_K&Ksk=20p%> z@_aRTxPXd%h3sPDjn(u%tmf;J7nz^O{~LBI_B)^RRYHD3Pi1L&!DCmzN=^$E6xuor zu~K}X%y2aUtd8+c%ak8zgfaHONiOi^RFNvMLSOv7mZ2S0c|ACSjO3v^AR{Ud#oW(4 z;6mWVI4FVR^+pvk0*I7S&&DXxvay^F%aK$2gAB`+J7e|}w^veX6Uj=p7G29@pReU& zll3XnN7rQ9e7Tg>+S3I6(>fz1bso%jGrf|sE-9UhL(Hf+e`3o)mS+*vq*%VBYMDfv z(F*h*oblGwc)6_E$1%!J{HBq(hNODQ;8=-`BifxiaVKPF*!@_+6ScSP7uYJXtLLFN zw{As9&tT0Ee*L!}4f=E6RZ{T1Vx2ZEcTQSvL_~8`aQ<}F_*tVYqOf7Azq6r?Mj^$Ao3iS9Zto5c zkCxkSF*@GQAu%{TkF%IeyY04vV=V?9ty22Ho`KxFR^)zXNK_E-JtFy#m}6=PYd8x+ z<=Y~*?5o5lt${8}5xIg21HT4p&W?p@Rm#UY+mjcT0n5-SqsUej($CCYI3M`V;-xDV zaQdIKlvD}*U@@y$9dTyauD-p}O2%)uhBzZx1s!=v-2!9dt_%PgA);xZ*KTdk zgR4GrS*RYr2k5pcW}{BCV7>7<4|e;znt@c! z@ThALJrMeSw>Uo4>5D??TY3z`#_Q8|7qN;C!@6pW&g;|3$+`5BLw%+**F;ts+RBg@ z1Q_Jx{^WWf5J_gb$1ib#{K^}DHS}G1TL9Txu20lwW6nzuI_?qSL*Wov(vx^(b__G5 zwK3y2#1%?W&Hme+W%jlVeWOvOMCCaq2!37c3%R1gBW6BIU{AwkX&DI7PE)-mSw%|3 z_YOq+-Bb!$aP+D&^j)&rLNlblFu^bb?g9mW#|>OV++0G)swB#!&#Pb988mxTs;KBA zS46c_JhEqaV0NyfmxZO$xWu;dHs&anq;vqS%0z4YEP64ew=D~Iu7#XGVXML6=lK$( z^l`OUoD4FaMPzq9N};DjxD;$JiYeHt(G=GUK2zk$(pmue9IY_XH)<4zCzm~n>syrj zur^g)`p?BBn}D0X=~&&{LDfI}Gk)`AWXct%z`ur znAN)di%{F|>*|-}%*)A$^uH;bQ6MsmWUTb@X(oELPn!3CFO@b@Sl__<$egT0gRY=x zSycjHqWZ^s4ez;B3?&-#(E)un!}h95$Y-W?<1^KDOWTcI$;>?r?Ueu|Qe)|`IkuVL zw>)UjJRvT_mbPUYZED%xa^uSK;Wd>WKIyS<;ZyG>sRDqC;Dt@d20;{6vw=K!Y7+*uHFBj2+%fc~#HaPI( zbKUmo3A>OS%Gx;X@eZGNa@D(@p0QCAXm|gTPcoJ@)UD3=0x_A;tka6-@1RTRoC{36o^oz(bSBpy;EDTPLi)s)F1wkMx@S_Ra6?p7|*#ClRYd6lf7kXlXB) zn%&f90SfzaC?WKD4$-3$R)UaRk^xeFN+hMdjezM^ug<~^na;3mVLEkP*PaiO(I#Fg z=&7zchDn7&N~#;Wfg~n~j58H3Ly&fDaf`9#Xi?S1wt$gRN{Tj3pjJMv520-3!p5&Q zqf{V1#F+EJoOH~9)`o+AC<%f@vO*?|rE47@w)Y|nuj_gD_I^293MB6&OqWe1kadN&e50R4zNptH9?9_bGqx!%_u znqvok`3IKQp6zNhY`fsi2Zk68I-`9*F(gwbG)7lvGwo~l%|AY0V~mI=cy`-NTn1qT zC`tu+kpTGEjI=%g?mCv;%!MyGzzEeNy5BA~ea&yJY+mD<`nrC+P3E662X%#tU=Oy8 zPUXKIrNs{6%MXsR0d;L!CHm1JD3UJ&LDgYB&CP}H0FtZ6HfZ(97bo^}v0zilr3bu( zF>;__BL{C&s>Jk+vS;POT(!s!P5$Loj%D|lZOf&?k+T}wQ$4DMBBdbK2c&`>$v(*;5+|kT&-RnLOQK zHq`{F?lxbP@guP}QD~FYGoIirJ{Qfns+tX+z@h=;oSi(`tKAec)Of0%k+>A+xu4xE82fMR^%Q+ zw-kdrZK}7fBI3!RDNgR8CxkRo?j8To1~d_BKvsl?>mro5;?c~fqip-e@6J>Jv`1$j zU@HXLXau3hLT99*71(N@^(3cwXqk$1^1ZaRKsnhV$D!%8Upd2y5L~jp-HXww+AjNQk}yrnnfE&GVP4g&v@?H&rU~n`S4?^mKyr0Gm?Z zc{pG@#Iw8X!H1p7xb39ydRTov-OtfhQ9E9Q_j9-nb34iJB$(Lb2)3!pkQ{d42(y-2 zg;NHha7-hUj@7#|r)!A(0m#|WrEO1u z_qBL`UZkb&>Rude;1M&F?XqnUCcDlLxOIS<3jf@rtBY8VQ@+147X*f#_!?q{#qCbc z03d6w(uc#FU8Z8(*ZC^+Fhwm)45cu;(qdg*A90}r&!)GFZ9;uPbKz-dPjNRq`d2b& ze*A-D{kb_fcy zd4KVs-KE6GZ$JUKHx@~cUrrJuS-FOHwqegvtipmvX`{wyLo!Lj?n_^D=d|HLlaLLO2c>MmzMl)AzNkT11W;@y z*y7u*Vn{TeY8G8BHda%b81JZ|7;z=H`qNj)Fout~UIzX7oAZK43aQ6^(O$&yD&(qy z6iN59*Nhik&)K~x0p&DlP7=lJqICP{;BsyJ`R*v-da+!i&BI{V+vw??5b=n;#fUL=ufu&Gs;G_hIQ^{Ti3Oy-iHFFyoupQt2f!7M`?fhyX$_c`mCV#vrLb!@liUjI4k^| zp?uitk!qEQ<_TU2=uvep1E(2~oc%}Ij8TPA+cVr$2eTsFMVZ*32-QsQPrKn~39^uG zql9NqAkBwKuaO-qyhuS}x8J0;(>mZ|#Y_aNGdiB=1n)8TOcmN?9=_)HzXE7rrH(S% zN=n;=_`lj$4fD;n=?_EoKTeqz%kgK7joWBH?+BzJt-v@N@h^ywv5jZURe_0UGufKc z3kVxXk#O7Um)m)}4w^GtqLv+KTQ1;8wb+UR#2R;(bTZlSXIEs4F2uYuZZ_|R_qK(% zy3lnW^$(o?(VJATT2<2-nNI68b3q19`DsE_%*Saana|LuMMNBUZ;9c`3u zE35_phVDjUN&Yhk)kz@{P2H}zWtbk5TBB;M9grjfJSIm=2@o!xs?TqFiHNQ_drzzh zG0ss7f+&I+V?6e4VTtR4nif1@3@chXy@3PmN)L?@peWUw@B!EY`x)PP7#pW2+^rX? z$`Sp_fVfEIKVq(3>5BKB7zhHX5-N-XqP5b7&z{?9V5LK|h=JW>Ber@o142&s)4r9Q z4p@`Z;ll#!L8aS%DSHs)GH^Th=fxt#+9(j|yJCF{o1I{Tq*baQm(78#k?379?SrR> z1uU`jtUK904f+Gw>r(Q|Aklr-cU`BO-x@ncXs1&swcxLIGt9JdZQSJj*1TbE0N*m* z*^Jsg21@czYJPz{{ZA(kt$c4Z(qC@JdtFRkNs{lu2n0pJTQk4-g6#s3UZ5BH)OiA_E%;qMhz?+IeP1#R z@afXDKuv_IGHYmw$-)&l5A5EoJe;&@!yvV{9%|B3l*iE<@}OOl68n^ip6ziC{!2LK zmNg*@5}y0E&7^e!<(_QtJMz=n{m8w{4IkY3l3wm6F)wkNckF6Y4T0rk3Z8#`Ec^#i z*^t;G%GMG-ApJvv@cK%|{=x>i;jU?sv(W17?SkFH`rCZh70cNpVES0LIpLU>ql|e5 z43CPDCzEtwsyuLGilC4vwbp>4_oHVI0X@U-$wU|C*9D3V5By18hJ7@#oTnt9v2#ACif$0BubRv4yh$K-6K44sCa-qR^e%*jRmu8M^WG@0xU??TEGwU1 zdj0vSc_WMGA!3R45}ot;$Qo3Vx_U5%tmh(A-gfD&)#pBG34+a4knGrGz-Qx9*Hv_XbmDd*~e9eYh%Jr%C4%g0*QQ&g52G1~+p7I79J$f(0%qsB7qZ~4 zp7lABL>8#4SI&5T;i4c`UUvCspt7k0(uiP92wpe3qK(s* z5xI)gw(^6SMDbEr?<^`ld>cg}r_EZH$F-i;3Z3YO7HGV?~`mhv~ zYK8n0Qze}7ufBn{{WS8epdiZb%osk7)1SHlw`pWh2Ut8X1#8XfE1Y-+_0?uM0`zY) zhl$P4Z9VJ)jqv?&)g;aWgb%rpS9r4c_164HN}ID8M(=bO9!S7K$|E^b3<;A|_jW>Rvd+qLVVxU7@!OoaqIcx8{_Jo_L-srAR9q68_9C!?$})z^PWYo+ch-zjJ|Zz35}YZqScv z=;yXb%vh?Nm%iTz^985Nn1yQ1QuMGQVT~|YlWJg%biQhd^|!$?gq&?y(M3T%=67mf z_qw?YI}NC$l8Or!hX+Rmufl=l{+030i+0xK2OQl3|N9?xtA26;+BQ_}5!-UB7>^9UxPI3>vP9*~im2);Y&&#~pg)y}$`r$;z?7_)2UYlgb>@fmvJA*Fp zlPtxr$S*LUI0oz-dlqnD4aS`+VJCFzGMuFlOM%1O;}H$|RhX-fpdY=^6oy9Oe`$^H zPpJ1wbGYTx;(1s0;9Nn$mPlcK;N>;qn_E0OWfHxg>d@SLRidjbr_6Ey?~#l)F%&7b zRVnw6sbr_ci&<4dY8AmNki*4cL`*9TGY3p7qS-?KG{rwpJevx|uSmgGb`a^;aW2b| z1L+2;B4JdzG`AJKTUM8#JqS{BWaHsNVsQ&15K(|O{kn2=&gIr0I_ z;r^)}*;fK$I22JgZ7wJkEu{*W9iIVKGbTTA zywOe}bzo{mQW`{u_A=1Z=DmqbHKsiY-q8u@(tiKgCW3RoKg6MD(!JA`*{hU&ASwi} zui%=Gj5;zhbErfwh|Ss%7cQXyk1lRk z)9m5rPPa@|U-&UsA<}K^{)tqH#Gc?1ogU?Y)}1EtT|mnE{F^*b7nZtP9%`yvW1>uD z$8E+9V+WP8*~E2(R+-`Z;#;s2gL=x77$&l@(;-=QyxDg$BRdl)&VKvmQ7M0;uE}nG zcgUNkZn!F!aPW#|qbw0I@{rGGDv$pvje?e2&|{5n#zPAVLo@f$jv6bkA&jbhCyq)K z%W01O;*7e;2lDJhxQo>9SiMWg1XWhj*3-wu6>+RoM|!L@&&&jI0d=A=qRNMJyfU;< zlTFQ(GH?v_QEe!dKcecd(A|MR|9o{c+cvaO4_5`mPE+{>x!OEC-&oc9t`=nEX`Q~* zW4O5PrluJ=nb7bYq zC42MTi(R;f_qJ~7><3Pueu>SCG64#)3$a)8_DWtx)FVI zpYUO=5Ye$92s^}zbiNgiF@86NhC*7wr7Djnki1>*)2_!I4@jrowt_ug|B*ehd-7sr zB=rzH`m)V zsMpYAhqy$@8%T-k7X=iTK)lE2n<)9@6dceV4`bd{qHA#(C-$e8XJ}@D<(C#Bt9LoINtMdX;wjl;T;G zVGaG|cM;$8%>8+W8Vg8+{_00p^-B2k$mM}gTtJ5MmCub;(%GeRL<7H9F-G1w7!tEX z(M#kmIj9CjN944j{Ei{olZM&*gkUmN0|0;J{JaXd=|!BrT-DfESa3Z*vZ@L0Iogr9 z;@|m*rjKJA2-5@qEMs6E&!!w6m0xU%FC4HXLtMJ>8x_^yz3h_0P;0Inc;|a21%~HS&iF9sq_1s7AMz7cw}vU6x#|v+ zIIspYM^2B+9@ZVR^o_q2Kcfpw_kOnEBAZ3*pL)`1v3|Jwz|Gr>-|`nir|~n^-8;-_ zfT%qUx>}H(BIh#c@IZ|aFKd(wgUGU+b8|Dvs_qDQh}#uX&&V#uCa90}1l0ZpBVmnS zOFWHXA8Xs|v(a4vdvGMc6R|sjmp>h`GePnDj=M}nRHX^vIm!Da;~ukOb~n=xVV6l!n6W%YvjnfIsOyGNd-XJwmDv@&p~l{91E zbMUdLePmwl?aQ0CPd8o8#KOZHN1H3kSux6)31->E)XKjnTW+P!TBzbs_Gz4M7}*P$1@e#+OGzBzPB|oz3;u`FXk0o9Gx9TXO}P39Ln<_fJ$iZ-_4i*+lOeZ zudi=>zVmKbXvotur3Pkuj4pr}64?iT(rZ!uGc0W|IpVJk2Syf00T9gtEBt@^@O|%u z?SUwP03$F2Gcqvc0iglt&j5S<=TjzrhI+sOV`N9GjRJD2PuS97mBu1EJ~=&o&Xm8= zV!|LEchkOMEgQ$;s3>XwkUnl>TrlR9ox{_cuY2HSt7GQDJLl!$;K6H?bZtiGJ%8J! z2GZnEZIm^S+r~;(fw!y@9u;M=E~QbDCBQ9vwP1U3nZ>t(?OG*DUD4u-BB(yZM_0tl z0rVEEu>_=@Lr3)Xy{>v}bAdy}R>4eOxGX^}ts1tnz_qSL-mFyRpPdHhJM6-i*mp#Q zl-Q(UNvs8!3B*jvG)qyrB$qO1MKSbw&i+?{ntvODnr|z)RXv&_zzEpPNsxLg!XM+Gh6xxh5S-+|!5^)=|y0%&t;B z_`LFxl2ImXrW+TyoTu>)*5n_shBIBw-(mc}i3UIuAP(RjkOwdcupV$3@E!;ahz3X+ zNE65!$P1_!XdW02SQ^+II1P9o_!C4NBnG4sWEtcfD({2PJ}A^@Tp;u{hHQW#Pd(h)KSvIw#lauMJ?f5+8w$Q1_MSC#u6qEW*BB277tb&))BT5_7V;bP8BW+t`lw@9ta)>UJ>3F zei(icfd)bG_wYgJMub8XMl?tCLcB(TK~hI5Lh47FN7_ZEKxRW$Mz%*TMZQFSN8vzG zN3leSLn%O+N4Z7CLp4VoL<2#iK$AvuMyp3VM#n)HKu<$&MPEh##Gt|u$1ueR!)V61 z#H7J=#B9X^!ZO5a#+t>(!B)pk!d}E7z~RGj#p%UG!ZpNg#v{TDz&pg(#4o`=Bp@O% zCa5QvCO9XAB4i`B!wd7B26KkBx4}6 zCo3U4Cnq7-C9fqvreLEmr)Z_vq{O4Nq&%g9qQavRrZS}Rp{k@>rTV1CqZX!ir!Jsg zr@^Apr-`H4rbVMwr|qZxq@$oSr^}!_r{|*2V*q2&WTV^(GMVJ=~wX2D<)Vo_!>WpQQ+V98>sW|?NWX2oEoW0hvLWDR5OW_@I%ViRD~ zWwU2XV=HItW}9X^W#?iyWcOfCV9#T(XCGu=WWp)m%>m!vDjU!ph1fBJ&*PEui!cZe{NlCv#tw;d%SYiqsG-7S_iEAq~{ zpOo+@HHhgg?JL5Q7kTMDX!b~#Ddq+D?Uy*V3meoOtc6GJoK8n9ODPkJXx1p%Bg)g8 zzJr*HXogS3_iy47d8(9LA^_(&BW>AvuoGxO0k{#smmpZfsD&K5(gJ)FK%+7Q@6RM4 zrX?_WuX__zl;~g$udT#*-*oLo+`rI%I4-!&AgHJdbf*(SqWqh!^;1{;dvS`lPgsNn z+$o1d3&`Zeiypepf&v-+u6_pPJqE6fd5i&~a~+pm8pn4_txED2BXiZ+TV30}r7+vT z9^Y(FzYZIHPWPvDP}>!OfnAY(5+w;WIh7rOc+)Nv+2u~Ydr47;KX@ z9!uBZ#+2adHl}rzlAW4>fqo@-IaQ?74hy&diOQKb*Wn+ zo1$jN(P*bFXP)LvU6<)&)h5ovkqOKAhpMtA)$B>$uq#yu>S#1?n-J|W)>JjVC)o0| z!c7^9^^lQW{FFSz3^AuJ#`O$U4#xiH$FCp%*OEhXr~~>v^rv$SdIt{_-+!v}N@nf} z=sZU!f2}Sj#vp)Q^$wo-c$j{0q}>(y)G)nL`lz=iwy6r+D8@S}pnZa0@x`8}YyO){ zI&o^&*kTAFJ@JFYq>1&Lo_3Cf7Lv_0Zexn&L?iV{1&a#~A~`OdMlo&)Rgc?&Ab|HN z1h9bf$ON!u0#NhV^PV?Pgpl*N_c8FUXsch}>Dk%7jLL|WUEJcS1pg<=0yh2pZ%Jd2 zt)iM5B4|X3QA-_Th?Ah6u{1D_@l0SMlbFmDrZSD`%wQ(7n9UsKGLQKzU?GcG%n}+| z$}*O-f|Vp$MT*rW?@rAO~?Uhj1ue97Z?W zIh-Bzu#;Z;ID#WNilgc07>?yQj^_kUMCUec;2h575w7BE&f_vJ=4x){MycW=-sNnr zlxnHrQi*T@Pw=5=T*EE=$}jxJ_1w<0Jk1>pU~oAZo=5Qv&+#%Z@FFkq4THSKE4<2` zWcisZc$3$8gB;)S0~fLjlOgh0*j$UlNfdA?;^Q&Q2;Z`sQTA{$r*aApa2=;}8fS1O z-}566N>pM}D|P(Czw8xcjKn1&BK0y>8e|;5^9O(OmW-DPGEpYUWIp9HnIcnVnoO4& zGE-*BY?;Gd+%0oup3Ij8vQQTB7k~3PU&vxvB8{?CmdSEiAuD-ElCnxtvYIdXikl?O z+k7HT(#(6j&j)28k)^dro$U1(KR#`6_WTR}7 z&9X(d))k#WFSnva?Yqua`XS#P*zTXLZ-lTe|NhoP8s$Cv4z`=n4C{A$EqzVt`n$p)#gr=`pV& zwBE4H3lQmZO*($EXF!T$o4b@gEt jsKC9fqHeONTywBt-%pk=;-kuSlD1Q{^kVKmQjj$oPL;1` literal 0 HcmV?d00001 diff --git a/sources/client/css/style.css b/sources/client/css/style.css new file mode 100644 index 0000000..327dce7 --- /dev/null +++ b/sources/client/css/style.css @@ -0,0 +1,1136 @@ +@import url("https://fonts.googleapis.com/css?family=Lato:400,700"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,700"); +@font-face { + font-family: FontAwesome; + src: url("fonts/fontawesome.svg") format("svg"), url("fonts/fontawesome.woff") format("woff"); +} +html, +body { + height: 100%; +} +body { + background: #505d70; + background: #455164; + color: #222; + font: 16px Lato, sans-serif; + margin: 0; +} +a { + transition: opacity .2s; +} +a:hover { + text-decoration: none; + opacity: .8; +} +h1, +h2 { + font: inherit; + line-height: inherit; + margin: 0; +} +input { + outline: 0; +} +button { + border: none; + background: none; + margin: 0; + outline: none; + padding: 0; +} +.web-app-mode { + padding-top: 20px; +} +.tooltip-inner { + background: #fff; + border-radius: 2px; + color: #262c36; +} +.tooltip.top .tooltip-arrow { + border-top-color: #fff; +} +.btn { + border: 2px solid #84d1ff; + border: 2px solid #84ce88; + border-radius: 3px; + color: #84d1ff; + color: #84ce88; + display: inline-block; + font: bold 12px Lato, sans-serif; + letter-spacing: 1px; + margin-bottom: 10px; + padding: 9px 17px; + text-transform: uppercase; + transition: background .2s, border-color .2s, color .2s; + word-spacing: 3px; +} +.btn:disabled, +.btn:hover { + background: #84d1ff; + background: #84ce88; + color: #fff; +} +.btn:active { + box-shadow: none; + opacity: .8; +} +.btn:disabled { + opacity: .6; +} +.container { + margin: 80px auto; + max-width: 480px; + overflow: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + padding: 0 30px; +} +::-moz-placeholder { + color: rgba(0, 0, 0, .35); + opacity: 1; +} +::-webkit-input-placeholder { + color: rgba(0, 0, 0, .35); +} +:-ms-input-placeholder { + color: rgba(0, 0, 0, .35) !important; +} +#wrap { + height: 100%; + overflow: hidden; +} +#viewport { + height: 100%; + transition: all .4s; + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-perspective: 1000; + perspective: 1000; +} +#viewport .lt, +#viewport .rt { + color: #ccc; + display: none; + float: left; + line-height: 40px; + height: 36px; + margin: 6px 12px 0 -12px; + width: 36px; +} +#viewport .lt:before, +#viewport .rt:before { + font: 14px FontAwesome; + content: "\f0c9"; +} +#viewport .rt { + display: block; + float: right; + margin: 6px -12px 0 12px; +} +#viewport.rt #chat .sidebar { + -webkit-transform: translate3d(180px, 0, 0); + transform: translate3d(180px, 0, 0); +} +#sidebar { + bottom: 52px; + left: 0; + overflow: hidden; + /*overflow-y: auto;*/ + -webkit-overflow-scrolling: touch; + position: absolute; + top: 0; + width: 220px; +} +#sidebar button, +#sidebar .chan, +#sidebar .sign-out { + border: 1px solid transparent; + border-radius: 2px; + color: #99a2b4; + cursor: pointer; + font-size: 14px; +} +#sidebar button:hover, +#sidebar .chan:hover, +#sidebar .active { + color: #fff; +} +#sidebar .networks { + min-height: 100%; + padding: 20px 30px 0; +} +#sidebar .networks:empty { + padding: 0; +} +#sidebar .network, +#sidebar .network-placeholder { + margin-bottom: 30px; +} +#sidebar .empty { + color: #9ca5b4; + line-height: 1.6; + font-size: 12px; + margin-top: 20px; + padding: 20px 40px; + text-align: center; +} +#sidebar .chan, +#sidebar .chan-placeholder { + display: block; + margin: 1px -10px; + padding: 6px 10px 8px; + position: relative; + text-align: left; + transition: color .2s; + width: 180px; +} +#sidebar .chan-placeholder { + padding-bottom: 10px; +} +#sidebar .chan:first-child { + color: #84ce88; + font-size: 15px; + font-weight: bold; +} +#sidebar .chan:first-child:hover, +#sidebar .chan:first-child.active { + color: #c0f8c3; +} +#sidebar .chan:before, +#chat .title:before { + font: 14px FontAwesome; + float: left; + margin-top: 3px; + margin-right: 12px; + width: 14px; + text-align: center; +} +#chat .title:before { + margin-top: 17px; +} +#sidebar .chan.lobby:before, +#chat .lobby .title:before { + content: "\f0a0"; +} +#sidebar .chan.query:before, +#chat .query .title:before { + content: "\f0e6"; +} +#sidebar .chan.channel:before, +#chat .channel .title:before { + content: "\f0f6"; +} +#sidebar .chan:hover .badge { + opacity: 0; +} +#sidebar .chan:hover .close { + opacity: .2; +} +#sidebar .badge { + background: rgba(255, 255, 255, .06); + border-radius: 3px; + color: #afb6c0; + font-size: 10px; + margin-top: 1px; + padding: 3px 6px; + position: absolute; + right: 5px; + transition: all .2s; +} +#sidebar .badge.highlight { + background: #fff; + color: #49505a; +} +#sidebar .badge:empty { + display: none; +} +#sidebar .close { + background: no-repeat url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogPGc+DQogIDx0aXRsZT5MYXllciAxPC90aXRsZT4NCiAgPHBhdGggZmlsbD0iI2ZmZmZmZiIgaWQ9InN2Z18xIiBkPSJtMTIuODcyLDEuNTYyYzAuMTk1MDAxLDAuMTk0IDAuMTk1MDAxLDAuNTEzIDAsMC43MDdsLTMuODg5LDMuODkxYy0wLjE5MywwLjE5NCAtMC4xOTMsMC41MTMgMCwwLjcwOGwzLjg4NywzLjg5MmMwLjE5NSwwLjE5NCAwLjE5NSwwLjUxMyAwLDAuNzA3bC0xLjQxNTk5OSwxLjQxM2MtMC4xOTMwMDEsMC4xOTQgLTAuNTEyLDAuMTk0IC0wLjcwNzAwMSwwbC0zLjg4NSwtMy44OTJjLTAuMTk0LC0wLjE5NCAtMC41MTMsLTAuMTk0IC0wLjcwNywwbC0zLjg4OSwzLjg4OWMtMC4xOTQsMC4xOTUgLTAuNTEzLDAuMTk1IC0wLjcwNywwbC0xLjQxNCwtMS40MTU5OTljLTAuMTk0LC0wLjE5MzAwMSAtMC4xOTQsLTAuNTEyIDAsLTAuNzA3MDAxbDMuODksLTMuODg5YzAuMTk0LC0wLjE5NCAwLjE5NCwtMC41MTMgMCwtMC43MDhsLTMuODg3LC0zLjg5MWMtMC4xOTQsLTAuMTk1IC0wLjE5NCwtMC41MTMgMCwtMC43MDdsMS40MTUsLTEuNDE0YzAuMTk0LC0wLjE5NCAwLjUxMywtMC4xOTQgMC43MDcsMGwzLjg4NSwzLjg5MWMwLjE5NCwwLjE5NSAwLjUxMywwLjE5NSAwLjcwNywwLjAwMWwzLjg4OCwtMy44OWMwLjE5NSwtMC4xOTMgMC41MTQsLTAuMTkzIDAuNzA3LDBsMS40MTUsMS40MTV6Ii8+DQogPC9nPg0KPC9zdmc+); + background-size: 50%; + background-position: 5px 6px; + border-radius: 3px; + height: 18px; + margin-top: 1px; + margin-right: 5px; + opacity: 0; + position: absolute; + right: 0; + transition: all .2s; + width: 18px; +} +#sidebar .close:hover { + background-color: rgba(0, 0, 0, .1); + opacity: .7 !important; +} +#sidebar .tse-scrollbar { + top: 2px; + right: 3px; +} +#footer { + background: rgba(0, 0, 0, .06); + border-radius: 2px; + bottom: 4px; + height: 48px; + left: 5px; + line-height: 48px; + position: absolute; + text-align: center; + width: 210px; +} +#footer button { + border: 0; +} +#footer button.active { + color: #fff; +} +#footer .icon { + color: #9ca5b4; + display: inline-block; + font: 14px FontAwesome; + line-height: 34px; + padding: 0px 12px; +} +.signed-out #footer .sign-in { + display: inline-block; +} +.signed-out #footer .connect, +.signed-out #footer .sign-out { + display: none; +} +.public #footer .sign-in, +.public #footer .sign-out { + display: none; +} +#footer .sign-in { + display: none; +} +#footer .sign-in:before { + content: "\f023"; +} +#footer .connect:before { + content: "\f067"; +} +#footer .settings:before { + content: "\f013"; +} +#footer .sign-out:before { + content: "\f13e"; +} +#main { + background: #fff; + border-radius: 2px; + bottom: 4px; + left: 220px; + overflow: hidden; + position: absolute; + right: 5px; + top: 4px; +} +#header { + display: none; + height: 40px; + position: absolute; + top: 0; + width: 100%; +} +#windows { + bottom: 48px; + position: absolute; + top: 0px; + width: 100%; +} +#windows label { + font-size: 14px; +} +#windows .input { + border: 1px solid #cdd3da; + border-radius: 2px; + color: #222; + font-size: 14px; + margin: 2px 0; + margin-bottom: 10px; + outline: 0; + padding: 8px 10px; + transition: border-color .2s; + -webkit-appearance: none; + width: 100%; +} +#windows .input:hover, +#windows .input:focus { + border-color: #79838c; +} +#windows .window:before, +#windows .chan:before { + background: #f4f4f4; + background-image: linear-gradient(#f4f4f4, #ececec); + border-bottom: 1px solid #d7d7d7; + content: " "; + display: block; + height: 10px; + position: relative; + z-index: 10; +} +#windows .chan, +#windows .window { + background: #fff; + bottom: 0; + display: none; + left: 0; + position: absolute; + right: 0; + top: 0; +} +#windows .window { + bottom: -44px !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +#windows .window h1 { + font: 36px Lato; +} +#windows .window h2 { + border-bottom: 1px solid #eee; + color: #7f8c8d; + font-size: 22px; + margin: 30px 0 10px; + padding-bottom: 7px; +} +#windows .active { + display: block; +} +#windows .header { + border-bottom: 1px solid #e7e7e7; + line-height: 50px !important; + height: 48px; + padding: 0 20px; +} +#windows .header .title { + font: 14px Lato; +} +#windows .header .topic { + /* Hidden for now */ + display: none; + color: #777; + margin-left: 8px; + text-transform: capitalize; +} +#windows .header .right { + float: right; + margin-right: -10px; + margin-top: -2px; +} +#windows .header .button { + background: #f4f4f4; + background-image: linear-gradient(#f4f4f4, #ececec); + border: 1px solid #d7d7d7; + border-bottom-color: #b7b7b7; + border-radius: 2px; + color: #555; + font: 12px Lato, sans-serif; + height: 25px; + line-height: 0; + padding: 0 10px; +} +#windows .header .button:hover { + opacity: 1; +} +#windows .window .header { + display: none; +} +#chat { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; +} +#chat, +#windows .header { + font: 12px Consolas, Menlo, Monaco, "Lucida Console", "DejaVu Sans Mono", "Courier New", monospace; + line-height: 1.4; +} +#chat button:hover { + opacity: .6; +} +#chat .chat, +#chat .sidebar { + top: 58px; +} +#chat .chat { + bottom: 0; + left: 0; + overflow: auto; + -webkit-overflow-scrolling: touch; + position: absolute; + right: 180px; +} +#viewport.rt .chat { + right: 0; +} +#chat .sidebar { + background: #fff; + border-left: 1px solid #e7e7e7; + bottom: 0; + position: absolute; + right: 0; + width: 180px; + transition: all .4s; + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-perspective: 1000; + perspective: 1000; +} +#chat .lobby .chat, +#chat .query .chat { + right: 0; +} +#chat .lobby .sidebar, +#chat .query .sidebar { + display: none; +} +#chat .show-more { + display: none; + padding: 10px; + position: absolute; + width: 100%; +} +#chat .show-more.show + .messages .msg:first-child { + padding-top: 47px !important; +} +#chat .show-more.show + .messages .msg:first-child > span { + padding-top: 52px !important; +} +#chat .show-more-button { + background: #f4f4f4; + background-image: linear-gradient(#f4f4f4, #ececec); + border: 1px solid #d7d7d7; + border-bottom-color: #b7b7b7; + border-radius: 2px; + color: #555; + font: 12px Lato, sans-serif; + height: 34px; + line-height: 0; + width: 100%; +} +#chat .show-more-button:hover { + opacity: 1; +} +#chat .messages { + display: table; + width: 100%; +} +#chat .msg { + display: table-row; + word-wrap: break-word; +} +#chat .msg:first-child > span { + padding-top: 10px; +} +#chat .msg:last-child { + height: 100%; +} +#chat .msg:last-child .text { + padding-bottom: 10px; +} +#chat .msg .type { + color: #ccc; + display: none; + font-style: normal; +} +#chat .time, +#chat .from, +#chat .text { + display: table-cell; + padding: 2px 0; + vertical-align: top; +} +#chat .time { + color: #ddd; + text-align: right; + width: 46px; + min-width: 46px; +} +#chat .from { + border-right: 1px solid #f6f6f6; + color: #b1c3ce; + padding-right: 10px; + text-align: right; + width: 134px; + min-width: 134px; +} +#chat a { + color: #84ce88; + color: #50a656; +} +#chat.no-colors .from button, +#chat.no-colors .sidebar button { + color: #84ce88 !important; + color: #50a656 !important; +} +#chat .text { + padding-left: 10px; + padding-right: 6px; +} +#chat .wrap, +#chat .text a { + font-style: normal; + word-break: break-all; + word-wrap: break-word; +} +#chat .self .text { + color: #999; +} +#chat .join .type, +#chat .part .type, +#chat .mode .type, +#chat .nick .type, +#chat .kick .type, +#chat .quit .type, +#chat .quit .type, +#chat .topic .type { + display: inline; +} +#chat .error, +#chat .error .from, +#chat .highlight, +#chat .highlight .from { + color: #f00; +} +#chat.hide-join .join span, +#chat.hide-mode .mode span, +#chat.hide-motd .motd span, +#chat.hide-nick .nick span, +#chat.hide-part .part span, +#chat.hide-quit .quit { + display: none !important; +} +#chat .notice .type { + display: none; +} +#chat .action, +#chat .chan .action .user { + color: #f39c12 !important; +} +#chat .action .user:before { + content: "* "; +} +#chat .action .user:after { + content: ""; +} +#chat .toggle-button { + background: #f5f5f5; + border-radius: 2px; + display: inline-block; + color: #666; + height: 1em; + line-height: 0px; + padding: 0px 6px; +} +#chat .toggle-content { + background: #f5f5f5; + border-radius: 2px; + display: none; + color: #222; + font: 12px Lato; + max-width: 100%; + padding: 6px 8px; + margin-top: 2px; +} +#chat .toggle-content a { + color: inherit; +} +#chat .toggle-content img { + max-width: 100%; + max-height: 100%; + display: block; + margin: 2px 0; +} +#chat .toggle-content .thumb { + max-height: 110px; + max-width: 210px; +} +#chat .toggle-content .head { + font-weight: bold; +} +#chat .toggle-content .body { + color: #999; + max-width: 460px; + word-break: normal; + word-wrap: break-word; +} +#chat .toggle-content.show { + display: inline-block !important; +} +#chat .count { + background: #fafafa; + height: 48px; + left: 0; + position: absolute; + right: 0; + top: 0; +} +#chat .count:before { + color: #cfcfcf; + font: 14px FontAwesome; + content: "\f002"; + position: absolute; + right: 18px; + line-height: 50px; + transition: color .2s; + z-index: 0; +} +#chat .search { + color: #222; + border: 0; + background: none; + font: inherit; + outline: 0; + padding: 18px 16px; + position: relative; + width: 100%; +} +#chat .names { + bottom: 0; + overflow: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; + padding-bottom: 10px; + position: absolute; + top: 48px; + width: 100%; +} +#chat .names button { + display: block; + line-height: 1.6; + padding: 0 16px; +} +#chat .names .inner { + width: 300px; +} +#chat .user-mode:before { + content: ""; + border-bottom: 1px solid #eee; + display: block; + line-height: 1.6; + padding: 12px 16px 10px; + margin-bottom: 10px; +} +#chat .user-mode.owner:before { + content: "Owners"; +} +#chat .user-mode.admin:before { + content: "Administrators"; +} +#chat .user-mode.op:before { + content: "Operators"; +} +#chat .user-mode.half-op:before { + content: "Half-Operators"; +} +#chat .user-mode.voice:before { + content: "Voiced"; +} +#chat .user-mode.normal:before { + content: "Users"; +} +#sign-in label { + display: block; + margin-top: 10px; +} +#sign-in .title { + margin-bottom: 10px; +} +#sign-in .remember { + float: left; + font-size: 14px; + margin-top: 12px; +} +#sign-in .remember input { + float: left; + margin: 3px 10px 0 0; +} +#sign-in .btn { + margin-top: 25px; +} +#sign-in .error { + color: #e74c3c; + margin-top: 1em; +} +#sign-in .container { + margin-top: 120px; +} +#connect label { + display: block; + margin-top: 11px; +} +#connect .title { + margin-bottom: 10px; +} +#connect .port:before { + content: ":"; + margin: 9px 0 0 -17px; + position: absolute; +} +#connect .tls { + float: left; + font-size: 14px; + margin-top: 6px; +} +#connect .tls input { + float: left; + margin: 3px 10px 0 0; +} +#connect .btn { + float: left; + margin-top: 30px; +} +#settings .title { + margin-bottom: -10px; +} +#settings .opt { + display: block; + padding: 5px 0 10px 1px; +} +#settings .opt input { + float: left; + margin: 4px 10px 0 0; +} +#settings .about, +#settings #play { + color: #7f8c8d; +} +#settings .about small { + margin-left: 2px; +} +#settings #play:hover { + opacity: .8; +} +#settings #play:before { + content: "\f028"; + font: 14px FontAwesome; + margin-right: 9px; +} +#settings .about { + font-size: 14px; + padding-top: 2px; + line-height: 1.8; +} +#form { + background: #e4eaee; + background: #eee; + border-top: 1px solid #cfdae1; + border-top: 1px solid #ddd; + bottom: 0; + height: 48px; + left: 0; + position: absolute; + right: 0px; +} +#form .inner { + bottom: 7px; + left: 7px; + position: absolute; + right: 7px; + top: 6px; +} +#form .input { + font: 12px Consolas, Menlo, Monaco, "Lucida Console", "DejaVu Sans Mono", "Courier New", monospace; + left: 0; + height: 34px; + margin-right: 64px; + position: relative; +} +#form #nick { + background: #f6f6f6; + color: #666; + position: absolute; + font: inherit; + font-size: 11px; + margin: 5px; + line-height: 26px; + height: 24px; + padding: 0 9px; + border-radius: 1px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#form #input { + border: 1px solid #cfdae1; + border: 1px solid #ddd; + font: inherit; + border-radius: 2px; + height: 100%; + outline: none; + padding: 0 10px; + -webkit-appearance: none; + width: 100%; +} +#form #submit { + background: #f4f4f4; + background-image: linear-gradient(#f4f4f4, #ececec); + border: 1px solid #d7d7d7; + border-bottom-color: #b7b7b7; + border-radius: 2px; + font: 12px Lato, sans-serif; + color: #555; + height: 34px; + position: absolute; + right: 0; + transition: opacity .3s; + width: 58px; +} + + +/** + * IRC Message Styling + * https://github.com/megawac/irc-style-parser + * Colours are credit to http://clrs.cc/ + */ +.irc-fg0 { color: #fff; } +.irc-fg1 { color: #000; } +.irc-fg2 { color: #001f3f; } +.irc-fg3 { color: #2ecc40; } +.irc-fg4 { color: #ff4136; } +.irc-fg5 { color: #85144b; } +.irc-fg6 { color: #b10dc9; } +.irc-fg7 { color: #ff851b; } +.irc-fg8 { color: #ffdc00; } +.irc-fg9 { color: #01ff70; } +.irc-fg10 { color: #39cccc; } +.irc-fg11 { color: #7fdbff; } +.irc-fg12 { color: #0074d9; } +.irc-fg13 { color: #f012be; } +.irc-fg14 { color: #aaa; } +.irc-fg15 { color: #ddd; } +.irc-bg0 { background: #fff; } +.irc-bg1 { background: #000; } +.irc-bg2 { background: #001f3f; } +.irc-bg3 { background: #2ecc40; } +.irc-bg4 { background: #ff4136; } +.irc-bg5 { background: #85144b; } +.irc-bg6 { background: #b10dc9; } +.irc-bg7 { background: #ff851b; } +.irc-bg8 { background: #ffdc00; } +.irc-bg9 { background: #01ff70; } +.irc-bg10 { background: #39cccc; } +.irc-bg11 { background: #7fdbff; } +.irc-bg12 { background: #0074d9; } +.irc-bg13 { background: #f012be; } +.irc-bg14 { background: #aaa; } +.irc-bg15 { background: #ddd; } + +.irc-bold { + font-weight: bold; +} + +.irc-underline { + text-decoration: underline; +} + +.irc-italic { + font-style:italic +} + +/** + * TrackpadScrollEmulator + * Version: 1.0.6 + * Author: Jonathan Nicol @f6design + * https://github.com/jnicol/trackpad-scroll-emulator + */ +.tse-scrollable { + position: relative; + overflow: hidden; +} +.tse-scrollable .tse-scroll-content { + overflow: hidden; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.tse-scrollable .tse-scroll-content::-webkit-scrollbar { + width: 0; + height: 0; +} +.tse-scrollbar { + z-index: 99; + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 11px; +} +.tse-scrollbar .drag-handle { + position: absolute; + right: 2px; + border-radius: 2px; + min-height: 10px; + width: 6px; + opacity: 0.1; + transition: opacity 0.2s linear; + background: #000; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; +} +.tse-scrollbar:hover .drag-handle { + opacity: 0.25; + transition: opacity 0 linear; +} +.tse-scrollbar .drag-handle.visible { + opacity: 0.2; +} +.scrollbar-width-tester::-webkit-scrollbar { + width: 0; + height: 0; +} + +@media (max-width: 768px) { + .container { + margin-top: 60px !important; + } + #viewport.lt { + -webkit-transform: translate3d(220px, 0, 0); + transform: translate3d(220px, 0, 0); + } + #viewport.rt #chat .sidebar { + -webkit-transform: translate3d(-180px, 0, 0); + transform: translate3d(-180px, 0, 0); + } + #sidebar { + left: -220px; + } + #footer { + left: -215px; + width: 215px; + } + #sidebar .close { + display: none; + } + #sidebar .chan:hover .badge { + opacity: 1; + } + #sidebar .empty:before { + margin-top: 0; + } + #main { + left: 5px; + right: 5px; + } + #chat .chat { + right: 0; + } + #viewport .lt, + #viewport .channel .rt { + display: block; + } + #viewport .rt { + margin-left: 18px; + } + #windows .window .header { + display: block; + } + #chat .sidebar { + right: -180px; + } + #chat .title:before { + display: none; + } +} + +@media (max-width: 479px) { + .container { + margin: 40px 0 !important; + } + #connect .tls { + margin: 20px 0; + } + #windows .input { + margin-bottom: 2px; + } + #chat .messages { + display: block; + padding: 5px 10px; + } + #chat .msg { + display: block; + padding: 2px 0; + } + #chat .msg:last-child { + height: auto; + } + #chat .from, + #chat .text { + background: none; + border: 0; + display: inline; + padding: 0; + } + #chat .time { + display: none; + } + #chat.hide-join .join, + #chat.hide-mode .mode, + #chat.hide-motd .motd, + #chat.hide-nick .nick, + #chat.hide-part .part, + #chat.hide-quit .quit { + display: none !important; + } +} + +@media print { + * { + position: relative !important; + overflow: visible !important; + } + body { + background: #fff; + } + .lt, + .rt, + .window:before, + .chan:before, + .title:before { + display: none !important; + } + .sidebar, + #form, + #sidebar { + display: none; + } + #windows .header { + border-bottom: 0; + padding-left: 10px; + } + #main { + left: 0; + } + #chat { + font-size: 11px; + } + #chat .chat { + bottom: 0; + left: 0; + top: 0; + right: 0; + } + #chat .messages { + display: block; + padding: 5px 10px; + } + #chat .msg { + display: block; + padding: 2px 0; + } + #chat .msg:last-child { + height: auto; + } + #chat .from, + #chat .text, + #chat .time { + background: none; + border: 0; + display: inline; + padding: 0; + } +} diff --git a/sources/client/img/apple-touch-icon-120x120.png b/sources/client/img/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7bf410c277dd5b939357c3c5fda472c691b9d8 GIT binary patch literal 3850 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 literal 0 HcmV?d00001 diff --git a/sources/client/img/logo-dark.svg b/sources/client/img/logo-dark.svg new file mode 100644 index 0000000..dd0d301 --- /dev/null +++ b/sources/client/img/logo-dark.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/sources/client/img/logo.svg b/sources/client/img/logo.svg new file mode 100644 index 0000000..2378f20 --- /dev/null +++ b/sources/client/img/logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/sources/client/img/touch-icon-192x192.png b/sources/client/img/touch-icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..976f79cd698b41ddc79789a86c37cbbf0f029ba0 GIT binary patch literal 5609 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 literal 0 HcmV?d00001 diff --git a/sources/client/index.html b/sources/client/index.html new file mode 100644 index 0000000..22919f0 --- /dev/null +++ b/sources/client/index.html @@ -0,0 +1,293 @@ + + + + + + + + + + + + Shout + + + + + + + + + + + "> + +
+
+ +
+ + + + +
+
+
+
+
+
+ +
+
+
+
+

Sign in

+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+
+
+
+ +
+
+
+
+

Connect

+
+
> +
+

Network settings

+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+

User preferences

+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+

Settings

+
+
+

Messages

+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Visual Aids

+
+
+ +
+ <% if (typeof prefetch === "undefined" || prefetch !== false) { %> +
+

Links and URLs

+
+
+ +
+
+ +
+ <% } %> +
+

Notifications

+
+
+ +
+
+ +
+
+
+ +
+
+
+

About Shout

+
+
+

+ You're currently running version <%= version %>
+ Check for updates +

+
+
+
+
+
+
+
+ +
+ + +
+
+
+
+
+
+ + + + + + + diff --git a/sources/client/js/libs.min.js b/sources/client/js/libs.min.js new file mode 100644 index 0000000..d4acd56 --- /dev/null +++ b/sources/client/js/libs.min.js @@ -0,0 +1,11 @@ +(function(){var a=function(a){"use strict";a=a?a:{};var b={bgColor:"#d00",textColor:"#fff",fontFamily:"sans-serif",fontStyle:"bold",type:"circle",position:"down",animation:"slide",elementId:false};var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;o={};o.ff=typeof InstallTrigger!="undefined";o.chrome=!!window.chrome;o.opera=!!window.opera||navigator.userAgent.indexOf("Opera")>=0;o.ie=false;o.safari=Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0;o.supported=o.chrome||o.ff||o.opera;var r=[];m=function(){};j=n=false;var s=function(){c=D(b,a);c.bgColor=C(c.bgColor);c.textColor=C(c.textColor);c.position=c.position.toLowerCase();c.animation=F.types[""+c.animation]?c.animation:b.animation;var j=c.position.indexOf("up")>-1;var k=c.position.indexOf("left")>-1;if(j||k){for(var l=0;l0?i.height:32;f=i.width>0?i.width:32;g.height=e;g.width=f;h=g.getContext("2d");t.ready()}}else{i.setAttribute("src","");e=32;f=32;i.height=e;i.width=f;g.height=e;g.width=f;h=g.getContext("2d");t.ready()}}catch(n){throw"Error initializing favico. Message: "+n.message}};var t={};t.ready=function(){j=true;t.reset();m()};t.reset=function(){if(!j){return}r=[];k=false;h.clearRect(0,0,f,e);h.drawImage(i,0,0,f,e);B.setIcon(g);window.clearTimeout(p);window.clearTimeout(q)};t.start=function(){if(!j||l){return}var a=function(){k=r[0];l=false;if(r.length>0){r.shift();t.start()}else{}};if(r.length>0){l=true;var b=function(){["type","animation","bgColor","textColor","fontFamily","fontStyle"].forEach(function(a){if(a in r[0].options){c[a]=r[0].options[a]}});F.run(r[0].options,function(){a()},false)};if(k){F.run(k.options,function(){b()},true)}else{b()}}};var u={};var v=function(a){a.n=typeof a.n==="number"?Math.abs(a.n|0):a.n;a.x=f*a.x;a.y=e*a.y;a.w=f*a.w;a.h=e*a.h;a.len=(""+a.n).length;return a};u.circle=function(a){a=v(a);var b=false;if(a.len===2){a.x=a.x-a.w*.4;a.w=a.w*1.4;b=true}else if(a.len>=3){a.x=a.x-a.w*.65;a.w=a.w*1.65;b=true}h.clearRect(0,0,f,e);h.drawImage(i,0,0,f,e);h.beginPath();h.font=c.fontStyle+" "+Math.floor(a.h*(a.n>99?.85:1))+"px "+c.fontFamily;h.textAlign="center";if(b){h.moveTo(a.x+a.w/2,a.y);h.lineTo(a.x+a.w-a.h/2,a.y);h.quadraticCurveTo(a.x+a.w,a.y,a.x+a.w,a.y+a.h/2);h.lineTo(a.x+a.w,a.y+a.h-a.h/2);h.quadraticCurveTo(a.x+a.w,a.y+a.h,a.x+a.w-a.h/2,a.y+a.h);h.lineTo(a.x+a.h/2,a.y+a.h);h.quadraticCurveTo(a.x,a.y+a.h,a.x,a.y+a.h-a.h/2);h.lineTo(a.x,a.y+a.h/2);h.quadraticCurveTo(a.x,a.y,a.x+a.h/2,a.y)}else{h.arc(a.x+a.w/2,a.y+a.h/2,a.h/2,0,2*Math.PI)}h.fillStyle="rgba("+c.bgColor.r+","+c.bgColor.g+","+c.bgColor.b+","+a.o+")";h.fill();h.closePath();h.beginPath();h.stroke();h.fillStyle="rgba("+c.textColor.r+","+c.textColor.g+","+c.textColor.b+","+a.o+")";if(typeof a.n==="number"&&a.n>999){h.fillText((a.n>9999?9:Math.floor(a.n/1e3))+"k+",Math.floor(a.x+a.w/2),Math.floor(a.y+a.h-a.h*.2))}else{h.fillText(a.n,Math.floor(a.x+a.w/2),Math.floor(a.y+a.h-a.h*.15))}h.closePath()};u.rectangle=function(a){a=v(a);var b=false;if(a.len===2){a.x=a.x-a.w*.4;a.w=a.w*1.4;b=true}else if(a.len>=3){a.x=a.x-a.w*.65;a.w=a.w*1.65;b=true}h.clearRect(0,0,f,e);h.drawImage(i,0,0,f,e);h.beginPath();h.font=c.fontStyle+" "+Math.floor(a.h*(a.n>99?.9:1))+"px "+c.fontFamily;h.textAlign="center";h.fillStyle="rgba("+c.bgColor.r+","+c.bgColor.g+","+c.bgColor.b+","+a.o+")";h.fillRect(a.x,a.y,a.w,a.h);h.fillStyle="rgba("+c.textColor.r+","+c.textColor.g+","+c.textColor.b+","+a.o+")";if(typeof a.n==="number"&&a.n>999){h.fillText((a.n>9999?9:Math.floor(a.n/1e3))+"k+",Math.floor(a.x+a.w/2),Math.floor(a.y+a.h-a.h*.2))}else{h.fillText(a.n,Math.floor(a.x+a.w/2),Math.floor(a.y+a.h-a.h*.15))}h.closePath()};var w=function(a,b){b=(typeof b==="string"?{animation:b}:b)||{};m=function(){try{if(typeof a==="number"?a>0:a!==""){var c={type:"badge",options:{n:a}};if("animation"in b&&F.types[""+b.animation]){c.options.animation=""+b.animation}if("type"in b&&u[""+b.type]){c.options.type=""+b.type}["bgColor","textColor"].forEach(function(a){if(a in b){c.options[a]=C(b[a])}});["fontStyle","fontFamily"].forEach(function(a){if(a in b){c.options[a]=b[a]}});r.push(c);if(r.length>100){throw"Too many badges requests in queue."}t.start()}else{t.reset()}}catch(d){throw"Error setting badge. Message: "+d.message}};if(j){m()}};var x=function(a){m=function(){try{var b=a.width;var c=a.height;var d=document.createElement("img");var i=b/f=0;c--){if(/(^|\s)icon(\s|$)/i.test(a[c].getAttribute("rel"))){return a[c]}}return false};if(c.elementId){a=document.getElementById(c.elementId);a.setAttribute("href",a.getAttribute("src"))}else{a=d();if(a===false){a=document.createElement("link");a.setAttribute("rel","icon");document.getElementsByTagName("head")[0].appendChild(a)}}b=c.elementId?a.src:a.href;if(b.substr(0,5)!=="data:"&&b.indexOf(document.location.hostname)===-1){throw new Error("Error setting favicon. Favicon image is on different domain (Icon: "+b+", Domain: "+document.location.hostname+")")}a.setAttribute("type","image/png");return a};B.setIcon=function(a){var b=a.toDataURL("image/png");if(c.elementId){document.getElementById(c.elementId).setAttribute("src",b)}else{if(o.ff||o.opera){var e=d;d=document.createElement("link");if(o.opera){d.setAttribute("rel","icon")}d.setAttribute("rel","icon");d.setAttribute("type","image/png");document.getElementsByTagName("head")[0].appendChild(d);d.setAttribute("href",b);if(e.parentNode){e.parentNode.removeChild(e)}}else{d.setAttribute("href",b)}}};function C(a){var b=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;a=a.replace(b,function(a,b,c,d){return b+b+c+c+d+d});var c=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);return c?{r:parseInt(c[1],16),g:parseInt(c[2],16),b:parseInt(c[3],16)}:false}function D(a,b){var c={};var d;for(d in a){c[d]=a[d]}for(d in b){c[d]=b[d]}return c}function E(){return document.hidden||document.msHidden||document.webkitHidden||document.mozHidden}var F={};F.duration=40;F.types={};F.types.fade=[{x:.4,y:.4,w:.6,h:.6,o:0},{x:.4,y:.4,w:.6,h:.6,o:.1},{x:.4,y:.4,w:.6,h:.6,o:.2},{x:.4,y:.4,w:.6,h:.6,o:.3},{x:.4,y:.4,w:.6,h:.6,o:.4},{x:.4,y:.4,w:.6,h:.6,o:.5},{x:.4,y:.4,w:.6,h:.6,o:.6},{x:.4,y:.4,w:.6,h:.6,o:.7},{x:.4,y:.4,w:.6,h:.6,o:.8},{x:.4,y:.4,w:.6,h:.6,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}];F.types.none=[{x:.4,y:.4,w:.6,h:.6,o:1}];F.types.pop=[{x:1,y:1,w:0,h:0,o:1},{x:.9,y:.9,w:.1,h:.1,o:1},{x:.8,y:.8,w:.2,h:.2,o:1},{x:.7,y:.7,w:.3,h:.3,o:1},{x:.6,y:.6,w:.4,h:.4,o:1},{x:.5,y:.5,w:.5,h:.5,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}];F.types.popFade=[{x:.75,y:.75,w:0,h:0,o:0},{x:.65,y:.65,w:.1,h:.1,o:.2},{x:.6,y:.6,w:.2,h:.2,o:.4},{x:.55,y:.55,w:.3,h:.3,o:.6},{x:.5,y:.5,w:.4,h:.4,o:.8},{x:.45,y:.45,w:.5,h:.5,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}];F.types.slide=[{x:.4,y:1,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.8,w:.6,h:.6,o:1},{x:.4,y:.7,w:.6,h:.6,o:1},{x:.4,y:.6,w:.6,h:.6,o:1},{x:.4,y:.5,w:.6,h:.6,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}];F.run=function(a,b,d,e){var f=F.types[E()?"none":c.animation];if(d===true){e=typeof e!=="undefined"?e:f.length-1}else{e=typeof e!=="undefined"?e:0}b=b?b:function(){};if(e=0){u[c.type](D(a,f[e]));p=setTimeout(function(){if(d){e=e-1}else{e=e+1}F.run(a,b,d,e)},F.duration);B.setIcon(g)}else{b();return}};s();return{badge:w,video:y,image:x,webcam:z,reset:t.reset,browser:{supported:o.supported}}};if(typeof define!=="undefined"&&define.amd){define([],function(){return a})}else if(typeof module!=="undefined"&&module.exports){module.exports=a}else{this.Favico=a}})();(function(a,b){if(typeof define==="function"&&define.amd){define([],b)}else if(typeof exports==="object"){module.exports=b()}else{a.Handlebars=a.Handlebars||b()}})(this,function(){var a=function(){"use strict";var a;function b(a){this.string=a}b.prototype.toString=function(){return""+this.string};a=b;return a}();var b=function(a){"use strict";var b={};var c=a;var d={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"};var e=/[&<>"'`]/g;var f=/[&<>"'`]/;function g(a){return d[a]}function h(a){for(var b=1;b= 2.0.0-beta.1"};c.REVISION_CHANGES=h;var i=d.isArray,j=d.isFunction,k=d.toString,l="[object Object]";function m(a,b){this.helpers=a||{};this.partials=b||{};n(this)}c.HandlebarsEnvironment=m;m.prototype={constructor:m,logger:o,log:p,registerHelper:function(a,b){if(k.call(a)===l){if(b){throw new e("Arg not supported with multiple helpers")}d.extend(this.helpers,a)}else{this.helpers[a]=b}},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(k.call(a)===l){d.extend(this.partials,a)}else{this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]}};function n(a){a.registerHelper("helperMissing",function(){if(arguments.length===1){return undefined}else{throw new e("Missing helper: '"+arguments[arguments.length-1].name+"'")}});a.registerHelper("blockHelperMissing",function(b,c){var e=c.inverse,f=c.fn;if(b===true){return f(this)}else if(b===false||b==null){return e(this)}else if(i(b)){if(b.length>0){if(c.ids){c.ids=[c.name]}return a.helpers.each(b,c)}else{return e(this)}}else{if(c.data&&c.ids){var g=q(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name);c={data:g}}return f(b,c)}});a.registerHelper("each",function(a,b){if(!b){throw new e("Must pass iterator to #each")}var c=b.fn,f=b.inverse;var g=0,h="",k;var l;if(b.data&&b.ids){l=d.appendContextPath(b.data.contextPath,b.ids[0])+"."}if(j(a)){a=a.call(this)}if(b.data){k=q(b.data)}if(a&&typeof a==="object"){if(i(a)){for(var m=a.length;g"+a+""}else{return a}});function wraplong(a){var b=false;var c=a.split(" ");for(var d in c){if(c[d].length>40){b=true}}return b}function escape(a){var b={"<":"<",">":">","'":"'"};return a.replace(/[<>']/g,function(a){return b[a]})}function uri(a){return URI.withinString(a,function(a,b,c,d){if(a.indexOf("javascript:")===0){return a}var e=a.split("<");a=""+e[0]+"";if(e.length>1){a+="<"+e.slice(1).join("<")}return a})}var styleCheck_Re=/[\x00-\x1F]/,back_re=/^(\d{1,2})(,(\d{1,2}))?/,colourKey="",colour_re=/\x03/g,styleBreak="";function styleTemplate(a){return""+a.text+""}var styles=[["normal","\x00",""],["underline",""],["bold",""],["italic",""]].map(function(a){var b=encodeURI(a[1]).replace("%","\\x");return{name:a[0],style:a[2]!=null?a[2]:"irc-"+a[0],key:a[1],keyregex:new RegExp(b+"(.*?)("+b+"|$)")}});var colourMap={};for(var colour=0;colour<16;colour++){colourMap[colour]={fore:"irc-fg"+colour,back:"irc-bg"+colour}}function colors(a){if(!styleCheck_Re.test(a))return a;if(a.indexOf(styleBreak)>=0){return a.split(styleBreak).map(colors).join("")}var b=a;var c=b.split(colourKey);var d,e,f,g="";for(var h=0;h=0&&c=0},isPlainObject:function(a){if(n.type(a)!=="object"||a.nodeType||n.isWindow(a)){return false}if(a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")){return false}return true},isEmptyObject:function(a){var b;for(b in a){return false}return true},type:function(a){if(a==null){return a+""}return typeof a==="object"||typeof a==="function"?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a);if(a){if(a.indexOf("use strict")===1){b=l.createElement("script");b.text=a;l.head.appendChild(b).parentNode.removeChild(b)}else{c(a)}}},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;e0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){if(a===b){l=true}return 0},C=typeof undefined,D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){var b=0,c=this.length;for(;b+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,d&1023|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes);F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]){}a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n){m(b)}b=b||n;d=d||[];if(!a||typeof a!=="string"){return d}if((k=b.nodeType)!==1&&k!==9){return[]}if(p&&!e){if(f=_.exec(a)){if(j=f[1]){if(k===9){h=b.getElementById(j);if(h&&h.parentNode){if(h.id===j){d.push(h);return d}}else{return d}}else{if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j){d.push(h);return d}}}else if(f[2]){I.apply(d,b.getElementsByTagName(a));return d}else if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName){I.apply(d,b.getElementsByClassName(j));return d}}if(c.qsa&&(!q||!q.test(a))){s=r=u;w=b;x=k===9&&a;if(k===1&&b.nodeName.toLowerCase()!=="object"){o=g(a);if(r=b.getAttribute("id")){s=r.replace(bb,"\\$&")}else{b.setAttribute("id",s)}s="[id='"+s+"'] ";l=o.length;while(l--){o[l]=s+qb(o[l])}w=ab.test(a)&&ob(b.parentNode)||b;x=o.join(",")}if(x){try{I.apply(d,w.querySelectorAll(x));return d}catch(y){}finally{if(!r){b.removeAttribute("id")}}}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){if(a.push(c+" ")>d.cacheLength){delete b[a.shift()]}return b[c+" "]=e}return b}function hb(a){a[u]=true;return a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return false}finally{if(b.parentNode){b.parentNode.removeChild(b)}b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--){d.attrHandle[c[e]]=b}}function kb(a,b){var c=b&&a,d=c&&a.nodeType===1&&b.nodeType===1&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d){return d}if(c){while(c=c.nextSibling){if(c===b){return-1}}}return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function nb(a){return hb(function(b){b=+b;return hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--){if(c[e=f[g]]){c[e]=!(d[e]=c[e])}}})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={};f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":false};m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;if(e===n||e.nodeType!==9||!e.documentElement){return n}n=e;o=e.documentElement;p=!f(e);if(g&&g!==g.top){if(g.addEventListener){g.addEventListener("unload",function(){m()},false)}else if(g.attachEvent){g.attachEvent("onunload",function(){m()})}}c.attributes=ib(function(a){a.className="i";return!a.getAttribute("className")});c.getElementsByTagName=ib(function(a){a.appendChild(e.createComment(""));return!a.getElementsByTagName("*").length});c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){a.innerHTML="
";a.firstChild.className="i";return a.getElementsByClassName("i").length===2});c.getById=ib(function(a){o.appendChild(a).id=u;return!e.getElementsByName||!e.getElementsByName(u).length});if(c.getById){d.find["ID"]=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}};d.filter["ID"]=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}}else{delete d.find["ID"];d.filter["ID"]=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}}d.find["TAG"]=c.getElementsByTagName?function(a,b){if(typeof b.getElementsByTagName!==C){return b.getElementsByTagName(a)}}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(a==="*"){while(c=f[e++]){if(c.nodeType===1){d.push(c)}}return d}return f};d.find["CLASS"]=c.getElementsByClassName&&function(a,b){if(typeof b.getElementsByClassName!==C&&p){return b.getElementsByClassName(a)}};r=[];q=[];if(c.qsa=$.test(e.querySelectorAll)){ib(function(a){a.innerHTML="";if(a.querySelectorAll("[msallowclip^='']").length){q.push("[*^$]="+M+"*(?:''|\"\")")}if(!a.querySelectorAll("[selected]").length){q.push("\\["+M+"*(?:value|"+L+")")}if(!a.querySelectorAll(":checked").length){q.push(":checked")}});ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden");a.appendChild(b).setAttribute("name","D");if(a.querySelectorAll("[name=d]").length){q.push("name"+M+"*[*^$|!~]?=")}if(!a.querySelectorAll(":enabled").length){q.push(":enabled",":disabled")}a.querySelectorAll("*,:x");q.push(",.*:")})}if(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector)){ib(function(a){c.disconnectedMatch=s.call(a,"div");s.call(a,"[s!='']:x");r.push("!=",Q)})}q=q.length&&new RegExp(q.join("|"));r=r.length&&new RegExp(r.join("|"));b=$.test(o.compareDocumentPosition);t=b||$.test(o.contains)?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&(c.contains?c.contains(d):a.compareDocumentPosition&&a.compareDocumentPosition(d)&16))}:function(a,b){if(b){while(b=b.parentNode){if(b===a){return true}}}return false};B=b?function(a,b){if(a===b){l=true;return 0}var d=!a.compareDocumentPosition-!b.compareDocumentPosition;if(d){return d}d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1;if(d&1||!c.sortDetached&&b.compareDocumentPosition(a)===d){if(a===e||a.ownerDocument===v&&t(v,a)){return-1}if(b===e||b.ownerDocument===v&&t(v,b)){return 1}return k?K.call(k,a)-K.call(k,b):0}return d&4?-1:1}:function(a,b){if(a===b){l=true;return 0}var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g){return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0}else if(f===g){return kb(a,b)}c=a;while(c=c.parentNode){h.unshift(c)}c=b;while(c=c.parentNode){i.unshift(c)}while(h[d]===i[d]){d++}return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0};return e};fb.matches=function(a,b){return fb(a,null,null,b)};fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n){m(a)}b=b.replace(U,"='$1']"); +if(c.matchesSelector&&p&&(!r||!r.test(b))&&(!q||!q.test(b))){try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&a.document.nodeType!==11){return d}}catch(e){}}return fb(b,n,null,[a]).length>0};fb.contains=function(a,b){if((a.ownerDocument||a)!==n){m(a)}return t(a,b)};fb.attr=function(a,b){if((a.ownerDocument||a)!==n){m(a)}var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):undefined;return f!==undefined?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null};fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};fb.uniqueSort=function(a){var b,d=[],e=0,f=0;l=!c.detectDuplicates;k=!c.sortStable&&a.slice(0);a.sort(B);if(l){while(b=a[f++]){if(b===a[f]){e=d.push(f)}}while(e--){a.splice(d[e],1)}}k=null;return a};e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(!f){while(b=a[d++]){c+=e(b)}}else if(f===1||f===9||f===11){if(typeof a.textContent==="string"){return a.textContent}else{for(a=a.firstChild;a;a=a.nextSibling){c+=e(a)}}}else if(f===3||f===4){return a.nodeValue}return c};d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){a[1]=a[1].replace(cb,db);a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db);if(a[2]==="~="){a[3]=" "+a[3]+" "}return a.slice(0,4)},CHILD:function(a){a[1]=a[1].toLowerCase();if(a[1].slice(0,3)==="nth"){if(!a[3]){fb.error(a[0])}a[4]=+(a[4]?a[5]+(a[6]||1):2*(a[3]==="even"||a[3]==="odd"));a[5]=+(a[7]+a[8]||a[3]==="odd")}else if(a[3]){fb.error(a[0])}return a},PSEUDO:function(a){var b,c=!a[6]&&a[2];if(X["CHILD"].test(a[0])){return null}if(a[3]){a[2]=a[4]||a[5]||""}else if(c&&V.test(c)&&(b=g(c,true))&&(b=c.indexOf(")",c.length-b)-c.length)){a[0]=a[0].slice(0,b);a[2]=c.slice(0,b)}return a.slice(0,3)}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return a==="*"?function(){return true}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test(typeof a.className==="string"&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);if(e==null){return b==="!="}if(!b){return true}e+="";return b==="="?e===c:b==="!="?e!==c:b==="^="?c&&e.indexOf(c)===0:b==="*="?c&&e.indexOf(c)>-1:b==="$="?c&&e.slice(-c.length)===c:b==="~="?(" "+e+" ").indexOf(c)>-1:b==="|="?e===c||e.slice(0,c.length+1)===c+"-":false}},CHILD:function(a,b,c,d,e){var f=a.slice(0,3)!=="nth",g=a.slice(-4)!=="last",h=b==="of-type";return d===1&&e===0?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p]){if(h?l.nodeName.toLowerCase()===r:l.nodeType===1){return false}}o=p=a==="only"&&!o&&"nextSibling"}return true}o=[g?q.firstChild:q.lastChild];if(g&&s){k=q[u]||(q[u]={});j=k[a]||[];n=j[0]===w&&j[1];m=j[0]===w&&j[2];l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop()){if(l.nodeType===1&&++m&&l===b){k[a]=[w,n,m];break}}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w){m=j[1]}else{while(l=++n&&l&&l[p]||(m=n=0)||o.pop()){if((h?l.nodeName.toLowerCase()===r:l.nodeType===1)&&++m){if(s){(l[u]||(l[u]={}))[a]=[w,m]}if(l===b){break}}}}m-=e;return m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);if(e[u]){return e(b)}if(e.length>1){c=[a,a,"",b];return d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--){d=K.call(a,f[g]);a[d]=!(c[d]=f[g])}}):function(a){return e(a,0,c)}}return e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--){if(f=g[h]){a[h]=!(b[h]=f)}}}):function(a,e,f){b[0]=a;d(b,null,f,c);return!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){if(!W.test(a||"")){fb.error("unsupported lang: "+a)}a=a.replace(cb,db).toLowerCase();return function(b){var c;do{if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang")){c=c.toLowerCase();return c===a||c.indexOf(a+"-")===0}}while((b=b.parentNode)&&b.nodeType===1);return false}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===false},disabled:function(a){return a.disabled===true},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){if(a.parentNode){a.parentNode.selectedIndex}return a.selected===true},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling){if(a.nodeType<6){return false}}return true},parent:function(a){return!d.pseudos["empty"](a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},text:function(a){var b;return a.nodeName.toLowerCase()==="input"&&a.type==="text"&&((b=a.getAttribute("type"))==null||b.toLowerCase()==="text")},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[c<0?c+b:c]}),even:nb(function(a,b){var c=0;for(;c=0;){a.push(d)}return a}),gt:nb(function(a,b,c){var d=c<0?c+b:c;for(;++d1?function(b,c,d){var e=a.length;while(e--){if(!a[e](b,c,d)){return false}}return true}:a[0]}function tb(a,b,c){var d=0,e=b.length;for(;d-1){f[j]=!(g[j]=l)}}}}else{r=ub(r===g?r.splice(o,r.length):r);if(e){e(null,g,r,i)}else{I.apply(g,r)}}})}function wb(a){var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,true),l=rb(function(a){return K.call(b,a)>-1},h,true),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];for(;i1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:a[i-2].type===" "?"*":""})).replace(R,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find["TAG"]("*",k),v=w+=t==null?1:Math.random()||.1,x=u.length;if(k){j=g!==n&&g}for(;q!==x&&(l=u[q])!=null;q++){if(e&&l){m=0;while(o=a[m++]){if(o(l,g,h)){i.push(l);break}}if(k){w=v}}if(c){if(l=!o&&l){p--}if(f){r.push(l)}}}p+=q;if(c&&q!==p){m=0;while(o=b[m++]){o(r,s,g,h)}if(f){if(p>0){while(q--){if(!(r[q]||s[q])){s[q]=G.call(i)}}}s=ub(s)}I.apply(i,s);if(k&&!f&&s.length>0&&p+b.length>1){fb.uniqueSort(i)}}if(k){w=v;j=t}return r};return c?hb(f):f}h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){if(!b){b=g(a)}c=b.length;while(c--){f=wb(b[c]);if(f[u]){d.push(f)}else{e.push(f)}}f=A(a,xb(e,d));f.selector=a}return f};i=fb.select=function(a,b,e,f){var i,j,k,l,m,n=typeof a==="function"&&a,o=!f&&g(a=n.selector||a);e=e||[];if(o.length===1){j=o[0]=o[0].slice(0);if(j.length>2&&(k=j[0]).type==="ID"&&c.getById&&b.nodeType===9&&p&&d.relative[j[1].type]){b=(d.find["ID"](k.matches[0].replace(cb,db),b)||[])[0];if(!b){return e}else if(n){b=b.parentNode}a=a.slice(j.shift().value.length)}i=X["needsContext"].test(a)?0:j.length;while(i--){k=j[i];if(d.relative[l=k.type]){break}if(m=d.find[l]){if(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b)){j.splice(i,1);a=f.length&&qb(j);if(!a){I.apply(e,f);return e}break}}}}(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b);return e};c.sortStable=u.split("").sort(B).join("")===u;c.detectDuplicates=!!l;m();c.sortDetached=ib(function(a){return a.compareDocumentPosition(n.createElement("div"))&1});if(!ib(function(a){a.innerHTML="";return a.firstChild.getAttribute("href")==="#"})){jb("type|href|height|width",function(a,b,c){if(!c){return a.getAttribute(b,b.toLowerCase()==="type"?1:2)}})}if(!c.attributes||!ib(function(a){a.innerHTML="";a.firstChild.setAttribute("value","");return a.firstChild.getAttribute("value")===""})){jb("value",function(a,b,c){if(!c&&a.nodeName.toLowerCase()==="input"){return a.defaultValue}})}if(!ib(function(a){return a.getAttribute("disabled")==null})){jb(L,function(a,b,c){var d;if(!c){return a[b]===true?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}})}return fb}(a);n.find=t;n.expr=t.selectors;n.expr[":"]=n.expr.pseudos;n.unique=t.uniqueSort;n.text=t.getText;n.isXMLDoc=t.isXML;n.contains=t.contains;var u=n.expr.match.needsContext;var v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/;var w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b)){return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c})}if(b.nodeType){return n.grep(a,function(a){return a===b!==c})}if(typeof b==="string"){if(w.test(b)){return n.filter(b,a,c)}b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];if(c){a=":not("+a+")"}return b.length===1&&d.nodeType===1?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return a.nodeType===1}))};n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if(typeof a!=="string"){return this.pushStack(n(a).filter(function(){for(b=0;b1?n.unique(d):d);d.selector=this.selector?this.selector+" "+a:a;return d},filter:function(a){return this.pushStack(x(this,a||[],false))},not:function(a){return this.pushStack(x(this,a||[],true))},is:function(a){return!!x(this,typeof a==="string"&&u.test(a)?n(a):a||[],false).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a){return this}if(typeof a==="string"){if(a[0]==="<"&&a[a.length-1]===">"&&a.length>=3){c=[null,a,null]}else{c=z.exec(a)}if(c&&(c[1]||!b)){if(c[1]){b=b instanceof n?b[0]:b;n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,true));if(v.test(c[1])&&n.isPlainObject(b)){for(c in b){if(n.isFunction(this[c])){this[c](b[c])}else{this.attr(c,b[c])}}}return this}else{d=l.getElementById(c[2]);if(d&&d.parentNode){this.length=1;this[0]=d}this.context=l;this.selector=a;return this}}else if(!b||b.jquery){return(b||y).find(a)}else{return this.constructor(b).find(a)}}else if(a.nodeType){this.context=this[0]=a;this.length=1;return this}else if(n.isFunction(a)){return typeof y.ready!=="undefined"?y.ready(a):a(n)}if(a.selector!==undefined){this.selector=a.selector;this.context=a.context}return n.makeArray(a,this)};A.prototype=n.fn;y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:true,contents:true,next:true,prev:true};n.extend({dir:function(a,b,c){var d=[],e=c!==undefined;while((a=a[b])&&a.nodeType!==9){if(a.nodeType===1){if(e&&n(a).is(c)){break}d.push(a)}}return d},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling){if(a.nodeType===1&&a!==b){c.push(a)}}return c}});n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){var a=0;for(;a-1:c.nodeType===1&&n.find.matchesSelector(c,a))){f.push(c);break}}}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){if(!a){return this[0]&&this[0].parentNode?this.first().prevAll().length:-1}if(typeof a==="string"){return g.call(n(a),this[0])}return g.call(this,a.jquery?a[0]:a)},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&a.nodeType!==1){}return a}n.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);if(a.slice(-5)!=="Until"){d=c}if(d&&typeof d==="string"){e=n.filter(d,e)}if(this.length>1){if(!C[a]){n.unique(e)}if(B.test(a)){e.reverse()}}return this.pushStack(e)}});var E=/\S+/g;var F={};function G(a){var b=F[a]={};n.each(a.match(E)||[],function(a,c){b[c]=true});return b}n.Callbacks=function(a){a=typeof a==="string"?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){b=a.memory&&l;c=true;g=e||0;e=0;f=h.length;d=true;for(;h&&g-1){h.splice(c,1);if(d){if(c<=f){f--}if(c<=g){g--}}}})}return this},has:function(a){return a?n.inArray(a,h)>-1:!!(h&&h.length)},empty:function(){h=[];f=0;return this},disable:function(){h=i=b=undefined;return this},disabled:function(){return!h},lock:function(){i=undefined;if(!b){k.disable()}return this},locked:function(){return!i},fireWith:function(a,b){if(h&&(!c||i)){b=b||[];b=[a,b.slice?b.slice():b];if(d){i.push(b)}else{j(b)}}return this},fire:function(){k.fireWith(this,arguments);return this},fired:function(){return!!c}};return k};n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){e.done(arguments).fail(arguments);return this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);if(a&&n.isFunction(a.promise)){a.promise().done(c.resolve).fail(c.reject).progress(c.notify)}else{c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)}})});a=null}).promise()},promise:function(a){return a!=null?n.extend(a,d):d}},e={};d.pipe=d.then;n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add;if(h){g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock)}e[f[0]]=function(){e[f[0]+"With"](this===e?d:this,arguments);return this};e[f[0]+"With"]=g.fireWith});d.promise(e);if(a){a.call(e,e)}return e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=e!==1||a&&n.isFunction(a.promise)?e:0,g=f===1?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this;c[a]=arguments.length>1?d.call(arguments):e;if(c===i){g.notifyWith(b,c)}else if(!--f){g.resolveWith(b,c)}}},i,j,k;if(e>1){i=new Array(e);j=new Array(e);k=new Array(e);for(;b0){return}H.resolveWith(l,[n]);if(n.fn.triggerHandler){n(l).triggerHandler("ready");n(l).off("ready")}}});function I(){l.removeEventListener("DOMContentLoaded",I,false);a.removeEventListener("load",I,false);n.ready()}n.ready.promise=function(b){if(!H){H=n.Deferred();if(l.readyState==="complete"){setTimeout(n.ready)}else{l.addEventListener("DOMContentLoaded",I,false);a.addEventListener("load",I,false)}}return H.promise(b)};n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=c==null;if(n.type(c)==="object"){e=true;for(h in c){n.access(a,b,h,c[h],true,f,g)}}else if(d!==undefined){e=true;if(!n.isFunction(d)){g=true}if(j){if(g){b.call(a,d);b=null}else{j=b;b=function(a,b,c){return j.call(n(a),c)}}}if(b){for(;h1,null,true)},removeData:function(a){return this.each(function(){M.remove(this,a)})}});n.extend({queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue";d=L.get(a,b);if(c){if(!d||n.isArray(c)){d=L.access(a,b,n.makeArray(c))}else{d.push(c)}}return d||[]}},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};if(e==="inprogress"){e=c.shift();d--}if(e){if(b==="fx"){c.unshift("inprogress")}delete f.stop;e.call(a,g,f)}if(!d&&f){f.empty.fire()}},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}});n.fn.extend({queue:function(a,b){var c=2;if(typeof a!=="string"){b=a;a="fx";c--}if(arguments.lengthx";k.noCloneChecked=!!b.cloneNode(true).lastChild.defaultValue})();var U=typeof undefined;k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return true}function $(){return false}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(!r){return}if(c.handler){f=c;c=f.handler;e=f.selector}if(!c.guid){c.guid=n.guid++}if(!(i=r.events)){i=r.events={}}if(!(g=r.handle)){g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):undefined}}b=(b||"").match(E)||[""];j=b.length;while(j--){h=Y.exec(b[j])||[];o=q=h[1];p=(h[2]||"").split(".").sort();if(!o){continue}l=n.event.special[o]||{};o=(e?l.delegateType:l.bindType)||o;l=n.event.special[o]||{};k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f);if(!(m=i[o])){m=i[o]=[];m.delegateCount=0;if(!l.setup||l.setup.call(a,d,p,g)===false){if(a.addEventListener){a.addEventListener(o,g,false)}}}if(l.add){l.add.call(a,k);if(!k.handler.guid){k.handler.guid=c.guid}}if(e){m.splice(m.delegateCount++,0,k)}else{m.push(k)}n.event.global[o]=true}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(!r||!(i=r.events)){return}b=(b||"").match(E)||[""];j=b.length;while(j--){h=Y.exec(b[j])||[];o=q=h[1];p=(h[2]||"").split(".").sort();if(!o){for(o in i){n.event.remove(a,o+b[j],c,d,true)}continue}l=n.event.special[o]||{};o=(d?l.delegateType:l.bindType)||o;m=i[o]||[];h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)");g=f=m.length;while(f--){k=m[f];if((e||q===k.origType)&&(!c||c.guid===k.guid)&&(!h||h.test(k.namespace))&&(!d||d===k.selector||d==="**"&&k.selector)){m.splice(f,1);if(k.selector){m.delegateCount--}if(l.remove){l.remove.call(a,k)}}}if(g&&!m.length){if(!l.teardown||l.teardown.call(a,p,r.handle)===false){n.removeEvent(a,o,r.handle)}delete i[o]}}if(n.isEmptyObject(i)){delete r.handle;L.remove(a,"events")}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];g=h=d=d||l;if(d.nodeType===3||d.nodeType===8){return}if(X.test(q+n.event.triggered)){return}if(q.indexOf(".")>=0){r=q.split(".");q=r.shift();r.sort()}k=q.indexOf(":")<0&&"on"+q;b=b[n.expando]?b:new n.Event(q,typeof b==="object"&&b);b.isTrigger=e?2:3;b.namespace=r.join(".");b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b.result=undefined;if(!b.target){b.target=d}c=c==null?[b]:n.makeArray(c,[b]);o=n.event.special[q]||{};if(!e&&o.trigger&&o.trigger.apply(d,c)===false){return}if(!e&&!o.noBubble&&!n.isWindow(d)){i=o.delegateType||q;if(!X.test(i+q)){g=g.parentNode}for(;g;g=g.parentNode){p.push(g);h=g}if(h===(d.ownerDocument||l)){p.push(h.defaultView||h.parentWindow||a)}}f=0;while((g=p[f++])&&!b.isPropagationStopped()){b.type=f>1?i:o.bindType||q;m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle");if(m){m.apply(g,c)}m=k&&g[k];if(m&&m.apply&&n.acceptData(g)){b.result=m.apply(g,c);if(b.result===false){b.preventDefault()}}}b.type=q;if(!e&&!b.isDefaultPrevented()){if((!o._default||o._default.apply(p.pop(),c)===false)&&n.acceptData(d)){if(k&&n.isFunction(d[q])&&!n.isWindow(d)){h=d[k];if(h){d[k]=null}n.event.triggered=q;d[q]();n.event.triggered=undefined;if(h){d[k]=h}}}}return b.result},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};i[0]=a;a.delegateTarget=this;if(k.preDispatch&&k.preDispatch.call(this,a)===false){return}h=n.event.handlers.call(this,a,j);b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem;c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped()){if(!a.namespace_re||a.namespace_re.test(g.namespace)){a.handleObj=g;a.data=g.data;e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i);if(e!==undefined){if((a.result=e)===false){a.preventDefault();a.stopPropagation()}}}}}if(k.postDispatch){k.postDispatch.call(this,a)}return a.result},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||a.type!=="click")){for(;i!==this;i=i.parentNode||this){if(i.disabled!==true||a.type!=="click"){d=[];for(c=0;c=0:n.find(e,this,null,[i]).length}if(d[e]){d.push(f)}}if(d.length){g.push({elem:i,handlers:d})}}}}if(h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ib.optgroup=ib.option;ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead;ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(b.nodeType!==11?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){a.type=(a.getAttribute("type")!==null)+"/"+a.type;return a}function lb(a){var b=gb.exec(a.type);if(b){a.type=b[1]}else{a.removeAttribute("type")}return a}function mb(a,b){var c=0,d=a.length;for(;c0){mb(g,!i&&ob(a,"script"))}return h},buildFragment:function(a,b,c,d){var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;for(;m")+h[2];j=h[0];while(j--){f=f.lastChild}n.merge(l,f.childNodes);f=k.firstChild;f.textContent=""}}}k.textContent="";m=0;while(e=l[m++]){if(d&&n.inArray(e,d)!==-1){continue}i=n.contains(e.ownerDocument,e);f=ob(k.appendChild(e),"script");if(i){mb(f)}if(c){j=0;while(e=f[j++]){if(fb.test(e.type||"")){c.push(e)}}}}return k},cleanData:function(a){var b,c,d,e,f=n.event.special,g=0;for(;(c=a[g])!==undefined;g++){if(n.acceptData(c)){e=c[L.expando];if(e&&(b=L.cache[e])){if(b.events){for(d in b.events){if(f[d]){n.event.remove(c,d)}else{n.removeEvent(c,d,b.handle)}}}if(L.cache[e]){delete L.cache[e]}}}delete M.cache[c[M.expando]]}}});n.fn.extend({text:function(a){return J(this,function(a){return a===undefined?n.text(this):this.empty().each(function(){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.textContent=a}})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){if(this.parentNode){this.parentNode.insertBefore(a,this)}})},after:function(){return this.domManip(arguments,function(a){if(this.parentNode){this.parentNode.insertBefore(a,this.nextSibling)}})},remove:function(a,b){var c,d=a?n.filter(a,this):this,e=0;for(;(c=d[e])!=null;e++){if(!b&&c.nodeType===1){n.cleanData(ob(c))}if(c.parentNode){if(b&&n.contains(c.ownerDocument,c)){mb(ob(c,"script"))}c.parentNode.removeChild(c)}}return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){if(a.nodeType===1){n.cleanData(ob(a,false));a.textContent=""}}return this},clone:function(a,b){a=a==null?false:a;b=b==null?a:b;return this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(a===undefined&&b.nodeType===1){return b.innerHTML}if(typeof a==="string"&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;c1&&typeof p==="string"&&!k.checkClone&&eb.test(p)){return this.each(function(c){var d=m.eq(c);if(q){a[0]=p.call(this,c,d.html())}d.domManip(a,b)})}if(l){c=n.buildFragment(a,this[0].ownerDocument,false,this);d=c.firstChild;if(c.childNodes.length===1){c=d}if(d){f=n.map(ob(c,"script"),kb);g=f.length;for(;j")).appendTo(b.documentElement);b=qb[0].contentDocument;b.write();b.close();c=sb(a,b);qb.detach()}rb[a]=c}return c}var ub=/^margin/;var vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i");var wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;c=c||wb(a);if(c){g=c.getPropertyValue(b)||c[b]}if(c){if(g===""&&!n.contains(a.ownerDocument,a)){g=n.style(a,b)}if(vb.test(g)&&ub.test(b)){d=h.width;e=h.minWidth;f=h.maxWidth;h.minWidth=h.maxWidth=h.width=g;g=c.width;h.width=d;h.minWidth=e;h.maxWidth=f}}return g!==undefined?g+"":g}function yb(a,b){return{get:function(){if(a()){delete this.get;return}return(this.get=b).apply(this,arguments)}}}(function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(!f.style){return}f.style.backgroundClip="content-box";f.cloneNode(true).style.backgroundClip="";k.clearCloneStyle=f.style.backgroundClip==="content-box";e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;"+"position:absolute";e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;"+"box-sizing:border-box;display:block;margin-top:1%;top:1%;"+"border:1px;padding:1px;width:4px;position:absolute";f.innerHTML="";d.appendChild(e);var g=a.getComputedStyle(f,null);b=g.top!=="1%";c=g.width==="4px";d.removeChild(e)}if(a.getComputedStyle){n.extend(k,{pixelPosition:function(){g();return b},boxSizingReliable:function(){if(c==null){g()}return c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;"+"box-sizing:content-box;display:block;margin:0;border:0;padding:0";c.style.marginRight=c.style.width="0";f.style.width="1px";d.appendChild(e);b=!parseFloat(a.getComputedStyle(c,null).marginRight);d.removeChild(e);return b}})}})();n.swap=function(a,b,c,d){var e,f,g={};for(f in b){g[f]=a.style[f];a.style[f]=b[f]}e=c.apply(a,d||[]);for(f in b){a.style[f]=g[f]}return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a){return b}var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--){b=Eb[e]+c;if(b in a){return b}}return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){var f=c===(d?"border":"content")?4:b==="width"?1:0,g=0;for(;f<4;f+=2){if(c==="margin"){g+=n.css(a,c+R[f],true,e)}if(d){if(c==="content"){g-=n.css(a,"padding"+R[f],true,e)}if(c!=="margin"){g-=n.css(a,"border"+R[f]+"Width",true,e)}}else{g+=n.css(a,"padding"+R[f],true,e);if(c!=="padding"){g+=n.css(a,"border"+R[f]+"Width",true,e)}}}return g}function Ib(a,b,c){var d=true,e=b==="width"?a.offsetWidth:a.offsetHeight,f=wb(a),g=n.css(a,"boxSizing",false,f)==="border-box";if(e<=0||e==null){e=xb(a,b,f);if(e<0||e==null){e=a.style[b]}if(vb.test(e)){return e}d=g&&(k.boxSizingReliable()||e===a.style[b]);e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){var c,d,e,f=[],g=0,h=a.length;for(;g1)},show:function(){return Jb(this,true)},hide:function(){return Jb(this)},toggle:function(a){if(typeof a==="boolean"){return a?this.show():this.hide()}return this.each(function(){if(S(this)){n(this).show()}else{n(this).hide()}})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb;Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a;this.prop=c;this.easing=e||"swing";this.options=b;this.start=this.now=this.cur();this.end=d;this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];if(this.options.duration){this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration)}else{this.pos=b=a}this.now=(this.end-this.start)*b+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(c&&c.set){c.set(this)}else{Kb.propHooks._default.set(this)}return this}};Kb.prototype.init.prototype=Kb.prototype;Kb.propHooks={_default:{get:function(a){var b;if(a.elem[a.prop]!=null&&(!a.elem.style||a.elem.style[a.prop]==null)){return a.elem[a.prop]}b=n.css(a.elem,a.prop,"");return!b||b==="auto"?0:b},set:function(a){if(n.fx.step[a.prop]){n.fx.step[a.prop](a)}else if(a.elem.style&&(a.elem.style[n.cssProps[a.prop]]!=null||n.cssHooks[a.prop])){n.style(a.elem,a.prop,a.now+a.unit)}else{a.elem[a.prop]=a.now}}}};Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){if(a.elem.nodeType&&a.elem.parentNode){a.elem[a.prop]=a.now}}};n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}};n.fx=Kb.prototype.init;n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||f!=="px"&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3];e=e||[];g=+d||1;do{h=h||".5";g=g/h;n.style(c.elem,a,g+f)}while(h!==(h=c.cur()/d)&&h!==1&&--i)}if(e){g=c.start=+g||+d||0;c.unit=f;c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]}return c}]};function Sb(){setTimeout(function(){Lb=undefined});return Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};b=b?1:0;for(;d<4;d+=2-b){c=R[d];e["margin"+c]=e["padding"+c]=a}if(b){e.opacity=e.width=a}return e}function Ub(a,b,c){var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;for(;f1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}});n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(!a||f===3||f===8||f===2){return}if(typeof a.getAttribute===U){return n.prop(a,b,c)}if(f!==1||!n.isXMLDoc(a)){b=b.toLowerCase();d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)}if(c!==undefined){if(c===null){n.removeAttr(a,b)}else if(d&&"set"in d&&(e=d.set(a,c,b))!==undefined){return e}else{a.setAttribute(b,c+"");return c}}else if(d&&"get"in d&&(e=d.get(a,b))!==null){return e}else{e=n.find.attr(a,b);return e==null?undefined:e}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&a.nodeType===1){while(c=f[e++]){d=n.propFix[c]||c;if(n.expr.match.bool.test(c)){a[d]=false}a.removeAttribute(c)}}},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&b==="radio"&&n.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b);if(c){a.value=c}return b}}}}});Zb={set:function(a,b,c){if(b===false){n.removeAttr(a,c)}else{a.setAttribute(c,c)}return c}};n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;if(!d){f=$b[b];$b[b]=e;e=c(a,b,d)!=null?b.toLowerCase():null;$b[b]=f}return e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}});n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(!a||g===3||g===8||g===2){return}f=g!==1||!n.isXMLDoc(a);if(f){b=n.propFix[b]||b;e=n.propHooks[b]}if(c!==undefined){return e&&"set"in e&&(d=e.set(a,c,b))!==undefined?d:a[b]=c}else{return e&&"get"in e&&(d=e.get(a,b))!==null?d:a[b]}},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}});if(!k.optSelected){n.propHooks.selected={get:function(a){var b=a.parentNode;if(b&&b.parentNode){b.parentNode.selectedIndex}return null}}}n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=typeof a==="string"&&a,i=0,j=this.length;if(n.isFunction(a)){return this.each(function(b){n(this).addClass(a.call(this,b,this.className))})}if(h){b=(a||"").match(E)||[];for(;i=0){d=d.replace(" "+e+" "," ")}}g=a?n.trim(d):"";if(c.className!==g){c.className=g}}}}return this},toggleClass:function(a,b){var c=typeof a;if(typeof b==="boolean"&&c==="string"){return b?this.addClass(a):this.removeClass(a)}if(n.isFunction(a)){return this.each(function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)})}return this.each(function(){if(c==="string"){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++]){if(e.hasClass(b)){e.removeClass(b)}else{e.addClass(b)}}}else if(c===U||c==="boolean"){if(this.className){L.set(this,"__className__",this.className)}this.className=this.className||a===false?"":L.get(this,"__className__")||""}})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0){return true}}return false}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];if(!arguments.length){if(e){b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()];if(b&&"get"in b&&(c=b.get(e,"value"))!==undefined){return c}c=e.value;return typeof c==="string"?c.replace(bc,""):c==null?"":c}return}d=n.isFunction(a);return this.each(function(c){var e;if(this.nodeType!==1){return}if(d){e=a.call(this,c,n(this).val())}else{e=a}if(e==null){e=""}else if(typeof e==="number"){e+=""}else if(n.isArray(e)){e=n.map(e,function(a){return a==null?"":a+""})}b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()];if(!b||!("set"in b)||b.set(this,e,"value")===undefined){this.value=e}})}});n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return b!=null?b:n.trim(n.text(a))}},select:{get:function(a){var b,c,d=a.options,e=a.selectedIndex,f=a.type==="select-one"||e<0,g=f?null:[],h=f?e+1:d.length,i=e<0?h:f?e:0;for(;i=0){c=true}}if(!c){a.selectedIndex=-1}return f}}}});n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){if(n.isArray(b)){return a.checked=n.inArray(n(a).val(),b)>=0}}};if(!k.checkOn){n.valHooks[this].get=function(a){return a.getAttribute("value")===null?"on":a.value}}});n.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 contextmenu").split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}});n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length===1?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now();var dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")};n.parseXML=function(a){var b,c;if(!a||typeof a!=="string"){return null}try{c=new DOMParser;b=c.parseFromString(a,"text/xml")}catch(d){b=undefined}if(!b||b.getElementsByTagName("parsererror").length){n.error("Invalid XML: "+a)}return b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a");fc.href="";fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){if(typeof b!=="string"){c=b;b="*"}var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c)){while(d=f[e++]){if(d[0]==="+"){d=d.slice(1)||"*";(a[d]=a[d]||[]).unshift(c)}else{(a[d]=a[d]||[]).push(c)}}}}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;e[h]=true;n.each(a[h]||[],function(a,h){var j=h(b,c,d);if(typeof j==="string"&&!f&&!e[j]){b.dataTypes.unshift(j);g(j);return false}else if(f){return!(i=j)}});return i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b){if(b[c]!==undefined){(e[c]?a:d||(d={}))[c]=b[c]}}if(d){n.extend(true,a,d)}return a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(i[0]==="*"){i.shift();if(d===undefined){d=a.mimeType||b.getResponseHeader("Content-Type")}}if(d){for(e in h){if(h[e]&&h[e].test(d)){i.unshift(e);break}}}if(i[0]in c){f=i[0]}else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}if(!g){g=e}}f=f||g}if(f){if(f!==i[0]){i.unshift(f)}return c[f]}}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1]){for(g in a.converters){j[g.toLowerCase()]=a.converters[g]}}f=k.shift();while(f){if(a.responseFields[f]){c[a.responseFields[f]]=b}if(!i&&d&&a.dataFilter){b=a.dataFilter(b,a.dataType)}i=f;f=k.shift();if(f){if(f==="*"){f=i}else if(i!=="*"&&i!==f){g=j[i+" "+f]||j["* "+f];if(!g){for(e in j){h=e.split(" ");if(h[1]===f){g=j[i+" "+h[0]]||j["* "+h[0]];if(g){if(g===true){g=j[e]}else if(j[e]!==true){f=h[0];k.unshift(h[1])}break}}}}if(g!==true){if(g&&a["throws"]){b=g(b)}else{try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}}}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){if(typeof a==="object"){b=a;a=undefined}b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(t===2){if(!f){f={};while(b=ic.exec(e)){f[b[1].toLowerCase()]=b[2]}}b=f[a.toLowerCase()]}return b==null?null:b},getAllResponseHeaders:function(){return t===2?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();if(!t){a=s[c]=s[c]||a;r[a]=b}return this},overrideMimeType:function(a){if(!t){k.mimeType=a}return this},statusCode:function(a){var b;if(a){if(t<2){for(b in a){q[b]=[q[b],a[b]]}}else{v.always(a[v.status])}}return this},abort:function(a){var b=a||u;if(c){c.abort(b)}x(0,b);return this}};o.promise(v).complete=p.add;v.success=v.done;v.error=v.fail;k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//");k.type=b.method||b.type||k.method||k.type;k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""]; +if(k.crossDomain==null){h=mc.exec(k.url.toLowerCase());k.crossDomain=!!(h&&(h[1]!==ec[1]||h[2]!==ec[2]||(h[3]||(h[1]==="http:"?"80":"443"))!==(ec[3]||(ec[1]==="http:"?"80":"443"))))}if(k.data&&k.processData&&typeof k.data!=="string"){k.data=n.param(k.data,k.traditional)}sc(nc,k,b,v);if(t===2){return v}i=k.global;if(i&&n.active++===0){n.event.trigger("ajaxStart")}k.type=k.type.toUpperCase();k.hasContent=!kc.test(k.type);d=k.url;if(!k.hasContent){if(k.data){d=k.url+=(dc.test(d)?"&":"?")+k.data;delete k.data}if(k.cache===false){k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++}}if(k.ifModified){if(n.lastModified[d]){v.setRequestHeader("If-Modified-Since",n.lastModified[d])}if(n.etag[d]){v.setRequestHeader("If-None-Match",n.etag[d])}}if(k.data&&k.hasContent&&k.contentType!==false||b.contentType){v.setRequestHeader("Content-Type",k.contentType)}v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+(k.dataTypes[0]!=="*"?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers){v.setRequestHeader(j,k.headers[j])}if(k.beforeSend&&(k.beforeSend.call(l,v,k)===false||t===2)){return v.abort()}u="abort";for(j in{success:1,error:1,complete:1}){v[j](k[j])}c=sc(oc,k,b,v);if(!c){x(-1,"No Transport")}else{v.readyState=1;if(i){m.trigger("ajaxSend",[v,k])}if(k.async&&k.timeout>0){g=setTimeout(function(){v.abort("timeout")},k.timeout)}try{t=1;c.send(r,x)}catch(w){if(t<2){x(-1,w)}else{throw w}}}function x(a,b,f,h){var j,r,s,u,w,x=b;if(t===2){return}t=2;if(g){clearTimeout(g)}c=undefined;e=h||"";v.readyState=a>0?4:0;j=a>=200&&a<300||a===304;if(f){u=uc(k,v,f)}u=vc(k,u,v,j);if(j){if(k.ifModified){w=v.getResponseHeader("Last-Modified");if(w){n.lastModified[d]=w}w=v.getResponseHeader("etag");if(w){n.etag[d]=w}}if(a===204||k.type==="HEAD"){x="nocontent"}else if(a===304){x="notmodified"}else{x=u.state;r=u.data;s=u.error;j=!s}}else{s=x;if(a||!x){x="error";if(a<0){a=0}}}v.status=a;v.statusText=(b||x)+"";if(j){o.resolveWith(l,[r,x,v])}else{o.rejectWith(l,[v,x,s])}v.statusCode(q);q=undefined;if(i){m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s])}p.fireWith(l,[v,x]);if(i){m.trigger("ajaxComplete",[v,k]);if(!--n.active){n.event.trigger("ajaxStop")}}}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,undefined,b,"script")}});n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){if(n.isFunction(c)){e=e||d;d=c;c=undefined}return n.ajax({url:a,type:b,dataType:e,data:c,success:d})}});n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}});n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:false,global:false,"throws":true})};n.fn.extend({wrapAll:function(a){var b;if(n.isFunction(a)){return this.each(function(b){n(this).wrapAll(a.call(this,b))})}if(this[0]){b=n(a,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){b.insertBefore(this[0])}b.map(function(){var a=this;while(a.firstElementChild){a=a.firstElementChild}return a}).append(this)}return this},wrapInner:function(a){if(n.isFunction(a)){return this.each(function(b){n(this).wrapInner(a.call(this,b))})}return this.each(function(){var b=n(this),c=b.contents();if(c.length){c.wrapAll(a)}else{b.append(a)}})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){if(!n.nodeName(this,"body")){n(this).replaceWith(this.childNodes)}}).end()}});n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0};n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b)){n.each(b,function(b,e){if(c||xc.test(a)){d(a,e)}else{Bc(a+"["+(typeof e==="object"?b:"")+"]",e,c,d)}})}else if(!c&&n.type(b)==="object"){for(e in b){Bc(a+"["+e+"]",b[e],c,d)}}else{d(a,b)}}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():b==null?"":b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(b===undefined){b=n.ajaxSettings&&n.ajaxSettings.traditional}if(n.isArray(a)||a.jquery&&!n.isPlainObject(a)){n.each(a,function(){e(this.name,this.value)})}else{for(c in a){Bc(c,a[c],b,e)}}return d.join("&").replace(wc,"+")};n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return c==null?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}});n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();if(a.ActiveXObject){n(a).on("unload",function(){for(var a in Dc){Dc[a]()}})}k.cors=!!Fc&&"withCredentials"in Fc;k.ajax=Fc=!!Fc;n.ajaxTransport(function(a){var b;if(k.cors||Fc&&!a.crossDomain){return{send:function(c,d){var e,f=a.xhr(),g=++Cc;f.open(a.type,a.url,a.async,a.username,a.password);if(a.xhrFields){for(e in a.xhrFields){f[e]=a.xhrFields[e]}}if(a.mimeType&&f.overrideMimeType){f.overrideMimeType(a.mimeType)}if(!a.crossDomain&&!c["X-Requested-With"]){c["X-Requested-With"]="XMLHttpRequest"}for(e in c){f.setRequestHeader(e,c[e])}b=function(a){return function(){if(b){delete Dc[g];b=f.onload=f.onerror=null;if(a==="abort"){f.abort()}else if(a==="error"){d(f.status,f.statusText)}else{d(Ec[f.status]||f.status,f.statusText,typeof f.responseText==="string"?{text:f.responseText}:undefined,f.getAllResponseHeaders())}}}};f.onload=b();f.onerror=b("error");b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b){throw h}}},abort:function(){if(b){b()}}}}});n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){n.globalEval(a);return a}}});n.ajaxPrefilter("script",function(a){if(a.cache===undefined){a.cache=false}if(a.crossDomain){a.type="GET"}});n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("