diff options
author | erdgeist <erdgeist@erdgeist.org> | 2024-12-22 21:53:57 +0100 |
---|---|---|
committer | erdgeist <erdgeist@erdgeist.org> | 2024-12-22 21:53:57 +0100 |
commit | e3481a4a35091b32b6fbee80c1c9ba2b6d7b50d6 (patch) | |
tree | 58f90b32cbd89599acfaab07377cc0447f1190c1 |
Rework of halfnarp and fullnarp into a self contained repository. Still WIP
-rw-r--r-- | Makefile | 20 | ||||
-rw-r--r-- | config.json | 7 | ||||
-rw-r--r-- | fullnarp.py | 157 | ||||
-rwxr-xr-x | halfnarp2.py | 289 | ||||
-rw-r--r-- | requirements.txt | 19 | ||||
-rw-r--r-- | scripts/create_corr_array_pretalx.py | 50 | ||||
-rwxr-xr-x | scripts/gen_css_tables.py | 83 | ||||
-rw-r--r-- | static/fullnarp.html | 78 | ||||
-rw-r--r-- | static/fullnarp.js | 641 | ||||
-rw-r--r-- | static/halfnarp.js | 510 | ||||
-rw-r--r-- | static/jquery-1.11.1.min.js | 4 | ||||
-rw-r--r-- | static/jquery-3.7.1.min.js | 2 | ||||
-rw-r--r-- | static/jquery.qrcode.min.js | 28 | ||||
-rw-r--r-- | static/style_38c3.css | 950 | ||||
-rw-r--r-- | static/style_38c3_tables.css | 1048 | ||||
-rw-r--r-- | templates/faq.html | 44 | ||||
-rw-r--r-- | templates/index.html | 115 | ||||
-rw-r--r-- | var/talks_local | 0 | ||||
-rw-r--r-- | versions/fullnarp_00000.json | 1 | ||||
-rw-r--r-- | wsgi.py | 4 |
20 files changed, 4050 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5ae5aea --- /dev/null +++ b/Makefile | |||
@@ -0,0 +1,20 @@ | |||
1 | all: install | ||
2 | |||
3 | import: venv | ||
4 | venv/bin/python3 ./halfnarp2.py -i | ||
5 | |||
6 | do-export: venv | ||
7 | venv/bin/python3 ./halfnarp2.py -e | ||
8 | |||
9 | run: venv | ||
10 | PYTHONIOENCODING=utf-8 venv/bin/python3 ./halfnarp2.py | ||
11 | |||
12 | run: venv | ||
13 | PYTHONIOENCODING=utf-8 venv/bin/python3 ./fullnarp.py | ||
14 | |||
15 | venv: | ||
16 | python3 -m venv ./venv | ||
17 | |||
18 | install: venv | ||
19 | venv/bin/pip install --upgrade pip | ||
20 | venv/bin/pip install -r requirements.txt | ||
diff --git a/config.json b/config.json new file mode 100644 index 0000000..e139d93 --- /dev/null +++ b/config.json | |||
@@ -0,0 +1,7 @@ | |||
1 | { | ||
2 | "host": "127.0.0.1", | ||
3 | "port": 5023, | ||
4 | "pretalx-url": "https://cfp.example.de/", | ||
5 | "pretalx-token": "<YOUR API KEY HERE>", | ||
6 | "pretalx-conference": "38c3" | ||
7 | } | ||
diff --git a/fullnarp.py b/fullnarp.py new file mode 100644 index 0000000..7c98785 --- /dev/null +++ b/fullnarp.py | |||
@@ -0,0 +1,157 @@ | |||
1 | import asyncio | ||
2 | import json | ||
3 | import websockets | ||
4 | from os import listdir | ||
5 | from websockets.exceptions import ConnectionClosedOK | ||
6 | |||
7 | """ | ||
8 | This is best served by an nginx block that should look a bit like this: | ||
9 | |||
10 | location /fullnarp/ { | ||
11 | root /home/halfnarp; | ||
12 | index index.html index.htm; | ||
13 | } | ||
14 | |||
15 | location /fullnarp/ws/ { | ||
16 | proxy_pass http://127.0.0.1:5009; | ||
17 | proxy_http_version 1.1; | ||
18 | proxy_set_header Upgrade $http_upgrade; | ||
19 | proxy_set_header Connection 'upgrade'; | ||
20 | proxy_set_header Host $host; | ||
21 | proxy_set_header X-Real-IP $remote_addr; | ||
22 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
23 | proxy_set_header X-Forwarded-Proto $scheme; | ||
24 | |||
25 | # Set keepalive timeout | ||
26 | proxy_read_timeout 60; # Set a read timeout to prevent connection closures | ||
27 | proxy_send_timeout 60; # Set a send timeout to prevent connection closures | ||
28 | } | ||
29 | |||
30 | When importing talks from pretalx with halfnarp2.py -i, it creates a file in | ||
31 | var/talks_local_fullnarp which contains non-public lectures and privacy relevant | ||
32 | speaker availibilities. It should only be served behind some auth. | ||
33 | """ | ||
34 | |||
35 | # Shared state | ||
36 | current_version = {} | ||
37 | newest_version = 0 | ||
38 | current_version_lock = asyncio.Lock() # Lock for managing access to the global state | ||
39 | |||
40 | clients = {} # Key: websocket, Value: {'client_id': ..., 'last_version': ...} | ||
41 | |||
42 | |||
43 | async def notify_clients(): | ||
44 | """Notify all connected clients of the current state.""" | ||
45 | async with current_version_lock: | ||
46 | # Prepare a full state update message with the current version | ||
47 | message = {"current_version": newest_version, "data": current_version} | ||
48 | |||
49 | # Notify each client about their relevant updates | ||
50 | for client, info in clients.items(): | ||
51 | try: | ||
52 | # Send the state update | ||
53 | await client.send(json.dumps(message)) | ||
54 | # Update the client's last known version | ||
55 | info["last_version"] = newest_version | ||
56 | except ConnectionClosedOK: | ||
57 | # Handle disconnected clients gracefully | ||
58 | pass | ||
59 | |||
60 | |||
61 | async def handle_client(websocket): | ||
62 | """Handle incoming WebSocket connections.""" | ||
63 | |||
64 | # Initialize per-connection state | ||
65 | clients[websocket] = {"client_id": id(websocket), "last_version": 0} | ||
66 | |||
67 | try: | ||
68 | # Send the current global state to the newly connected client | ||
69 | async with current_version_lock: | ||
70 | global newest_version | ||
71 | await websocket.send( | ||
72 | json.dumps({"current_version": newest_version, "data": current_version}) | ||
73 | ) | ||
74 | clients[websocket][ | ||
75 | "last_version" | ||
76 | ] = newest_version # Update last known version | ||
77 | |||
78 | # Listen for updates from the client | ||
79 | async for message in websocket: | ||
80 | try: | ||
81 | # Parse incoming message | ||
82 | data = json.loads(message) | ||
83 | |||
84 | # Update global state with a lock to prevent race conditions | ||
85 | async with current_version_lock: | ||
86 | if "setevent" in data: | ||
87 | eventid = data["setevent"] | ||
88 | day = data["day"] | ||
89 | room = data["room"] | ||
90 | time = data["time"] | ||
91 | lastupdate = data["lastupdate"] | ||
92 | |||
93 | newest_version += 1 # Increment the version | ||
94 | print( | ||
95 | "Moving event: " | ||
96 | + eventid | ||
97 | + " to day " | ||
98 | + day | ||
99 | + " at " | ||
100 | + time | ||
101 | + " in room " | ||
102 | + room | ||
103 | + " newcurrentversion " | ||
104 | + str(newest_version) | ||
105 | ) | ||
106 | |||
107 | if not eventid in current_version or int( | ||
108 | current_version[eventid]["lastupdate"] | ||
109 | ) <= int(lastupdate): | ||
110 | current_version[eventid] = { | ||
111 | "day": day, | ||
112 | "room": room, | ||
113 | "time": time, | ||
114 | "lastupdate": int(newest_version), | ||
115 | } | ||
116 | with open( | ||
117 | "versions/fullnarp_" | ||
118 | + str(newest_version).zfill(5) | ||
119 | + ".json", | ||
120 | "w", | ||
121 | ) as outfile: | ||
122 | json.dump(current_version, outfile) | ||
123 | |||
124 | # Notify all clients about the updated global state | ||
125 | await notify_clients() | ||
126 | except json.JSONDecodeError: | ||
127 | await websocket.send(json.dumps({"error": "Invalid JSON"})) | ||
128 | except websockets.exceptions.ConnectionClosedError as e: | ||
129 | print(f"Client disconnected abruptly: {e}") | ||
130 | except ConnectionClosedOK: | ||
131 | pass | ||
132 | finally: | ||
133 | # Cleanup when the client disconnects | ||
134 | del clients[websocket] | ||
135 | |||
136 | |||
137 | async def main(): | ||
138 | newest_file = sorted(listdir("versions/"))[-1] | ||
139 | global newest_version | ||
140 | global current_version | ||
141 | |||
142 | if newest_file: | ||
143 | newest_version = int(newest_file.replace("fullnarp_", "").replace(".json", "")) | ||
144 | print("Resuming from version: " + str(newest_version)) | ||
145 | with open("versions/" + str(newest_file)) as data_file: | ||
146 | current_version = json.load(data_file) | ||
147 | else: | ||
148 | current_version = {} | ||
149 | newest_version = 0 | ||
150 | |||
151 | async with websockets.serve(handle_client, "localhost", 5009): | ||
152 | print("WebSocket server started on ws://localhost:5009") | ||
153 | await asyncio.Future() # Run forever | ||
154 | |||
155 | |||
156 | if __name__ == "__main__": | ||
157 | asyncio.run(main()) | ||
diff --git a/halfnarp2.py b/halfnarp2.py new file mode 100755 index 0000000..ebd6f6b --- /dev/null +++ b/halfnarp2.py | |||
@@ -0,0 +1,289 @@ | |||
1 | #!venv/bin/python | ||
2 | |||
3 | from flask import Flask, render_template, jsonify, request, abort, send_file, url_for | ||
4 | from flask_sqlalchemy import SQLAlchemy | ||
5 | from flask_cors import CORS | ||
6 | from lxml import etree | ||
7 | from argparse import ArgumentParser | ||
8 | import requests | ||
9 | import json | ||
10 | import uuid | ||
11 | import markdown | ||
12 | from html_sanitizer import Sanitizer | ||
13 | from hashlib import sha256 | ||
14 | |||
15 | app = Flask(__name__) | ||
16 | app.config["SQLALCHEMY_DATABASE_URI"] = "postgresql://halfnarp@localhost:5432/halfnarp" | ||
17 | app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False | ||
18 | app.config["SERVER_NAME"] = "halfnarp.events.ccc.de" | ||
19 | app.config["SECRET_KEY"] = "<YOUR SERVER SECRET HERE>" | ||
20 | app.jinja_env.trim_blocks = True | ||
21 | app.jinja_env.lstrip_blocks = True | ||
22 | CORS(app) | ||
23 | |||
24 | db = SQLAlchemy(app) | ||
25 | |||
26 | |||
27 | class TalkPreference(db.Model): | ||
28 | """A preference of halfnarp frontend. An array of strings""" | ||
29 | |||
30 | uid = db.Column(db.String, primary_key=True) | ||
31 | public_uid = db.Column(db.String, index=True) | ||
32 | talk_ids = db.Column(db.String) | ||
33 | |||
34 | |||
35 | @app.route("/") | ||
36 | def root(): | ||
37 | return render_template("index.html") | ||
38 | |||
39 | |||
40 | @app.route("/-/talkpreferences", methods=["GET"]) | ||
41 | def sessions(): | ||
42 | return send_file("var/talks_local", mimetype="application/json") | ||
43 | |||
44 | |||
45 | @app.route("/-/talkpreferences/<uid>", methods=["GET"]) | ||
46 | def get_own_preferences(uid): | ||
47 | pref = db.session.get(TalkPreference, uid) | ||
48 | if pref == None: | ||
49 | abort(404) | ||
50 | |||
51 | return jsonify( | ||
52 | { | ||
53 | "hashed_uid": pref.public_uid, | ||
54 | "public_url": url_for( | ||
55 | "get_preferences", | ||
56 | public_uid=public_uid, | ||
57 | _external=True, | ||
58 | _scheme="https", | ||
59 | ), | ||
60 | "talk_ids": json.loads(pref.talk_ids), | ||
61 | "uid": pref.uid, | ||
62 | } | ||
63 | ) | ||
64 | |||
65 | |||
66 | @app.route("/-/talkpreferences/", methods=["POST"]) | ||
67 | def store_preferences(): | ||
68 | print(request.json) | ||
69 | try: | ||
70 | content = request.json | ||
71 | talk_ids = content["talk_ids"] | ||
72 | except: | ||
73 | abort(400) | ||
74 | |||
75 | if not all(isinstance(elem, str) for elem in talk_ids): | ||
76 | abort(400) | ||
77 | |||
78 | uid = str(uuid.uuid4()) | ||
79 | public_uid = str(sha256(uid.encode("utf-8")).hexdigest()) | ||
80 | |||
81 | db.session.add( | ||
82 | TalkPreference(uid=uid, public_uid=public_uid, talk_ids=json.dumps(talk_ids)) | ||
83 | ) | ||
84 | db.session.commit() | ||
85 | return jsonify( | ||
86 | { | ||
87 | "uid": uid, | ||
88 | "hashed_uid": str(public_uid), | ||
89 | "public_url": url_for( | ||
90 | "get_preferences", | ||
91 | public_uid=public_uid, | ||
92 | _external=True, | ||
93 | _scheme="https", | ||
94 | ), | ||
95 | "update_url": url_for( | ||
96 | "update_preferences", uid=uid, _external=True, _scheme="https" | ||
97 | ), | ||
98 | } | ||
99 | ) | ||
100 | |||
101 | |||
102 | @app.route("/-/talkpreferences/<uid>", methods=["POST", "PUT"]) | ||
103 | def update_preferences(uid): | ||
104 | pref = db.session.get(TalkPreference, uid) | ||
105 | if pref == None: | ||
106 | abort(404) | ||
107 | |||
108 | content = request.json | ||
109 | pref.talk_ids = json.dumps(content["talk_ids"]) | ||
110 | db.session.commit() | ||
111 | |||
112 | return jsonify({"uid": pref.uid, "hashed_uid": pref.public_uid}) | ||
113 | |||
114 | |||
115 | @app.route("/-/talkpreferences/public/<public_uid>", methods=["GET"]) | ||
116 | def get_preferences(public_uid): | ||
117 | pref = ( | ||
118 | db.session.query(TalkPreference) | ||
119 | .filter(TalkPreference.public_uid == public_uid) | ||
120 | .first() | ||
121 | ) | ||
122 | if pref == None: | ||
123 | abort(404) | ||
124 | |||
125 | return jsonify({"hash": pref.public_uid, "talk_ids": json.loads(pref.talk_ids)}) | ||
126 | |||
127 | |||
128 | def filter_keys_halfnarp(session): | ||
129 | abstract_html = markdown.markdown(submission["abstract"], enable_attributes=False) | ||
130 | abstract_clean_html = Sanitizer().sanitize(abstract_html) | ||
131 | slot = submission["slot"] | ||
132 | |||
133 | return { | ||
134 | "title": submission.get("title", "!!! NO TITLE !!!"), | ||
135 | "duration": 60 * submission.get("duration", 40), | ||
136 | "event_id": submission["code"], | ||
137 | "language": submission.get("content_locale", "de"), | ||
138 | "track_id": submission["track_id"], | ||
139 | "speaker_names": ", ".join( | ||
140 | [ | ||
141 | speaker.get("name", "unnamed") | ||
142 | for speaker in submission.get("speakers", {}) | ||
143 | ] | ||
144 | ), | ||
145 | "abstract": abstract_clean_html, | ||
146 | "room_id": slot.get("room_id", "room_unknown"), | ||
147 | "start_time": slot.get("start", "1970-01-01"), | ||
148 | } | ||
149 | |||
150 | |||
151 | def filter_keys_fullnarp(session, speakers): | ||
152 | abstract_html = markdown.markdown(session["abstract"], enable_attributes=False) | ||
153 | abstract_clean_html = Sanitizer().sanitize(abstract_html) | ||
154 | slot = submission["slot"] | ||
155 | |||
156 | speaker_info = [] | ||
157 | for speaker in submission.get("speakers", {}): | ||
158 | speaker_info.append(speakers[speaker["code"]]) | ||
159 | # if len(speakers[speaker['code']]['availabilities']) == 0: | ||
160 | # print ( "Track " + str(submission['track_id']) + ": Speaker " + speaker.get('name', 'unname') + " on session: " + session.get('title', '!!! NO TITLE !!!') + " without availability. https://cfp.cccv.de/orga/event/38c3/submissions/" + session['code'] ) | ||
161 | |||
162 | """This fixes availabilites ranging to or from exactly midnight to the more likely start of availibility at 8am and end of availibility at 3am""" | ||
163 | |||
164 | for avail in speakers[speaker["code"]]["availabilities"]: | ||
165 | start_new = datetime.fromisoformat(avail["start"]) | ||
166 | end_new = datetime.fromisoformat(avail["end"]) | ||
167 | |||
168 | start = datetime.fromisoformat(avail["start"]) | ||
169 | end = datetime.fromisoformat(avail["end"]) | ||
170 | if start.time() == time(0, 0): | ||
171 | start_new = start + timedelta(hours=10) | ||
172 | if end.time() == time(0, 0): | ||
173 | end_new = end + timedelta(hours=3) | ||
174 | |||
175 | if start != start_new or end != end_new: | ||
176 | print( | ||
177 | "Fixing " | ||
178 | + str(start) | ||
179 | + " - " | ||
180 | + str(end) | ||
181 | + " to " | ||
182 | + str(start_new) | ||
183 | + " - " | ||
184 | + str(end_new) | ||
185 | ) | ||
186 | avail["start"] = str(start_new) | ||
187 | avail["end"] = str(end_new) | ||
188 | |||
189 | return { | ||
190 | "title": submission.get("title", "!!! NO TITLE !!!"), | ||
191 | "duration": 60 * submission.get("duration", 40), | ||
192 | "event_id": submission["code"], | ||
193 | "language": submission.get("content_locale", "de"), | ||
194 | "track_id": submission["track_id"], | ||
195 | "speaker_names": ", ".join( | ||
196 | [ | ||
197 | speaker.get("name", "unnamed") | ||
198 | for speaker in submission.get("speakers", {}) | ||
199 | ] | ||
200 | ), | ||
201 | "abstract": abstract_clean_html, | ||
202 | "room_id": slot.get("room_id", "room_unknown"), | ||
203 | "start_time": slot.get("start", "1970-01-01"), | ||
204 | } | ||
205 | |||
206 | |||
207 | def fetch_talks(config): | ||
208 | sess = requests.Session() | ||
209 | |||
210 | response = sess.get( | ||
211 | config["pretalx-api-url"] + "/submissions/?format=json&limit=20000", | ||
212 | stream=True, | ||
213 | headers={"Authorization": "Token " + config["pretalx-token"]}, | ||
214 | ) | ||
215 | # with open('dump.txt', mode='wb') as localfile: | ||
216 | # localfile.write(response.content) | ||
217 | talks_json = json.loads(response.text) | ||
218 | |||
219 | response = sess.get( | ||
220 | config["pretalx-api-url"] + "/speakers/?format=json&limit=20000", | ||
221 | stream=True, | ||
222 | headers={"Authorization": "Token " + config["pretalx-token"]}, | ||
223 | ) | ||
224 | speakers_json = json.loads(response.text) | ||
225 | speakers = dict((speaker["code"], speaker) for speaker in speakers_json["results"]) | ||
226 | |||
227 | sessions = [ | ||
228 | filter_keys(submission) | ||
229 | for submission in talks_json["results"] | ||
230 | if submission["state"] == "confirmed" | ||
231 | and not "non-public" in submission.get("tags", {}) | ||
232 | ] | ||
233 | with open("var/talks_local", mode="w", encoding="utf8") as sessionsfile: | ||
234 | json.dump(sessions, sessionsfile) | ||
235 | |||
236 | sessions = [ | ||
237 | filter_keys_fullnarp(submission, speakers) | ||
238 | for submission in talks_json["results"] | ||
239 | if submission["state"] == "confirmed" or submission["state"] == "accepted" | ||
240 | ] | ||
241 | with open("var/talks_local_fullnarp", mode="w", encoding="utf8") as sessionsfile: | ||
242 | json.dump(sessions, sessionsfile) | ||
243 | |||
244 | |||
245 | def export_prefs(config): | ||
246 | print("[") | ||
247 | for preference in TalkPreference.query.all(): | ||
248 | print(preference.talk_ids + ",") | ||
249 | print("[]]") | ||
250 | |||
251 | |||
252 | if __name__ == "__main__": | ||
253 | parser = ArgumentParser(description="halfnarp2") | ||
254 | parser.add_argument( | ||
255 | "-i", | ||
256 | action="store_true", | ||
257 | dest="pretalx_import", | ||
258 | default=False, | ||
259 | help="import events from pretalx", | ||
260 | ) | ||
261 | parser.add_argument( | ||
262 | "-e", | ||
263 | action="store_true", | ||
264 | dest="fullnarp_export", | ||
265 | default=False, | ||
266 | help="export preferences to json", | ||
267 | ) | ||
268 | parser.add_argument( | ||
269 | "-c", "--config", help="Config file location", default="./config.json" | ||
270 | ) | ||
271 | args = parser.parse_args() | ||
272 | |||
273 | with open(args.config, mode="r", encoding="utf-8") as json_file: | ||
274 | config = json.load(json_file) | ||
275 | config["pretalx-api-url"] = ( | ||
276 | config["pretalx-url"] + "api/events/" + config["pretalx-conference"] | ||
277 | ) | ||
278 | |||
279 | with app.app_context(): | ||
280 | db.create_all() | ||
281 | if args.pretalx_import: | ||
282 | fetch_talks(config) | ||
283 | elif args.fullnarp_export: | ||
284 | export_prefs(config) | ||
285 | else: | ||
286 | app.run( | ||
287 | host=config.get("host", "127.0.0.1"), | ||
288 | port=int(config.get("port", "8080")), | ||
289 | ) | ||
diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e1d7367 --- /dev/null +++ b/requirements.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | certifi | ||
2 | chardet | ||
3 | click | ||
4 | Flask | ||
5 | Flask-SQLAlchemy | ||
6 | flask-cors | ||
7 | idna | ||
8 | itsdangerous | ||
9 | Jinja2 | ||
10 | lxml | ||
11 | MarkupSafe | ||
12 | requests | ||
13 | SQLAlchemy | ||
14 | urllib3 | ||
15 | Werkzeug | ||
16 | html-sanitizer | ||
17 | markdown | ||
18 | psycopg2 | ||
19 | gunicorn | ||
diff --git a/scripts/create_corr_array_pretalx.py b/scripts/create_corr_array_pretalx.py new file mode 100644 index 0000000..dd9221d --- /dev/null +++ b/scripts/create_corr_array_pretalx.py | |||
@@ -0,0 +1,50 @@ | |||
1 | #!venv/bin/python | ||
2 | |||
3 | # convert halfnarp's output into the correlation array that can later | ||
4 | # be served by halfnarp to show clusters of talks by your audience's | ||
5 | # preferences | ||
6 | # | ||
7 | # Run this script with a single parameter, a file containing the output | ||
8 | # of halfnarp2.py -e and place this script's output in a file that is | ||
9 | # being served statically, e.g. corr_array_38c3.json | ||
10 | |||
11 | import json | ||
12 | import sys | ||
13 | import itertools | ||
14 | from collections import defaultdict | ||
15 | |||
16 | # load in list of talk preferences, which is list of strings with talk ids | ||
17 | with open(sys.argv[1]) as data_file: | ||
18 | corr = json.load(data_file) | ||
19 | |||
20 | all_sums = dict(defaultdict()) | ||
21 | all_events = {} | ||
22 | l = len(corr) | ||
23 | |||
24 | for arr in corr: | ||
25 | |||
26 | for x in arr: | ||
27 | all_events[x] = 1 | ||
28 | |||
29 | for x, y in itertools.combinations_with_replacement(sorted(arr), 2): | ||
30 | if x in all_sums.keys(): | ||
31 | all_sums[x][y] = 1 + all_sums[x].get(y, 1) | ||
32 | else: | ||
33 | all_sums[x] = defaultdict() | ||
34 | |||
35 | all_events = sorted(set(all_events)) | ||
36 | |||
37 | out_strings = defaultdict(str) | ||
38 | |||
39 | for x, y in itertools.combinations(all_events, 2): | ||
40 | xyc = all_sums[x].get(y, 0) | ||
41 | xc = all_sums[x].get(x, 0) | ||
42 | yc = all_sums[y].get(y, 0) | ||
43 | # print (x, y, both, xcount, ycount) | ||
44 | xy_corr = 4.0 * l * xyc * xyc * (xc + yc) / (xc*xc*yc*yc) if xc * yc > 0 else 0 | ||
45 | if xy_corr > 9: | ||
46 | xy_corr = 9 | ||
47 | out_strings[x] += str(int(xy_corr)) | ||
48 | |||
49 | out_dict = { 'event_ids': all_events, 'event_corrs': list(out_strings.values()) } | ||
50 | print (json.dumps(out_dict, separators=(',', ':'))) | ||
diff --git a/scripts/gen_css_tables.py b/scripts/gen_css_tables.py new file mode 100755 index 0000000..4bc5ea8 --- /dev/null +++ b/scripts/gen_css_tables.py | |||
@@ -0,0 +1,83 @@ | |||
1 | #!python3 | ||
2 | |||
3 | # This script generates the css tables needed for halfnarp to work | ||
4 | # properly with different start and end dates, rooms and numers of | ||
5 | # days. Adapt the to your conference's needs and place the result | ||
6 | # in the css document, e.g. style_38c3_tables.css | ||
7 | |||
8 | start_y = 400 | ||
9 | starttime = 10 | ||
10 | endtime = 28 | ||
11 | rooms = 3 | ||
12 | days = 4 | ||
13 | columns = days * rooms # how many columns does | ||
14 | event_gap = { 'large': 5, 'medium': 3, 'small': 2 } # how much is an event shorter than what the grid would allow in px | ||
15 | block_length = 210 | ||
16 | |||
17 | time_grid = 5 # what is the granularity of Fahrplan raster in minutes | ||
18 | elem_per_hour = 60 / time_grid # how many sections does one hour get | ||
19 | |||
20 | # how many pixels are in one hour vertically in LARGE, MEDIUM, SMALL | ||
21 | hour_height={ 'large': 300, 'medium': 160, 'small': 120 } | ||
22 | |||
23 | # What is the height of one grid element | ||
24 | grid_height={ 'large': hour_height['large'] / elem_per_hour, 'medium': hour_height['medium'] / elem_per_hour, 'small': hour_height['small'] / elem_per_hour } | ||
25 | |||
26 | for size in ['large', 'medium', 'small']: | ||
27 | y = start_y | ||
28 | for hour in range(starttime, endtime): | ||
29 | for minute in range(0,60,time_grid): | ||
30 | print ( '.size-' + size + ' .time_' + str(hour % 24).zfill(2) + str(minute).zfill(2) + ' { top: ' + str(y) + 'px; }' ) | ||
31 | y += grid_height[size] | ||
32 | |||
33 | for size in ['large', 'medium', 'small']: | ||
34 | for duration in range(300,12000,100): | ||
35 | height = hour_height[size] * duration / 3600 - event_gap[size] | ||
36 | print ( '.size-' + size + ' .duration_' + str(duration) + ' { min-height: ' + str(height) + 'px; max-height: ' + str(height) + 'px; }') | ||
37 | print ( '.size-' + size + ' .wholeblock { height: ' + str(hour_height[size] * block_length / 60) + 'px; }' ) | ||
38 | |||
39 | print ( '.size-large .grid { height: ' + str(grid_height['large']) + 'px; font-size: 1em; }' ) | ||
40 | print ( '.size-medium .grid { height: ' + str(grid_height['medium'])+ 'px; font-size: 0.5em; }' ) | ||
41 | print ( '.size-small .grid { height: ' + str(grid_height['small']) + 'px; font-size: 0.3em; }' ) | ||
42 | |||
43 | gap = 4 | ||
44 | width = ( 100 - gap * ( 1 + rooms ) ) / rooms | ||
45 | for room in range(rooms): | ||
46 | print ( '.in-calendar .room' + str(room+1) +' { left: ' + str(gap * (room + 1) + width * room ) + '%; }' ) | ||
47 | |||
48 | print ('.in-calendar .event, .in-calendar .room-label, .in-calendar .grid { position: absolute; width: ' + str(width)+ '%; }' ) | ||
49 | print ('.in-calendar .r, .in-calendar .l { width: ' + str(width) + '%; }') | ||
50 | print ('.in-calendar .rr, .in-calendar .ll { width: ' + str(2*width+gap) + '%; }') | ||
51 | print ('.in-calendar .rrr, .in-calendar .lll { width: ' + str(3*width+2*gap) + '%; }') | ||
52 | print ('.in-calendar .rrrr, .in-calendar .llll { width: ' + str(4*width+3*gap) + '%; }') | ||
53 | print ('.in-calendar .r, .in-calendar .rr, .in-calendar .rrr, .in-calendar .rrrr { margin-left: ' + str(width / 2) + '% ; }') | ||
54 | print ('.in-calendar .l { margin-left: -' + str(width / 2) + '% ; }') | ||
55 | print ('.in-calendar .ll { margin-left: -' + str(width / 2 + gap + width) + '% ; }') | ||
56 | print ('.in-calendar .lll { margin-left: -' + str(width / 2 + gap * 2 + width * 2) + '% ; }') | ||
57 | print ('.in-calendar .llll { margin-left: -' + str(width / 2 + gap * 3 + width * 3) + '% ; }') | ||
58 | |||
59 | gap = 0.5 | ||
60 | width = ( 100 - gap * ( 1 + columns ) ) / columns | ||
61 | for day in range(days): | ||
62 | for room in range(rooms): | ||
63 | print ( '.in-calendar.alldays .day_' + str(day+1) + '.room' + str(room+1) +' { left: ' + str(gap * (day*rooms + room + 1) + width * (day * rooms + room ) ) + '%; }' ) | ||
64 | |||
65 | print ('.wholeday, .wholeblock { width: ' + str(100 / days)+ '% }') | ||
66 | print ('.in-calendar.alldays .event, .in-calendar.alldays .room-label, .in-calendar.alldays .grid { width: ' + str(width)+ '%; }' ) | ||
67 | |||
68 | print ('.in-calendar.alldays .r, .in-calendar.alldays .l { width: ' + str(width) + '%; }') | ||
69 | print ('.in-calendar.alldays .rr, .in-calendar.alldays .ll { width: ' + str(2*width+gap) + '%; }') | ||
70 | print ('.in-calendar.alldays .rrr, .in-calendar.alldays .lll { width: ' + str(3*width+2*gap) + '%; }') | ||
71 | print ('.in-calendar.alldays .rrrr, .in-calendar.alldays .llll { width: ' + str(4*width+3*gap) + '%; }') | ||
72 | |||
73 | print ('.in-calendar.alldays .r, .in-calendar.alldays .rr, .in-calendar.alldays .rrr, .in-calendar.alldays .rrrr { margin-left: ' + str(width / 2) + '% ; }') | ||
74 | print ('.in-calendar.alldays .l { margin-left: -' + str(width / 2) + '% ; }') | ||
75 | print ('.in-calendar.alldays .ll { margin-left: -' + str(width / 2 + gap + width) + '% ; }') | ||
76 | print ('.in-calendar.alldays .lll { margin-left: -' + str(width / 2 + gap * 2 + width * 2) + '% ; }') | ||
77 | print ('.in-calendar.alldays .llll { margin-left: -' + str(width / 2 + gap * 3 + width * 3) + '% ; }') | ||
78 | |||
79 | print ('.r, .rr, .rrr, .rrrr, .l, .ll, .lll, .llll { height: 4px; }') | ||
80 | |||
81 | for size in ['large', 'medium', 'small']: | ||
82 | print ('.size-' + size +' .wholeday { height: ' + str( ( endtime - starttime ) * hour_height[size] ) + 'px; }' ) | ||
83 | print ('.size-' + size +' .duration_inf { height: ' + str( 7 * hour_height[size] ) + 'px; }' ) | ||
diff --git a/static/fullnarp.html b/static/fullnarp.html new file mode 100644 index 0000000..a00f89e --- /dev/null +++ b/static/fullnarp.html | |||
@@ -0,0 +1,78 @@ | |||
1 | <!doctype html> | ||
2 | <html lang="en"> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <title>FULLnarp web scheduling helper app</title> | ||
6 | <link rel="stylesheet" href="style_38c3.css"> | ||
7 | <link rel="stylesheet" href="style_38c3_tables.css"> | ||
8 | <script src="fullnarp.js"></script> | ||
9 | <script> | ||
10 | document.addEventListener('DOMContentLoaded', () => { do_the_fullnarp(); }); | ||
11 | </script> | ||
12 | </head> | ||
13 | <body class="size-small in-list fullnarp"> | ||
14 | <div style="display:none"> | ||
15 | <div id="template"> | ||
16 | <div class="title"></div> | ||
17 | <div class="speakers"></div> | ||
18 | <div class="abstract"></div> | ||
19 | </div> | ||
20 | </div> | ||
21 | <div class="trashbin">🗑️</div> | ||
22 | <div class="version">version</div> | ||
23 | <div class="headline">The 38C3 fullnarp</div> | ||
24 | <div class="header"> | ||
25 | <div class="leftbox"> | ||
26 | <input id="filter" type="text" placeholder="Filter events"/> | ||
27 | <div class="view-choser"> | ||
28 | <div class="views vlist" title="Display all events sorted by track (Hotkey: L)">list</div> | ||
29 | <div class="views vdays" title="Display all events in a 4-day-view (Hotkey: 0)">days</div> | ||
30 | <div class="views vday1" title="Display all events on Day 1 (Hotkey: 1)">day 1</div> | ||
31 | <div class="views vday2" title="Display all events on Day 2 (Hotkey: 2)">day 2</div> | ||
32 | <div class="views vday3" title="Display all events on Day 3 (Hotkey: 3)">day 3</div> | ||
33 | <div class="views vday4" title="Display all events on Day 4 (Hotkey: 4)">day 4</div> | ||
34 | |||
35 | <div class="views vleft" title="Show only events not yet in calendar (Hotkey: U)">unset</div> | ||
36 | <div class="views vhalf" title="Display halfnarp votes (Hotkey: H)">half</div> | ||
37 | <div class="views vcorr" title="Calculate correlations for currently selected talk (Hotkey: C)">corr</div> | ||
38 | <div class="views vtrack" title="Color event by track (Hotkey: T)">track</div> | ||
39 | <div class="views vlang" title="Color event by language (Hotkey: I)">lang</div> | ||
40 | <div class="views vweb" title="Show correlation web">web</div> | ||
41 | |||
42 | |||
43 | <div class="allboxes"> | ||
44 | <div class="vsmallboxes boxer">size</div><div class="vmediumboxes boxer">Size</div><div class="vlargeboxes boxer">SIZE</div> | ||
45 | </div> | ||
46 | </div> | ||
47 | </div> | ||
48 | </div> | ||
49 | <div class="day_1 room-label room1">Saal 1</div><div class="day_1 room-label room2">Saal 2</div><div class="day_1 room-label room3">Saal 3</div></div> | ||
50 | <div class="day_2 room-label room1">Saal 1</div><div class="day_2 room-label room2">Saal 2</div><div class="day_2 room-label room3">Saal 3</div></div> | ||
51 | <div class="day_3 room-label room1">Saal 1</div><div class="day_3 room-label room2">Saal 2</div><div class="day_3 room-label room3">Saal 3</div></div> | ||
52 | <div class="day_4 room-label room1">Saal 1</div><div class="day_4 room-label room2">Saal 2</div><div class="day_4 room-label room3">Saal 3</div></div> | ||
53 | |||
54 | <div class=" time_1815 duration_3600 guide pause ">P A U S E</div> | ||
55 | <div class=" time_1445 wholeblock room1 guide day_1"></div> | ||
56 | <div class=" time_2300 wholeblock room1 guide day_1"></div> | ||
57 | <div class=" time_1445 wholeblock room1 guide day_2"></div> | ||
58 | <div class=" time_2300 wholeblock room1 guide day_2"></div> | ||
59 | <div class=" time_1445 wholeblock room1 guide day_3"></div> | ||
60 | <div class=" time_2300 wholeblock room1 guide day_3"></div> | ||
61 | <div class=" time_1445 wholeblock room1 guide day_4"></div> | ||
62 | |||
63 | <div class=" time_1820 duration_inf guide ende room1 day_4 "></div> | ||
64 | |||
65 | <div class="wholeday room1 day_1 guide uneven"></div> | ||
66 | <div class="wholeday room1 day_3 guide uneven"></div> | ||
67 | |||
68 | <div class="track" id="6"><h2>Security</h2></div> | ||
69 | <div class="track" id="4"><h2>Hardware & Making</h2></div> | ||
70 | <div class="track" id="7"><h2>Ethics, Society & Politics</h2></div> | ||
71 | <div class="track" id="2"><h2>CCC</h2></div> | ||
72 | <div class="track" id="3"><h2>Entertainment</h2></div> | ||
73 | <div class="track" id="5"><h2>Science</h2></div> | ||
74 | <div class="track" id="1"><h2>Art & Beauty</div> | ||
75 | <div class="track" id="999"><h2>Other</div> | ||
76 | |||
77 | </body> | ||
78 | </html> | ||
diff --git a/static/fullnarp.js b/static/fullnarp.js new file mode 100644 index 0000000..8b7d36d --- /dev/null +++ b/static/fullnarp.js | |||
@@ -0,0 +1,641 @@ | |||
1 | let ws; // WebSocket instance | ||
2 | |||
3 | function toggle_grid(whichDay) { | ||
4 | var vclasses= [['in-list'], ['in-calendar', 'onlyday1'], ['in-calendar', 'onlyday2'], ['in-calendar', 'onlyday3'], | ||
5 | ['in-calendar', 'onlyday4'], ['in-calendar', 'alldays']]; | ||
6 | document.body.classList.remove( 'alldays', 'onlyday1', 'onlyday2', 'onlyday3', 'onlyday4', 'in-list', 'in-calendar'); | ||
7 | if( whichDay < 0 || whichDay > 5 ) return; | ||
8 | document.body.classList.add(...vclasses[whichDay]); | ||
9 | } | ||
10 | |||
11 | function distribute_votes() { | ||
12 | document.querySelectorAll('.event').forEach( function(element) { | ||
13 | var eid = element.getAttribute('event_id'); | ||
14 | var abs = window.votes[eid]; | ||
15 | var klasse = 5000; | ||
16 | if (abs < 2000) { klasse = 2000; } | ||
17 | if (abs < 1000) { klasse = 1000; } | ||
18 | if (abs < 500) { klasse = 500; } | ||
19 | if (abs < 200) { klasse = 200; } | ||
20 | if (abs < 100) { klasse = 100; } | ||
21 | if (abs < 50) { klasse = 50; } | ||
22 | if (abs < 20) { klasse = 20; } | ||
23 | if (abs < 10) { klasse = 10; } | ||
24 | if (!abs) klasse = 10; | ||
25 | |||
26 | var abselem = element.querySelector('.absval'); | ||
27 | if (abselem) | ||
28 | abselem.textContent = '' + abs; | ||
29 | else { | ||
30 | var abselem = document.createElement('div'); | ||
31 | abselem.textContent = '' + abs; | ||
32 | abselem.classList.add('absval'); | ||
33 | element.insertBefore(abselem, element.firstChild); | ||
34 | } | ||
35 | element.classList.add('class_' + klasse); | ||
36 | }); | ||
37 | } | ||
38 | |||
39 | function corr_for_eventids(id1, id2) { | ||
40 | var d = 0, c = 0, cd = 0, l = window.raw_votes.length; | ||
41 | for (item of window.raw_votes) { | ||
42 | var x = 0; | ||
43 | if( item.indexOf(id1) > -1 ) { ++d; x++;} | ||
44 | if( item.indexOf(id2) > -1 ) { ++c; cd+=x; } | ||
45 | } | ||
46 | |||
47 | var mid = 0; | ||
48 | // if ( d * c ) mid = Math.round( 4.0 * ( ( cd * l ) / ( c * d ) ) * ( cd / d + cd / c ) ); | ||
49 | if ( d * c ) mid = Math.round( 4 * l * cd * cd * ( c + d ) / ( c * c * d * d ) ) | ||
50 | if (mid>9) mid=9; | ||
51 | return mid; | ||
52 | } | ||
53 | |||
54 | function show_all_correlates(el) { | ||
55 | /* First identify the room to see what other rooms to consider | ||
56 | correlates always grow from the top slot to the right, | ||
57 | unless there's an overlapping event to the left that starts earlier | ||
58 | */ | ||
59 | var event_room = el.getAttribute('fullnarp-room'); | ||
60 | var event_day = el.getAttribute('fullnarp-day'); | ||
61 | var event_time = el.getAttribute('fullnarp-time'); | ||
62 | |||
63 | if (!event_time) return; | ||
64 | |||
65 | var event_start; | ||
66 | try { event_start = time_to_mins(event_time); } catch(e) { return; } | ||
67 | var event_duration = el.getAttribute('fullnarp-duration') / 60; | ||
68 | |||
69 | /* Only test events to the right, if they start at the exact same time */ | ||
70 | document.querySelectorAll('.event.day_'+event_day).forEach( function(check_el, index) { | ||
71 | var check_room = check_el.getAttribute('fullnarp-room'); | ||
72 | if (event_room == check_room) return; | ||
73 | |||
74 | var check_time = check_el.getAttribute('fullnarp-time'); | ||
75 | if (!check_time) return; | ||
76 | var check_start = time_to_mins(check_time); | ||
77 | var check_duration = check_el.getAttribute('fullnarp-duration') / 60; | ||
78 | var dist = check_el.getAttribute('fullnarp-room') - event_room; | ||
79 | var overlap = check_start < event_start + event_duration && event_start < check_start + check_duration; | ||
80 | |||
81 | if (!overlap) return; | ||
82 | if (event_start == check_start && dist <= 0) return; | ||
83 | if (event_start < check_start) return; | ||
84 | |||
85 | var corr = corr_for_eventids(el.getAttribute('event_id'), check_el.getAttribute('event_id')); | ||
86 | var dir = dist > 0 ? 'r' : 'l'; | ||
87 | var div = document.createElement('div'); | ||
88 | div.classList.add('corrweb', dir.repeat(Math.abs(dist)), 'day_' + event_day, 'room' + event_room, 'time_' + event_time, 'corr_d_' + corr); | ||
89 | document.body.appendChild(div); | ||
90 | }) | ||
91 | } | ||
92 | |||
93 | function display_correlation() { | ||
94 | var selected = document.querySelectorAll('.selected'); | ||
95 | if( selected.length == 1 ) { | ||
96 | selected = selected[0]; | ||
97 | document.querySelectorAll('.event').forEach(elem => mark_correlation(elem, selected)); | ||
98 | } | ||
99 | if (document.body.classList.contains('correlate')) | ||
100 | distribute_votes(); | ||
101 | document.body.classList.toggle('correlate'); | ||
102 | } | ||
103 | |||
104 | function mark_correlation(dest, comp) { | ||
105 | var id1 = dest.getAttribute('event_id'); | ||
106 | var id2 = comp.getAttribute('event_id'); | ||
107 | var d = 0, c = 0, cd = 0, l = window.raw_votes.length; | ||
108 | for (vote of window.raw_votes) { | ||
109 | var x = 0; | ||
110 | if( vote.indexOf(id1) > -1 ) { ++d; x++;} | ||
111 | if( vote.indexOf(id2) > -1 ) { ++c; cd+=x; } | ||
112 | } | ||
113 | |||
114 | var mid = 0; | ||
115 | // if ( d * c ) mid = Math.round( 4.0 * ( ( cd * l ) / ( c * d ) ) * ( cd / d + cd / c ) ); | ||
116 | if ( d * c ) mid = Math.round( 4 * l * cd * cd * ( c + d ) / ( c * c * d * d ) ) | ||
117 | if (mid>9) mid=9; | ||
118 | |||
119 | dest.className = dest.className.replace(/\bcorr_\S+/g, ''); | ||
120 | dest.setAttribute('corr', mid); | ||
121 | dest.querySelector('.absval').textContent = mid + ':' + Math.round( 100 * cd / d ) + '%:' + Math.round( 100 * cd / c ) + '%'; | ||
122 | |||
123 | } | ||
124 | |||
125 | function mark_avail(el) { | ||
126 | el.classList.toggle('unavailable', !check_avail(el, el.getAttribute('fullnarp-day'), el.getAttribute('fullnarp-time'))); | ||
127 | } | ||
128 | |||
129 | function time_to_mins(time) { | ||
130 | var hour_mins = /(\d\d)(\d\d)/.exec(time); | ||
131 | if( hour_mins[1] < 9 ) { hour_mins[1] = 24 + hour_mins[1]; } | ||
132 | return 60 * hour_mins[1] + 1 * hour_mins[2]; | ||
133 | } | ||
134 | |||
135 | function check_avail(el, day, time ) { | ||
136 | var all_available = true; | ||
137 | var speakers = window.event_speakers[el.getAttribute('event_id')]; | ||
138 | |||
139 | if (!speakers) | ||
140 | return false; | ||
141 | |||
142 | try { | ||
143 | var event_times = /(\d\d)(\d\d)/.exec(time); | ||
144 | var event_duration = el.getAttribute('fullnarp-duration') / 60; | ||
145 | var event_start = Number(event_times[1]); | ||
146 | if (event_start < 9) { event_start = 24 + event_start; } | ||
147 | |||
148 | var event_start_date = new Date("2024-12-27T00:00:00+01:00"); | ||
149 | event_start_date.setTime(event_start_date.getTime() + 60000 * ( 24 * 60 * (day - 1) + event_start * 60 + 1 * Number(event_times[2])) ); | ||
150 | var event_end_date = new Date(); | ||
151 | event_end_date.setTime(event_start_date.getTime() + 60000 * event_duration); | ||
152 | } catch (error) { | ||
153 | return false; | ||
154 | } | ||
155 | |||
156 | /* Check availability of all speakers */ | ||
157 | for (speaker of speakers) { | ||
158 | /* Now if at least one day is set, each missing | ||
159 | day means unavailable, */ | ||
160 | var have_avails = false, unavail = true; | ||
161 | for (avail of speaker.availabilities) { | ||
162 | have_avails = true; | ||
163 | |||
164 | var availtime_start = new Date(avail.start); | ||
165 | var availtime_end = new Date(avail.end); | ||
166 | |||
167 | if( event_start_date >= availtime_start && event_end_date <= availtime_end ) | ||
168 | unavail = false; | ||
169 | } | ||
170 | |||
171 | /* If at least one speaker is unavail, check fails */ | ||
172 | if( have_avails && unavail ) { | ||
173 | all_available = false; | ||
174 | return false; | ||
175 | } | ||
176 | } | ||
177 | |||
178 | return all_available; | ||
179 | } | ||
180 | |||
181 | /* Needs to be done for each moved and all previously conflicting events */ | ||
182 | function mark_conflict(el) { | ||
183 | var event_start = time_to_mins(el.getAttribute('fullnarp-time')); | ||
184 | var event_duration = el.getAttribute('fullnarp-duration') / 60; | ||
185 | |||
186 | var conflict = false; | ||
187 | |||
188 | /* We do only need to check events in the same room at the same day for conflicts */ | ||
189 | document.querySelectorAll('.event.day_'+el.getAttribute('fullnarp-day')+'.room'+el.getAttribute('fullnarp-room')).forEach( function(check_el) { | ||
190 | |||
191 | if( el.getAttribute('event_id') == check_el.getAttribute('event_id') ) { return true; } | ||
192 | |||
193 | var check_start = time_to_mins(check_el.getAttribute('fullnarp-time')); | ||
194 | var check_duration = check_el.getAttribute('fullnarp-duration') / 60; | ||
195 | |||
196 | if( check_start < event_start + event_duration && | ||
197 | event_start < check_start + check_duration ) { | ||
198 | check_el.classList.add('conflict'); | ||
199 | conflict = true; | ||
200 | } | ||
201 | }); | ||
202 | el.classList.toggle('conflict', conflict); | ||
203 | } | ||
204 | |||
205 | /* remove day, room and time from an event */ | ||
206 | function remove_event(event_id) { | ||
207 | var el = document.getElementById(event_id); | ||
208 | el.classList.add('pending'); | ||
209 | if (ws && ws.readyState === WebSocket.OPEN) { | ||
210 | var message = { | ||
211 | lastupdate: window.lastupdate, | ||
212 | removeevent: event_id | ||
213 | } | ||
214 | ws.send(JSON.stringify(message)); | ||
215 | console.log('Sent:', message); | ||
216 | } else { | ||
217 | el.removeClass('pending'); | ||
218 | el.addClass('failed'); | ||
219 | } | ||
220 | } | ||
221 | |||
222 | /* provide time OR hour + minute, time overrides */ | ||
223 | function set_all_attributes(event_id, day, room, time, from_server) { | ||
224 | var el = document.getElementById(event_id); | ||
225 | el.className = el.className.replace( /\btime_\S+ ?/g, '').replace( /\broom\S+ ?/g, '').replace( /\bday_\S+ ?/g, ''); | ||
226 | el.classList.add( time, day, room ); | ||
227 | el.setAttribute('fullnarp-day', day.replace('day_','')); | ||
228 | el.setAttribute('fullnarp-time', time.replace('time_','')); | ||
229 | el.setAttribute('fullnarp-room', room.replace('room','')); | ||
230 | el.classList.remove('pending'); | ||
231 | |||
232 | if (!from_server) { | ||
233 | el.classList.add('pending'); | ||
234 | if (ws && ws.readyState === WebSocket.OPEN) { | ||
235 | var message = { | ||
236 | lastupdate: window.lastupdate, | ||
237 | setevent: event_id, | ||
238 | day: el.getAttribute('fullnarp-day'), | ||
239 | room: el.getAttribute('fullnarp-room'), | ||
240 | time: el.getAttribute('fullnarp-time') | ||
241 | } | ||
242 | ws.send(JSON.stringify(message)); | ||
243 | console.log('Sent:', message); | ||
244 | } else { | ||
245 | el.classList.remove('pending'); | ||
246 | el.classList.add('failed'); | ||
247 | } | ||
248 | } | ||
249 | |||
250 | /* When moving an element, conflict may have been resolved ... */ | ||
251 | document.querySelectorAll('.conflict').forEach(elem => mark_conflict(elem)); | ||
252 | |||
253 | /* ... or introduced */ | ||
254 | mark_conflict(el); | ||
255 | mark_avail(el); | ||
256 | if (document.body.classList.contains('showcorrweb')) { | ||
257 | document.querySelectorAll('.corrweb').forEach(elem => elem.remove()); | ||
258 | document.querySelectorAll('.event').forEach(elem => show_all_correlates(elem)); | ||
259 | } | ||
260 | } | ||
261 | |||
262 | function signalFullnarpConnect(state) { | ||
263 | document.body.classList.remove('fullnarp-connected', 'fullnarp-connecting', 'fullnarp-disconnected'); | ||
264 | document.body.classList.add(state); | ||
265 | } | ||
266 | |||
267 | function getFullnarpData(lastupdate) { | ||
268 | signalFullnarpConnect('fullnarp-connecting'); | ||
269 | ws = new WebSocket('wss://erdgeist.org/38C3/halfnarp/fullnarp-ws'); | ||
270 | |||
271 | ws.onopen = () => { | ||
272 | console.log('Connected to WebSocket server'); | ||
273 | //stateElement.textContent = 'Connected'; | ||
274 | }; | ||
275 | |||
276 | ws.onmessage = (event) => { | ||
277 | signalFullnarpConnect('fullnarp-connected'); | ||
278 | const data = JSON.parse(event.data); | ||
279 | console.log('Received:', data); | ||
280 | for (const [eventid, event_new] of Object.entries(data.data)) { | ||
281 | if (document.getElementById(eventid)) | ||
282 | set_all_attributes(eventid, 'day_'+event_new['day'], 'room'+event_new['room'], 'time_'+event_new['time'], true ) | ||
283 | } | ||
284 | window.lastupdate = data.current_version; | ||
285 | current_version_string = ('00000'+data.current_version).slice(-5); | ||
286 | document.querySelector('.version').innerHTML = '<a href="https://erdgeist.org/38C3/halfnarp/versions/fullnarp_'+current_version_string+'.json">Version: '+data.current_version+'</a>'; | ||
287 | }; | ||
288 | |||
289 | ws.onerror = (error) => { | ||
290 | console.error('WebSocket error:', error); | ||
291 | }; | ||
292 | |||
293 | ws.onclose = () => { | ||
294 | console.log('Disconnected from WebSocket server'); | ||
295 | signalFullnarpConnect('fullnarp-disconnected'); | ||
296 | // stateElement.textContent = 'Disconnected'; | ||
297 | // Optionally attempt to reconnect after a delay | ||
298 | setTimeout(getFullnarpData, 5000); | ||
299 | }; | ||
300 | }; | ||
301 | |||
302 | function do_the_fullnarp() { | ||
303 | var halfnarpAPI = 'talks_38C3.json'; | ||
304 | var fullnarpAPI = 'votes_38c3.json'; | ||
305 | var allrooms = ['1','2','3'] | ||
306 | var allminutes = ['00','05','10','15','20','25','30','35','40','45','50','55'] | ||
307 | var allhours = ['10','11','12','13','14','15','16','17','18','19','20','21','22','23','00','01','02']; | ||
308 | var alldays = ['1','2','3','4']; | ||
309 | var voted = 0; | ||
310 | window.event_speakers = {}; | ||
311 | window.votes = {}; | ||
312 | |||
313 | /* Add handler for type ahead search input field */ | ||
314 | var filter = document.getElementById('filter'); | ||
315 | |||
316 | filter.onpaste = filter.oncut = filter.onkeypress = filter.onkeydown = filter.onkeyup = function() { | ||
317 | var cnt = this.value.toLowerCase(); | ||
318 | if( cnt.length ) | ||
319 | document.querySelectorAll('.event').forEach(elem => elem.style.display = (elem.textContent || elem.innerText || '').toLowerCase().includes(cnt) ? "block" : "none" ); | ||
320 | else | ||
321 | document.querySelectorAll('.event').forEach(elem => elem.style.display = "block"); | ||
322 | }; | ||
323 | |||
324 | /* Add click handlers for event div sizers */ | ||
325 | document.querySelector('.vsmallboxes').onclick = function() { | ||
326 | document.body.classList.remove('size-medium', 'size-large'); | ||
327 | document.body.classList.add('size-small'); | ||
328 | }; | ||
329 | |||
330 | document.querySelector('.vmediumboxes').onclick = function() { | ||
331 | document.body.classList.remove('size-small', 'size-large'); | ||
332 | document.body.classList.add('size-medium'); | ||
333 | }; | ||
334 | |||
335 | document.querySelector('.vlargeboxes').onclick = function() { | ||
336 | document.body.classList.remove('size-small', 'size-medium'); | ||
337 | document.body.classList.add('size-large'); | ||
338 | }; | ||
339 | |||
340 | /* Add callbacks for view selector */ | ||
341 | document.querySelector('.vlist').onclick = function() { toggle_grid(0); }; | ||
342 | document.querySelector('.vday1').onclick = function() { toggle_grid(1); }; | ||
343 | document.querySelector('.vday2').onclick = function() { toggle_grid(2); }; | ||
344 | document.querySelector('.vday3').onclick = function() { toggle_grid(3); }; | ||
345 | document.querySelector('.vday4').onclick = function() { toggle_grid(4); }; | ||
346 | document.querySelector('.vdays').onclick = function() { toggle_grid(5); }; | ||
347 | |||
348 | document.querySelector('.vleft').onclick = function() { document.body.classList.toggle('still-left'); }; | ||
349 | document.querySelector('.vhalf').onclick = function() { document.body.classList.toggle('absolute'); }; | ||
350 | document.querySelector('.vcorr').onclick = display_correlation; | ||
351 | document.querySelector('.vlang').onclick = function() { document.body.classList.toggle('languages'); }; | ||
352 | document.querySelector('.vtrack').onclick = function() { document.body.classList.toggle('all-tracks'); }; | ||
353 | document.querySelector('.vweb').onclick = function() { | ||
354 | if (document.body.classList.contains('showcorrweb')) | ||
355 | document.querySelectorAll('.corrweb').forEach(elem => elem.remove()); | ||
356 | else | ||
357 | document.querySelectorAll('.event').forEach(elem => show_all_correlates(elem)); | ||
358 | document.body.classList.toggle('showcorrweb'); | ||
359 | }; | ||
360 | |||
361 | /* Make the trashbin a drop target */ | ||
362 | var trash = document.querySelector('.trashbin'); | ||
363 | trash.setAttribute('dropzone','move'); | ||
364 | trash.ondragover = function (event) { | ||
365 | event.preventDefault(); // allows us to drop | ||
366 | this.classList.add('over'); | ||
367 | return false; | ||
368 | }; | ||
369 | trash.ondragleave = function (event) { this.classList.remove('over'); }; | ||
370 | trash.ondrop = function (event) { | ||
371 | event.stopPropagation(); | ||
372 | set_all_attributes(event.dataTransfer.getData('Text'), 'day_0', 'room_0', 'time_0000', false); | ||
373 | return false; | ||
374 | }; | ||
375 | |||
376 | /* Create hour guides */ | ||
377 | for (hour of allhours) { | ||
378 | var elem = document.createElement('hr'); | ||
379 | elem.classList.add('guide', 'time_' + hour + '00'); | ||
380 | document.body.append(elem); | ||
381 | elem = document.createElement('div'); | ||
382 | elem.textContent = hour + '00'; | ||
383 | elem.classList.add('guide', 'time_' + hour + '00'); | ||
384 | document.body.append(elem); | ||
385 | |||
386 | for (minute of allminutes) { | ||
387 | for (room of allrooms) { | ||
388 | for (day of alldays) { | ||
389 | elem = document.createElement('div'); | ||
390 | elem.classList.add('grid', 'time_' + hour + minute, 'day_' + day, 'room' + room ); | ||
391 | elem.textContent = minute; | ||
392 | elem.setAttribute('dropzone', 'move'); | ||
393 | elem.setAttribute('hour', '' + hour + minute); | ||
394 | elem.setAttribute('day', '' + day); | ||
395 | elem.setAttribute('room', room); | ||
396 | document.body.append(elem); | ||
397 | elem.ondragover = function (event) { | ||
398 | event.preventDefault(); // allows us to drop | ||
399 | this.classList.add('over'); | ||
400 | return false; | ||
401 | } | ||
402 | elem.ondragleave = function (event) { this.classList.remove('over'); } | ||
403 | elem.ondrop = function (event) { | ||
404 | event.stopPropagation(); | ||
405 | set_all_attributes(event.dataTransfer.getData('Text'), 'day_' + this.getAttribute('day'), 'room' + this.getAttribute('room'), 'time_' + this.getAttribute('hour'), false ); | ||
406 | /* Don't go back to list view on successful drop */ | ||
407 | document.body.classList.remove('was-list'); | ||
408 | return false; | ||
409 | } | ||
410 | } | ||
411 | } | ||
412 | } | ||
413 | } | ||
414 | |||
415 | /* Fetch list of votes to display */ | ||
416 | fetch(`${fullnarpAPI}?format=json`) | ||
417 | .then(response => { | ||
418 | if (!response.ok) { | ||
419 | throw new Error(`HTTP error when fetching fullnarp data! status: ${response.status}`); | ||
420 | } | ||
421 | return response.json(); | ||
422 | }).then(data => { | ||
423 | window.raw_votes = data; | ||
424 | for (eventidlist of data) | ||
425 | for (eventid of eventidlist) | ||
426 | window.votes[eventid] = 1 + (window.votes[eventid] || 0 ); | ||
427 | if( ++voted == 2 ) { | ||
428 | window.lastupdate = 0; | ||
429 | distribute_votes(); | ||
430 | getFullnarpData(0); | ||
431 | } | ||
432 | }).catch(error => { | ||
433 | console.error('Fetch error:', error); | ||
434 | }); | ||
435 | |||
436 | |||
437 | /* Fetch list of lectures to display */ | ||
438 | fetch(`${halfnarpAPI}?format=json`) | ||
439 | .then(response => { | ||
440 | if (!response.ok) { | ||
441 | throw new Error(`HTTP error when fetching halfnarp data! status: ${response.status}`); | ||
442 | } | ||
443 | return response.json(); | ||
444 | }).then(data => { | ||
445 | for (item of data) { | ||
446 | /* Take copy of hidden event template div and select them, if they're in | ||
447 | list of previous prereferences */ | ||
448 | var t = document.getElementById('template').cloneNode(true); | ||
449 | var event_id = item.event_id.toString(); | ||
450 | t.classList.add('event', 'duration_' + item.duration, 'lang_' + (item.language || 'en')); | ||
451 | t.setAttribute('event_id', event_id); | ||
452 | t.setAttribute('id', 'event_' + event_id) | ||
453 | t.setAttribute( 'fullnarp-duration', item.duration); | ||
454 | |||
455 | /* Sort textual info into event div */ | ||
456 | t.querySelector('.title').textContent = item.title; | ||
457 | t.querySelector('.speakers').textContent = item.speaker_names; | ||
458 | t.querySelector('.abstract').append(item.abstract); | ||
459 | |||
460 | /* Store speakers and their availabilities */ | ||
461 | window.event_speakers[event_id] = item.speakers; | ||
462 | for (speaker of item.speakers) { | ||
463 | var have_avails = false; | ||
464 | if (!speaker.availabilities) | ||
465 | console.log("Foo"); | ||
466 | for (avail of speaker.availabilities) { | ||
467 | if (avail.id ) { | ||
468 | have_avails = true; | ||
469 | break; | ||
470 | } | ||
471 | } | ||
472 | if (!have_avails) | ||
473 | t.classList.add('has_unavailable_speaker'); | ||
474 | } | ||
475 | |||
476 | t.setAttribute('draggable', 'true'); | ||
477 | |||
478 | /* Make the event drag&droppable */ | ||
479 | t.ondragstart = function( event, ui ) { | ||
480 | event.stopPropagation(); | ||
481 | |||
482 | event.dataTransfer.setData('text/plain', this.id ); | ||
483 | event.dataTransfer.dropEffect = 'move'; | ||
484 | event.dataTransfer.effectAllowed = 'move'; | ||
485 | event.target.classList.add('is-dragged'); | ||
486 | } | ||
487 | |||
488 | /* While dragging make source element small enough to allow | ||
489 | dropping below its original area */ | ||
490 | t.ondrag = function( event, ui ) { | ||
491 | event.stopPropagation(); | ||
492 | event.target.classList.add('is-dragged'); | ||
493 | |||
494 | /* When drag starts in list view, switch to calendar view */ | ||
495 | if( document.body.classList.contains('in-list') ) { | ||
496 | toggle_grid(5); | ||
497 | document.body.classList.add('was-list'); | ||
498 | } | ||
499 | if( document.body.classList.contains('in-drag') ) | ||
500 | return; | ||
501 | |||
502 | document.body.classList.add('in-drag'); | ||
503 | /* mark all possible drop points regarding to availability */ | ||
504 | for (hour of allhours) | ||
505 | for (minute of allminutes) | ||
506 | for (day of alldays) | ||
507 | document.querySelectorAll('.grid.day_'+day+'.time_'+hour+minute).forEach(elem => elem.classList.toggle('possible', check_avail(event.target, day, hour+minute))); | ||
508 | |||
509 | } | ||
510 | |||
511 | t.ondragend = function( event, ui ) { | ||
512 | event.stopPropagation(); | ||
513 | |||
514 | /* We removed in-list and the drop did not succeed. Go back to list view */ | ||
515 | if (document.body.classList.contains('was-list')) | ||
516 | toggle_grid(0); | ||
517 | |||
518 | document.querySelectorAll('.over').forEach(elem => elem.classList.remove('over')); | ||
519 | document.querySelectorAll('.is-dragged').forEach(elem => elem.classList.remove('id-dragged')); | ||
520 | document.querySelectorAll('.possible').forEach(elem => elem.classList.remove('possible')); | ||
521 | document.body.classList.remove('in-drag', 'was-list'); | ||
522 | } | ||
523 | |||
524 | /* start_time: 2014-12-29T21:15:00+01:00" */ | ||
525 | var start_time = new Date(item.start_time); | ||
526 | |||
527 | var day = start_time.getDate()-26; | ||
528 | var hour = start_time.getHours(); | ||
529 | var mins = start_time.getMinutes(); | ||
530 | |||
531 | /* After midnight: sort into yesterday */ | ||
532 | if( hour < 9 ) | ||
533 | day--; | ||
534 | |||
535 | /* Fix up room for 38c3 */ | ||
536 | room = (item.room_id || 'room_unknown').toString().replace('471','room1').replace('472','room2').replace('473','room3'); | ||
537 | |||
538 | /* Apply attributes to sort events into calendar */ | ||
539 | t.classList.add(room, 'day_' + day, 'time_' + (hour<10?'0':'') + hour + (mins<10?'0':'') + mins); | ||
540 | t.setAttribute('fullnarp-day', day); | ||
541 | t.setAttribute('fullnarp-time', (hour<10?'0':'') + hour + (mins<10?'0':'') + mins ); | ||
542 | t.setAttribute('fullnarp-room', room.replace('room','')); | ||
543 | |||
544 | mark_avail(t); | ||
545 | |||
546 | t.onclick = function(event) { | ||
547 | _this = this; | ||
548 | document.body.classList.remove('in-drag'); | ||
549 | if (document.body.classList.contains('correlate')) { | ||
550 | document.querySelectorAll('.selected').forEach(elem => elem.classList.remove('selected')); | ||
551 | document.querySelectorAll('.event').forEach(elem => mark_correlation(elem, _this)); | ||
552 | } | ||
553 | _this.classList.toggle('selected'); | ||
554 | document.querySelectorAll('.info').forEach(elem => elem.classList.add('hidden')); | ||
555 | event.stopPropagation(); | ||
556 | } | ||
557 | |||
558 | /* Put new event into DOM tree. Track defaults to 'Other' */ | ||
559 | var track = item.track_id.toString(); | ||
560 | t.classList.add('track_' + track ); | ||
561 | var d = document.getElementById(track); | ||
562 | if (!d) | ||
563 | d = document.querySelector('#Other'); | ||
564 | d.append(t); | ||
565 | }; | ||
566 | |||
567 | if( ++voted == 2 ) { | ||
568 | window.lastupdate = 0; | ||
569 | distribute_votes(); | ||
570 | getFullnarpData(0); | ||
571 | } | ||
572 | }).catch(error => { | ||
573 | console.error('Fetch error:', error); | ||
574 | }); | ||
575 | |||
576 | document.onkeypress = function(e) { | ||
577 | document.body.classList.remove('in-drag'); | ||
578 | if( document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA' ) | ||
579 | return; | ||
580 | switch( e.charCode ) { | ||
581 | case 115: case 83: /* s */ | ||
582 | var selected = document.querySelectorAll('.selected'); | ||
583 | if( selected.length != 2 ) return; | ||
584 | |||
585 | var id0 = selected[0].getAttribute('id'); | ||
586 | var day0 = selected[0].getAttribute('fullnarp-day'); | ||
587 | var hour0 = selected[0].getAttribute('fullnarp-time'); | ||
588 | var room0 = selected[0].getAttribute('fullnarp-room'); | ||
589 | |||
590 | var id1 = selected[1].getAttribute('id'); | ||
591 | var day1 = selected[1].getAttribute('fullnarp-day'); | ||
592 | var hour1 = selected[1].getAttribute('fullnarp-time'); | ||
593 | var room1 = selected[1].getAttribute('fullnarp-room'); | ||
594 | |||
595 | set_all_attributes(id0, day1, room1, hour1, false); | ||
596 | set_all_attributes(id1, day0, room0, hour0, false); | ||
597 | |||
598 | break; | ||
599 | case 48: case 94: /* 0 */ | ||
600 | toggle_grid(5); | ||
601 | break; | ||
602 | case 49: case 50: case 51: case 52: /* 1-4 */ | ||
603 | toggle_grid(e.charCode-48); | ||
604 | break; | ||
605 | case 76: case 108: /* l */ | ||
606 | toggle_grid(0); | ||
607 | break; | ||
608 | case 68: case 100: /* d */ | ||
609 | toggle_grid(5); | ||
610 | break; | ||
611 | case 73: case 105: /* i */ | ||
612 | document.body.classList.remove('all-tracks'); | ||
613 | document.body.classList.toggle('languages'); | ||
614 | break; | ||
615 | case 65: case 97: /* a */ | ||
616 | case 72: case 104: /* h */ | ||
617 | document.body.classList.toggle('absolute'); | ||
618 | break; | ||
619 | case 81: case 113: /* q */ | ||
620 | document.querySelectorAll('.selected').forEach(elem => elem.classList.remove('selected')); | ||
621 | break; | ||
622 | case 84: case 116: /* t */ | ||
623 | document.body.classList.remove('languages'); | ||
624 | document.body.classList.toggle('all-tracks'); | ||
625 | break; | ||
626 | case 85: case 117: /* u */ | ||
627 | document.body.classList.toggle('still-left'); | ||
628 | break; | ||
629 | case 67: case 99: /* c */ | ||
630 | display_correlation(); | ||
631 | break; | ||
632 | case 87: case 119: /* w */ | ||
633 | if (document.body.classList.contains('showcorrweb')) | ||
634 | document.querySelectorAll('.corrweb').forEach(elem => elem.remove()); | ||
635 | else | ||
636 | document.querySelectorAll('.event').forEach(elem => show_all_correlates(elem)); | ||
637 | document.body.classList.toggle('showcorrweb'); | ||
638 | break; | ||
639 | } | ||
640 | }; | ||
641 | } | ||
diff --git a/static/halfnarp.js b/static/halfnarp.js new file mode 100644 index 0000000..878f3ab --- /dev/null +++ b/static/halfnarp.js | |||
@@ -0,0 +1,510 @@ | |||
1 | function toggle_grid(whichDay) { | ||
2 | var vclasses= [['in-list'], ['in-calendar', 'onlyday1'], ['in-calendar', 'onlyday2'], ['in-calendar', 'onlyday3'], | ||
3 | ['in-calendar', 'onlyday4'], ['in-calendar', 'alldays']]; | ||
4 | document.body.classList.remove( 'alldays', 'onlyday1', 'onlyday2', 'onlyday3', 'onlyday4', 'in-list', 'in-calendar'); | ||
5 | if( whichDay < 0 || whichDay > 5 ) return; | ||
6 | document.body.classList.add(...vclasses[whichDay]); | ||
7 | document.getElementById('qrcode').classList.toggle('limit', whichDay == 0); | ||
8 | } | ||
9 | |||
10 | function toggle_corr_mode() { | ||
11 | if (!document.body.classList.contains('correlate')) | ||
12 | document.body.classList.remove('all-tracks', 'languages', 'classifiers'); | ||
13 | document.querySelectorAll('.event').forEach(elem => elem.setAttribute('corr', '')); | ||
14 | } | ||
15 | document.body.classList.toggle('correlate'); | ||
16 | } | ||
17 | |||
18 | function toggle_classifier(classifier, is_track, is_range) { | ||
19 | if (document.body.classList.contains('classifiers') && document.body.getAttribute('classifiers') == classifier) { | ||
20 | document.body.classList.remove('classifiers'); | ||
21 | return; | ||
22 | } | ||
23 | var default_intensity = 0, prefix = ''; | ||
24 | if (is_range) { | ||
25 | default_intensity = 5; | ||
26 | prefix = '+'; | ||
27 | } | ||
28 | is_range = is_range ? '+' : ''; | ||
29 | for (ev of window.top.all_events) { | ||
30 | if (ev.event_classifiers) { | ||
31 | var intensity = default_intensity; | ||
32 | // if track selector and empty, set to 80% | ||
33 | if (ev.event_classifiers[classifier]) | ||
34 | intensity = Math.round(ev.event_classifiers[classifier] / 10); | ||
35 | $('#event_'+ev.event_id).attr('intensity', prefix + intensity); | ||
36 | } | ||
37 | } | ||
38 | document.body.classList.add('classifiers'); | ||
39 | document.body.classList.remove('all-tracks', 'languages', 'correlate'); | ||
40 | document.body.setAttribute('classifier', classifier); | ||
41 | } | ||
42 | |||
43 | function set_random_event() { | ||
44 | var keys = Object.keys(all_events).filter(function(event_id) { | ||
45 | return $('#event_'+event_id+'.selected').length == 0 && | ||
46 | $('#event_'+event_id+'.rejected').length == 0; | ||
47 | }); | ||
48 | |||
49 | if (keys.length == 0) { | ||
50 | $('.narpr').toggleClass('hidden'); | ||
51 | return; | ||
52 | } | ||
53 | |||
54 | item = all_events[keys[ keys.length * Math.random() << 0]]; | ||
55 | $('.narpr_title').text(item.title || ''); | ||
56 | $('.narpr_track').text(item.track_name || ''); | ||
57 | $('.narpr_subtitle').text(item.subtitle || ''); | ||
58 | $('.narpr_speakers').text(item.speaker_names || ''); | ||
59 | $('.narpr_abstract').html(item.abstract || ''); | ||
60 | window.narpr_event = item.event_id; | ||
61 | } | ||
62 | |||
63 | function redraw_qrcode(ids) { | ||
64 | if (!ids) | ||
65 | ids = $('.selected').map( function() { return $(this).attr('event_id'); }).get(); | ||
66 | if ($('#qrcode').hasClass('hidden') && ids.length == 0 ) | ||
67 | return; | ||
68 | var request = JSON.stringify({'talk_ids': ids}); | ||
69 | var size = 68; | ||
70 | if($('body').hasClass('qrcode-huge')) { | ||
71 | size = 400; | ||
72 | } | ||
73 | |||
74 | $('#qrcode').empty(); | ||
75 | $('#qrcode').qrcode({width: size, height: size, text: request}); | ||
76 | $('#qrcode').removeClass('hidden'); | ||
77 | } | ||
78 | |||
79 | function redraw_calendar(myuid, ids) { | ||
80 | if (!ids) | ||
81 | ids = $('.selected').map( function() { return $(this).attr('event_id'); }).get(); | ||
82 | |||
83 | var now = new Date(); | ||
84 | var calendar = 'BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//events.ccc.de//halfnarp//EN\r\nX-WR-TIMEZONE:Europe/Berlin\r\n'; | ||
85 | ids.forEach( function(id) { | ||
86 | var item = all_events[id]; | ||
87 | if ('start_time' in item) { | ||
88 | |||
89 | var start = new Date(item.start_time); | ||
90 | calendar += 'BEGIN:VEVENT\r\n'; | ||
91 | calendar += 'UID:'+myuid+item.event_id+'\r\n'; | ||
92 | calendar += 'DTSTAMP:' + now.toISOString().replace(/-|;|:|\./g, '').replace(/...Z$/, 'Z') + '\r\n'; | ||
93 | calendar += 'DTSTART:' + start.toISOString().replace(/-|;|:|\./g, '').replace(/...Z$/, 'Z') + '\r\n'; | ||
94 | calendar += 'DURATION:PT' + item.duration + 'S\r\n'; | ||
95 | calendar += 'LOCATION:' + item.room_name + '\r\n'; | ||
96 | calendar += 'URL:http://events.ccc.de/congress/2023/Fahrplan/events/' + item.event_id + '.html\r\n'; | ||
97 | calendar += 'SUMMARY:' + item.title + '\r\n'; | ||
98 | calendar += 'DESCRIPTION:' + item.abstract.replace(/\n|\r/g, ' ') + '\r\n'; | ||
99 | // console.log( 'id:' + id + ' ' + all_events[id] ); | ||
100 | // console.log( all_events[id].title ); | ||
101 | calendar += 'END:VEVENT\r\n'; | ||
102 | } | ||
103 | }); | ||
104 | calendar += 'END:VCALENDAR\r\n'; | ||
105 | $('.export-url-a').attr( 'href', "data:text/calendar;filename=38C3.ics," + encodeURIComponent(calendar) ); | ||
106 | $('.export-url').removeClass( 'hidden' ); | ||
107 | } | ||
108 | |||
109 | function do_the_halfnarp() { | ||
110 | // var halfnarpAPI = 'talks_36C3.json'; | ||
111 | var halfnarpAPI = '/-/talkpreferences'; | ||
112 | var halfnarpCorrs = 'corr_array_38c3.json'; | ||
113 | var halfnarpPubAPI = halfnarpAPI + '/public/'; | ||
114 | var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0)); | ||
115 | window.top.all_events = new Object(); | ||
116 | window.top.narpr_rejected = new Array(); | ||
117 | var myuid, mypid, newfriend = new Object(); | ||
118 | var allhours = ['10', '11','12','13','14','15','16','17','18','19','20','21','22','23','00','01','02','03']; | ||
119 | |||
120 | $('.narpr_done').click( function(ev) { | ||
121 | $('.narpr').toggleClass('hidden', true); | ||
122 | if (!window.narpr_alerted) { | ||
123 | window.narpr_alerted = true; | ||
124 | alert("Thank you for using narpr(β). Don't forget to SUBMIT!"); | ||
125 | } | ||
126 | }); | ||
127 | |||
128 | $('.narpr').on({ 'touchstart' : function(ev) { | ||
129 | // alert("foo: " + ev.originalEvent.touches[0].clientX ); | ||
130 | window.touch_startX = ev.originalEvent.touches[0].clientX; | ||
131 | window.touch_curX = ev.originalEvent.touches[0].clientX; | ||
132 | window.touch_valid = true; | ||
133 | $('.narpr').css('background', '#ddd'); | ||
134 | } }); | ||
135 | |||
136 | $('.narpr').on({ 'touchmove' : function(ev) { | ||
137 | var narp_view = $('.narpr'); | ||
138 | if (ev.originalEvent.touches.length > 1) { | ||
139 | narp_view.css('background', 'white'); | ||
140 | window.touch_valid = false; | ||
141 | } | ||
142 | if (!window.touch_valid) | ||
143 | return; | ||
144 | if (ev.originalEvent.touches[0].clientX > window.touch_startX + 100) | ||
145 | narp_view.css('background', 'green'); | ||
146 | else if (ev.originalEvent.touches[0].clientX < window.touch_startX - 100) | ||
147 | narp_view.css('background', 'red'); | ||
148 | else | ||
149 | narp_view.css('background', '#ddd'); | ||
150 | window.touch_curX = ev.originalEvent.touches[0].clientX; | ||
151 | |||
152 | // console.log(narp_view[0].clientHeight + ':' + narp_view[0].scrollHeight); | ||
153 | if( narp_view[0].clientHeight >= narp_view[0].scrollHeight) | ||
154 | ev.preventDefault(); | ||
155 | } }); | ||
156 | |||
157 | $('.narpr').on({ 'touchend' : function(ev) { | ||
158 | if (!window.touch_valid) | ||
159 | return; | ||
160 | if (window.touch_curX > window.touch_startX + 100) { | ||
161 | $('#event_'+window.narpr_event).toggleClass('selected', true); | ||
162 | set_random_event(); | ||
163 | } | ||
164 | if (window.touch_curX < window.touch_startX - 100) { | ||
165 | $('#event_'+window.narpr_event).toggleClass('selected', false); | ||
166 | $('#event_'+window.narpr_event).toggleClass('rejected', true); | ||
167 | set_random_event(); | ||
168 | } | ||
169 | |||
170 | $('.narpr').css('background', 'white'); | ||
171 | } }); | ||
172 | |||
173 | /* Add callback for submit click */ | ||
174 | $('.submit').click( function() { | ||
175 | var myapi; | ||
176 | |||
177 | /* Get user's preferences and try to save them locally */ | ||
178 | var ids = $('.selected').map( function() { | ||
179 | return $(this).attr('event_id'); | ||
180 | }).get(); | ||
181 | try { | ||
182 | localStorage['38C3-halfnarp'] = ids; | ||
183 | myapi = localStorage.getItem('38C3-halfnarp-api'); | ||
184 | if (myapi) { | ||
185 | myapi = myapi.replace(/.*?:\//g, ""); | ||
186 | myapi = 'https:/' + myapi.replace(/.*?:\//g, ""); | ||
187 | } | ||
188 | } catch(err) { | ||
189 | alert('Storing your choices locally is forbidden.'); | ||
190 | } | ||
191 | |||
192 | /* Convert preferences to JSON and post them to backend */ | ||
193 | var request = JSON.stringify({'talk_ids': ids}); | ||
194 | if( !myapi || !myapi.length ) { | ||
195 | /* If we do not have resource URL, post data and get resource */ | ||
196 | $.ajax({ | ||
197 | type: 'POST', | ||
198 | url: halfnarpAPI + '/', | ||
199 | data: request, | ||
200 | headers: { | ||
201 | 'Accept': 'application/json', | ||
202 | 'Content-Type': 'application/json' | ||
203 | }, | ||
204 | contentType: "text/plain", | ||
205 | dataType: 'json', | ||
206 | }).done(function(data) { | ||
207 | $('.info').text('submitted'); | ||
208 | $('.info').removeClass('hidden'); | ||
209 | try { | ||
210 | localStorage['38C3-halfnarp-api'] = data['update_url']; | ||
211 | localStorage['38C3-halfnarp-pid'] = mypid = data['hashed_uid']; | ||
212 | localStorage['38C3-halfnarp-uid'] = myuid = data['uid']; | ||
213 | window.location.hash = mypid; | ||
214 | } catch(err) {} | ||
215 | }, 'json' ).fail(function() { | ||
216 | $('.info').text('failed :('); | ||
217 | $('.info').removeClass('hidden'); | ||
218 | }); | ||
219 | } else { | ||
220 | /* If we do have a resource URL, update resource */ | ||
221 | $.ajax({ | ||
222 | type: 'PUT', | ||
223 | url: myapi, | ||
224 | data: request, | ||
225 | contentType: "application/json", | ||
226 | dataType: 'json', | ||
227 | }).done(function(data) { | ||
228 | localStorage['38C3-halfnarp-uid'] = myuid = data['uid']; | ||
229 | if( localStorage['38C3-halfnarp-pid'] ) { | ||
230 | window.location.hash = localStorage['38C3-halfnarp-pid']; | ||
231 | } | ||
232 | $('.info').text('updated'); | ||
233 | $('.info').removeClass('hidden'); | ||
234 | }).fail(function(msg) { | ||
235 | $('.info').text('failed :('); | ||
236 | $('.info').removeClass('hidden'); | ||
237 | }); | ||
238 | } | ||
239 | |||
240 | /* Tell QRCode library to update and/or display preferences for Apps */ | ||
241 | redraw_qrcode(ids); | ||
242 | |||
243 | if (myuid) | ||
244 | redraw_calendar(myuid, ids); | ||
245 | }); | ||
246 | |||
247 | /* Add handler for type ahead search input field */ | ||
248 | var filter = document.getElementById('filter'); | ||
249 | filter.onpaste = filter.oncut = filter.onkeypress = filter.onkeydown = filter.onkeyup = function() { | ||
250 | var cnt = this.value.toLowerCase(); | ||
251 | if( cnt.length ) | ||
252 | document.querySelectorAll('.event').forEach(elem => elem.style.display = (elem.textContent || elem.innerText || '').toLowerCase().includes(cnt) ? "initial" : "none" ); | ||
253 | else | ||
254 | document.querySelectorAll('.event').forEach(elem => elem.style.display = "initial"); | ||
255 | }; | ||
256 | |||
257 | /* Add click handlers for event div sizers */ | ||
258 | document.querySelector('.vsmallboxes').onclick = function() { | ||
259 | document.body.classList.remove('size-medium', 'size-large'); | ||
260 | document.body.classList.add('size-small'); | ||
261 | }; | ||
262 | |||
263 | document.querySelector('.vmediumboxes').onclick = function() { | ||
264 | document.body.classList.remove('size-small', 'size-large'); | ||
265 | document.body.classList.add('size-medium'); | ||
266 | }; | ||
267 | |||
268 | document.querySelector('.vlargeboxes').onclick = function() { | ||
269 | document.body.classList.remove('size-small', 'size-medium'); | ||
270 | document.body.classList.add('size-large'); | ||
271 | }; | ||
272 | |||
273 | /* Add de-highlighter on touch interface devices */ | ||
274 | if( isTouch ) { | ||
275 | document.body.onclick = function() { | ||
276 | document.querySelector('.highlighted').forEach(elem => elem.classList.remove('highlighted')); | ||
277 | }; | ||
278 | document.querySelector('.touch-only').forEach(elem => elem.classList.remove('hidden')); | ||
279 | } | ||
280 | |||
281 | /* Add callbacks for view selector */ | ||
282 | document.querySelector('.vlist').onclick = function() { toggle_grid(0); }; | ||
283 | document.querySelector('.vday1').onclick = function() { toggle_grid(1); }; | ||
284 | document.querySelector('.vday2').onclick = function() { toggle_grid(2); }; | ||
285 | document.querySelector('.vday3').onclick = function() { toggle_grid(3); }; | ||
286 | document.querySelector('.vday4').onclick = function() { toggle_grid(4); }; | ||
287 | document.querySelector('.vdays').onclick = function() { toggle_grid(5); }; | ||
288 | |||
289 | document.querySelector('.vlang').onclick = function() { document.body.classList.toggle('languages'); }; | ||
290 | document.querySelector('.vtrack').onclick = function() { document.body.classList.toggle('all-tracks'); }; | ||
291 | document.querySelector('.vnarpr').onclick = function() { $('.narpr').toggleClass('hidden'); set_random_event(); }; | ||
292 | |||
293 | document.querySelector('.vcorr').onclick = toggle_corr_mode; | ||
294 | |||
295 | $('.vclass').click( function() { toggle_classifier( $(this).attr('classifier'), $(this).hasClass('track'), $(this).hasClass('two_poles')); }); | ||
296 | |||
297 | /* Create hour guides */ | ||
298 | for (hour of allhours) { | ||
299 | var elem = document.createElement('hr'); | ||
300 | elem.classList.add('guide', 'time_' + hour + '00'); | ||
301 | document.body.append(elem); | ||
302 | elem = document.createElement('div'); | ||
303 | elem.textContent = hour + '00'; | ||
304 | elem.classList.add('guide', 'time_' + hour + '00'); | ||
305 | document.body.append(elem); | ||
306 | } | ||
307 | |||
308 | /* If we've been here before, try to get local preferences. They are authoratative */ | ||
309 | var selection = [], friends = { }; | ||
310 | try { | ||
311 | selection = localStorage['38C3-halfnarp'] || []; | ||
312 | friends = localStorage['38C3-halfnarp-friends'] || { }; | ||
313 | myuid = localStorage['38C3-halfnarp-uid'] || ''; | ||
314 | mypid = localStorage['38C3-halfnarp-pid'] || ''; | ||
315 | } catch(err) { | ||
316 | } | ||
317 | |||
318 | /* Fetch list of lectures to display */ | ||
319 | $.getJSON( halfnarpAPI, { format: 'json' }) | ||
320 | .done(function( data ) { | ||
321 | $.each( data, function( i, item ) { | ||
322 | /* Save event to all_events hash */ | ||
323 | all_events[item.event_id] = item; | ||
324 | |||
325 | /* Take copy of hidden event template div and select them, if they're in | ||
326 | list of previous prereferences */ | ||
327 | var t = $( '#template' ).clone(true); | ||
328 | var event_id = item.event_id.toString(); | ||
329 | t.addClass('event ' + ' lang_' + (item.language || 'en')); | ||
330 | t.attr('event_id', item.event_id.toString()); | ||
331 | t.attr('id', 'event_' + item.event_id.toString()); | ||
332 | if( selection && selection.indexOf(item.event_id) != -1 ) { | ||
333 | t.addClass( 'selected' ); | ||
334 | } | ||
335 | |||
336 | /* Sort textual info into event div */ | ||
337 | t.find('.title').text(item.title); | ||
338 | t.find('.speakers').text(item.speaker_names); | ||
339 | t.find('.abstract').append(item.abstract); | ||
340 | |||
341 | if (item.event_classifiers && item.event_classifiers['Foundations'] && item.event_classifiers['Foundations'] > 40.0) | ||
342 | t.addClass('foundation'); | ||
343 | |||
344 | /* start_time: 2014-12-29T21:15:00+01:00" */ | ||
345 | var start_time = new Date(item.start_time); | ||
346 | |||
347 | var day = start_time.getUTCDate() - 26; | ||
348 | var hour = start_time.getUTCHours() + 1; | ||
349 | var mins = start_time.getUTCMinutes(); | ||
350 | |||
351 | /* After midnight: sort into yesterday */ | ||
352 | if( hour < 9 ) | ||
353 | day--; | ||
354 | if( hour > 23) | ||
355 | hour -= 24; | ||
356 | |||
357 | /* Fix up room for 38C3 */ | ||
358 | room = (item.room_id || '').toString().replace('1','room1').replace('2','room2').replace('3','room3'); | ||
359 | |||
360 | /* Apply attributes to sort events into calendar */ | ||
361 | t.addClass(room + ' duration_' + item.duration + ' day_'+day + ' time_' + (hour<10?'0':'') + hour + '' + (mins<10?'0':'') + mins); | ||
362 | |||
363 | t.click( function(event) { | ||
364 | if ($('body').hasClass('correlate')) { | ||
365 | mark_corr($(this).attr('event_id')); | ||
366 | event.stopPropagation(); | ||
367 | return; | ||
368 | } | ||
369 | /* Transition for touch devices is highlighted => selected => highlighted ... */ | ||
370 | if( isTouch ) { | ||
371 | if ( $( this ).hasClass('highlighted') ) { | ||
372 | $( this ).toggleClass('selected'); | ||
373 | $('.info').addClass('hidden'); | ||
374 | } else { | ||
375 | $('.highlighted').removeClass('highlighted'); | ||
376 | $( this ).addClass('highlighted'); | ||
377 | } | ||
378 | } else { | ||
379 | $( this ).toggleClass('selected'); | ||
380 | $('.info').addClass('hidden'); | ||
381 | } | ||
382 | event.stopPropagation(); | ||
383 | }); | ||
384 | /* Put new event into DOM tree. Track defaults to 'Other' */ | ||
385 | try { | ||
386 | var track = item.track_id.toString(); | ||
387 | } catch(e) { | ||
388 | var track = "Other"; | ||
389 | } | ||
390 | var d = $( '#' + track ); | ||
391 | t.addClass('track_' + track ); | ||
392 | if( !d.length ) { | ||
393 | d = $( '#Other' ); | ||
394 | } | ||
395 | d.append(t); | ||
396 | if( newfriend.pid ) { | ||
397 | newfriend.prefs.forEach( function( eventid ) { | ||
398 | $( '#event_' + eventid ).addClass( 'friend' ); | ||
399 | }); | ||
400 | } | ||
401 | }); | ||
402 | |||
403 | $.getJSON( halfnarpCorrs, { format: 'json' }).done(function(data) { window.top.all_votes = data; }); | ||
404 | toggle_grid(5); | ||
405 | |||
406 | /* Check for a new friends public uid in location's #hash */ | ||
407 | var shared = window.location.hash; | ||
408 | shared = shared ? shared.substr(1) : ''; | ||
409 | if( shared.length ) { | ||
410 | if ( ( friends[shared] ) || ( shared === mypid ) ) { | ||
411 | |||
412 | } else { | ||
413 | $.getJSON( halfnarpPubAPI + shared, { format: 'json' }) | ||
414 | .done(function( data ) { | ||
415 | newfriend.pid = shared; | ||
416 | newfriend.prefs = data.talk_ids; | ||
417 | newfriend.prefs.forEach( function( eventid ) { | ||
418 | $( '#event_' + eventid ).addClass( 'friend' ); | ||
419 | }); | ||
420 | }); | ||
421 | } | ||
422 | } | ||
423 | // window.location.hash = ''; | ||
424 | |||
425 | ids = $('.selected').map( function() { return $(this).attr('event_id'); }).get(); | ||
426 | if (ids.length) { | ||
427 | redraw_qrcode(ids); | ||
428 | if (myuid) | ||
429 | redraw_calendar(myuid, ids); | ||
430 | } | ||
431 | |||
432 | $('#qrcode').click( function() { | ||
433 | $('body').toggleClass('qrcode-huge'); | ||
434 | redraw_qrcode(); | ||
435 | }); | ||
436 | |||
437 | /* Update friends cache */ | ||
438 | for( var friend in friends ) { | ||
439 | $.getJSON( halfnarpPubAPI + friends.pid, { format: 'json' }) | ||
440 | .done(function( data ) { | ||
441 | friend.prefs = data.talk_ids; | ||
442 | localStorage['38C3-halfnarp-friends'] = friends; | ||
443 | update_friends(); | ||
444 | }); | ||
445 | } | ||
446 | |||
447 | }); | ||
448 | document.onkeypress = function(e) { | ||
449 | if( document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA' ) | ||
450 | return; | ||
451 | switch( e.keyCode ) { | ||
452 | case 48: case 94: /* 0 */ | ||
453 | toggle_grid(5); | ||
454 | break; | ||
455 | case 49: case 50: case 51: case 52: /* 1-4 */ | ||
456 | /* toggle_grid(e.keyCode-48); */ | ||
457 | break; | ||
458 | case 76: case 108: /* l */ | ||
459 | toggle_grid(0); | ||
460 | break; | ||
461 | case 68: case 100: /* d */ | ||
462 | /* toggle_grid(5); */ | ||
463 | break; | ||
464 | case 73: case 105: /* i */ | ||
465 | document.body.classList.remove('all-tracks'); | ||
466 | document.body.classList.toggle('languages'); | ||
467 | break; | ||
468 | case 84: case 116: /* t */ | ||
469 | document.body.classList.remove('languages'); | ||
470 | document.body.classList.toggle('all-tracks'); | ||
471 | break; | ||
472 | case 67: case 99: /* c */ | ||
473 | /* toggle_corr_mode(); */ | ||
474 | break; | ||
475 | } | ||
476 | }; | ||
477 | } | ||
478 | |||
479 | function mark_corr(eid) { | ||
480 | /* If JSON with votes is not there, bail */ | ||
481 | if (!all_votes) return; | ||
482 | |||
483 | /* Reset correlation markers */ | ||
484 | document.querySelectorAll('.event').forEach(elem => elem.setAttribute('corr', ''); | ||
485 | |||
486 | /* Get index of reference event id */ | ||
487 | var eoff = all_votes.event_ids.indexOf(eid); | ||
488 | if (eoff==-1) return; | ||
489 | |||
490 | document.querySelectorAll('.event').forEach( function(dest) { | ||
491 | var destid = dest.getAttribute('event_id'); | ||
492 | /* mark reference event at another place */ | ||
493 | if (destid == eid) { | ||
494 | dest.setAttribute('corr', 'x'); | ||
495 | return; | ||
496 | } | ||
497 | |||
498 | var destoff = all_votes.event_ids.indexOf(destid); | ||
499 | if (destoff==-1) { | ||
500 | dest.setAttribute('corr', '0'); | ||
501 | return; | ||
502 | } | ||
503 | |||
504 | /* Only the smaller event-id's string has the info */ | ||
505 | if (eoff < destoff) | ||
506 | dest.setAttribute('corr', all_votes.event_corrs[eoff].charAt(destoff-eoff-1)); | ||
507 | else | ||
508 | dest.setAttribute('corr', all_votes.event_corrs[destoff].charAt(eoff-destoff-1)); | ||
509 | }); | ||
510 | } | ||
diff --git a/static/jquery-1.11.1.min.js b/static/jquery-1.11.1.min.js new file mode 100644 index 0000000..ab28a24 --- /dev/null +++ b/static/jquery-1.11.1.min.js | |||
@@ -0,0 +1,4 @@ | |||
1 | /*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ | ||
2 | !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},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=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=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){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+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:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|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||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):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{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{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&&1===a.nodeType&&1===b.nodeType&&(~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"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)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?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),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}}):(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){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),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"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(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=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,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;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},e):n},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']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?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;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}: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("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===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+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?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:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],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(1===l.nodeType&&++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:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,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);return e[u]?e(b):e.length>1?(c=[a,a,"",b],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)}):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--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!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){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),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===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},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"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(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,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,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+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):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="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; | ||
3 | if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.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)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.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",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.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 Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,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||(m.cssNumber[c]?"":"px") | ||
4 | },cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.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/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.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){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.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 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(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),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)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}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,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":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)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;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||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]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m}); | ||
diff --git a/static/jquery-3.7.1.min.js b/static/jquery-3.7.1.min.js new file mode 100644 index 0000000..7f37b5d --- /dev/null +++ b/static/jquery-3.7.1.min.js | |||
@@ -0,0 +1,2 @@ | |||
1 | /*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ | ||
2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(U,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Me,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},zt="*/".concat("*"),Xt=C.createElement("a");function Ut(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+"//"+Xt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Mt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+zt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce}); | ||
diff --git a/static/jquery.qrcode.min.js b/static/jquery.qrcode.min.js new file mode 100644 index 0000000..fe9680e --- /dev/null +++ b/static/jquery.qrcode.min.js | |||
@@ -0,0 +1,28 @@ | |||
1 | (function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length}, | ||
2 | write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount; | ||
3 | for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount- | ||
4 | 7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]= | ||
5 | 0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a}, | ||
6 | setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c= | ||
7 | j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount- | ||
8 | b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a, | ||
9 | c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d= | ||
10 | 0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&& | ||
11 | (d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52, | ||
12 | 78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)- | ||
13 | j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+ | ||
14 | a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+ | ||
15 | a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+ | ||
16 | 2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256), | ||
17 | LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0> | ||
18 | this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27], | ||
19 | [4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146, | ||
20 | 116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15, | ||
21 | 43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45, | ||
22 | 3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19, | ||
23 | 55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10, | ||
24 | 45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4* | ||
25 | (a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1, | ||
26 | correctLevel:2,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b), | ||
27 | j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width", | ||
28 | d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;jQuery(a).appendTo(this)})}})(jQuery); | ||
diff --git a/static/style_38c3.css b/static/style_38c3.css new file mode 100644 index 0000000..33bb0f3 --- /dev/null +++ b/static/style_38c3.css | |||
@@ -0,0 +1,950 @@ | |||
1 | body { | ||
2 | font-family: "HelveticaNeueLight", "HelveticaNeue-Light", "Helvetica Neue Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; font-weight:300; font-stretch:normal; | ||
3 | padding-bottom: 12rem; | ||
4 | height: 1px; | ||
5 | } | ||
6 | |||
7 | body:after { | ||
8 | content: "."; | ||
9 | clear: both; | ||
10 | display: block; | ||
11 | visibility: hidden; | ||
12 | height: 12rem; | ||
13 | } | ||
14 | |||
15 | div, p, a, li, td { -webkit-text-size-adjust:none; } | ||
16 | |||
17 | body, | ||
18 | header { | ||
19 | min-width: 640px; | ||
20 | } | ||
21 | |||
22 | .narpr { | ||
23 | position: fixed; | ||
24 | top: 3em; | ||
25 | bottom: 9rem; | ||
26 | left: 3em; | ||
27 | border: 4px solid black; | ||
28 | background: white; | ||
29 | width: 88%; | ||
30 | padding: 1em; | ||
31 | min-height: 50em; | ||
32 | border-radius: 10px; | ||
33 | overflow-y:scroll; | ||
34 | overflow-x:hidden; | ||
35 | |||
36 | user-select: none; | ||
37 | -webkit-user-select: none; | ||
38 | -ms-user-select: none; | ||
39 | -webkit-touch-callout: none; | ||
40 | -o-user-select: none; | ||
41 | -moz-user-select: none; | ||
42 | } | ||
43 | .narpr_swpipy.large { | ||
44 | font-size: 20em; | ||
45 | } | ||
46 | .narpr_swipy { | ||
47 | background: linear-gradient(to right, #0084B0 00%, #00A356 100% ); | ||
48 | background-size: 200% auto; | ||
49 | -webkit-background-clip: text; | ||
50 | -webkit-text-fill-color: transparent; | ||
51 | font-variant: small-caps; | ||
52 | font-size: 4em; | ||
53 | position: relative; | ||
54 | top: 20px; | ||
55 | text-align: center; | ||
56 | width: 100%; | ||
57 | |||
58 | color: #000; | ||
59 | background-clip: text; | ||
60 | text-fill-color: transparent; | ||
61 | -webkit-background-clip: text; | ||
62 | -webkit-text-fill-color: transparent; | ||
63 | } | ||
64 | |||
65 | .narpr-beta { | ||
66 | display: inline-block; | ||
67 | float: right; | ||
68 | width: 4em; | ||
69 | background: linear-gradient(to right, #0084B0 -100%, #00A356 200% ); | ||
70 | border: 2px black solid; | ||
71 | margin-left: 2em; | ||
72 | margin-bottom: 2em; | ||
73 | padding-top: 1.0em; | ||
74 | padding-bottom: 1.5em; | ||
75 | text-align: center; | ||
76 | font-weight: bold; | ||
77 | color: white !important; | ||
78 | border-radius: 10px; | ||
79 | cursor: pointer; | ||
80 | } | ||
81 | |||
82 | .narpr_done { | ||
83 | float: right; | ||
84 | bottom: 0px; | ||
85 | margin-top: 1em; | ||
86 | padding: 0.2em; | ||
87 | font-size: 3em; | ||
88 | background: linear-gradient(to right, #0084B0 -100%, #00A356 200% ); | ||
89 | border: 2px black solid; | ||
90 | font-color: white; | ||
91 | border-radius: 10px; | ||
92 | cursor: pointer; | ||
93 | } | ||
94 | |||
95 | .narpr_done:hover { | ||
96 | background: black; | ||
97 | color: white; | ||
98 | } | ||
99 | |||
100 | .narpr_track { | ||
101 | color: grey; | ||
102 | font-size: 3em; | ||
103 | font-variant: small-caps; | ||
104 | margin-top: 1em; | ||
105 | } | ||
106 | |||
107 | .narpr_title { | ||
108 | font-size: 4em; | ||
109 | font-weight: bold; | ||
110 | } | ||
111 | |||
112 | .narpr_subtitle { | ||
113 | font-size: 3em; | ||
114 | } | ||
115 | .narpr_speakers { | ||
116 | font-size: 3em; | ||
117 | font-style: italic; | ||
118 | padding: 0.2em 0.2em 0.2em 0.4em; | ||
119 | margin-bottom: 1em; | ||
120 | } | ||
121 | .narpr_abstract { | ||
122 | font-size: 2em; | ||
123 | } | ||
124 | |||
125 | .intro { | ||
126 | float: left; | ||
127 | font-size: 1em; | ||
128 | max-width: 50%; | ||
129 | width: auto; | ||
130 | padding-left: 0.5em; | ||
131 | } | ||
132 | |||
133 | .track-list { | ||
134 | padding-top: 1em; | ||
135 | float: right; | ||
136 | max-width: 40%; | ||
137 | width: auto; | ||
138 | text-align: right; | ||
139 | max-height: 300px; | ||
140 | overflow: hidden; | ||
141 | } | ||
142 | |||
143 | @media (max-width: 800px) { | ||
144 | .footer, | ||
145 | .track-list { | ||
146 | font-size: 0.8em; | ||
147 | } | ||
148 | } | ||
149 | |||
150 | .headline { | ||
151 | font-size: 3em; | ||
152 | font-weight: bold; | ||
153 | text-align: center; | ||
154 | margin-bottom: 1em; | ||
155 | } | ||
156 | |||
157 | .rightbox { | ||
158 | float: right; | ||
159 | max-width: 50%; | ||
160 | } | ||
161 | |||
162 | .leftbox { | ||
163 | float: left; | ||
164 | max-width: 100%; | ||
165 | } | ||
166 | |||
167 | .submit { | ||
168 | font-size: 1em; | ||
169 | text-align: center; | ||
170 | text-transform: uppercase; | ||
171 | height: 1em; | ||
172 | background: green; color: white; | ||
173 | |||
174 | padding: 1em; | ||
175 | border-radius: 5px; | ||
176 | float: right; | ||
177 | cursor: pointer; | ||
178 | margin: 1rem; | ||
179 | } | ||
180 | |||
181 | .submit svg{ | ||
182 | fill :#fff; | ||
183 | float: right; | ||
184 | height: 1em; | ||
185 | margin-left: 1em; | ||
186 | } | ||
187 | |||
188 | .export-url, | ||
189 | .info { | ||
190 | font-size: 1em; | ||
191 | font-weight: bold; | ||
192 | text-align: center; | ||
193 | vertical-align: middle; | ||
194 | |||
195 | height: 1em; | ||
196 | background: lightblue; | ||
197 | |||
198 | margin: 1rem 0.5rem 1rem; | ||
199 | border-radius: 5px; | ||
200 | padding: 1em; | ||
201 | float: right; | ||
202 | } | ||
203 | |||
204 | .submit:hover { | ||
205 | background: #000; | ||
206 | transition: background 0.5s; | ||
207 | } | ||
208 | |||
209 | #filter { | ||
210 | font-size: 1em; | ||
211 | border-radius: 5px; | ||
212 | line-height: 1em; | ||
213 | height: 1em; | ||
214 | padding: 0.8em; | ||
215 | margin: 1em; | ||
216 | min-width: 250px; | ||
217 | } | ||
218 | |||
219 | .clear { | ||
220 | clear: both; | ||
221 | } | ||
222 | |||
223 | .explainer { | ||
224 | margin: 0 auto; | ||
225 | width: 50%; | ||
226 | max-width: 80em; | ||
227 | text-align: center; | ||
228 | } | ||
229 | |||
230 | .explainer ul { | ||
231 | list-style-type: none; | ||
232 | padding:0; | ||
233 | margin:0; | ||
234 | height: 8em; | ||
235 | overflow: hidden; | ||
236 | } | ||
237 | |||
238 | .boxer { | ||
239 | font-size: 1em; | ||
240 | float: left; | ||
241 | width: 2em; | ||
242 | height: 2em; | ||
243 | background: grey; | ||
244 | color: white; | ||
245 | text-align: center; | ||
246 | margin-right: 0.2em; | ||
247 | padding: 0.2em 0 0 0; | ||
248 | cursor: pointer; | ||
249 | border-radius: 5px; | ||
250 | } | ||
251 | |||
252 | .allboxes { | ||
253 | clear: left; | ||
254 | } | ||
255 | |||
256 | .vmediumboxes { | ||
257 | width: 3em; | ||
258 | height: 3em; | ||
259 | } | ||
260 | |||
261 | .vlargeboxes { | ||
262 | width: 4em; | ||
263 | height: 4em; | ||
264 | } | ||
265 | |||
266 | .inline-button { | ||
267 | display: block; | ||
268 | background: grey; | ||
269 | margin-right: 0.2em; | ||
270 | padding: 2em 0 0 0; | ||
271 | text-align: center; | ||
272 | color: white; | ||
273 | width: 5em; | ||
274 | height: 3em; | ||
275 | cursor: pointer; | ||
276 | border-radius: 5px; | ||
277 | } | ||
278 | |||
279 | .views { | ||
280 | display: inline-block; | ||
281 | background: grey; | ||
282 | margin-right: 0.2em; | ||
283 | padding: 0.2em 0 0 0; | ||
284 | text-align: center; | ||
285 | color: white; | ||
286 | width: 3em; | ||
287 | height: 2em; | ||
288 | cursor: pointer; | ||
289 | border-radius: 5px; | ||
290 | } | ||
291 | |||
292 | .inline-button:hover, | ||
293 | .views:hover, | ||
294 | .boxer:hover { | ||
295 | background: #eee; | ||
296 | } | ||
297 | |||
298 | .track h2 { | ||
299 | text-align: center; | ||
300 | |||
301 | border-bottom: 0.3em solid #4588ba; | ||
302 | |||
303 | margin: 2em 0 1em 0; | ||
304 | clear: both; | ||
305 | } | ||
306 | |||
307 | .version { | ||
308 | position: absolute; | ||
309 | top: 4px; | ||
310 | right: 4px; | ||
311 | } | ||
312 | .trashbin { | ||
313 | position: absolute; | ||
314 | top 4px; | ||
315 | left: 4px; | ||
316 | text-align: center; | ||
317 | border: 1px silver dotted; | ||
318 | border-radius: 0.2em; | ||
319 | background: #ddd; | ||
320 | padding: 1em; | ||
321 | } | ||
322 | .in-list .trashbin { | ||
323 | visibility: hidden; | ||
324 | display: none; | ||
325 | } | ||
326 | .trashbin.over { | ||
327 | background: red; | ||
328 | } | ||
329 | |||
330 | /* Our main event box */ | ||
331 | .event { | ||
332 | overflow: hidden; | ||
333 | |||
334 | background: #eee; | ||
335 | border-radius: 5px; | ||
336 | |||
337 | margin: 0 0.8em 0.8em 0; | ||
338 | cursor: pointer; | ||
339 | } | ||
340 | |||
341 | .event .speakers, | ||
342 | .event .abstract { | ||
343 | font-size: 0.8em; | ||
344 | } | ||
345 | |||
346 | .event .abstract p:first-of-type { | ||
347 | margin-top: 0; | ||
348 | padding-top: 0.2em; | ||
349 | } | ||
350 | |||
351 | /* If tagged as in-list, display and stack them to the left */ | ||
352 | .in-list .event { | ||
353 | display: inline-block; | ||
354 | visibility: visible; | ||
355 | float: left; | ||
356 | } | ||
357 | |||
358 | .in-list .event:hover { | ||
359 | position: relative; | ||
360 | top: auto !important; | ||
361 | } | ||
362 | |||
363 | .event.selected { | ||
364 | background: green; | ||
365 | } | ||
366 | |||
367 | /* Outer glow for selected events in other display modes */ | ||
368 | .languages .event.selected, | ||
369 | .all-tracks .event.selected, | ||
370 | .correlate .event.selected { | ||
371 | box-shadow: 0px 0px 20px 5px rgba(100,200,40,1); | ||
372 | } | ||
373 | |||
374 | .foundation:before { | ||
375 | float: right; | ||
376 | content: ' '; | ||
377 | border: 0.8em red solid; | ||
378 | border-bottom-left-radius: 2em; margin-top: 0; margin-left: 0; | ||
379 | width: 0; | ||
380 | height: 0; | ||
381 | color: red; | ||
382 | background-color: red; | ||
383 | } | ||
384 | |||
385 | .selected.friend { | ||
386 | background-image: | ||
387 | repeating-linear-gradient( | ||
388 | 45deg, | ||
389 | purple, | ||
390 | purple 20px, | ||
391 | green 20px, | ||
392 | green 40px /* determines size */ | ||
393 | ) !important; | ||
394 | color: white; | ||
395 | } | ||
396 | .friend { | ||
397 | background: purple; | ||
398 | color: white; | ||
399 | } | ||
400 | |||
401 | .in-calendar .room-label { | ||
402 | font-size: 2em; | ||
403 | } | ||
404 | |||
405 | .in-calendar.alldays .room-label { | ||
406 | font-size: 1em; | ||
407 | } | ||
408 | |||
409 | /* Events in calendar view are only visible if the have a date */ | ||
410 | .in-calendar.alldays .event.day_1, .in-calendar.onlyday1 .event.day_1, | ||
411 | .in-calendar.alldays .event.day_2, .in-calendar.onlyday2 .event.day_2, | ||
412 | .in-calendar.alldays .event.day_3, .in-calendar.onlyday3 .event.day_3, | ||
413 | .in-calendar.alldays .event.day_4, .in-calendar.onlyday4 .event.day_4 { | ||
414 | display: block; | ||
415 | visibility: visible; | ||
416 | } | ||
417 | |||
418 | /* span a grid */ | ||
419 | .grid { | ||
420 | position: absolute; | ||
421 | text-align: center; | ||
422 | z-index: -1; | ||
423 | opacity: 0.25; | ||
424 | } | ||
425 | |||
426 | .grid.possible { | ||
427 | background: blue; | ||
428 | } | ||
429 | |||
430 | .wholeday { | ||
431 | position: absolute; | ||
432 | text-align: center; | ||
433 | padding-top: 1em; | ||
434 | font-size: 2em; | ||
435 | top: 350px; | ||
436 | opacity: 0.3; | ||
437 | z-position: -3; | ||
438 | } | ||
439 | .wholeday.uneven { | ||
440 | background-color: cyan; | ||
441 | } | ||
442 | |||
443 | .wholeblock { | ||
444 | position: absolute; | ||
445 | background-color: yellow; | ||
446 | opacity: 0.4; | ||
447 | z-position: -3; | ||
448 | } | ||
449 | .in-calendar.onlyday1 .wholeblock, | ||
450 | .in-calendar.onlyday2 .wholeblock, | ||
451 | .in-calendar.onlyday3 .wholeblock, | ||
452 | .in-calendar.onlyday4 .wholeblock | ||
453 | { | ||
454 | width: 100%; | ||
455 | } | ||
456 | |||
457 | .grid.over { | ||
458 | background-color: lime; | ||
459 | } | ||
460 | |||
461 | .room-label { | ||
462 | text-align: center; | ||
463 | font-size: 2em; | ||
464 | font-weight: bold; | ||
465 | top: 350px; | ||
466 | } | ||
467 | |||
468 | .views.vday4 { | ||
469 | margin-right: 3em; | ||
470 | } | ||
471 | |||
472 | .guide { | ||
473 | position: absolute; | ||
474 | z-index: -1; | ||
475 | font-weight: bold; | ||
476 | } | ||
477 | |||
478 | hr.guide { | ||
479 | left: 4%; | ||
480 | width: 95%; | ||
481 | } | ||
482 | |||
483 | .ende, .pause { | ||
484 | background-color: pink; | ||
485 | color: white; | ||
486 | text-align: center; | ||
487 | left: 0; | ||
488 | right: 0; | ||
489 | z-position: -1; | ||
490 | } | ||
491 | |||
492 | .size-large .pause { | ||
493 | font-size: 9em; | ||
494 | } | ||
495 | |||
496 | .size-medium .pause { | ||
497 | font-size: 7em; | ||
498 | } | ||
499 | |||
500 | .size-small .pause { | ||
501 | font-size: 4em; | ||
502 | } | ||
503 | |||
504 | /* togglable view selectors */ | ||
505 | .absolute .vhalf { background: red; } | ||
506 | .correlate .vcorr { background: red; } | ||
507 | .still-left .vleft { background: red; } | ||
508 | .languages .vlang { background: red; } | ||
509 | .showcorrweb .vweb { background: red; } | ||
510 | .all-tracks .vtrack { background: red; } | ||
511 | .in-list .vlist { background: red; } | ||
512 | .size-large .vlargeboxes { background: red; } | ||
513 | .size-medium .vmediumboxes { background: red; } | ||
514 | .size-small .vsmallboxes { background: red; } | ||
515 | .in-calendar.alldays .vdays { background: red; } | ||
516 | .in-calendar.onlyday1 .vday1 { background: red; } | ||
517 | .in-calendar.onlyday2 .vday2 { background: red; } | ||
518 | .in-calendar.onlyday3 .vday3 { background: red; } | ||
519 | .in-calendar.onlyday4 .vday4 { background: red; } | ||
520 | |||
521 | /* Rule for when stuff is hidden */ | ||
522 | .in-list .guide, | ||
523 | .in-list .grid, | ||
524 | .in-list .room-label, | ||
525 | .in-calendar .track h2, | ||
526 | .in-calendar .event:not(.day_1):not(.day_2):not(.day_3):not(.day_4), | ||
527 | .in-list .corr-warn, | ||
528 | .in-list.still-left .day_1, | ||
529 | .in-list.still-left .day_2, | ||
530 | .in-list.still-left .day_3, | ||
531 | .in-list.still-left .day_4, | ||
532 | .onlyday1 .day_2, .onlyday1 .day_3, .onlyday1 .day_4, | ||
533 | .onlyday2 .day_1, .onlyday2 .day_3, .onlyday2 .day_4, | ||
534 | .onlyday3 .day_1, .onlyday3 .day_2, .onlyday3 .day_4, | ||
535 | .onlyday4 .day_1, .onlyday4 .day_2, .onlyday4 .day_3, | ||
536 | .onlyday1 .wholeday, .onlyday2 .wholeday, .onlyday3 .wholeday, .onlyday4 .wholeday { | ||
537 | visibility: hidden !important; | ||
538 | display: none !important; | ||
539 | } | ||
540 | |||
541 | .in-calendar.alldays .event.workshop, | ||
542 | .in-calendar.onlyday1 .event.workshop, | ||
543 | .in-calendar.onlyday2 .event.workshop, | ||
544 | .in-calendar.onlyday3 .event.workshop, | ||
545 | .in-calendar.onlyday4 .event.workshop, | ||
546 | .in-calendar.alldays .workshop.room-label, | ||
547 | .in-calendar.onlyday1 .workshop.room-label, | ||
548 | .in-calendar.onlyday2 .workshop.room-label, | ||
549 | .in-calendar.onlyday3 .workshop.room-label, | ||
550 | .in-calendar.onlyday4 .workshop.room-label | ||
551 | { | ||
552 | visibility: hidden; | ||
553 | display: none; | ||
554 | } | ||
555 | |||
556 | /* Events in list that have a date set, will be marked */ | ||
557 | .fullnarp.in-list .event.day_1, | ||
558 | .fullnarp.in-list .event.day_2, | ||
559 | .fullnarp.in-list .event.day_3, | ||
560 | .fullnarp.in-list .event.day_4 { | ||
561 | background-color: blue; | ||
562 | color: white; | ||
563 | } | ||
564 | |||
565 | .title { | ||
566 | font-weight: bold; | ||
567 | font-size: 1.1em; | ||
568 | padding: 0.2em 0.2em 0 0.2em; | ||
569 | background-color: initial; | ||
570 | } | ||
571 | |||
572 | .speakers { | ||
573 | font-style: italic; | ||
574 | padding: 0.2em 0.2em 0.2em 0.4em; | ||
575 | } | ||
576 | |||
577 | .abstract { | ||
578 | padding: 0 0.2em 0.2em 0.2em; | ||
579 | border-radius: 0 0 5px 5px; | ||
580 | } | ||
581 | |||
582 | .title:hover, | ||
583 | .abstract:hover, | ||
584 | .speakers:hover, | ||
585 | .event:hover .speakers, | ||
586 | .event:hover .abstract, | ||
587 | .event:hover .title, | ||
588 | .speakers:hover + .abstract, | ||
589 | .title:hover + .speakers + .abstract { | ||
590 | background: initial; | ||
591 | background-color: inherit; | ||
592 | } | ||
593 | |||
594 | .selected:hover, | ||
595 | .friend:hover { | ||
596 | background: lime !important; | ||
597 | color: black !important; | ||
598 | } | ||
599 | |||
600 | /* Halfnarp results */ | ||
601 | .event .absval { | ||
602 | display: none; | ||
603 | } | ||
604 | |||
605 | .absolute .event .absval, | ||
606 | .correlate .event .absval { | ||
607 | visibility: visible !important; | ||
608 | display: block !important; | ||
609 | text-align: center; | ||
610 | font-size: 2em; | ||
611 | color: white; | ||
612 | background: transparent; | ||
613 | top: 0; | ||
614 | width: 100%; | ||
615 | font-weight: bold; | ||
616 | } | ||
617 | |||
618 | .languages .lang_de { background: pink !important; } | ||
619 | .languages .lang_en { background: cyan !important; } | ||
620 | .corr-hint { display: none; font-weight: bold; } | ||
621 | .correlate .corr-hint { display: initial !important; } | ||
622 | |||
623 | .has_unavailable_speaker { border-style: dashed !important; } | ||
624 | |||
625 | .in-calendar .class_2000.room6, .in-calendar .class_1000.room6, .in-calendar .class_500.room6, | ||
626 | .in-calendar .class_2000.roomg, .in-calendar .class_1000.roomg, | ||
627 | .in-calendar .class_2000.room2 { | ||
628 | background-image: | ||
629 | repeating-linear-gradient( | ||
630 | 45deg, | ||
631 | #eee, | ||
632 | #eee 20px, | ||
633 | #ddd 20px, | ||
634 | #ddd 40px /* determines size */ | ||
635 | ); | ||
636 | } | ||
637 | |||
638 | /* Events in calendar where speakers are unavailable, will be marked */ | ||
639 | .in-calendar .unavailable { | ||
640 | background-image: | ||
641 | repeating-linear-gradient( | ||
642 | 45deg, | ||
643 | black, | ||
644 | black 20px, | ||
645 | red 20px, | ||
646 | red 40px /* determines size */ | ||
647 | ) !important; | ||
648 | color: white; | ||
649 | } | ||
650 | |||
651 | /* Events in calendar where speakers are unavailable, will be marked */ | ||
652 | .in-calendar .conflict { | ||
653 | background-image: | ||
654 | repeating-linear-gradient( | ||
655 | 45deg, | ||
656 | black, | ||
657 | black 20px, | ||
658 | yellow 20px, | ||
659 | yellow 40px /* determines size */ | ||
660 | ) !important; | ||
661 | color: red; | ||
662 | } | ||
663 | |||
664 | body.in-list .corrweb { | ||
665 | display: none !important; | ||
666 | } | ||
667 | |||
668 | .r, .rr, .rrr, .rrrr, .l, .ll, .lll, .llll { | ||
669 | position: absolute; | ||
670 | border: 8px solid; | ||
671 | height: 20px; | ||
672 | pointer-events: none; | ||
673 | } | ||
674 | |||
675 | .r, .rr, .l, .ll { | ||
676 | border-bottom: none; | ||
677 | border-top-right-radius: 50% 50%; | ||
678 | border-top-left-radius: 50% 50%; | ||
679 | } | ||
680 | |||
681 | .rrr, .rrrr, .lll, .llll { | ||
682 | border-top: none; | ||
683 | border-bottom-right-radius: 50%; | ||
684 | border-bottom-left-radius: 50%; | ||
685 | } | ||
686 | |||
687 | .corr_d_0 { border-color: #f0f0f0; } | ||
688 | .corr_d_1 { border-color: #d0d0d0; } | ||
689 | .corr_d_2 { border-color: #b0b0b0; } | ||
690 | .corr_d_3 { border-color: #909090; } | ||
691 | .corr_d_4 { border-color: #707070; } | ||
692 | .corr_d_5 { border-color: #505050; } | ||
693 | .corr_d_6 { border-color: #303030; } | ||
694 | .corr_d_7 { border-color: #101010; } | ||
695 | .corr_d_8 { border-color: #000000; } | ||
696 | .corr_d_9 { border-color: #000000; } | ||
697 | .corr_d_x { border-color: #0000ff; } | ||
698 | |||
699 | .rr, .ll { margin-top: 15px; } | ||
700 | .rr.room2, .rr.room4, .ll.room2, .ll.room4 { margin-top: 25px; } | ||
701 | .rrr, .lll { margin-top: 35px; } | ||
702 | .rrr.room2, .lll.room5 { margin-top: 45px; } | ||
703 | .rrrr, .llll { margin-top: 55px; } | ||
704 | |||
705 | /* FAQ */ | ||
706 | dt { | ||
707 | font-weight: bold; | ||
708 | } | ||
709 | |||
710 | dl { | ||
711 | width: 45em; | ||
712 | margin: auto; | ||
713 | } | ||
714 | |||
715 | /* to quickly hide elements */ | ||
716 | |||
717 | .hidden { | ||
718 | visibility: hidden !important; | ||
719 | display: none !important; | ||
720 | } | ||
721 | |||
722 | .pending { | ||
723 | -webkit-box-shadow: 0px 0px 20px 5px rgba(255,255,0,1); | ||
724 | -moz-box-shadow: 0px 0px 20px 5px rgba(255,255,0,1); | ||
725 | box-shadow: 0px 0px 20px 5px rgba(255,255,0,1); | ||
726 | } | ||
727 | .pending-delete { | ||
728 | opacity: 0.25; | ||
729 | } | ||
730 | .failed { | ||
731 | -webkit-box-shadow: 0px 0px 20px 5px rgba(255,0,0,1); | ||
732 | -moz-box-shadow: 0px 0px 20px 5px rgba(255,0,0,1); | ||
733 | box-shadow: 0px 0px 20px 5px rgba(255,0,0,1); | ||
734 | } | ||
735 | |||
736 | #qrcode { | ||
737 | display: inline-block; | ||
738 | float: right; | ||
739 | cursor: pointer; | ||
740 | margin: 5px 0.8em 0; | ||
741 | padding 0; | ||
742 | border: 0; | ||
743 | width: 68px; | ||
744 | height: 68px; | ||
745 | } | ||
746 | |||
747 | .qrcode-huge #qrcode { | ||
748 | position: fixed; | ||
749 | border: white 40px solid !important; | ||
750 | display: block; | ||
751 | top: 20%; | ||
752 | left: 50%; | ||
753 | margin-left: -200px; | ||
754 | width: 400px; | ||
755 | height: 400px; | ||
756 | padding: 0; | ||
757 | } | ||
758 | |||
759 | *[draggable=true] { | ||
760 | cursor: move; | ||
761 | } | ||
762 | |||
763 | /* Boring lists */ | ||
764 | |||
765 | body.absolute .class_5000 { background: #000000 !important; color: white !important; } | ||
766 | body.absolute .class_2000 { background: #101010 !important; color: white !important; } | ||
767 | body.absolute .class_1000 { background: #404040 !important; color: white !important; } | ||
768 | body.absolute .class_500 { background: #707070 !important; color: white !important; } | ||
769 | body.absolute .class_200 { background: #a0a0a0 !important; } | ||
770 | body.absolute .class_100 { background: #c0c0c0 !important; } | ||
771 | |||
772 | body.correlate .event[corr="0"] { background: #f0f0f0 !important; color: black !important; } | ||
773 | body.correlate .event[corr="1"] { background: #d0d0d0 !important; color: black !important; } | ||
774 | body.correlate .event[corr="2"] { background: #b0b0b0 !important; color: black !important; } | ||
775 | body.correlate .event[corr="3"] { background: #909090 !important; color: black !important; } | ||
776 | body.correlate .event[corr="4"] { background: #707070 !important; color: white !important; } | ||
777 | body.correlate .event[corr="5"] { background: #505050 !important; color: white !important; } | ||
778 | body.correlate .event[corr="6"] { background: #303030 !important; color: white !important; } | ||
779 | body.correlate .event[corr="7"] { background: #101010 !important; color: white !important; } | ||
780 | body.correlate .event[corr="8"] { background: #000000 !important; color: white !important; } | ||
781 | body.correlate .event[corr="9"] { background: #000000 !important; color: white !important; } | ||
782 | body.correlate .event[corr="x"] { background: #0000ff !important; color: white !important; } | ||
783 | |||
784 | body.classifiers .event[intensity="10"] { background: #000000 !important; color: white !important; } | ||
785 | body.classifiers .event[intensity="9"] { background: #1A1A1A !important; color: white !important; } | ||
786 | body.classifiers .event[intensity="8"] { background: #333333 !important; color: white !important; } | ||
787 | body.classifiers .event[intensity="7"] { background: #4D4D4D !important; color: white !important; } | ||
788 | body.classifiers .event[intensity="6"] { background: #666666 !important; color: white !important; } | ||
789 | body.classifiers .event[intensity="5"] { background: #808080 !important; color: black !important; } | ||
790 | body.classifiers .event[intensity="4"] { background: #999999 !important; color: black !important; } | ||
791 | body.classifiers .event[intensity="3"] { background: #B3B3B3 !important; color: black !important; } | ||
792 | body.classifiers .event[intensity="2"] { background: #CCCCCC !important; color: black !important; } | ||
793 | body.classifiers .event[intensity="1"] { background: #E6E6E6 !important; color: black !important; } | ||
794 | body.classifiers .event[intensity="0"] { background: #FFFFFF !important; color: black !important; } | ||
795 | |||
796 | body.classifiers .event[intensity="+0"] { background: #FF7F00 !important; color: white !important; } | ||
797 | body.classifiers .event[intensity="+1"] { background: #E67F1A !important; color: white !important; } | ||
798 | body.classifiers .event[intensity="+2"] { background: #CC7F33 !important; color: white !important; } | ||
799 | body.classifiers .event[intensity="+3"] { background: #B37F4D !important; color: white !important; } | ||
800 | body.classifiers .event[intensity="+4"] { background: #997F66 !important; color: white !important; } | ||
801 | body.classifiers .event[intensity="+5"] { background: #807F80 !important; color: white !important; } | ||
802 | body.classifiers .event[intensity="+6"] { background: #667F99 !important; color: white !important; } | ||
803 | body.classifiers .event[intensity="+7"] { background: #4D7FB3 !important; color: white !important; } | ||
804 | body.classifiers .event[intensity="+8"] { background: #337FCC !important; color: white !important; } | ||
805 | body.classifiers .event[intensity="+9"] { background: #1A7FE6 !important; color: white !important; } | ||
806 | body.classifiers .event[intensity="+10"] { background: #007FFF !important; color: white !important; } | ||
807 | |||
808 | body.classifiers .legend, | ||
809 | body.classifiers .vclass | ||
810 | { background: grey !important; border-color: grey; } | ||
811 | |||
812 | body.classifiers[classifier="Ethics, Politics + Society"] .vclass[classifier="Ethics, Politics + Society"], | ||
813 | body.classifiers[classifier="Entertainment"] .vclass[classifier="Entertainment"], | ||
814 | body.classifiers[classifier="Art + Culture"] .vclass[classifier="Art + Culture"], | ||
815 | body.classifiers[classifier="Security"] .vclass[classifier="Security"], | ||
816 | body.classifiers[classifier="Resilience"] .vclass[classifier="Resilience"], | ||
817 | body.classifiers[classifier="Science"] .vclass[classifier="Science"], | ||
818 | body.classifiers[classifier="Hardware"] .vclass[classifier="Hardware"], | ||
819 | body.classifiers[classifier="Foundations"] .vclass[classifier="Foundations"] | ||
820 | { background-color: red !important; border-color: red; } | ||
821 | |||
822 | body.classifiers[classifier="Defense - Offense"] .vclass[classifier="Defense - Offense"], | ||
823 | body.classifiers[classifier="Theory - Practice"] .vclass[classifier="Theory - Practice"], | ||
824 | body.classifiers[classifier="Novelty"] .vclass[classifier="Novelty"] | ||
825 | { | ||
826 | background: linear-gradient(left, #ff7f00, #007fff) !important; | ||
827 | background: -webkit-linear-gradient(left, #ff7f00, #007fff) !important; | ||
828 | background: -o-linear-gradient(left, #ff7f00, #007fff) !important; | ||
829 | background: -moz-linear-gradient(left, #ff7f00, #007fff) !important; | ||
830 | border: red 2px solid; | ||
831 | } | ||
832 | |||
833 | .in-calendar.size-large.alldays .event { font-size: 0.8em; } | ||
834 | .in-calendar.size-medium.alldays .event { font-size: 0.6em; } | ||
835 | .in-calendar.size-medium .event { font-size: 0.9em; } | ||
836 | .in-calendar.size-small.alldays .event { font-size: 0.4em; } | ||
837 | .in-calendar.size-small .event { font-size: 0.8em; } | ||
838 | |||
839 | .size-medium .event { font-size: 1.2em; } | ||
840 | .size-large .event { font-size: 1.5em; } | ||
841 | .in-list.size-small .event { width: 10em; } | ||
842 | .in-list.size-medium .event { width: 12em; } | ||
843 | .in-list.size-large .event { width: 14em; } | ||
844 | |||
845 | .halfnarp.size-small.in-list .event { min-height: 10em; max-height: 10em; } | ||
846 | .halfnarp.size-medium.in-list .event { min-height: 12em; max-height: 12em; } | ||
847 | .halfnarp.size-large.in-list .event { min-height: 14em; max-height: 14em; } | ||
848 | |||
849 | .track_1 { border: 2px solid #b99745; } /* A&C */ | ||
850 | .track_2 { border: 2px solid #45b964; } /* CCC */ | ||
851 | .track_3 { border: 2px solid #45b964; } /* Entertainment */ | ||
852 | .track_4 { border: 2px solid #a8563f; } /* Hardware */ | ||
853 | .track_5 { border: 2px solid #45b9b3; } /* Science */ | ||
854 | .track_6 { border: 2px solid #5057af; } /* Security */ | ||
855 | .track_7 { border: 2px solid #b550bd; } /* ESP */ | ||
856 | |||
857 | .all-tracks .track_1 { background-color: #F9B000 !important; background-image: none !important; color: black; } /* A&C */ | ||
858 | .all-tracks .track_2 { background-color: #4d4d4c !important; background-image: none !important; } /* CCC */ | ||
859 | .all-tracks .track_3 { background-color: #4d4d4c !important; background-image: none !important; } /* Entertainment */ | ||
860 | .all-tracks .track_4 { background-color: #44357E !important; background-image: none !important; } /* Hardware */ | ||
861 | .all-tracks .track_5 { background-color: #00A356 !important; background-image: none !important; } /* Science */ | ||
862 | .all-tracks .track_6 { background-color: #18386B !important; background-image: none !important; color: white; } /* Security */ | ||
863 | .all-tracks .track_7 { background-color: #E40429 !important; background-image: none !important; } /* ESP */ | ||
864 | |||
865 | .vclass, | ||
866 | .legend, | ||
867 | .two_poles { | ||
868 | display: inline-block; | ||
869 | border-radius: 5px; | ||
870 | color: white; | ||
871 | margin-left: 1em; | ||
872 | margin-bottom: 0.2em; | ||
873 | padding: 0.3em; | ||
874 | } | ||
875 | .vclass { | ||
876 | background: orange; | ||
877 | cursor: pointer; | ||
878 | } | ||
879 | .two_poles { | ||
880 | border: solid white 2px; | ||
881 | background: linear-gradient(left, #ff7f00, #007fff); | ||
882 | background: -webkit-linear-gradient(left, #ff7f00, #007fff); | ||
883 | background: -o-linear-gradient(left, #ff7f00, #007fff); | ||
884 | background: -moz-linear-gradient(left, #ff7f00, #007fff); | ||
885 | } | ||
886 | .vclass:hover { | ||
887 | background: grey !important; | ||
888 | border-color: grey; | ||
889 | } | ||
890 | |||
891 | .in-calendar .event:hover, | ||
892 | .highlighted { | ||
893 | max-height: initial !important; | ||
894 | /* overflow: visible; */ | ||
895 | z-index: 1; | ||
896 | background: #333; | ||
897 | color: white; | ||
898 | } | ||
899 | |||
900 | .in-calendar.in-drag .event.is-dragged, | ||
901 | .in-calendar.in-drag .highlighted { | ||
902 | max-height: 10px !important; | ||
903 | height: 10px !important; | ||
904 | overflow: hidden !important; | ||
905 | opacity: 0.5; | ||
906 | pointer-events: none; | ||
907 | } | ||
908 | |||
909 | .in-list .event:hover, | ||
910 | .highlighted { | ||
911 | overflow: visible; | ||
912 | z-index: 1; | ||
913 | background: #333; | ||
914 | color: white; | ||
915 | } | ||
916 | |||
917 | .footer{ | ||
918 | position: fixed; | ||
919 | background-color: #c3c3c3; | ||
920 | min-width: 640px; | ||
921 | width: 100%; | ||
922 | bottom: 0; | ||
923 | left:0; | ||
924 | right: 0; | ||
925 | } | ||
926 | |||
927 | .header{ | ||
928 | width: 100%; | ||
929 | display: block; | ||
930 | } | ||
931 | |||
932 | .header__right{ | ||
933 | float: right; | ||
934 | } | ||
935 | |||
936 | label{ | ||
937 | display: block; | ||
938 | line-height: 1.5em; | ||
939 | padding: 1em; | ||
940 | padding-bottom: 0; | ||
941 | font-size: 0.75em; | ||
942 | } | ||
943 | |||
944 | .footer__filter-side{ | ||
945 | float: left; | ||
946 | } | ||
947 | |||
948 | a{ | ||
949 | color: #000; | ||
950 | } | ||
diff --git a/static/style_38c3_tables.css b/static/style_38c3_tables.css new file mode 100644 index 0000000..1588f2c --- /dev/null +++ b/static/style_38c3_tables.css | |||
@@ -0,0 +1,1048 @@ | |||
1 | .size-large .time_1000 { top: 400px; } | ||
2 | .size-large .time_1005 { top: 425.0px; } | ||
3 | .size-large .time_1010 { top: 450.0px; } | ||
4 | .size-large .time_1015 { top: 475.0px; } | ||
5 | .size-large .time_1020 { top: 500.0px; } | ||
6 | .size-large .time_1025 { top: 525.0px; } | ||
7 | .size-large .time_1030 { top: 550.0px; } | ||
8 | .size-large .time_1035 { top: 575.0px; } | ||
9 | .size-large .time_1040 { top: 600.0px; } | ||
10 | .size-large .time_1045 { top: 625.0px; } | ||
11 | .size-large .time_1050 { top: 650.0px; } | ||
12 | .size-large .time_1055 { top: 675.0px; } | ||
13 | .size-large .time_1100 { top: 700.0px; } | ||
14 | .size-large .time_1105 { top: 725.0px; } | ||
15 | .size-large .time_1110 { top: 750.0px; } | ||
16 | .size-large .time_1115 { top: 775.0px; } | ||
17 | .size-large .time_1120 { top: 800.0px; } | ||
18 | .size-large .time_1125 { top: 825.0px; } | ||
19 | .size-large .time_1130 { top: 850.0px; } | ||
20 | .size-large .time_1135 { top: 875.0px; } | ||
21 | .size-large .time_1140 { top: 900.0px; } | ||
22 | .size-large .time_1145 { top: 925.0px; } | ||
23 | .size-large .time_1150 { top: 950.0px; } | ||
24 | .size-large .time_1155 { top: 975.0px; } | ||
25 | .size-large .time_1200 { top: 1000.0px; } | ||
26 | .size-large .time_1205 { top: 1025.0px; } | ||
27 | .size-large .time_1210 { top: 1050.0px; } | ||
28 | .size-large .time_1215 { top: 1075.0px; } | ||
29 | .size-large .time_1220 { top: 1100.0px; } | ||
30 | .size-large .time_1225 { top: 1125.0px; } | ||
31 | .size-large .time_1230 { top: 1150.0px; } | ||
32 | .size-large .time_1235 { top: 1175.0px; } | ||
33 | .size-large .time_1240 { top: 1200.0px; } | ||
34 | .size-large .time_1245 { top: 1225.0px; } | ||
35 | .size-large .time_1250 { top: 1250.0px; } | ||
36 | .size-large .time_1255 { top: 1275.0px; } | ||
37 | .size-large .time_1300 { top: 1300.0px; } | ||
38 | .size-large .time_1305 { top: 1325.0px; } | ||
39 | .size-large .time_1310 { top: 1350.0px; } | ||
40 | .size-large .time_1315 { top: 1375.0px; } | ||
41 | .size-large .time_1320 { top: 1400.0px; } | ||
42 | .size-large .time_1325 { top: 1425.0px; } | ||
43 | .size-large .time_1330 { top: 1450.0px; } | ||
44 | .size-large .time_1335 { top: 1475.0px; } | ||
45 | .size-large .time_1340 { top: 1500.0px; } | ||
46 | .size-large .time_1345 { top: 1525.0px; } | ||
47 | .size-large .time_1350 { top: 1550.0px; } | ||
48 | .size-large .time_1355 { top: 1575.0px; } | ||
49 | .size-large .time_1400 { top: 1600.0px; } | ||
50 | .size-large .time_1405 { top: 1625.0px; } | ||
51 | .size-large .time_1410 { top: 1650.0px; } | ||
52 | .size-large .time_1415 { top: 1675.0px; } | ||
53 | .size-large .time_1420 { top: 1700.0px; } | ||
54 | .size-large .time_1425 { top: 1725.0px; } | ||
55 | .size-large .time_1430 { top: 1750.0px; } | ||
56 | .size-large .time_1435 { top: 1775.0px; } | ||
57 | .size-large .time_1440 { top: 1800.0px; } | ||
58 | .size-large .time_1445 { top: 1825.0px; } | ||
59 | .size-large .time_1450 { top: 1850.0px; } | ||
60 | .size-large .time_1455 { top: 1875.0px; } | ||
61 | .size-large .time_1500 { top: 1900.0px; } | ||
62 | .size-large .time_1505 { top: 1925.0px; } | ||
63 | .size-large .time_1510 { top: 1950.0px; } | ||
64 | .size-large .time_1515 { top: 1975.0px; } | ||
65 | .size-large .time_1520 { top: 2000.0px; } | ||
66 | .size-large .time_1525 { top: 2025.0px; } | ||
67 | .size-large .time_1530 { top: 2050.0px; } | ||
68 | .size-large .time_1535 { top: 2075.0px; } | ||
69 | .size-large .time_1540 { top: 2100.0px; } | ||
70 | .size-large .time_1545 { top: 2125.0px; } | ||
71 | .size-large .time_1550 { top: 2150.0px; } | ||
72 | .size-large .time_1555 { top: 2175.0px; } | ||
73 | .size-large .time_1600 { top: 2200.0px; } | ||
74 | .size-large .time_1605 { top: 2225.0px; } | ||
75 | .size-large .time_1610 { top: 2250.0px; } | ||
76 | .size-large .time_1615 { top: 2275.0px; } | ||
77 | .size-large .time_1620 { top: 2300.0px; } | ||
78 | .size-large .time_1625 { top: 2325.0px; } | ||
79 | .size-large .time_1630 { top: 2350.0px; } | ||
80 | .size-large .time_1635 { top: 2375.0px; } | ||
81 | .size-large .time_1640 { top: 2400.0px; } | ||
82 | .size-large .time_1645 { top: 2425.0px; } | ||
83 | .size-large .time_1650 { top: 2450.0px; } | ||
84 | .size-large .time_1655 { top: 2475.0px; } | ||
85 | .size-large .time_1700 { top: 2500.0px; } | ||
86 | .size-large .time_1705 { top: 2525.0px; } | ||
87 | .size-large .time_1710 { top: 2550.0px; } | ||
88 | .size-large .time_1715 { top: 2575.0px; } | ||
89 | .size-large .time_1720 { top: 2600.0px; } | ||
90 | .size-large .time_1725 { top: 2625.0px; } | ||
91 | .size-large .time_1730 { top: 2650.0px; } | ||
92 | .size-large .time_1735 { top: 2675.0px; } | ||
93 | .size-large .time_1740 { top: 2700.0px; } | ||
94 | .size-large .time_1745 { top: 2725.0px; } | ||
95 | .size-large .time_1750 { top: 2750.0px; } | ||
96 | .size-large .time_1755 { top: 2775.0px; } | ||
97 | .size-large .time_1800 { top: 2800.0px; } | ||
98 | .size-large .time_1805 { top: 2825.0px; } | ||
99 | .size-large .time_1810 { top: 2850.0px; } | ||
100 | .size-large .time_1815 { top: 2875.0px; } | ||
101 | .size-large .time_1820 { top: 2900.0px; } | ||
102 | .size-large .time_1825 { top: 2925.0px; } | ||
103 | .size-large .time_1830 { top: 2950.0px; } | ||
104 | .size-large .time_1835 { top: 2975.0px; } | ||
105 | .size-large .time_1840 { top: 3000.0px; } | ||
106 | .size-large .time_1845 { top: 3025.0px; } | ||
107 | .size-large .time_1850 { top: 3050.0px; } | ||
108 | .size-large .time_1855 { top: 3075.0px; } | ||
109 | .size-large .time_1900 { top: 3100.0px; } | ||
110 | .size-large .time_1905 { top: 3125.0px; } | ||
111 | .size-large .time_1910 { top: 3150.0px; } | ||
112 | .size-large .time_1915 { top: 3175.0px; } | ||
113 | .size-large .time_1920 { top: 3200.0px; } | ||
114 | .size-large .time_1925 { top: 3225.0px; } | ||
115 | .size-large .time_1930 { top: 3250.0px; } | ||
116 | .size-large .time_1935 { top: 3275.0px; } | ||
117 | .size-large .time_1940 { top: 3300.0px; } | ||
118 | .size-large .time_1945 { top: 3325.0px; } | ||
119 | .size-large .time_1950 { top: 3350.0px; } | ||
120 | .size-large .time_1955 { top: 3375.0px; } | ||
121 | .size-large .time_2000 { top: 3400.0px; } | ||
122 | .size-large .time_2005 { top: 3425.0px; } | ||
123 | .size-large .time_2010 { top: 3450.0px; } | ||
124 | .size-large .time_2015 { top: 3475.0px; } | ||
125 | .size-large .time_2020 { top: 3500.0px; } | ||
126 | .size-large .time_2025 { top: 3525.0px; } | ||
127 | .size-large .time_2030 { top: 3550.0px; } | ||
128 | .size-large .time_2035 { top: 3575.0px; } | ||
129 | .size-large .time_2040 { top: 3600.0px; } | ||
130 | .size-large .time_2045 { top: 3625.0px; } | ||
131 | .size-large .time_2050 { top: 3650.0px; } | ||
132 | .size-large .time_2055 { top: 3675.0px; } | ||
133 | .size-large .time_2100 { top: 3700.0px; } | ||
134 | .size-large .time_2105 { top: 3725.0px; } | ||
135 | .size-large .time_2110 { top: 3750.0px; } | ||
136 | .size-large .time_2115 { top: 3775.0px; } | ||
137 | .size-large .time_2120 { top: 3800.0px; } | ||
138 | .size-large .time_2125 { top: 3825.0px; } | ||
139 | .size-large .time_2130 { top: 3850.0px; } | ||
140 | .size-large .time_2135 { top: 3875.0px; } | ||
141 | .size-large .time_2140 { top: 3900.0px; } | ||
142 | .size-large .time_2145 { top: 3925.0px; } | ||
143 | .size-large .time_2150 { top: 3950.0px; } | ||
144 | .size-large .time_2155 { top: 3975.0px; } | ||
145 | .size-large .time_2200 { top: 4000.0px; } | ||
146 | .size-large .time_2205 { top: 4025.0px; } | ||
147 | .size-large .time_2210 { top: 4050.0px; } | ||
148 | .size-large .time_2215 { top: 4075.0px; } | ||
149 | .size-large .time_2220 { top: 4100.0px; } | ||
150 | .size-large .time_2225 { top: 4125.0px; } | ||
151 | .size-large .time_2230 { top: 4150.0px; } | ||
152 | .size-large .time_2235 { top: 4175.0px; } | ||
153 | .size-large .time_2240 { top: 4200.0px; } | ||
154 | .size-large .time_2245 { top: 4225.0px; } | ||
155 | .size-large .time_2250 { top: 4250.0px; } | ||
156 | .size-large .time_2255 { top: 4275.0px; } | ||
157 | .size-large .time_2300 { top: 4300.0px; } | ||
158 | .size-large .time_2305 { top: 4325.0px; } | ||
159 | .size-large .time_2310 { top: 4350.0px; } | ||
160 | .size-large .time_2315 { top: 4375.0px; } | ||
161 | .size-large .time_2320 { top: 4400.0px; } | ||
162 | .size-large .time_2325 { top: 4425.0px; } | ||
163 | .size-large .time_2330 { top: 4450.0px; } | ||
164 | .size-large .time_2335 { top: 4475.0px; } | ||
165 | .size-large .time_2340 { top: 4500.0px; } | ||
166 | .size-large .time_2345 { top: 4525.0px; } | ||
167 | .size-large .time_2350 { top: 4550.0px; } | ||
168 | .size-large .time_2355 { top: 4575.0px; } | ||
169 | .size-large .time_0000 { top: 4600.0px; } | ||
170 | .size-large .time_0005 { top: 4625.0px; } | ||
171 | .size-large .time_0010 { top: 4650.0px; } | ||
172 | .size-large .time_0015 { top: 4675.0px; } | ||
173 | .size-large .time_0020 { top: 4700.0px; } | ||
174 | .size-large .time_0025 { top: 4725.0px; } | ||
175 | .size-large .time_0030 { top: 4750.0px; } | ||
176 | .size-large .time_0035 { top: 4775.0px; } | ||
177 | .size-large .time_0040 { top: 4800.0px; } | ||
178 | .size-large .time_0045 { top: 4825.0px; } | ||
179 | .size-large .time_0050 { top: 4850.0px; } | ||
180 | .size-large .time_0055 { top: 4875.0px; } | ||
181 | .size-large .time_0100 { top: 4900.0px; } | ||
182 | .size-large .time_0105 { top: 4925.0px; } | ||
183 | .size-large .time_0110 { top: 4950.0px; } | ||
184 | .size-large .time_0115 { top: 4975.0px; } | ||
185 | .size-large .time_0120 { top: 5000.0px; } | ||
186 | .size-large .time_0125 { top: 5025.0px; } | ||
187 | .size-large .time_0130 { top: 5050.0px; } | ||
188 | .size-large .time_0135 { top: 5075.0px; } | ||
189 | .size-large .time_0140 { top: 5100.0px; } | ||
190 | .size-large .time_0145 { top: 5125.0px; } | ||
191 | .size-large .time_0150 { top: 5150.0px; } | ||
192 | .size-large .time_0155 { top: 5175.0px; } | ||
193 | .size-large .time_0200 { top: 5200.0px; } | ||
194 | .size-large .time_0205 { top: 5225.0px; } | ||
195 | .size-large .time_0210 { top: 5250.0px; } | ||
196 | .size-large .time_0215 { top: 5275.0px; } | ||
197 | .size-large .time_0220 { top: 5300.0px; } | ||
198 | .size-large .time_0225 { top: 5325.0px; } | ||
199 | .size-large .time_0230 { top: 5350.0px; } | ||
200 | .size-large .time_0235 { top: 5375.0px; } | ||
201 | .size-large .time_0240 { top: 5400.0px; } | ||
202 | .size-large .time_0245 { top: 5425.0px; } | ||
203 | .size-large .time_0250 { top: 5450.0px; } | ||
204 | .size-large .time_0255 { top: 5475.0px; } | ||
205 | .size-large .time_0300 { top: 5500.0px; } | ||
206 | .size-large .time_0305 { top: 5525.0px; } | ||
207 | .size-large .time_0310 { top: 5550.0px; } | ||
208 | .size-large .time_0315 { top: 5575.0px; } | ||
209 | .size-large .time_0320 { top: 5600.0px; } | ||
210 | .size-large .time_0325 { top: 5625.0px; } | ||
211 | .size-large .time_0330 { top: 5650.0px; } | ||
212 | .size-large .time_0335 { top: 5675.0px; } | ||
213 | .size-large .time_0340 { top: 5700.0px; } | ||
214 | .size-large .time_0345 { top: 5725.0px; } | ||
215 | .size-large .time_0350 { top: 5750.0px; } | ||
216 | .size-large .time_0355 { top: 5775.0px; } | ||
217 | .size-medium .time_1000 { top: 400px; } | ||
218 | .size-medium .time_1005 { top: 413.3333333333333px; } | ||
219 | .size-medium .time_1010 { top: 426.66666666666663px; } | ||
220 | .size-medium .time_1015 { top: 439.99999999999994px; } | ||
221 | .size-medium .time_1020 { top: 453.33333333333326px; } | ||
222 | .size-medium .time_1025 { top: 466.6666666666666px; } | ||
223 | .size-medium .time_1030 { top: 479.9999999999999px; } | ||
224 | .size-medium .time_1035 { top: 493.3333333333332px; } | ||
225 | .size-medium .time_1040 { top: 506.6666666666665px; } | ||
226 | .size-medium .time_1045 { top: 519.9999999999999px; } | ||
227 | .size-medium .time_1050 { top: 533.3333333333333px; } | ||
228 | .size-medium .time_1055 { top: 546.6666666666666px; } | ||
229 | .size-medium .time_1100 { top: 560.0px; } | ||
230 | .size-medium .time_1105 { top: 573.3333333333334px; } | ||
231 | .size-medium .time_1110 { top: 586.6666666666667px; } | ||
232 | .size-medium .time_1115 { top: 600.0000000000001px; } | ||
233 | .size-medium .time_1120 { top: 613.3333333333335px; } | ||
234 | .size-medium .time_1125 { top: 626.6666666666669px; } | ||
235 | .size-medium .time_1130 { top: 640.0000000000002px; } | ||
236 | .size-medium .time_1135 { top: 653.3333333333336px; } | ||
237 | .size-medium .time_1140 { top: 666.666666666667px; } | ||
238 | .size-medium .time_1145 { top: 680.0000000000003px; } | ||
239 | .size-medium .time_1150 { top: 693.3333333333337px; } | ||
240 | .size-medium .time_1155 { top: 706.6666666666671px; } | ||
241 | .size-medium .time_1200 { top: 720.0000000000005px; } | ||
242 | .size-medium .time_1205 { top: 733.3333333333338px; } | ||
243 | .size-medium .time_1210 { top: 746.6666666666672px; } | ||
244 | .size-medium .time_1215 { top: 760.0000000000006px; } | ||
245 | .size-medium .time_1220 { top: 773.3333333333339px; } | ||
246 | .size-medium .time_1225 { top: 786.6666666666673px; } | ||
247 | .size-medium .time_1230 { top: 800.0000000000007px; } | ||
248 | .size-medium .time_1235 { top: 813.333333333334px; } | ||
249 | .size-medium .time_1240 { top: 826.6666666666674px; } | ||
250 | .size-medium .time_1245 { top: 840.0000000000008px; } | ||
251 | .size-medium .time_1250 { top: 853.3333333333342px; } | ||
252 | .size-medium .time_1255 { top: 866.6666666666675px; } | ||
253 | .size-medium .time_1300 { top: 880.0000000000009px; } | ||
254 | .size-medium .time_1305 { top: 893.3333333333343px; } | ||
255 | .size-medium .time_1310 { top: 906.6666666666677px; } | ||
256 | .size-medium .time_1315 { top: 920.000000000001px; } | ||
257 | .size-medium .time_1320 { top: 933.3333333333344px; } | ||
258 | .size-medium .time_1325 { top: 946.6666666666678px; } | ||
259 | .size-medium .time_1330 { top: 960.0000000000011px; } | ||
260 | .size-medium .time_1335 { top: 973.3333333333345px; } | ||
261 | .size-medium .time_1340 { top: 986.6666666666679px; } | ||
262 | .size-medium .time_1345 { top: 1000.0000000000013px; } | ||
263 | .size-medium .time_1350 { top: 1013.3333333333346px; } | ||
264 | .size-medium .time_1355 { top: 1026.6666666666679px; } | ||
265 | .size-medium .time_1400 { top: 1040.0000000000011px; } | ||
266 | .size-medium .time_1405 { top: 1053.3333333333344px; } | ||
267 | .size-medium .time_1410 { top: 1066.6666666666677px; } | ||
268 | .size-medium .time_1415 { top: 1080.000000000001px; } | ||
269 | .size-medium .time_1420 { top: 1093.3333333333342px; } | ||
270 | .size-medium .time_1425 { top: 1106.6666666666674px; } | ||
271 | .size-medium .time_1430 { top: 1120.0000000000007px; } | ||
272 | .size-medium .time_1435 { top: 1133.333333333334px; } | ||
273 | .size-medium .time_1440 { top: 1146.6666666666672px; } | ||
274 | .size-medium .time_1445 { top: 1160.0000000000005px; } | ||
275 | .size-medium .time_1450 { top: 1173.3333333333337px; } | ||
276 | .size-medium .time_1455 { top: 1186.666666666667px; } | ||
277 | .size-medium .time_1500 { top: 1200.0000000000002px; } | ||
278 | .size-medium .time_1505 { top: 1213.3333333333335px; } | ||
279 | .size-medium .time_1510 { top: 1226.6666666666667px; } | ||
280 | .size-medium .time_1515 { top: 1240.0px; } | ||
281 | .size-medium .time_1520 { top: 1253.3333333333333px; } | ||
282 | .size-medium .time_1525 { top: 1266.6666666666665px; } | ||
283 | .size-medium .time_1530 { top: 1279.9999999999998px; } | ||
284 | .size-medium .time_1535 { top: 1293.333333333333px; } | ||
285 | .size-medium .time_1540 { top: 1306.6666666666663px; } | ||
286 | .size-medium .time_1545 { top: 1319.9999999999995px; } | ||
287 | .size-medium .time_1550 { top: 1333.3333333333328px; } | ||
288 | .size-medium .time_1555 { top: 1346.666666666666px; } | ||
289 | .size-medium .time_1600 { top: 1359.9999999999993px; } | ||
290 | .size-medium .time_1605 { top: 1373.3333333333326px; } | ||
291 | .size-medium .time_1610 { top: 1386.6666666666658px; } | ||
292 | .size-medium .time_1615 { top: 1399.999999999999px; } | ||
293 | .size-medium .time_1620 { top: 1413.3333333333323px; } | ||
294 | .size-medium .time_1625 { top: 1426.6666666666656px; } | ||
295 | .size-medium .time_1630 { top: 1439.9999999999989px; } | ||
296 | .size-medium .time_1635 { top: 1453.3333333333321px; } | ||
297 | .size-medium .time_1640 { top: 1466.6666666666654px; } | ||
298 | .size-medium .time_1645 { top: 1479.9999999999986px; } | ||
299 | .size-medium .time_1650 { top: 1493.333333333332px; } | ||
300 | .size-medium .time_1655 { top: 1506.6666666666652px; } | ||
301 | .size-medium .time_1700 { top: 1519.9999999999984px; } | ||
302 | .size-medium .time_1705 { top: 1533.3333333333317px; } | ||
303 | .size-medium .time_1710 { top: 1546.666666666665px; } | ||
304 | .size-medium .time_1715 { top: 1559.9999999999982px; } | ||
305 | .size-medium .time_1720 { top: 1573.3333333333314px; } | ||
306 | .size-medium .time_1725 { top: 1586.6666666666647px; } | ||
307 | .size-medium .time_1730 { top: 1599.999999999998px; } | ||
308 | .size-medium .time_1735 { top: 1613.3333333333312px; } | ||
309 | .size-medium .time_1740 { top: 1626.6666666666645px; } | ||
310 | .size-medium .time_1745 { top: 1639.9999999999977px; } | ||
311 | .size-medium .time_1750 { top: 1653.333333333331px; } | ||
312 | .size-medium .time_1755 { top: 1666.6666666666642px; } | ||
313 | .size-medium .time_1800 { top: 1679.9999999999975px; } | ||
314 | .size-medium .time_1805 { top: 1693.3333333333308px; } | ||
315 | .size-medium .time_1810 { top: 1706.666666666664px; } | ||
316 | .size-medium .time_1815 { top: 1719.9999999999973px; } | ||
317 | .size-medium .time_1820 { top: 1733.3333333333305px; } | ||
318 | .size-medium .time_1825 { top: 1746.6666666666638px; } | ||
319 | .size-medium .time_1830 { top: 1759.999999999997px; } | ||
320 | .size-medium .time_1835 { top: 1773.3333333333303px; } | ||
321 | .size-medium .time_1840 { top: 1786.6666666666636px; } | ||
322 | .size-medium .time_1845 { top: 1799.9999999999968px; } | ||
323 | .size-medium .time_1850 { top: 1813.33333333333px; } | ||
324 | .size-medium .time_1855 { top: 1826.6666666666633px; } | ||
325 | .size-medium .time_1900 { top: 1839.9999999999966px; } | ||
326 | .size-medium .time_1905 { top: 1853.3333333333298px; } | ||
327 | .size-medium .time_1910 { top: 1866.666666666663px; } | ||
328 | .size-medium .time_1915 { top: 1879.9999999999964px; } | ||
329 | .size-medium .time_1920 { top: 1893.3333333333296px; } | ||
330 | .size-medium .time_1925 { top: 1906.6666666666629px; } | ||
331 | .size-medium .time_1930 { top: 1919.9999999999961px; } | ||
332 | .size-medium .time_1935 { top: 1933.3333333333294px; } | ||
333 | .size-medium .time_1940 { top: 1946.6666666666626px; } | ||
334 | .size-medium .time_1945 { top: 1959.999999999996px; } | ||
335 | .size-medium .time_1950 { top: 1973.3333333333292px; } | ||
336 | .size-medium .time_1955 { top: 1986.6666666666624px; } | ||
337 | .size-medium .time_2000 { top: 1999.9999999999957px; } | ||
338 | .size-medium .time_2005 { top: 2013.333333333329px; } | ||
339 | .size-medium .time_2010 { top: 2026.6666666666622px; } | ||
340 | .size-medium .time_2015 { top: 2039.9999999999955px; } | ||
341 | .size-medium .time_2020 { top: 2053.333333333329px; } | ||
342 | .size-medium .time_2025 { top: 2066.6666666666624px; } | ||
343 | .size-medium .time_2030 { top: 2079.999999999996px; } | ||
344 | .size-medium .time_2035 { top: 2093.3333333333294px; } | ||
345 | .size-medium .time_2040 { top: 2106.666666666663px; } | ||
346 | .size-medium .time_2045 { top: 2119.9999999999964px; } | ||
347 | .size-medium .time_2050 { top: 2133.33333333333px; } | ||
348 | .size-medium .time_2055 { top: 2146.6666666666633px; } | ||
349 | .size-medium .time_2100 { top: 2159.999999999997px; } | ||
350 | .size-medium .time_2105 { top: 2173.3333333333303px; } | ||
351 | .size-medium .time_2110 { top: 2186.666666666664px; } | ||
352 | .size-medium .time_2115 { top: 2199.9999999999973px; } | ||
353 | .size-medium .time_2120 { top: 2213.3333333333308px; } | ||
354 | .size-medium .time_2125 { top: 2226.6666666666642px; } | ||
355 | .size-medium .time_2130 { top: 2239.9999999999977px; } | ||
356 | .size-medium .time_2135 { top: 2253.333333333331px; } | ||
357 | .size-medium .time_2140 { top: 2266.6666666666647px; } | ||
358 | .size-medium .time_2145 { top: 2279.999999999998px; } | ||
359 | .size-medium .time_2150 { top: 2293.3333333333317px; } | ||
360 | .size-medium .time_2155 { top: 2306.666666666665px; } | ||
361 | .size-medium .time_2200 { top: 2319.9999999999986px; } | ||
362 | .size-medium .time_2205 { top: 2333.333333333332px; } | ||
363 | .size-medium .time_2210 { top: 2346.6666666666656px; } | ||
364 | .size-medium .time_2215 { top: 2359.999999999999px; } | ||
365 | .size-medium .time_2220 { top: 2373.3333333333326px; } | ||
366 | .size-medium .time_2225 { top: 2386.666666666666px; } | ||
367 | .size-medium .time_2230 { top: 2399.9999999999995px; } | ||
368 | .size-medium .time_2235 { top: 2413.333333333333px; } | ||
369 | .size-medium .time_2240 { top: 2426.6666666666665px; } | ||
370 | .size-medium .time_2245 { top: 2440.0px; } | ||
371 | .size-medium .time_2250 { top: 2453.3333333333335px; } | ||
372 | .size-medium .time_2255 { top: 2466.666666666667px; } | ||
373 | .size-medium .time_2300 { top: 2480.0000000000005px; } | ||
374 | .size-medium .time_2305 { top: 2493.333333333334px; } | ||
375 | .size-medium .time_2310 { top: 2506.6666666666674px; } | ||
376 | .size-medium .time_2315 { top: 2520.000000000001px; } | ||
377 | .size-medium .time_2320 { top: 2533.3333333333344px; } | ||
378 | .size-medium .time_2325 { top: 2546.666666666668px; } | ||
379 | .size-medium .time_2330 { top: 2560.0000000000014px; } | ||
380 | .size-medium .time_2335 { top: 2573.333333333335px; } | ||
381 | .size-medium .time_2340 { top: 2586.6666666666683px; } | ||
382 | .size-medium .time_2345 { top: 2600.000000000002px; } | ||
383 | .size-medium .time_2350 { top: 2613.3333333333353px; } | ||
384 | .size-medium .time_2355 { top: 2626.666666666669px; } | ||
385 | .size-medium .time_0000 { top: 2640.0000000000023px; } | ||
386 | .size-medium .time_0005 { top: 2653.3333333333358px; } | ||
387 | .size-medium .time_0010 { top: 2666.6666666666692px; } | ||
388 | .size-medium .time_0015 { top: 2680.0000000000027px; } | ||
389 | .size-medium .time_0020 { top: 2693.333333333336px; } | ||
390 | .size-medium .time_0025 { top: 2706.6666666666697px; } | ||
391 | .size-medium .time_0030 { top: 2720.000000000003px; } | ||
392 | .size-medium .time_0035 { top: 2733.3333333333367px; } | ||
393 | .size-medium .time_0040 { top: 2746.66666666667px; } | ||
394 | .size-medium .time_0045 { top: 2760.0000000000036px; } | ||
395 | .size-medium .time_0050 { top: 2773.333333333337px; } | ||
396 | .size-medium .time_0055 { top: 2786.6666666666706px; } | ||
397 | .size-medium .time_0100 { top: 2800.000000000004px; } | ||
398 | .size-medium .time_0105 { top: 2813.3333333333376px; } | ||
399 | .size-medium .time_0110 { top: 2826.666666666671px; } | ||
400 | .size-medium .time_0115 { top: 2840.0000000000045px; } | ||
401 | .size-medium .time_0120 { top: 2853.333333333338px; } | ||
402 | .size-medium .time_0125 { top: 2866.6666666666715px; } | ||
403 | .size-medium .time_0130 { top: 2880.000000000005px; } | ||
404 | .size-medium .time_0135 { top: 2893.3333333333385px; } | ||
405 | .size-medium .time_0140 { top: 2906.666666666672px; } | ||
406 | .size-medium .time_0145 { top: 2920.0000000000055px; } | ||
407 | .size-medium .time_0150 { top: 2933.333333333339px; } | ||
408 | .size-medium .time_0155 { top: 2946.6666666666724px; } | ||
409 | .size-medium .time_0200 { top: 2960.000000000006px; } | ||
410 | .size-medium .time_0205 { top: 2973.3333333333394px; } | ||
411 | .size-medium .time_0210 { top: 2986.666666666673px; } | ||
412 | .size-medium .time_0215 { top: 3000.0000000000064px; } | ||
413 | .size-medium .time_0220 { top: 3013.33333333334px; } | ||
414 | .size-medium .time_0225 { top: 3026.6666666666733px; } | ||
415 | .size-medium .time_0230 { top: 3040.000000000007px; } | ||
416 | .size-medium .time_0235 { top: 3053.3333333333403px; } | ||
417 | .size-medium .time_0240 { top: 3066.666666666674px; } | ||
418 | .size-medium .time_0245 { top: 3080.0000000000073px; } | ||
419 | .size-medium .time_0250 { top: 3093.3333333333408px; } | ||
420 | .size-medium .time_0255 { top: 3106.6666666666742px; } | ||
421 | .size-medium .time_0300 { top: 3120.0000000000077px; } | ||
422 | .size-medium .time_0305 { top: 3133.333333333341px; } | ||
423 | .size-medium .time_0310 { top: 3146.6666666666747px; } | ||
424 | .size-medium .time_0315 { top: 3160.000000000008px; } | ||
425 | .size-medium .time_0320 { top: 3173.3333333333417px; } | ||
426 | .size-medium .time_0325 { top: 3186.666666666675px; } | ||
427 | .size-medium .time_0330 { top: 3200.0000000000086px; } | ||
428 | .size-medium .time_0335 { top: 3213.333333333342px; } | ||
429 | .size-medium .time_0340 { top: 3226.6666666666756px; } | ||
430 | .size-medium .time_0345 { top: 3240.000000000009px; } | ||
431 | .size-medium .time_0350 { top: 3253.3333333333426px; } | ||
432 | .size-medium .time_0355 { top: 3266.666666666676px; } | ||
433 | .size-small .time_1000 { top: 400px; } | ||
434 | .size-small .time_1005 { top: 410.0px; } | ||
435 | .size-small .time_1010 { top: 420.0px; } | ||
436 | .size-small .time_1015 { top: 430.0px; } | ||
437 | .size-small .time_1020 { top: 440.0px; } | ||
438 | .size-small .time_1025 { top: 450.0px; } | ||
439 | .size-small .time_1030 { top: 460.0px; } | ||
440 | .size-small .time_1035 { top: 470.0px; } | ||
441 | .size-small .time_1040 { top: 480.0px; } | ||
442 | .size-small .time_1045 { top: 490.0px; } | ||
443 | .size-small .time_1050 { top: 500.0px; } | ||
444 | .size-small .time_1055 { top: 510.0px; } | ||
445 | .size-small .time_1100 { top: 520.0px; } | ||
446 | .size-small .time_1105 { top: 530.0px; } | ||
447 | .size-small .time_1110 { top: 540.0px; } | ||
448 | .size-small .time_1115 { top: 550.0px; } | ||
449 | .size-small .time_1120 { top: 560.0px; } | ||
450 | .size-small .time_1125 { top: 570.0px; } | ||
451 | .size-small .time_1130 { top: 580.0px; } | ||
452 | .size-small .time_1135 { top: 590.0px; } | ||
453 | .size-small .time_1140 { top: 600.0px; } | ||
454 | .size-small .time_1145 { top: 610.0px; } | ||
455 | .size-small .time_1150 { top: 620.0px; } | ||
456 | .size-small .time_1155 { top: 630.0px; } | ||
457 | .size-small .time_1200 { top: 640.0px; } | ||
458 | .size-small .time_1205 { top: 650.0px; } | ||
459 | .size-small .time_1210 { top: 660.0px; } | ||
460 | .size-small .time_1215 { top: 670.0px; } | ||
461 | .size-small .time_1220 { top: 680.0px; } | ||
462 | .size-small .time_1225 { top: 690.0px; } | ||
463 | .size-small .time_1230 { top: 700.0px; } | ||
464 | .size-small .time_1235 { top: 710.0px; } | ||
465 | .size-small .time_1240 { top: 720.0px; } | ||
466 | .size-small .time_1245 { top: 730.0px; } | ||
467 | .size-small .time_1250 { top: 740.0px; } | ||
468 | .size-small .time_1255 { top: 750.0px; } | ||
469 | .size-small .time_1300 { top: 760.0px; } | ||
470 | .size-small .time_1305 { top: 770.0px; } | ||
471 | .size-small .time_1310 { top: 780.0px; } | ||
472 | .size-small .time_1315 { top: 790.0px; } | ||
473 | .size-small .time_1320 { top: 800.0px; } | ||
474 | .size-small .time_1325 { top: 810.0px; } | ||
475 | .size-small .time_1330 { top: 820.0px; } | ||
476 | .size-small .time_1335 { top: 830.0px; } | ||
477 | .size-small .time_1340 { top: 840.0px; } | ||
478 | .size-small .time_1345 { top: 850.0px; } | ||
479 | .size-small .time_1350 { top: 860.0px; } | ||
480 | .size-small .time_1355 { top: 870.0px; } | ||
481 | .size-small .time_1400 { top: 880.0px; } | ||
482 | .size-small .time_1405 { top: 890.0px; } | ||
483 | .size-small .time_1410 { top: 900.0px; } | ||
484 | .size-small .time_1415 { top: 910.0px; } | ||
485 | .size-small .time_1420 { top: 920.0px; } | ||
486 | .size-small .time_1425 { top: 930.0px; } | ||
487 | .size-small .time_1430 { top: 940.0px; } | ||
488 | .size-small .time_1435 { top: 950.0px; } | ||
489 | .size-small .time_1440 { top: 960.0px; } | ||
490 | .size-small .time_1445 { top: 970.0px; } | ||
491 | .size-small .time_1450 { top: 980.0px; } | ||
492 | .size-small .time_1455 { top: 990.0px; } | ||
493 | .size-small .time_1500 { top: 1000.0px; } | ||
494 | .size-small .time_1505 { top: 1010.0px; } | ||
495 | .size-small .time_1510 { top: 1020.0px; } | ||
496 | .size-small .time_1515 { top: 1030.0px; } | ||
497 | .size-small .time_1520 { top: 1040.0px; } | ||
498 | .size-small .time_1525 { top: 1050.0px; } | ||
499 | .size-small .time_1530 { top: 1060.0px; } | ||
500 | .size-small .time_1535 { top: 1070.0px; } | ||
501 | .size-small .time_1540 { top: 1080.0px; } | ||
502 | .size-small .time_1545 { top: 1090.0px; } | ||
503 | .size-small .time_1550 { top: 1100.0px; } | ||
504 | .size-small .time_1555 { top: 1110.0px; } | ||
505 | .size-small .time_1600 { top: 1120.0px; } | ||
506 | .size-small .time_1605 { top: 1130.0px; } | ||
507 | .size-small .time_1610 { top: 1140.0px; } | ||
508 | .size-small .time_1615 { top: 1150.0px; } | ||
509 | .size-small .time_1620 { top: 1160.0px; } | ||
510 | .size-small .time_1625 { top: 1170.0px; } | ||
511 | .size-small .time_1630 { top: 1180.0px; } | ||
512 | .size-small .time_1635 { top: 1190.0px; } | ||
513 | .size-small .time_1640 { top: 1200.0px; } | ||
514 | .size-small .time_1645 { top: 1210.0px; } | ||
515 | .size-small .time_1650 { top: 1220.0px; } | ||
516 | .size-small .time_1655 { top: 1230.0px; } | ||
517 | .size-small .time_1700 { top: 1240.0px; } | ||
518 | .size-small .time_1705 { top: 1250.0px; } | ||
519 | .size-small .time_1710 { top: 1260.0px; } | ||
520 | .size-small .time_1715 { top: 1270.0px; } | ||
521 | .size-small .time_1720 { top: 1280.0px; } | ||
522 | .size-small .time_1725 { top: 1290.0px; } | ||
523 | .size-small .time_1730 { top: 1300.0px; } | ||
524 | .size-small .time_1735 { top: 1310.0px; } | ||
525 | .size-small .time_1740 { top: 1320.0px; } | ||
526 | .size-small .time_1745 { top: 1330.0px; } | ||
527 | .size-small .time_1750 { top: 1340.0px; } | ||
528 | .size-small .time_1755 { top: 1350.0px; } | ||
529 | .size-small .time_1800 { top: 1360.0px; } | ||
530 | .size-small .time_1805 { top: 1370.0px; } | ||
531 | .size-small .time_1810 { top: 1380.0px; } | ||
532 | .size-small .time_1815 { top: 1390.0px; } | ||
533 | .size-small .time_1820 { top: 1400.0px; } | ||
534 | .size-small .time_1825 { top: 1410.0px; } | ||
535 | .size-small .time_1830 { top: 1420.0px; } | ||
536 | .size-small .time_1835 { top: 1430.0px; } | ||
537 | .size-small .time_1840 { top: 1440.0px; } | ||
538 | .size-small .time_1845 { top: 1450.0px; } | ||
539 | .size-small .time_1850 { top: 1460.0px; } | ||
540 | .size-small .time_1855 { top: 1470.0px; } | ||
541 | .size-small .time_1900 { top: 1480.0px; } | ||
542 | .size-small .time_1905 { top: 1490.0px; } | ||
543 | .size-small .time_1910 { top: 1500.0px; } | ||
544 | .size-small .time_1915 { top: 1510.0px; } | ||
545 | .size-small .time_1920 { top: 1520.0px; } | ||
546 | .size-small .time_1925 { top: 1530.0px; } | ||
547 | .size-small .time_1930 { top: 1540.0px; } | ||
548 | .size-small .time_1935 { top: 1550.0px; } | ||
549 | .size-small .time_1940 { top: 1560.0px; } | ||
550 | .size-small .time_1945 { top: 1570.0px; } | ||
551 | .size-small .time_1950 { top: 1580.0px; } | ||
552 | .size-small .time_1955 { top: 1590.0px; } | ||
553 | .size-small .time_2000 { top: 1600.0px; } | ||
554 | .size-small .time_2005 { top: 1610.0px; } | ||
555 | .size-small .time_2010 { top: 1620.0px; } | ||
556 | .size-small .time_2015 { top: 1630.0px; } | ||
557 | .size-small .time_2020 { top: 1640.0px; } | ||
558 | .size-small .time_2025 { top: 1650.0px; } | ||
559 | .size-small .time_2030 { top: 1660.0px; } | ||
560 | .size-small .time_2035 { top: 1670.0px; } | ||
561 | .size-small .time_2040 { top: 1680.0px; } | ||
562 | .size-small .time_2045 { top: 1690.0px; } | ||
563 | .size-small .time_2050 { top: 1700.0px; } | ||
564 | .size-small .time_2055 { top: 1710.0px; } | ||
565 | .size-small .time_2100 { top: 1720.0px; } | ||
566 | .size-small .time_2105 { top: 1730.0px; } | ||
567 | .size-small .time_2110 { top: 1740.0px; } | ||
568 | .size-small .time_2115 { top: 1750.0px; } | ||
569 | .size-small .time_2120 { top: 1760.0px; } | ||
570 | .size-small .time_2125 { top: 1770.0px; } | ||
571 | .size-small .time_2130 { top: 1780.0px; } | ||
572 | .size-small .time_2135 { top: 1790.0px; } | ||
573 | .size-small .time_2140 { top: 1800.0px; } | ||
574 | .size-small .time_2145 { top: 1810.0px; } | ||
575 | .size-small .time_2150 { top: 1820.0px; } | ||
576 | .size-small .time_2155 { top: 1830.0px; } | ||
577 | .size-small .time_2200 { top: 1840.0px; } | ||
578 | .size-small .time_2205 { top: 1850.0px; } | ||
579 | .size-small .time_2210 { top: 1860.0px; } | ||
580 | .size-small .time_2215 { top: 1870.0px; } | ||
581 | .size-small .time_2220 { top: 1880.0px; } | ||
582 | .size-small .time_2225 { top: 1890.0px; } | ||
583 | .size-small .time_2230 { top: 1900.0px; } | ||
584 | .size-small .time_2235 { top: 1910.0px; } | ||
585 | .size-small .time_2240 { top: 1920.0px; } | ||
586 | .size-small .time_2245 { top: 1930.0px; } | ||
587 | .size-small .time_2250 { top: 1940.0px; } | ||
588 | .size-small .time_2255 { top: 1950.0px; } | ||
589 | .size-small .time_2300 { top: 1960.0px; } | ||
590 | .size-small .time_2305 { top: 1970.0px; } | ||
591 | .size-small .time_2310 { top: 1980.0px; } | ||
592 | .size-small .time_2315 { top: 1990.0px; } | ||
593 | .size-small .time_2320 { top: 2000.0px; } | ||
594 | .size-small .time_2325 { top: 2010.0px; } | ||
595 | .size-small .time_2330 { top: 2020.0px; } | ||
596 | .size-small .time_2335 { top: 2030.0px; } | ||
597 | .size-small .time_2340 { top: 2040.0px; } | ||
598 | .size-small .time_2345 { top: 2050.0px; } | ||
599 | .size-small .time_2350 { top: 2060.0px; } | ||
600 | .size-small .time_2355 { top: 2070.0px; } | ||
601 | .size-small .time_0000 { top: 2080.0px; } | ||
602 | .size-small .time_0005 { top: 2090.0px; } | ||
603 | .size-small .time_0010 { top: 2100.0px; } | ||
604 | .size-small .time_0015 { top: 2110.0px; } | ||
605 | .size-small .time_0020 { top: 2120.0px; } | ||
606 | .size-small .time_0025 { top: 2130.0px; } | ||
607 | .size-small .time_0030 { top: 2140.0px; } | ||
608 | .size-small .time_0035 { top: 2150.0px; } | ||
609 | .size-small .time_0040 { top: 2160.0px; } | ||
610 | .size-small .time_0045 { top: 2170.0px; } | ||
611 | .size-small .time_0050 { top: 2180.0px; } | ||
612 | .size-small .time_0055 { top: 2190.0px; } | ||
613 | .size-small .time_0100 { top: 2200.0px; } | ||
614 | .size-small .time_0105 { top: 2210.0px; } | ||
615 | .size-small .time_0110 { top: 2220.0px; } | ||
616 | .size-small .time_0115 { top: 2230.0px; } | ||
617 | .size-small .time_0120 { top: 2240.0px; } | ||
618 | .size-small .time_0125 { top: 2250.0px; } | ||
619 | .size-small .time_0130 { top: 2260.0px; } | ||
620 | .size-small .time_0135 { top: 2270.0px; } | ||
621 | .size-small .time_0140 { top: 2280.0px; } | ||
622 | .size-small .time_0145 { top: 2290.0px; } | ||
623 | .size-small .time_0150 { top: 2300.0px; } | ||
624 | .size-small .time_0155 { top: 2310.0px; } | ||
625 | .size-small .time_0200 { top: 2320.0px; } | ||
626 | .size-small .time_0205 { top: 2330.0px; } | ||
627 | .size-small .time_0210 { top: 2340.0px; } | ||
628 | .size-small .time_0215 { top: 2350.0px; } | ||
629 | .size-small .time_0220 { top: 2360.0px; } | ||
630 | .size-small .time_0225 { top: 2370.0px; } | ||
631 | .size-small .time_0230 { top: 2380.0px; } | ||
632 | .size-small .time_0235 { top: 2390.0px; } | ||
633 | .size-small .time_0240 { top: 2400.0px; } | ||
634 | .size-small .time_0245 { top: 2410.0px; } | ||
635 | .size-small .time_0250 { top: 2420.0px; } | ||
636 | .size-small .time_0255 { top: 2430.0px; } | ||
637 | .size-small .time_0300 { top: 2440.0px; } | ||
638 | .size-small .time_0305 { top: 2450.0px; } | ||
639 | .size-small .time_0310 { top: 2460.0px; } | ||
640 | .size-small .time_0315 { top: 2470.0px; } | ||
641 | .size-small .time_0320 { top: 2480.0px; } | ||
642 | .size-small .time_0325 { top: 2490.0px; } | ||
643 | .size-small .time_0330 { top: 2500.0px; } | ||
644 | .size-small .time_0335 { top: 2510.0px; } | ||
645 | .size-small .time_0340 { top: 2520.0px; } | ||
646 | .size-small .time_0345 { top: 2530.0px; } | ||
647 | .size-small .time_0350 { top: 2540.0px; } | ||
648 | .size-small .time_0355 { top: 2550.0px; } | ||
649 | .size-large .duration_300 { min-height: 20.0px; max-height: 20.0px; } | ||
650 | .size-large .duration_400 { min-height: 28.333333333333336px; max-height: 28.333333333333336px; } | ||
651 | .size-large .duration_500 { min-height: 36.666666666666664px; max-height: 36.666666666666664px; } | ||
652 | .size-large .duration_600 { min-height: 45.0px; max-height: 45.0px; } | ||
653 | .size-large .duration_700 { min-height: 53.333333333333336px; max-height: 53.333333333333336px; } | ||
654 | .size-large .duration_800 { min-height: 61.66666666666667px; max-height: 61.66666666666667px; } | ||
655 | .size-large .duration_900 { min-height: 70.0px; max-height: 70.0px; } | ||
656 | .size-large .duration_1000 { min-height: 78.33333333333333px; max-height: 78.33333333333333px; } | ||
657 | .size-large .duration_1100 { min-height: 86.66666666666667px; max-height: 86.66666666666667px; } | ||
658 | .size-large .duration_1200 { min-height: 95.0px; max-height: 95.0px; } | ||
659 | .size-large .duration_1300 { min-height: 103.33333333333333px; max-height: 103.33333333333333px; } | ||
660 | .size-large .duration_1400 { min-height: 111.66666666666667px; max-height: 111.66666666666667px; } | ||
661 | .size-large .duration_1500 { min-height: 120.0px; max-height: 120.0px; } | ||
662 | .size-large .duration_1600 { min-height: 128.33333333333334px; max-height: 128.33333333333334px; } | ||
663 | .size-large .duration_1700 { min-height: 136.66666666666666px; max-height: 136.66666666666666px; } | ||
664 | .size-large .duration_1800 { min-height: 145.0px; max-height: 145.0px; } | ||
665 | .size-large .duration_1900 { min-height: 153.33333333333334px; max-height: 153.33333333333334px; } | ||
666 | .size-large .duration_2000 { min-height: 161.66666666666666px; max-height: 161.66666666666666px; } | ||
667 | .size-large .duration_2100 { min-height: 170.0px; max-height: 170.0px; } | ||
668 | .size-large .duration_2200 { min-height: 178.33333333333334px; max-height: 178.33333333333334px; } | ||
669 | .size-large .duration_2300 { min-height: 186.66666666666666px; max-height: 186.66666666666666px; } | ||
670 | .size-large .duration_2400 { min-height: 195.0px; max-height: 195.0px; } | ||
671 | .size-large .duration_2500 { min-height: 203.33333333333334px; max-height: 203.33333333333334px; } | ||
672 | .size-large .duration_2600 { min-height: 211.66666666666666px; max-height: 211.66666666666666px; } | ||
673 | .size-large .duration_2700 { min-height: 220.0px; max-height: 220.0px; } | ||
674 | .size-large .duration_2800 { min-height: 228.33333333333334px; max-height: 228.33333333333334px; } | ||
675 | .size-large .duration_2900 { min-height: 236.66666666666666px; max-height: 236.66666666666666px; } | ||
676 | .size-large .duration_3000 { min-height: 245.0px; max-height: 245.0px; } | ||
677 | .size-large .duration_3100 { min-height: 253.33333333333331px; max-height: 253.33333333333331px; } | ||
678 | .size-large .duration_3200 { min-height: 261.6666666666667px; max-height: 261.6666666666667px; } | ||
679 | .size-large .duration_3300 { min-height: 270.0px; max-height: 270.0px; } | ||
680 | .size-large .duration_3400 { min-height: 278.3333333333333px; max-height: 278.3333333333333px; } | ||
681 | .size-large .duration_3500 { min-height: 286.6666666666667px; max-height: 286.6666666666667px; } | ||
682 | .size-large .duration_3600 { min-height: 295.0px; max-height: 295.0px; } | ||
683 | .size-large .duration_3700 { min-height: 303.3333333333333px; max-height: 303.3333333333333px; } | ||
684 | .size-large .duration_3800 { min-height: 311.6666666666667px; max-height: 311.6666666666667px; } | ||
685 | .size-large .duration_3900 { min-height: 320.0px; max-height: 320.0px; } | ||
686 | .size-large .duration_4000 { min-height: 328.3333333333333px; max-height: 328.3333333333333px; } | ||
687 | .size-large .duration_4100 { min-height: 336.6666666666667px; max-height: 336.6666666666667px; } | ||
688 | .size-large .duration_4200 { min-height: 345.0px; max-height: 345.0px; } | ||
689 | .size-large .duration_4300 { min-height: 353.3333333333333px; max-height: 353.3333333333333px; } | ||
690 | .size-large .duration_4400 { min-height: 361.6666666666667px; max-height: 361.6666666666667px; } | ||
691 | .size-large .duration_4500 { min-height: 370.0px; max-height: 370.0px; } | ||
692 | .size-large .duration_4600 { min-height: 378.3333333333333px; max-height: 378.3333333333333px; } | ||
693 | .size-large .duration_4700 { min-height: 386.6666666666667px; max-height: 386.6666666666667px; } | ||
694 | .size-large .duration_4800 { min-height: 395.0px; max-height: 395.0px; } | ||
695 | .size-large .duration_4900 { min-height: 403.3333333333333px; max-height: 403.3333333333333px; } | ||
696 | .size-large .duration_5000 { min-height: 411.6666666666667px; max-height: 411.6666666666667px; } | ||
697 | .size-large .duration_5100 { min-height: 420.0px; max-height: 420.0px; } | ||
698 | .size-large .duration_5200 { min-height: 428.3333333333333px; max-height: 428.3333333333333px; } | ||
699 | .size-large .duration_5300 { min-height: 436.6666666666667px; max-height: 436.6666666666667px; } | ||
700 | .size-large .duration_5400 { min-height: 445.0px; max-height: 445.0px; } | ||
701 | .size-large .duration_5500 { min-height: 453.3333333333333px; max-height: 453.3333333333333px; } | ||
702 | .size-large .duration_5600 { min-height: 461.6666666666667px; max-height: 461.6666666666667px; } | ||
703 | .size-large .duration_5700 { min-height: 470.0px; max-height: 470.0px; } | ||
704 | .size-large .duration_5800 { min-height: 478.3333333333333px; max-height: 478.3333333333333px; } | ||
705 | .size-large .duration_5900 { min-height: 486.6666666666667px; max-height: 486.6666666666667px; } | ||
706 | .size-large .duration_6000 { min-height: 495.0px; max-height: 495.0px; } | ||
707 | .size-large .duration_6100 { min-height: 503.3333333333333px; max-height: 503.3333333333333px; } | ||
708 | .size-large .duration_6200 { min-height: 511.66666666666663px; max-height: 511.66666666666663px; } | ||
709 | .size-large .duration_6300 { min-height: 520.0px; max-height: 520.0px; } | ||
710 | .size-large .duration_6400 { min-height: 528.3333333333334px; max-height: 528.3333333333334px; } | ||
711 | .size-large .duration_6500 { min-height: 536.6666666666666px; max-height: 536.6666666666666px; } | ||
712 | .size-large .duration_6600 { min-height: 545.0px; max-height: 545.0px; } | ||
713 | .size-large .duration_6700 { min-height: 553.3333333333334px; max-height: 553.3333333333334px; } | ||
714 | .size-large .duration_6800 { min-height: 561.6666666666666px; max-height: 561.6666666666666px; } | ||
715 | .size-large .duration_6900 { min-height: 570.0px; max-height: 570.0px; } | ||
716 | .size-large .duration_7000 { min-height: 578.3333333333334px; max-height: 578.3333333333334px; } | ||
717 | .size-large .duration_7100 { min-height: 586.6666666666666px; max-height: 586.6666666666666px; } | ||
718 | .size-large .duration_7200 { min-height: 595.0px; max-height: 595.0px; } | ||
719 | .size-large .duration_7300 { min-height: 603.3333333333334px; max-height: 603.3333333333334px; } | ||
720 | .size-large .duration_7400 { min-height: 611.6666666666666px; max-height: 611.6666666666666px; } | ||
721 | .size-large .duration_7500 { min-height: 620.0px; max-height: 620.0px; } | ||
722 | .size-large .duration_7600 { min-height: 628.3333333333334px; max-height: 628.3333333333334px; } | ||
723 | .size-large .duration_7700 { min-height: 636.6666666666666px; max-height: 636.6666666666666px; } | ||
724 | .size-large .duration_7800 { min-height: 645.0px; max-height: 645.0px; } | ||
725 | .size-large .duration_7900 { min-height: 653.3333333333334px; max-height: 653.3333333333334px; } | ||
726 | .size-large .duration_8000 { min-height: 661.6666666666666px; max-height: 661.6666666666666px; } | ||
727 | .size-large .duration_8100 { min-height: 670.0px; max-height: 670.0px; } | ||
728 | .size-large .duration_8200 { min-height: 678.3333333333334px; max-height: 678.3333333333334px; } | ||
729 | .size-large .duration_8300 { min-height: 686.6666666666666px; max-height: 686.6666666666666px; } | ||
730 | .size-large .duration_8400 { min-height: 695.0px; max-height: 695.0px; } | ||
731 | .size-large .duration_8500 { min-height: 703.3333333333334px; max-height: 703.3333333333334px; } | ||
732 | .size-large .duration_8600 { min-height: 711.6666666666666px; max-height: 711.6666666666666px; } | ||
733 | .size-large .duration_8700 { min-height: 720.0px; max-height: 720.0px; } | ||
734 | .size-large .duration_8800 { min-height: 728.3333333333334px; max-height: 728.3333333333334px; } | ||
735 | .size-large .duration_8900 { min-height: 736.6666666666666px; max-height: 736.6666666666666px; } | ||
736 | .size-large .duration_9000 { min-height: 745.0px; max-height: 745.0px; } | ||
737 | .size-large .duration_9100 { min-height: 753.3333333333334px; max-height: 753.3333333333334px; } | ||
738 | .size-large .duration_9200 { min-height: 761.6666666666666px; max-height: 761.6666666666666px; } | ||
739 | .size-large .duration_9300 { min-height: 770.0px; max-height: 770.0px; } | ||
740 | .size-large .duration_9400 { min-height: 778.3333333333334px; max-height: 778.3333333333334px; } | ||
741 | .size-large .duration_9500 { min-height: 786.6666666666666px; max-height: 786.6666666666666px; } | ||
742 | .size-large .duration_9600 { min-height: 795.0px; max-height: 795.0px; } | ||
743 | .size-large .duration_9700 { min-height: 803.3333333333334px; max-height: 803.3333333333334px; } | ||
744 | .size-large .duration_9800 { min-height: 811.6666666666666px; max-height: 811.6666666666666px; } | ||
745 | .size-large .duration_9900 { min-height: 820.0px; max-height: 820.0px; } | ||
746 | .size-large .duration_10000 { min-height: 828.3333333333334px; max-height: 828.3333333333334px; } | ||
747 | .size-large .duration_10100 { min-height: 836.6666666666666px; max-height: 836.6666666666666px; } | ||
748 | .size-large .duration_10200 { min-height: 845.0px; max-height: 845.0px; } | ||
749 | .size-large .duration_10300 { min-height: 853.3333333333334px; max-height: 853.3333333333334px; } | ||
750 | .size-large .duration_10400 { min-height: 861.6666666666666px; max-height: 861.6666666666666px; } | ||
751 | .size-large .duration_10500 { min-height: 870.0px; max-height: 870.0px; } | ||
752 | .size-large .duration_10600 { min-height: 878.3333333333334px; max-height: 878.3333333333334px; } | ||
753 | .size-large .duration_10700 { min-height: 886.6666666666666px; max-height: 886.6666666666666px; } | ||
754 | .size-large .duration_10800 { min-height: 895.0px; max-height: 895.0px; } | ||
755 | .size-large .duration_10900 { min-height: 903.3333333333334px; max-height: 903.3333333333334px; } | ||
756 | .size-large .duration_11000 { min-height: 911.6666666666666px; max-height: 911.6666666666666px; } | ||
757 | .size-large .duration_11100 { min-height: 920.0px; max-height: 920.0px; } | ||
758 | .size-large .duration_11200 { min-height: 928.3333333333334px; max-height: 928.3333333333334px; } | ||
759 | .size-large .duration_11300 { min-height: 936.6666666666666px; max-height: 936.6666666666666px; } | ||
760 | .size-large .duration_11400 { min-height: 945.0px; max-height: 945.0px; } | ||
761 | .size-large .duration_11500 { min-height: 953.3333333333334px; max-height: 953.3333333333334px; } | ||
762 | .size-large .duration_11600 { min-height: 961.6666666666666px; max-height: 961.6666666666666px; } | ||
763 | .size-large .duration_11700 { min-height: 970.0px; max-height: 970.0px; } | ||
764 | .size-large .duration_11800 { min-height: 978.3333333333334px; max-height: 978.3333333333334px; } | ||
765 | .size-large .duration_11900 { min-height: 986.6666666666666px; max-height: 986.6666666666666px; } | ||
766 | .size-large .wholeblock { height: 1050.0px; } | ||
767 | .size-medium .duration_300 { min-height: 10.333333333333334px; max-height: 10.333333333333334px; } | ||
768 | .size-medium .duration_400 { min-height: 14.777777777777779px; max-height: 14.777777777777779px; } | ||
769 | .size-medium .duration_500 { min-height: 19.22222222222222px; max-height: 19.22222222222222px; } | ||
770 | .size-medium .duration_600 { min-height: 23.666666666666668px; max-height: 23.666666666666668px; } | ||
771 | .size-medium .duration_700 { min-height: 28.11111111111111px; max-height: 28.11111111111111px; } | ||
772 | .size-medium .duration_800 { min-height: 32.55555555555556px; max-height: 32.55555555555556px; } | ||
773 | .size-medium .duration_900 { min-height: 37.0px; max-height: 37.0px; } | ||
774 | .size-medium .duration_1000 { min-height: 41.44444444444444px; max-height: 41.44444444444444px; } | ||
775 | .size-medium .duration_1100 { min-height: 45.888888888888886px; max-height: 45.888888888888886px; } | ||
776 | .size-medium .duration_1200 { min-height: 50.333333333333336px; max-height: 50.333333333333336px; } | ||
777 | .size-medium .duration_1300 { min-height: 54.77777777777778px; max-height: 54.77777777777778px; } | ||
778 | .size-medium .duration_1400 { min-height: 59.22222222222222px; max-height: 59.22222222222222px; } | ||
779 | .size-medium .duration_1500 { min-height: 63.66666666666667px; max-height: 63.66666666666667px; } | ||
780 | .size-medium .duration_1600 { min-height: 68.11111111111111px; max-height: 68.11111111111111px; } | ||
781 | .size-medium .duration_1700 { min-height: 72.55555555555556px; max-height: 72.55555555555556px; } | ||
782 | .size-medium .duration_1800 { min-height: 77.0px; max-height: 77.0px; } | ||
783 | .size-medium .duration_1900 { min-height: 81.44444444444444px; max-height: 81.44444444444444px; } | ||
784 | .size-medium .duration_2000 { min-height: 85.88888888888889px; max-height: 85.88888888888889px; } | ||
785 | .size-medium .duration_2100 { min-height: 90.33333333333333px; max-height: 90.33333333333333px; } | ||
786 | .size-medium .duration_2200 { min-height: 94.77777777777777px; max-height: 94.77777777777777px; } | ||
787 | .size-medium .duration_2300 { min-height: 99.22222222222223px; max-height: 99.22222222222223px; } | ||
788 | .size-medium .duration_2400 { min-height: 103.66666666666667px; max-height: 103.66666666666667px; } | ||
789 | .size-medium .duration_2500 { min-height: 108.11111111111111px; max-height: 108.11111111111111px; } | ||
790 | .size-medium .duration_2600 { min-height: 112.55555555555556px; max-height: 112.55555555555556px; } | ||
791 | .size-medium .duration_2700 { min-height: 117.0px; max-height: 117.0px; } | ||
792 | .size-medium .duration_2800 { min-height: 121.44444444444444px; max-height: 121.44444444444444px; } | ||
793 | .size-medium .duration_2900 { min-height: 125.88888888888889px; max-height: 125.88888888888889px; } | ||
794 | .size-medium .duration_3000 { min-height: 130.33333333333334px; max-height: 130.33333333333334px; } | ||
795 | .size-medium .duration_3100 { min-height: 134.77777777777777px; max-height: 134.77777777777777px; } | ||
796 | .size-medium .duration_3200 { min-height: 139.22222222222223px; max-height: 139.22222222222223px; } | ||
797 | .size-medium .duration_3300 { min-height: 143.66666666666666px; max-height: 143.66666666666666px; } | ||
798 | .size-medium .duration_3400 { min-height: 148.11111111111111px; max-height: 148.11111111111111px; } | ||
799 | .size-medium .duration_3500 { min-height: 152.55555555555554px; max-height: 152.55555555555554px; } | ||
800 | .size-medium .duration_3600 { min-height: 157.0px; max-height: 157.0px; } | ||
801 | .size-medium .duration_3700 { min-height: 161.44444444444446px; max-height: 161.44444444444446px; } | ||
802 | .size-medium .duration_3800 { min-height: 165.88888888888889px; max-height: 165.88888888888889px; } | ||
803 | .size-medium .duration_3900 { min-height: 170.33333333333334px; max-height: 170.33333333333334px; } | ||
804 | .size-medium .duration_4000 { min-height: 174.77777777777777px; max-height: 174.77777777777777px; } | ||
805 | .size-medium .duration_4100 { min-height: 179.22222222222223px; max-height: 179.22222222222223px; } | ||
806 | .size-medium .duration_4200 { min-height: 183.66666666666666px; max-height: 183.66666666666666px; } | ||
807 | .size-medium .duration_4300 { min-height: 188.11111111111111px; max-height: 188.11111111111111px; } | ||
808 | .size-medium .duration_4400 { min-height: 192.55555555555554px; max-height: 192.55555555555554px; } | ||
809 | .size-medium .duration_4500 { min-height: 197.0px; max-height: 197.0px; } | ||
810 | .size-medium .duration_4600 { min-height: 201.44444444444446px; max-height: 201.44444444444446px; } | ||
811 | .size-medium .duration_4700 { min-height: 205.88888888888889px; max-height: 205.88888888888889px; } | ||
812 | .size-medium .duration_4800 { min-height: 210.33333333333334px; max-height: 210.33333333333334px; } | ||
813 | .size-medium .duration_4900 { min-height: 214.77777777777777px; max-height: 214.77777777777777px; } | ||
814 | .size-medium .duration_5000 { min-height: 219.22222222222223px; max-height: 219.22222222222223px; } | ||
815 | .size-medium .duration_5100 { min-height: 223.66666666666666px; max-height: 223.66666666666666px; } | ||
816 | .size-medium .duration_5200 { min-height: 228.11111111111111px; max-height: 228.11111111111111px; } | ||
817 | .size-medium .duration_5300 { min-height: 232.55555555555554px; max-height: 232.55555555555554px; } | ||
818 | .size-medium .duration_5400 { min-height: 237.0px; max-height: 237.0px; } | ||
819 | .size-medium .duration_5500 { min-height: 241.44444444444446px; max-height: 241.44444444444446px; } | ||
820 | .size-medium .duration_5600 { min-height: 245.88888888888889px; max-height: 245.88888888888889px; } | ||
821 | .size-medium .duration_5700 { min-height: 250.33333333333334px; max-height: 250.33333333333334px; } | ||
822 | .size-medium .duration_5800 { min-height: 254.77777777777777px; max-height: 254.77777777777777px; } | ||
823 | .size-medium .duration_5900 { min-height: 259.22222222222223px; max-height: 259.22222222222223px; } | ||
824 | .size-medium .duration_6000 { min-height: 263.6666666666667px; max-height: 263.6666666666667px; } | ||
825 | .size-medium .duration_6100 { min-height: 268.1111111111111px; max-height: 268.1111111111111px; } | ||
826 | .size-medium .duration_6200 { min-height: 272.55555555555554px; max-height: 272.55555555555554px; } | ||
827 | .size-medium .duration_6300 { min-height: 277.0px; max-height: 277.0px; } | ||
828 | .size-medium .duration_6400 { min-height: 281.44444444444446px; max-height: 281.44444444444446px; } | ||
829 | .size-medium .duration_6500 { min-height: 285.8888888888889px; max-height: 285.8888888888889px; } | ||
830 | .size-medium .duration_6600 { min-height: 290.3333333333333px; max-height: 290.3333333333333px; } | ||
831 | .size-medium .duration_6700 { min-height: 294.77777777777777px; max-height: 294.77777777777777px; } | ||
832 | .size-medium .duration_6800 { min-height: 299.22222222222223px; max-height: 299.22222222222223px; } | ||
833 | .size-medium .duration_6900 { min-height: 303.6666666666667px; max-height: 303.6666666666667px; } | ||
834 | .size-medium .duration_7000 { min-height: 308.1111111111111px; max-height: 308.1111111111111px; } | ||
835 | .size-medium .duration_7100 { min-height: 312.55555555555554px; max-height: 312.55555555555554px; } | ||
836 | .size-medium .duration_7200 { min-height: 317.0px; max-height: 317.0px; } | ||
837 | .size-medium .duration_7300 { min-height: 321.44444444444446px; max-height: 321.44444444444446px; } | ||
838 | .size-medium .duration_7400 { min-height: 325.8888888888889px; max-height: 325.8888888888889px; } | ||
839 | .size-medium .duration_7500 { min-height: 330.3333333333333px; max-height: 330.3333333333333px; } | ||
840 | .size-medium .duration_7600 { min-height: 334.77777777777777px; max-height: 334.77777777777777px; } | ||
841 | .size-medium .duration_7700 { min-height: 339.22222222222223px; max-height: 339.22222222222223px; } | ||
842 | .size-medium .duration_7800 { min-height: 343.6666666666667px; max-height: 343.6666666666667px; } | ||
843 | .size-medium .duration_7900 { min-height: 348.1111111111111px; max-height: 348.1111111111111px; } | ||
844 | .size-medium .duration_8000 { min-height: 352.55555555555554px; max-height: 352.55555555555554px; } | ||
845 | .size-medium .duration_8100 { min-height: 357.0px; max-height: 357.0px; } | ||
846 | .size-medium .duration_8200 { min-height: 361.44444444444446px; max-height: 361.44444444444446px; } | ||
847 | .size-medium .duration_8300 { min-height: 365.8888888888889px; max-height: 365.8888888888889px; } | ||
848 | .size-medium .duration_8400 { min-height: 370.3333333333333px; max-height: 370.3333333333333px; } | ||
849 | .size-medium .duration_8500 { min-height: 374.77777777777777px; max-height: 374.77777777777777px; } | ||
850 | .size-medium .duration_8600 { min-height: 379.22222222222223px; max-height: 379.22222222222223px; } | ||
851 | .size-medium .duration_8700 { min-height: 383.6666666666667px; max-height: 383.6666666666667px; } | ||
852 | .size-medium .duration_8800 { min-height: 388.1111111111111px; max-height: 388.1111111111111px; } | ||
853 | .size-medium .duration_8900 { min-height: 392.55555555555554px; max-height: 392.55555555555554px; } | ||
854 | .size-medium .duration_9000 { min-height: 397.0px; max-height: 397.0px; } | ||
855 | .size-medium .duration_9100 { min-height: 401.44444444444446px; max-height: 401.44444444444446px; } | ||
856 | .size-medium .duration_9200 { min-height: 405.8888888888889px; max-height: 405.8888888888889px; } | ||
857 | .size-medium .duration_9300 { min-height: 410.3333333333333px; max-height: 410.3333333333333px; } | ||
858 | .size-medium .duration_9400 { min-height: 414.77777777777777px; max-height: 414.77777777777777px; } | ||
859 | .size-medium .duration_9500 { min-height: 419.22222222222223px; max-height: 419.22222222222223px; } | ||
860 | .size-medium .duration_9600 { min-height: 423.6666666666667px; max-height: 423.6666666666667px; } | ||
861 | .size-medium .duration_9700 { min-height: 428.1111111111111px; max-height: 428.1111111111111px; } | ||
862 | .size-medium .duration_9800 { min-height: 432.55555555555554px; max-height: 432.55555555555554px; } | ||
863 | .size-medium .duration_9900 { min-height: 437.0px; max-height: 437.0px; } | ||
864 | .size-medium .duration_10000 { min-height: 441.44444444444446px; max-height: 441.44444444444446px; } | ||
865 | .size-medium .duration_10100 { min-height: 445.8888888888889px; max-height: 445.8888888888889px; } | ||
866 | .size-medium .duration_10200 { min-height: 450.3333333333333px; max-height: 450.3333333333333px; } | ||
867 | .size-medium .duration_10300 { min-height: 454.77777777777777px; max-height: 454.77777777777777px; } | ||
868 | .size-medium .duration_10400 { min-height: 459.22222222222223px; max-height: 459.22222222222223px; } | ||
869 | .size-medium .duration_10500 { min-height: 463.6666666666667px; max-height: 463.6666666666667px; } | ||
870 | .size-medium .duration_10600 { min-height: 468.1111111111111px; max-height: 468.1111111111111px; } | ||
871 | .size-medium .duration_10700 { min-height: 472.55555555555554px; max-height: 472.55555555555554px; } | ||
872 | .size-medium .duration_10800 { min-height: 477.0px; max-height: 477.0px; } | ||
873 | .size-medium .duration_10900 { min-height: 481.44444444444446px; max-height: 481.44444444444446px; } | ||
874 | .size-medium .duration_11000 { min-height: 485.8888888888889px; max-height: 485.8888888888889px; } | ||
875 | .size-medium .duration_11100 { min-height: 490.3333333333333px; max-height: 490.3333333333333px; } | ||
876 | .size-medium .duration_11200 { min-height: 494.77777777777777px; max-height: 494.77777777777777px; } | ||
877 | .size-medium .duration_11300 { min-height: 499.22222222222223px; max-height: 499.22222222222223px; } | ||
878 | .size-medium .duration_11400 { min-height: 503.6666666666667px; max-height: 503.6666666666667px; } | ||
879 | .size-medium .duration_11500 { min-height: 508.1111111111111px; max-height: 508.1111111111111px; } | ||
880 | .size-medium .duration_11600 { min-height: 512.5555555555555px; max-height: 512.5555555555555px; } | ||
881 | .size-medium .duration_11700 { min-height: 517.0px; max-height: 517.0px; } | ||
882 | .size-medium .duration_11800 { min-height: 521.4444444444445px; max-height: 521.4444444444445px; } | ||
883 | .size-medium .duration_11900 { min-height: 525.8888888888889px; max-height: 525.8888888888889px; } | ||
884 | .size-medium .wholeblock { height: 560.0px; } | ||
885 | .size-small .duration_300 { min-height: 8.0px; max-height: 8.0px; } | ||
886 | .size-small .duration_400 { min-height: 11.333333333333334px; max-height: 11.333333333333334px; } | ||
887 | .size-small .duration_500 { min-height: 14.666666666666668px; max-height: 14.666666666666668px; } | ||
888 | .size-small .duration_600 { min-height: 18.0px; max-height: 18.0px; } | ||
889 | .size-small .duration_700 { min-height: 21.333333333333332px; max-height: 21.333333333333332px; } | ||
890 | .size-small .duration_800 { min-height: 24.666666666666668px; max-height: 24.666666666666668px; } | ||
891 | .size-small .duration_900 { min-height: 28.0px; max-height: 28.0px; } | ||
892 | .size-small .duration_1000 { min-height: 31.333333333333336px; max-height: 31.333333333333336px; } | ||
893 | .size-small .duration_1100 { min-height: 34.666666666666664px; max-height: 34.666666666666664px; } | ||
894 | .size-small .duration_1200 { min-height: 38.0px; max-height: 38.0px; } | ||
895 | .size-small .duration_1300 { min-height: 41.333333333333336px; max-height: 41.333333333333336px; } | ||
896 | .size-small .duration_1400 { min-height: 44.666666666666664px; max-height: 44.666666666666664px; } | ||
897 | .size-small .duration_1500 { min-height: 48.0px; max-height: 48.0px; } | ||
898 | .size-small .duration_1600 { min-height: 51.333333333333336px; max-height: 51.333333333333336px; } | ||
899 | .size-small .duration_1700 { min-height: 54.666666666666664px; max-height: 54.666666666666664px; } | ||
900 | .size-small .duration_1800 { min-height: 58.0px; max-height: 58.0px; } | ||
901 | .size-small .duration_1900 { min-height: 61.333333333333336px; max-height: 61.333333333333336px; } | ||
902 | .size-small .duration_2000 { min-height: 64.66666666666667px; max-height: 64.66666666666667px; } | ||
903 | .size-small .duration_2100 { min-height: 68.0px; max-height: 68.0px; } | ||
904 | .size-small .duration_2200 { min-height: 71.33333333333333px; max-height: 71.33333333333333px; } | ||
905 | .size-small .duration_2300 { min-height: 74.66666666666667px; max-height: 74.66666666666667px; } | ||
906 | .size-small .duration_2400 { min-height: 78.0px; max-height: 78.0px; } | ||
907 | .size-small .duration_2500 { min-height: 81.33333333333333px; max-height: 81.33333333333333px; } | ||
908 | .size-small .duration_2600 { min-height: 84.66666666666667px; max-height: 84.66666666666667px; } | ||
909 | .size-small .duration_2700 { min-height: 88.0px; max-height: 88.0px; } | ||
910 | .size-small .duration_2800 { min-height: 91.33333333333333px; max-height: 91.33333333333333px; } | ||
911 | .size-small .duration_2900 { min-height: 94.66666666666667px; max-height: 94.66666666666667px; } | ||
912 | .size-small .duration_3000 { min-height: 98.0px; max-height: 98.0px; } | ||
913 | .size-small .duration_3100 { min-height: 101.33333333333333px; max-height: 101.33333333333333px; } | ||
914 | .size-small .duration_3200 { min-height: 104.66666666666667px; max-height: 104.66666666666667px; } | ||
915 | .size-small .duration_3300 { min-height: 108.0px; max-height: 108.0px; } | ||
916 | .size-small .duration_3400 { min-height: 111.33333333333333px; max-height: 111.33333333333333px; } | ||
917 | .size-small .duration_3500 { min-height: 114.66666666666667px; max-height: 114.66666666666667px; } | ||
918 | .size-small .duration_3600 { min-height: 118.0px; max-height: 118.0px; } | ||
919 | .size-small .duration_3700 { min-height: 121.33333333333333px; max-height: 121.33333333333333px; } | ||
920 | .size-small .duration_3800 { min-height: 124.66666666666667px; max-height: 124.66666666666667px; } | ||
921 | .size-small .duration_3900 { min-height: 128.0px; max-height: 128.0px; } | ||
922 | .size-small .duration_4000 { min-height: 131.33333333333334px; max-height: 131.33333333333334px; } | ||
923 | .size-small .duration_4100 { min-height: 134.66666666666666px; max-height: 134.66666666666666px; } | ||
924 | .size-small .duration_4200 { min-height: 138.0px; max-height: 138.0px; } | ||
925 | .size-small .duration_4300 { min-height: 141.33333333333334px; max-height: 141.33333333333334px; } | ||
926 | .size-small .duration_4400 { min-height: 144.66666666666666px; max-height: 144.66666666666666px; } | ||
927 | .size-small .duration_4500 { min-height: 148.0px; max-height: 148.0px; } | ||
928 | .size-small .duration_4600 { min-height: 151.33333333333334px; max-height: 151.33333333333334px; } | ||
929 | .size-small .duration_4700 { min-height: 154.66666666666666px; max-height: 154.66666666666666px; } | ||
930 | .size-small .duration_4800 { min-height: 158.0px; max-height: 158.0px; } | ||
931 | .size-small .duration_4900 { min-height: 161.33333333333334px; max-height: 161.33333333333334px; } | ||
932 | .size-small .duration_5000 { min-height: 164.66666666666666px; max-height: 164.66666666666666px; } | ||
933 | .size-small .duration_5100 { min-height: 168.0px; max-height: 168.0px; } | ||
934 | .size-small .duration_5200 { min-height: 171.33333333333334px; max-height: 171.33333333333334px; } | ||
935 | .size-small .duration_5300 { min-height: 174.66666666666666px; max-height: 174.66666666666666px; } | ||
936 | .size-small .duration_5400 { min-height: 178.0px; max-height: 178.0px; } | ||
937 | .size-small .duration_5500 { min-height: 181.33333333333334px; max-height: 181.33333333333334px; } | ||
938 | .size-small .duration_5600 { min-height: 184.66666666666666px; max-height: 184.66666666666666px; } | ||
939 | .size-small .duration_5700 { min-height: 188.0px; max-height: 188.0px; } | ||
940 | .size-small .duration_5800 { min-height: 191.33333333333334px; max-height: 191.33333333333334px; } | ||
941 | .size-small .duration_5900 { min-height: 194.66666666666666px; max-height: 194.66666666666666px; } | ||
942 | .size-small .duration_6000 { min-height: 198.0px; max-height: 198.0px; } | ||
943 | .size-small .duration_6100 { min-height: 201.33333333333334px; max-height: 201.33333333333334px; } | ||
944 | .size-small .duration_6200 { min-height: 204.66666666666666px; max-height: 204.66666666666666px; } | ||
945 | .size-small .duration_6300 { min-height: 208.0px; max-height: 208.0px; } | ||
946 | .size-small .duration_6400 { min-height: 211.33333333333334px; max-height: 211.33333333333334px; } | ||
947 | .size-small .duration_6500 { min-height: 214.66666666666666px; max-height: 214.66666666666666px; } | ||
948 | .size-small .duration_6600 { min-height: 218.0px; max-height: 218.0px; } | ||
949 | .size-small .duration_6700 { min-height: 221.33333333333334px; max-height: 221.33333333333334px; } | ||
950 | .size-small .duration_6800 { min-height: 224.66666666666666px; max-height: 224.66666666666666px; } | ||
951 | .size-small .duration_6900 { min-height: 228.0px; max-height: 228.0px; } | ||
952 | .size-small .duration_7000 { min-height: 231.33333333333334px; max-height: 231.33333333333334px; } | ||
953 | .size-small .duration_7100 { min-height: 234.66666666666666px; max-height: 234.66666666666666px; } | ||
954 | .size-small .duration_7200 { min-height: 238.0px; max-height: 238.0px; } | ||
955 | .size-small .duration_7300 { min-height: 241.33333333333334px; max-height: 241.33333333333334px; } | ||
956 | .size-small .duration_7400 { min-height: 244.66666666666666px; max-height: 244.66666666666666px; } | ||
957 | .size-small .duration_7500 { min-height: 248.0px; max-height: 248.0px; } | ||
958 | .size-small .duration_7600 { min-height: 251.33333333333334px; max-height: 251.33333333333334px; } | ||
959 | .size-small .duration_7700 { min-height: 254.66666666666669px; max-height: 254.66666666666669px; } | ||
960 | .size-small .duration_7800 { min-height: 258.0px; max-height: 258.0px; } | ||
961 | .size-small .duration_7900 { min-height: 261.3333333333333px; max-height: 261.3333333333333px; } | ||
962 | .size-small .duration_8000 { min-height: 264.6666666666667px; max-height: 264.6666666666667px; } | ||
963 | .size-small .duration_8100 { min-height: 268.0px; max-height: 268.0px; } | ||
964 | .size-small .duration_8200 { min-height: 271.3333333333333px; max-height: 271.3333333333333px; } | ||
965 | .size-small .duration_8300 { min-height: 274.6666666666667px; max-height: 274.6666666666667px; } | ||
966 | .size-small .duration_8400 { min-height: 278.0px; max-height: 278.0px; } | ||
967 | .size-small .duration_8500 { min-height: 281.3333333333333px; max-height: 281.3333333333333px; } | ||
968 | .size-small .duration_8600 { min-height: 284.6666666666667px; max-height: 284.6666666666667px; } | ||
969 | .size-small .duration_8700 { min-height: 288.0px; max-height: 288.0px; } | ||
970 | .size-small .duration_8800 { min-height: 291.3333333333333px; max-height: 291.3333333333333px; } | ||
971 | .size-small .duration_8900 { min-height: 294.6666666666667px; max-height: 294.6666666666667px; } | ||
972 | .size-small .duration_9000 { min-height: 298.0px; max-height: 298.0px; } | ||
973 | .size-small .duration_9100 { min-height: 301.3333333333333px; max-height: 301.3333333333333px; } | ||
974 | .size-small .duration_9200 { min-height: 304.6666666666667px; max-height: 304.6666666666667px; } | ||
975 | .size-small .duration_9300 { min-height: 308.0px; max-height: 308.0px; } | ||
976 | .size-small .duration_9400 { min-height: 311.3333333333333px; max-height: 311.3333333333333px; } | ||
977 | .size-small .duration_9500 { min-height: 314.6666666666667px; max-height: 314.6666666666667px; } | ||
978 | .size-small .duration_9600 { min-height: 318.0px; max-height: 318.0px; } | ||
979 | .size-small .duration_9700 { min-height: 321.3333333333333px; max-height: 321.3333333333333px; } | ||
980 | .size-small .duration_9800 { min-height: 324.6666666666667px; max-height: 324.6666666666667px; } | ||
981 | .size-small .duration_9900 { min-height: 328.0px; max-height: 328.0px; } | ||
982 | .size-small .duration_10000 { min-height: 331.3333333333333px; max-height: 331.3333333333333px; } | ||
983 | .size-small .duration_10100 { min-height: 334.6666666666667px; max-height: 334.6666666666667px; } | ||
984 | .size-small .duration_10200 { min-height: 338.0px; max-height: 338.0px; } | ||
985 | .size-small .duration_10300 { min-height: 341.3333333333333px; max-height: 341.3333333333333px; } | ||
986 | .size-small .duration_10400 { min-height: 344.6666666666667px; max-height: 344.6666666666667px; } | ||
987 | .size-small .duration_10500 { min-height: 348.0px; max-height: 348.0px; } | ||
988 | .size-small .duration_10600 { min-height: 351.3333333333333px; max-height: 351.3333333333333px; } | ||
989 | .size-small .duration_10700 { min-height: 354.6666666666667px; max-height: 354.6666666666667px; } | ||
990 | .size-small .duration_10800 { min-height: 358.0px; max-height: 358.0px; } | ||
991 | .size-small .duration_10900 { min-height: 361.3333333333333px; max-height: 361.3333333333333px; } | ||
992 | .size-small .duration_11000 { min-height: 364.6666666666667px; max-height: 364.6666666666667px; } | ||
993 | .size-small .duration_11100 { min-height: 368.0px; max-height: 368.0px; } | ||
994 | .size-small .duration_11200 { min-height: 371.3333333333333px; max-height: 371.3333333333333px; } | ||
995 | .size-small .duration_11300 { min-height: 374.6666666666667px; max-height: 374.6666666666667px; } | ||
996 | .size-small .duration_11400 { min-height: 378.0px; max-height: 378.0px; } | ||
997 | .size-small .duration_11500 { min-height: 381.3333333333333px; max-height: 381.3333333333333px; } | ||
998 | .size-small .duration_11600 { min-height: 384.6666666666667px; max-height: 384.6666666666667px; } | ||
999 | .size-small .duration_11700 { min-height: 388.0px; max-height: 388.0px; } | ||
1000 | .size-small .duration_11800 { min-height: 391.3333333333333px; max-height: 391.3333333333333px; } | ||
1001 | .size-small .duration_11900 { min-height: 394.6666666666667px; max-height: 394.6666666666667px; } | ||
1002 | .size-small .wholeblock { height: 420.0px; } | ||
1003 | .size-large .grid { height: 25.0px; font-size: 1em; } | ||
1004 | .size-medium .grid { height: 13.333333333333334px; font-size: 0.5em; } | ||
1005 | .size-small .grid { height: 10.0px; font-size: 0.3em; } | ||
1006 | .in-calendar .room1 { left: 4.0%; } | ||
1007 | .in-calendar .room2 { left: 36.0%; } | ||
1008 | .in-calendar .room3 { left: 68.0%; } | ||
1009 | .in-calendar .event, .in-calendar .room-label, .in-calendar .grid { position: absolute; width: 28.0%; } | ||
1010 | .in-calendar .r, .in-calendar .l { width: 28.0%; } | ||
1011 | .in-calendar .rr, .in-calendar .ll { width: 60.0%; } | ||
1012 | .in-calendar .rrr, .in-calendar .lll { width: 92.0%; } | ||
1013 | .in-calendar .rrrr, .in-calendar .llll { width: 124.0%; } | ||
1014 | .in-calendar .r, .in-calendar .rr, .in-calendar .rrr, .in-calendar .rrrr { margin-left: 14.0% ; } | ||
1015 | .in-calendar .l { margin-left: -14.0% ; } | ||
1016 | .in-calendar .ll { margin-left: -46.0% ; } | ||
1017 | .in-calendar .lll { margin-left: -78.0% ; } | ||
1018 | .in-calendar .llll { margin-left: -110.0% ; } | ||
1019 | .in-calendar.alldays .day_1.room1 { left: 0.5%; } | ||
1020 | .in-calendar.alldays .day_1.room2 { left: 8.791666666666668%; } | ||
1021 | .in-calendar.alldays .day_1.room3 { left: 17.083333333333336%; } | ||
1022 | .in-calendar.alldays .day_2.room1 { left: 25.375%; } | ||
1023 | .in-calendar.alldays .day_2.room2 { left: 33.66666666666667%; } | ||
1024 | .in-calendar.alldays .day_2.room3 { left: 41.958333333333336%; } | ||
1025 | .in-calendar.alldays .day_3.room1 { left: 50.25%; } | ||
1026 | .in-calendar.alldays .day_3.room2 { left: 58.54166666666667%; } | ||
1027 | .in-calendar.alldays .day_3.room3 { left: 66.83333333333334%; } | ||
1028 | .in-calendar.alldays .day_4.room1 { left: 75.125%; } | ||
1029 | .in-calendar.alldays .day_4.room2 { left: 83.41666666666667%; } | ||
1030 | .in-calendar.alldays .day_4.room3 { left: 91.70833333333334%; } | ||
1031 | .wholeday, .wholeblock { width: 25.0% } | ||
1032 | .in-calendar.alldays .event, .in-calendar.alldays .room-label, .in-calendar.alldays .grid { width: 7.791666666666667%; } | ||
1033 | .in-calendar.alldays .r, .in-calendar.alldays .l { width: 7.791666666666667%; } | ||
1034 | .in-calendar.alldays .rr, .in-calendar.alldays .ll { width: 16.083333333333336%; } | ||
1035 | .in-calendar.alldays .rrr, .in-calendar.alldays .lll { width: 24.375%; } | ||
1036 | .in-calendar.alldays .rrrr, .in-calendar.alldays .llll { width: 32.66666666666667%; } | ||
1037 | .in-calendar.alldays .r, .in-calendar.alldays .rr, .in-calendar.alldays .rrr, .in-calendar.alldays .rrrr { margin-left: 3.8958333333333335% ; } | ||
1038 | .in-calendar.alldays .l { margin-left: -3.8958333333333335% ; } | ||
1039 | .in-calendar.alldays .ll { margin-left: -12.1875% ; } | ||
1040 | .in-calendar.alldays .lll { margin-left: -20.479166666666668% ; } | ||
1041 | .in-calendar.alldays .llll { margin-left: -28.770833333333336% ; } | ||
1042 | .r, .rr, .rrr, .rrrr, .l, .ll, .lll, .llll { height: 4px; } | ||
1043 | .size-large .wholeday { height: 5400px; } | ||
1044 | .size-large .duration_inf { height: 2100px; } | ||
1045 | .size-medium .wholeday { height: 2880px; } | ||
1046 | .size-medium .duration_inf { height: 1120px; } | ||
1047 | .size-small .wholeday { height: 2160px; } | ||
1048 | .size-small .duration_inf { height: 840px; } | ||
diff --git a/templates/faq.html b/templates/faq.html new file mode 100644 index 0000000..aefd03d --- /dev/null +++ b/templates/faq.html | |||
@@ -0,0 +1,44 @@ | |||
1 | <!doctype html> | ||
2 | <html lang="en"> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <title>halfnarp FAQ</title> | ||
6 | <link rel="stylesheet" href="style.css"> | ||
7 | </head> | ||
8 | <body> | ||
9 | |||
10 | <div class="headline">The 38C3 halfnarp FAQ</div> | ||
11 | |||
12 | <dl> | ||
13 | <dt>Q: What is halfnarp?</dt> | ||
14 | <dd> | ||
15 | <p>A: <a href="/">halfnarp</a> is a service by Chaos Communication Congress’ content crew. It shows a live preview of our conference lecture planning tool and allows conference attendees to store and share a list of events they plan to attend. When users submit their favorites to the halfnarp server, the numbers allow adjusting the conference’s Fahrplan.</p> | ||
16 | |||
17 | <p>Remember when some of the talks you most desperately wanted to see were scheduled at the same time? If we know about your preferences, the time table can be optimized for a minimal global amount of collisions. Remember when the lecture you wanted to get into was overcrowded because it was put into the smallest hall? Your numbers help to estimate demand and finding the right place for a talk.</p> | ||
18 | </dd> | ||
19 | <dt>Q: How does it work?</dt> | ||
20 | <dd> | ||
21 | <p>A: 38C3 Fahrplan is curated by six teams each responsible for one track. By default, lectures are sorted by these tracks.</p> | ||
22 | <ul> | ||
23 | <li>On a desktop browser, hovering over an event’s description reveals the full abstract. Clicking on an event adds or removes events to/from your favorites list – they turn green.</li> | ||
24 | <li>On mobile browsers, tapping an event once selects it and reveals the whole content. Tapping a selected event adds or removes events to/from your favorites list – they turn green.</li> | ||
25 | </ul> | ||
26 | <p>Your choices will be stored locally in your browser for future visits. If you are done selecting and feel like helping to make the Fahrplan better, hit „Submit“. This will also reveal a download button for your personalized calendar in ical format and present a qrcode with a JSON dictionary of your preferences to import by mobile clients.</p> | ||
27 | <p>Once there is a preliminary timetable set, you can browse lectures by day using the day-view buttons.</p> | ||
28 | <p>The „Filter event“ text field allows you to filter events list by a type ahead search.</p> | ||
29 | </dd> | ||
30 | <dt>Q: How can I share my preferences?</dt> | ||
31 | <dd> | ||
32 | <p>A: Once you hit „Submit“, your address bar reveals your public calendar URL. Share this URL with your friends, so they can get inspired by your preferences.</p> | ||
33 | <p>If you click on your friends’ public calendar URL, their favorited events appear purple, alongside yours in green.</p> | ||
34 | </dd> | ||
35 | <dt>Q: Can the halfnarp be used to hack the Fahrplan?</dt> | ||
36 | <dd> | ||
37 | <p>A: The most important result is a conflict map showing how much all users do not want two certain lectures to happen at the same time. Absolute number are mostly ignored, making it hard to manipulate our Fahrplan. Also, results are being processed by actual humans, using their brains and halfnarps numbers as hints.</p> | ||
38 | </dd> | ||
39 | <dt>Q: How can I help?</dt> | ||
40 | <dd> | ||
41 | <p>A: Submitting your preferences to the halfnarp servers helps a lot. You can find and create pull requests for <a href="https://github.com/tomster/halfnarp">halfnarp on its github home</a>.</p> | ||
42 | </dd> | ||
43 | |||
44 | </html> | ||
diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..2e93fb3 --- /dev/null +++ b/templates/index.html | |||
@@ -0,0 +1,115 @@ | |||
1 | <!doctype html> | ||
2 | <html lang="en"> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <title>halfnarp web scheduling helper app</title> | ||
6 | <link rel="stylesheet" href="/static/style_38c3.css"> | ||
7 | <link rel="stylesheet" href="/static/style_38c3_tables.css"> | ||
8 | <script src="/static/jquery-3.7.1.min.js"></script> | ||
9 | <script src="/static/jquery.qrcode.min.js"></script> | ||
10 | <script src="/static/halfnarp.js"></script> | ||
11 | <script> | ||
12 | $( document ).ready(function() { do_the_halfnarp(); }); | ||
13 | </script> | ||
14 | </head> | ||
15 | <body class="size-small in-list halfnarp"> | ||
16 | <header class="header"> | ||
17 | <!--div class="views touch-only hidden vnarpr">narpr</div--> | ||
18 | <div class="views vlist" title="Display all events sorted by track (Hotkey: L)">list</div> | ||
19 | <div class="views vdays" title="Display all events in a 4-day-view (Hotkey: 0)">days</div> | ||
20 | <div class="views vday1" title="Display all events on Day 1 (Hotkey: 1)">day 1</div> | ||
21 | <div class="views vday2" title="Display all events on Day 2 (Hotkey: 2)">day 2</div> | ||
22 | <div class="views vday3" title="Display all events on Day 3 (Hotkey: 3)">day 3</div> | ||
23 | <div class="views vday4" title="Display all events on Day 4 (Hotkey: 4)">day 4</div> | ||
24 | <div class="views vcorr" title="Enter correlation view (Hotkey: C)">half</div> | ||
25 | <div class="views vtrack" title="Color event by track (Hotkey: T)">track</div> | ||
26 | <div class="views vlang" title="Color event by language (Hotkey: I)">lang</div> | ||
27 | <div class="header__right"> | ||
28 | <div class="allboxes"> | ||
29 | <div class="vsmallboxes boxer">size</div><div class="vmediumboxes boxer">Size</div><div class="vlargeboxes boxer">SIZE</div> | ||
30 | </div> | ||
31 | </div> | ||
32 | </header> | ||
33 | |||
34 | <div style="display:none"> | ||
35 | <div id="template"> | ||
36 | <div class="title"></div> | ||
37 | <div class="speakers"></div> | ||
38 | <div class="abstract"></div> | ||
39 | </div> | ||
40 | </div> | ||
41 | |||
42 | <div class="narpr hidden"> | ||
43 | <div class="narpr_swipy">swipe, hold, release</div> | ||
44 | <div class="narpr_swipy large">⟷</div> | ||
45 | <div class="narpr_track"></div> | ||
46 | <div class="narpr_title"></div> | ||
47 | <div class="narpr_subtitle"></div> | ||
48 | <div class="narpr_speakers"></div> | ||
49 | <div class="narpr_abstract"></div> | ||
50 | <div class="narpr_done">close</div> | ||
51 | </div> | ||
52 | |||
53 | <div class="intro"> | ||
54 | <h1>The 38C3 halfnarp</h1> | ||
55 | <div class="touch-only hidden vnarpr narpr-beta">narpr<sup>β</sup></div> | ||
56 | <p>Help us to reduce conflicts of scheduling 38C3's Fahrplan: Click on the talks you would like to watch and press submit.</p> | ||
57 | <p>For questions please read <a href="faq.html">our FAQ</a> and <a href="http://events.ccc.de/2014/11/25/lets-do-the-halfnarp/">our blogpost</a> for details. Please report problems to <a href="mailto:erdgeist@ccc.de">erdgeist@ccc.de</a>.</p> | ||
58 | <p class="corr-hint">Select an event below to display halfnarp correlations, the darker the stronger.</p> | ||
59 | <p class="touch-only hidden">NEW on mobile: Swipe the narpr!</p> | ||
60 | </div> | ||
61 | <!--div class="all-tracks track-list"> | ||
62 | <strong>classifiers:</strong> | ||
63 | <div class="legend track_378">CCC</div> | ||
64 | <div class="vclass legend track_379" classifier="Entertainment">Entertainment</div> | ||
65 | <div class="vclass legend track_382" classifier="Ethics, Politics + Society">Ethics, Society & Politics</div> | ||
66 | <div class="vclass legend track_381" classifier="Security">Security</div> | ||
67 | <div class="vclass legend track_376" classifier="Art + Culture">Art & Culture</div> | ||
68 | <div class="vclass legend track_380" classifier="Science">Science</div> | ||
69 | <div class="vclass legend track_377" classifier="Hardware">Hardware</div> | ||
70 | <div class="vclass legend track_383" classifier="Sustainability">Sustainability</div> | ||
71 | <div class="vclass" classifier="Foundations">Foundations</div> | ||
72 | <div class="vclass two_poles" classifier="Novelty">Summary - Novelty</div> | ||
73 | <div class="vclass two_poles" classifier="Defense - Offense">Defense - Offense</div> | ||
74 | <div class="vclass two_poles" classifier="Theory - Practice">Theory - Practice</div> | ||
75 | </div--> | ||
76 | <div style="clear:both"></div> | ||
77 | |||
78 | <div class="day_1 room-label room1">Saal 1</div><div class="day_1 room-label room2">Saal GLITCH</div><div class="day_1 room-label room3">Saal ZIGZAG</div> | ||
79 | <div class="day_2 room-label room1">Saal 1</div><div class="day_2 room-label room2">Saal GLITCH</div><div class="day_2 room-label room3">Saal ZIGZAG</div> | ||
80 | <div class="day_3 room-label room1">Saal 1</div><div class="day_3 room-label room2">Saal GLITCH</div><div class="day_3 room-label room3">Saal ZIGZAG</div> | ||
81 | <div class="day_4 room-label room1">Saal 1</div><div class="day_4 room-label room2">Saal GLITCH</div><div class="day_4 room-label room3">Saal ZIGZAG</div> | ||
82 | |||
83 | <div class=" time_1815 duration_3600 guide pause pause1">P A U S E</div> | ||
84 | <!--div class=" time_1950 duration_3600 guide pause ">P A U S E</div--> | ||
85 | |||
86 | <div class=" time_1750 duration_inf guide ende room1 day_4 "></div> | ||
87 | |||
88 | <div class="wholeday room1 day_1 guide uneven">Day 1</div> | ||
89 | <div class="wholeday room1 day_2 guide">Day 2</div> | ||
90 | <div class="wholeday room1 day_3 guide uneven">Day 3</div> | ||
91 | <div class="wholeday room1 day_4 guide">Day 4</div> | ||
92 | |||
93 | <div class="track" id="6"><h2>Security</h2></div> | ||
94 | <div class="track" id="4"><h2>Hardware & Making</h2></div> | ||
95 | <div class="track" id="7"><h2>Ethics, Society & Politics</h2></div> | ||
96 | <div class="track" id="2"><h2>CCC</h2></div> | ||
97 | <div class="track" id="3"><h2>Entertainment</h2></div> | ||
98 | <div class="track" id="5"><h2>Science</h2></div> | ||
99 | <div class="track" id="1"><h2>Art & Beauty</div> | ||
100 | |||
101 | <footer class="footer"> | ||
102 | <div class="footer__filter-side"> | ||
103 | <!--label>You can reduce the listed events with a filter</label--> | ||
104 | <input id="filter" type="text" placeholder="Filter events"/> | ||
105 | </div> | ||
106 | <div title="store your choices locally and – if possible – send them to the server" class="submit">Submit selection | ||
107 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 28" enable-background="new 0 0 22 28"><style type="text/css">.st0{fill:none;}</style><path class="st0" d="M-854-2242h1400v3600h-1400v-3600z"/><path d="M0 0v28l22-14-22-14z"/><path class="st0" d="M-16-10h48v48h-48v-48z"/></svg> | ||
108 | </div> | ||
109 | <div class="info hidden"></div> | ||
110 | <a class="export-url-a" download="38C3.ics" type="text/calendar" href="#"><div class="export-url hidden">38C3.ics</div></a> | ||
111 | <div id="qrcode" class="hidden"></div> | ||
112 | </footer> | ||
113 | |||
114 | </body> | ||
115 | </html> | ||
diff --git a/var/talks_local b/var/talks_local new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/var/talks_local | |||
diff --git a/versions/fullnarp_00000.json b/versions/fullnarp_00000.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/versions/fullnarp_00000.json | |||
@@ -0,0 +1 @@ | |||
{} | |||
@@ -0,0 +1,4 @@ | |||
1 | from halfnarp2 import app | ||
2 | |||
3 | if __name__ == "__main__": | ||
4 | app.run(debug=False) | ||