diff --git a/README.md b/README.md index 416ae9c..d4cdc43 100644 --- a/README.md +++ b/README.md @@ -115,14 +115,20 @@ python3 manage.py runserver 0.0.0.0:8000 1. (WSL) có thể tải ứng dụng Terminal trong Windows Store 2. (WSL) mỗi lần mở ubuntu, các bạn cần chạy lệnh sau để mariadb khởi động: `sudo service mysql restart` (tương tự cho một số service khác như memcached, celery) -3. Sau khi cài đặt, các bạn chỉ cần activate virtual env và chạy lệnh runserver là ok. - +3. Sau khi cài đặt, các bạn chỉ cần activate virtual env và chạy lệnh runserver là ok ```jsx . dmojsite/bin/activate python3 manage.py runserver ``` +5. Đối với nginx, sau khi config xong theo guide của DMOJ, bạn cần thêm location như sau để sử dụng được tính năng profile image, thay thế `path/to/oj` thành đường dẫn nơi bạn đã clone source code. -1. Quy trình dev: +``` +location /profile_images/ { + root /path/to/oj; +} +``` + +6. Quy trình dev: 1. Sau khi thay đổi code thì django tự build lại, các bạn chỉ cần F5 2. Một số style nằm trong các file .scss. Các bạn cần recompile css thì mới thấy được thay đổi. diff --git a/chat_box/migrations/0013_alter_message_time.py b/chat_box/migrations/0013_alter_message_time.py new file mode 100644 index 0000000..0f4ddc3 --- /dev/null +++ b/chat_box/migrations/0013_alter_message_time.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.18 on 2023-08-28 01:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("chat_box", "0012_auto_20230308_1417"), + ] + + operations = [ + migrations.AlterField( + model_name="message", + name="time", + field=models.DateTimeField( + auto_now_add=True, db_index=True, verbose_name="posted time" + ), + ), + ] diff --git a/chat_box/migrations/0014_userroom_unread_count.py b/chat_box/migrations/0014_userroom_unread_count.py new file mode 100644 index 0000000..8f407b3 --- /dev/null +++ b/chat_box/migrations/0014_userroom_unread_count.py @@ -0,0 +1,38 @@ +# Generated by Django 3.2.18 on 2023-08-28 06:02 + +from django.db import migrations, models + + +def migrate(apps, schema_editor): + UserRoom = apps.get_model("chat_box", "UserRoom") + Message = apps.get_model("chat_box", "Message") + + for ur in UserRoom.objects.all(): + if not ur.room: + continue + messages = ur.room.message_set + last_msg = messages.first() + try: + if last_msg and last_msg.author != ur.user: + ur.unread_count = messages.filter(time__gte=ur.last_seen).count() + else: + ur.unread_count = 0 + ur.save() + except: + continue + + +class Migration(migrations.Migration): + + dependencies = [ + ("chat_box", "0013_alter_message_time"), + ] + + operations = [ + migrations.AddField( + model_name="userroom", + name="unread_count", + field=models.IntegerField(db_index=True, default=0), + ), + migrations.RunPython(migrate, migrations.RunPython.noop, atomic=True), + ] diff --git a/chat_box/models.py b/chat_box/models.py index 61e39a6..fb3fd7b 100644 --- a/chat_box/models.py +++ b/chat_box/models.py @@ -1,9 +1,10 @@ from django.db import models -from django.db.models import CASCADE +from django.db.models import CASCADE, Q from django.utils.translation import gettext_lazy as _ from judge.models.profile import Profile +from judge.caching import cache_wrapper __all__ = ["Message", "Room", "UserRoom", "Ignore"] @@ -17,19 +18,28 @@ class Room(models.Model): Profile, related_name="user_two", verbose_name="user 2", on_delete=CASCADE ) + @cache_wrapper(prefix="Rc") def contain(self, profile): return self.user_one == profile or self.user_two == profile + @cache_wrapper(prefix="Rou") def other_user(self, profile): return self.user_one if profile == self.user_two else self.user_two + @cache_wrapper(prefix="Rus") def users(self): return [self.user_one, self.user_two] + @cache_wrapper(prefix="Rlmb") + def last_message_body(self): + return self.message_set.first().body + class Message(models.Model): author = models.ForeignKey(Profile, verbose_name=_("user"), on_delete=CASCADE) - time = models.DateTimeField(verbose_name=_("posted time"), auto_now_add=True) + time = models.DateTimeField( + verbose_name=_("posted time"), auto_now_add=True, db_index=True + ) body = models.TextField(verbose_name=_("body of comment"), max_length=8192) hidden = models.BooleanField(verbose_name="is hidden", default=False) room = models.ForeignKey( @@ -56,6 +66,7 @@ class UserRoom(models.Model): Room, verbose_name="room id", on_delete=CASCADE, default=None, null=True ) last_seen = models.DateTimeField(verbose_name=_("last seen"), auto_now_add=True) + unread_count = models.IntegerField(default=0, db_index=True) class Meta: unique_together = ("user", "room") @@ -74,11 +85,9 @@ class Ignore(models.Model): @classmethod def is_ignored(self, current_user, new_friend): try: - return ( - current_user.ignored_chat_users.get() - .ignored_users.filter(id=new_friend.id) - .exists() - ) + return current_user.ignored_chat_users.ignored_users.filter( + id=new_friend.id + ).exists() except: return False @@ -89,6 +98,16 @@ class Ignore(models.Model): except: return Profile.objects.none() + @classmethod + def get_ignored_rooms(self, user): + try: + ignored_users = self.objects.get(user=user).ignored_users.all() + return Room.objects.filter(Q(user_one=user) | Q(user_two=user)).filter( + Q(user_one__in=ignored_users) | Q(user_two__in=ignored_users) + ) + except: + return Room.objects.none() + @classmethod def add_ignore(self, current_user, friend): ignore, created = self.objects.get_or_create(user=current_user) diff --git a/chat_box/utils.py b/chat_box/utils.py index e25e861..dd59d98 100644 --- a/chat_box/utils.py +++ b/chat_box/utils.py @@ -1,10 +1,12 @@ from cryptography.fernet import Fernet +import hmac +import hashlib from django.conf import settings -from django.db.models import OuterRef, Count, Subquery, IntegerField +from django.db.models import OuterRef, Count, Subquery, IntegerField, Q from django.db.models.functions import Coalesce -from chat_box.models import Ignore, Message, UserRoom +from chat_box.models import Ignore, Message, UserRoom, Room secret_key = settings.CHAT_SECRET_KEY fernet = Fernet(secret_key) @@ -24,25 +26,22 @@ def decrypt_url(message_encrypted): return None, None -def get_unread_boxes(profile): - ignored_users = Ignore.get_ignored_users(profile) - - mess = ( - Message.objects.filter(room=OuterRef("room"), time__gte=OuterRef("last_seen")) - .exclude(author=profile) - .exclude(author__in=ignored_users) - .order_by() - .values("room") - .annotate(unread_count=Count("pk")) - .values("unread_count") +def encrypt_channel(channel): + return ( + hmac.new( + settings.CHAT_SECRET_KEY.encode(), + channel.encode(), + hashlib.sha512, + ).hexdigest()[:16] + + "%s" % channel ) + +def get_unread_boxes(profile): + ignored_rooms = Ignore.get_ignored_rooms(profile) unread_boxes = ( - UserRoom.objects.filter(user=profile, room__isnull=False) - .annotate( - unread_count=Coalesce(Subquery(mess, output_field=IntegerField()), 0), - ) - .filter(unread_count__gte=1) + UserRoom.objects.filter(user=profile, unread_count__gt=0) + .exclude(room__in=ignored_rooms) .count() ) diff --git a/chat_box/views.py b/chat_box/views.py index cea58e1..5a15f74 100644 --- a/chat_box/views.py +++ b/chat_box/views.py @@ -21,6 +21,8 @@ from django.db.models import ( Exists, Count, IntegerField, + F, + Max, ) from django.db.models.functions import Coalesce from django.utils import timezone @@ -34,7 +36,7 @@ from judge.jinja2.gravatar import gravatar from judge.models import Friend from chat_box.models import Message, Profile, Room, UserRoom, Ignore -from chat_box.utils import encrypt_url, decrypt_url +from chat_box.utils import encrypt_url, decrypt_url, encrypt_channel import json @@ -49,7 +51,8 @@ class ChatView(ListView): self.room_id = None self.room = None self.messages = None - self.page_size = 20 + self.first_page_size = 20 # only for first request + self.follow_up_page_size = 50 def get_queryset(self): return self.messages @@ -63,10 +66,12 @@ class ChatView(ListView): def get(self, request, *args, **kwargs): request_room = kwargs["room_id"] + page_size = self.follow_up_page_size try: last_id = int(request.GET.get("last_id")) except Exception: last_id = 1e15 + page_size = self.first_page_size only_messages = request.GET.get("only_messages") if request_room: @@ -80,11 +85,12 @@ class ChatView(ListView): request_room = None self.room_id = request_room - self.messages = Message.objects.filter( - hidden=False, room=self.room_id, id__lt=last_id - )[: self.page_size] + self.messages = ( + Message.objects.filter(hidden=False, room=self.room_id, id__lt=last_id) + .select_related("author", "author__user") + .defer("author__about", "author__user_script")[:page_size] + ) if not only_messages: - update_last_seen(request, **kwargs) return super().get(request, *args, **kwargs) return render( @@ -101,10 +107,14 @@ class ChatView(ListView): context["title"] = self.title context["last_msg"] = event.last() - context["status_sections"] = get_status_context(self.request) + context["status_sections"] = get_status_context(self.request.profile) context["room"] = self.room_id context["has_next"] = self.has_next() context["unread_count_lobby"] = get_unread_count(None, self.request.profile) + context["chat_channel"] = encrypt_channel( + "chat_" + str(self.request.profile.id) + ) + context["chat_lobby_channel"] = encrypt_channel("chat_lobby") if self.room: users_room = [self.room.user_one, self.room.user_two] users_room.remove(self.request.profile) @@ -187,7 +197,7 @@ def post_message(request): if not room: event.post( - "chat_lobby", + encrypt_channel("chat_lobby"), { "type": "lobby", "author_id": request.profile.id, @@ -197,9 +207,10 @@ def post_message(request): }, ) else: + Room.last_message_body.dirty(room) for user in room.users(): event.post( - "chat_" + str(user.id), + encrypt_channel("chat_" + str(user.id)), { "type": "private", "author_id": request.profile.id, @@ -208,6 +219,10 @@ def post_message(request): "tmp_id": request.POST.get("tmp_id"), }, ) + if user != request.profile: + UserRoom.objects.filter(user=user, room=room).update( + unread_count=F("unread_count") + 1 + ) return JsonResponse(ret) @@ -254,35 +269,33 @@ def update_last_seen(request, **kwargs): room_id = request.POST.get("room") else: return HttpResponseBadRequest() - try: profile = request.profile room = None if room_id: - room = Room.objects.get(id=int(room_id)) + room = Room.objects.filter(id=int(room_id)).first() except Room.DoesNotExist: return HttpResponseBadRequest() - except Exception as e: - return HttpResponseBadRequest() if room and not room.contain(profile): return HttpResponseBadRequest() user_room, _ = UserRoom.objects.get_or_create(user=profile, room=room) user_room.last_seen = timezone.now() + user_room.unread_count = 0 user_room.save() return JsonResponse({"msg": "updated"}) def get_online_count(): - last_two_minutes = timezone.now() - timezone.timedelta(minutes=2) - return Profile.objects.filter(last_access__gte=last_two_minutes).count() + last_5_minutes = timezone.now() - timezone.timedelta(minutes=5) + return Profile.objects.filter(last_access__gte=last_5_minutes).count() def get_user_online_status(user): time_diff = timezone.now() - user.last_access - is_online = time_diff <= timezone.timedelta(minutes=2) + is_online = time_diff <= timezone.timedelta(minutes=5) return is_online @@ -319,47 +332,67 @@ def user_online_status_ajax(request): ) -def get_online_status(request_user, queryset, rooms=None): - if not queryset: +def get_online_status(profile, other_profile_ids, rooms=None): + if not other_profile_ids: return None - last_two_minutes = timezone.now() - timezone.timedelta(minutes=2) + joined_ids = ",".join([str(id) for id in other_profile_ids]) + other_profiles = Profile.objects.raw( + f"SELECT * from judge_profile where id in ({joined_ids}) order by field(id,{joined_ids})" + ) + last_5_minutes = timezone.now() - timezone.timedelta(minutes=5) ret = [] - if rooms: - unread_count = get_unread_count(rooms, request_user) + unread_count = get_unread_count(rooms, profile) count = {} + last_msg = {} + room_of_user = {} for i in unread_count: - count[i["other_user"]] = i["unread_count"] + room = Room.objects.get(id=i["room"]) + other_profile = room.other_user(profile) + count[other_profile.id] = i["unread_count"] + for room in rooms: + room = Room.objects.get(id=room) + other_profile = room.other_user(profile) + last_msg[other_profile.id] = room.last_message_body() + room_of_user[other_profile.id] = room.id - for user in queryset: + for other_profile in other_profiles: is_online = False - if user.last_access >= last_two_minutes: + if other_profile.last_access >= last_5_minutes: is_online = True - user_dict = {"user": user, "is_online": is_online} - if rooms and user.id in count: - user_dict["unread_count"] = count[user.id] - user_dict["url"] = encrypt_url(request_user.id, user.id) + user_dict = {"user": other_profile, "is_online": is_online} + if rooms: + user_dict.update( + { + "unread_count": count.get(other_profile.id), + "last_msg": last_msg.get(other_profile.id), + "room": room_of_user.get(other_profile.id), + } + ) + user_dict["url"] = encrypt_url(profile.id, other_profile.id) ret.append(user_dict) return ret -def get_status_context(request, include_ignored=False): +def get_status_context(profile, include_ignored=False): if include_ignored: - ignored_users = Profile.objects.none() + ignored_users = [] queryset = Profile.objects else: - ignored_users = Ignore.get_ignored_users(request.profile) + ignored_users = list( + Ignore.get_ignored_users(profile).values_list("id", flat=True) + ) queryset = Profile.objects.exclude(id__in=ignored_users) - last_two_minutes = timezone.now() - timezone.timedelta(minutes=2) + last_5_minutes = timezone.now() - timezone.timedelta(minutes=5) recent_profile = ( - Room.objects.filter(Q(user_one=request.profile) | Q(user_two=request.profile)) + Room.objects.filter(Q(user_one=profile) | Q(user_two=profile)) .annotate( last_msg_time=Subquery( Message.objects.filter(room=OuterRef("pk")).values("time")[:1] ), other_user=Case( - When(user_one=request.profile, then="user_two"), + When(user_one=profile, then="user_two"), default="user_one", ), ) @@ -369,50 +402,36 @@ def get_status_context(request, include_ignored=False): .values("other_user", "id")[:20] ) - recent_profile_id = [str(i["other_user"]) for i in recent_profile] - joined_id = ",".join(recent_profile_id) + recent_profile_ids = [str(i["other_user"]) for i in recent_profile] recent_rooms = [int(i["id"]) for i in recent_profile] - recent_list = None - if joined_id: - recent_list = Profile.objects.raw( - f"SELECT * from judge_profile where id in ({joined_id}) order by field(id,{joined_id})" - ) - friend_list = ( - Friend.get_friend_profiles(request.profile) - .exclude(id__in=recent_profile_id) - .exclude(id__in=ignored_users) - .order_by("-last_access") - ) + admin_list = ( queryset.filter(display_rank="admin") - .exclude(id__in=friend_list) - .exclude(id__in=recent_profile_id) + .exclude(id__in=recent_profile_ids) + .values_list("id", flat=True) ) + all_user_status = ( - queryset.filter(display_rank="user", last_access__gte=last_two_minutes) + queryset.filter(last_access__gte=last_5_minutes) .annotate(is_online=Case(default=True, output_field=BooleanField())) .order_by("-rating") - .exclude(id__in=friend_list) .exclude(id__in=admin_list) - .exclude(id__in=recent_profile_id)[:30] + .exclude(id__in=recent_profile_ids) + .values_list("id", flat=True)[:30] ) return [ { "title": "Recent", - "user_list": get_online_status(request.profile, recent_list, recent_rooms), - }, - { - "title": "Following", - "user_list": get_online_status(request.profile, friend_list), + "user_list": get_online_status(profile, recent_profile_ids, recent_rooms), }, { "title": "Admin", - "user_list": get_online_status(request.profile, admin_list), + "user_list": get_online_status(profile, admin_list), }, { "title": "Other", - "user_list": get_online_status(request.profile, all_user_status), + "user_list": get_online_status(profile, all_user_status), }, ] @@ -423,7 +442,7 @@ def online_status_ajax(request): request, "chat/online_status.html", { - "status_sections": get_status_context(request), + "status_sections": get_status_context(request.profile), "unread_count_lobby": get_unread_count(None, request.profile), }, ) @@ -447,7 +466,6 @@ def get_or_create_room(request): return HttpResponseBadRequest() request_id, other_id = decrypt_url(decrypted_other_id) - if not other_id or not request_id or request_id != request.profile.id: return HttpResponseBadRequest() @@ -475,48 +493,22 @@ def get_or_create_room(request): def get_unread_count(rooms, user): if rooms: - mess = ( - Message.objects.filter( - room=OuterRef("room"), time__gte=OuterRef("last_seen") - ) - .exclude(author=user) - .order_by() - .values("room") - .annotate(unread_count=Count("pk")) - .values("unread_count") - ) - - return ( - UserRoom.objects.filter(user=user, room__in=rooms) - .annotate( - unread_count=Coalesce(Subquery(mess, output_field=IntegerField()), 0), - other_user=Case( - When(room__user_one=user, then="room__user_two"), - default="room__user_one", - ), - ) - .filter(unread_count__gte=1) - .values("other_user", "unread_count") - ) + return UserRoom.objects.filter( + user=user, room__in=rooms, unread_count__gt=0 + ).values("unread_count", "room") else: # lobby - mess = ( - Message.objects.filter(room__isnull=True, time__gte=OuterRef("last_seen")) - .exclude(author=user) - .order_by() - .values("room") - .annotate(unread_count=Count("pk")) - .values("unread_count") - ) - + user_room = UserRoom.objects.filter(user=user, room__isnull=True).first() + if not user_room: + return 0 + last_seen = user_room.last_seen res = ( - UserRoom.objects.filter(user=user, room__isnull=True) - .annotate( - unread_count=Coalesce(Subquery(mess, output_field=IntegerField()), 0), - ) - .values_list("unread_count", flat=True) + Message.objects.filter(room__isnull=True, time__gte=last_seen) + .exclude(author=user) + .exclude(hidden=True) + .count() ) - return res[0] if len(res) else 0 + return res @login_required diff --git a/dmoj/settings.py b/dmoj/settings.py index e205e60..d5cfa38 100644 --- a/dmoj/settings.py +++ b/dmoj/settings.py @@ -477,10 +477,16 @@ ML_OUTPUT_PATH = None # Use subdomain for organizations USE_SUBDOMAIN = False +# Chat +CHAT_SECRET_KEY = "QUdVFsxk6f5-Hd8g9BXv81xMqvIZFRqMl-KbRzztW-U=" + +# Nginx +META_REMOTE_ADDRESS_KEY = "REMOTE_ADDR" + +DEFAULT_AUTO_FIELD = "django.db.models.AutoField" + try: with open(os.path.join(os.path.dirname(__file__), "local_settings.py")) as f: exec(f.read(), globals()) except IOError: pass - -DEFAULT_AUTO_FIELD = "django.db.models.AutoField" diff --git a/dmoj/urls.py b/dmoj/urls.py index 54a7f12..402a569 100644 --- a/dmoj/urls.py +++ b/dmoj/urls.py @@ -65,6 +65,7 @@ from judge.views import ( internal, resolver, course, + email, ) from judge.views.problem_data import ( ProblemDataView, @@ -104,19 +105,19 @@ register_patterns = [ # confusing 404. url( r"^activate/(?P\w+)/$", - ActivationView.as_view(title="Activation key invalid"), + ActivationView.as_view(title=_("Activation key invalid")), name="registration_activate", ), url( r"^register/$", - RegistrationView.as_view(title="Register"), + RegistrationView.as_view(title=_("Register")), name="registration_register", ), url( r"^register/complete/$", TitledTemplateView.as_view( template_name="registration/registration_complete.html", - title="Registration Completed", + title=_("Registration Completed"), ), name="registration_complete", ), @@ -124,7 +125,7 @@ register_patterns = [ r"^register/closed/$", TitledTemplateView.as_view( template_name="registration/registration_closed.html", - title="Registration not allowed", + title=_("Registration not allowed"), ), name="registration_disallowed", ), @@ -183,6 +184,17 @@ register_patterns = [ ), name="password_reset_done", ), + url(r"^email/change/$", email.email_change_view, name="email_change"), + url( + r"^email/change/verify/(?P[0-9A-Za-z]+)-(?P.+)/$", + email.verify_email_view, + name="email_change_verify", + ), + url( + r"^email/change/pending$", + email.email_change_pending_view, + name="email_change_pending", + ), url(r"^social/error/$", register.social_auth_error, name="social_auth_error"), url(r"^2fa/$", totp.TOTPLoginView.as_view(), name="login_2fa"), url(r"^2fa/enable/$", totp.TOTPEnableView.as_view(), name="enable_2fa"), diff --git a/judge/admin/contest.py b/judge/admin/contest.py index f183880..9c8b6fd 100644 --- a/judge/admin/contest.py +++ b/judge/admin/contest.py @@ -71,7 +71,6 @@ class ContestProblemInlineForm(ModelForm): "hidden_subtasks": TextInput(attrs={"size": "3"}), "points": TextInput(attrs={"size": "1"}), "order": TextInput(attrs={"size": "1"}), - "output_prefix_override": TextInput(attrs={"size": "1"}), } @@ -86,7 +85,7 @@ class ContestProblemInline(admin.TabularInline): "is_pretested", "max_submissions", "hidden_subtasks", - "output_prefix_override", + "show_testcases", "order", "rejudge_column", ) diff --git a/judge/caching.py b/judge/caching.py index ad27f2f..42e9311 100644 --- a/judge/caching.py +++ b/judge/caching.py @@ -5,9 +5,10 @@ from django.db.models.query import QuerySet import hashlib MAX_NUM_CHAR = 15 +NONE_RESULT = "__None__" -def cache_wrapper(prefix, timeout=86400): +def cache_wrapper(prefix, timeout=None): def arg_to_str(arg): if hasattr(arg, "id"): return str(arg.id) @@ -31,8 +32,11 @@ def cache_wrapper(prefix, timeout=86400): cache_key = get_key(func, *args, **kwargs) result = cache.get(cache_key) if result is not None: + if result == NONE_RESULT: + result = None return result - + if result is None: + result = NONE_RESULT result = func(*args, **kwargs) cache.set(cache_key, result, timeout) return result diff --git a/judge/contest_format/__init__.py b/judge/contest_format/__init__.py index 8d2ccc9..9f6d628 100644 --- a/judge/contest_format/__init__.py +++ b/judge/contest_format/__init__.py @@ -4,4 +4,5 @@ from judge.contest_format.ecoo import ECOOContestFormat from judge.contest_format.icpc import ICPCContestFormat from judge.contest_format.ioi import IOIContestFormat from judge.contest_format.new_ioi import NewIOIContestFormat +from judge.contest_format.ultimate import UltimateContestFormat from judge.contest_format.registry import choices, formats diff --git a/judge/contest_format/ultimate.py b/judge/contest_format/ultimate.py new file mode 100644 index 0000000..7960d02 --- /dev/null +++ b/judge/contest_format/ultimate.py @@ -0,0 +1,55 @@ +from django.utils.translation import gettext_lazy + +from judge.contest_format.ioi import IOIContestFormat +from judge.contest_format.registry import register_contest_format +from django.db.models import Min, OuterRef, Subquery + +# This contest format only counts last submission for each problem. + + +@register_contest_format("ultimate") +class UltimateContestFormat(IOIContestFormat): + name = gettext_lazy("Ultimate") + + def update_participation(self, participation): + cumtime = 0 + score = 0 + format_data = {} + + queryset = participation.submissions + if self.contest.freeze_after: + queryset = queryset.filter( + submission__date__lt=participation.start + self.contest.freeze_after + ) + + queryset = ( + queryset.values("problem_id") + .filter( + id=Subquery( + queryset.filter(problem_id=OuterRef("problem_id")) + .order_by("-id") + .values("id")[:1] + ) + ) + .values_list("problem_id", "submission__date", "points") + ) + + for problem_id, time, points in queryset: + if self.config["cumtime"]: + dt = (time - participation.start).total_seconds() + if points: + cumtime += dt + else: + dt = 0 + format_data[str(problem_id)] = { + "time": dt, + "points": points, + } + score += points + + self.handle_frozen_state(participation, format_data) + participation.cumtime = max(cumtime, 0) + participation.score = round(score, self.contest.points_precision) + participation.tiebreaker = 0 + participation.format_data = format_data + participation.save() diff --git a/judge/forms.py b/judge/forms.py index 5bc43a9..d627b0e 100644 --- a/judge/forms.py +++ b/judge/forms.py @@ -80,6 +80,7 @@ class ProfileForm(ModelForm): "ace_theme", "user_script", "profile_image", + "css_background", ] widgets = { "user_script": AceWidget(theme="github"), @@ -87,6 +88,7 @@ class ProfileForm(ModelForm): "language": Select2Widget(attrs={"style": "width:200px"}), "ace_theme": Select2Widget(attrs={"style": "width:200px"}), "profile_image": ImageWidget, + "css_background": forms.TextInput(), } has_math_config = bool(settings.MATHOID_URL) @@ -528,19 +530,47 @@ class ContestProblemForm(ModelForm): "problem", "points", "partial", - "output_prefix_override", + "show_testcases", "max_submissions", ) widgets = { "problem": HeavySelect2Widget( - data_view="problem_select2", attrs={"style": "width:100%"} + data_view="problem_select2", attrs={"style": "width: 100%"} ), } +class ContestProblemModelFormSet(BaseModelFormSet): + def is_valid(self): + valid = super().is_valid() + + if not valid: + return valid + + problems = set() + duplicates = [] + + for form in self.forms: + if form.cleaned_data and not form.cleaned_data.get("DELETE", False): + problem = form.cleaned_data.get("problem") + if problem in problems: + duplicates.append(problem) + else: + problems.add(problem) + + if duplicates: + for form in self.forms: + problem = form.cleaned_data.get("problem") + if problem in duplicates: + form.add_error("problem", _("This problem is duplicated.")) + return False + + return True + + class ContestProblemFormSet( formset_factory( - ContestProblemForm, formset=BaseModelFormSet, extra=6, can_delete=True + ContestProblemForm, formset=ContestProblemModelFormSet, extra=6, can_delete=True ) ): model = ContestProblem diff --git a/judge/migrations/0163_email_change.py b/judge/migrations/0163_email_change.py new file mode 100644 index 0000000..985121d --- /dev/null +++ b/judge/migrations/0163_email_change.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2023-08-25 00:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0162_profile_image"), + ] + + operations = [ + migrations.AddField( + model_name="profile", + name="email_change_pending", + field=models.EmailField(blank=True, max_length=254, null=True), + ), + ] diff --git a/judge/migrations/0164_show_testcase.py b/judge/migrations/0164_show_testcase.py new file mode 100644 index 0000000..33cbdf8 --- /dev/null +++ b/judge/migrations/0164_show_testcase.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.18 on 2023-08-25 23:03 + +from django.db import migrations, models + + +def migrate_show_testcases(apps, schema_editor): + ContestProblem = apps.get_model("judge", "ContestProblem") + + for c in ContestProblem.objects.all(): + if c.output_prefix_override == 1: + c.show_testcases = True + c.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0163_email_change"), + ] + + operations = [ + migrations.AddField( + model_name="contestproblem", + name="show_testcases", + field=models.BooleanField(default=False, verbose_name="visible testcases"), + ), + migrations.RunPython( + migrate_show_testcases, migrations.RunPython.noop, atomic=True + ), + ] diff --git a/judge/migrations/0165_drop_output_prefix_override.py b/judge/migrations/0165_drop_output_prefix_override.py new file mode 100644 index 0000000..ea9b17a --- /dev/null +++ b/judge/migrations/0165_drop_output_prefix_override.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.18 on 2023-08-25 23:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0164_show_testcase"), + ] + + operations = [ + migrations.RemoveField( + model_name="contestproblem", + name="output_prefix_override", + ), + ] diff --git a/judge/migrations/0166_display_rank_index.py b/judge/migrations/0166_display_rank_index.py new file mode 100644 index 0000000..ffea311 --- /dev/null +++ b/judge/migrations/0166_display_rank_index.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.18 on 2023-08-28 01:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0165_drop_output_prefix_override"), + ] + + operations = [ + migrations.AlterField( + model_name="profile", + name="display_rank", + field=models.CharField( + choices=[ + ("user", "Normal User"), + ("setter", "Problem Setter"), + ("admin", "Admin"), + ], + db_index=True, + default="user", + max_length=10, + verbose_name="display rank", + ), + ), + ] diff --git a/judge/migrations/0167_ultimate_contest_format.py b/judge/migrations/0167_ultimate_contest_format.py new file mode 100644 index 0000000..636e882 --- /dev/null +++ b/judge/migrations/0167_ultimate_contest_format.py @@ -0,0 +1,32 @@ +# Generated by Django 3.2.18 on 2023-09-01 00:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0166_display_rank_index"), + ] + + operations = [ + migrations.AlterField( + model_name="contest", + name="format_name", + field=models.CharField( + choices=[ + ("atcoder", "AtCoder"), + ("default", "Default"), + ("ecoo", "ECOO"), + ("icpc", "ICPC"), + ("ioi", "IOI"), + ("ioi16", "New IOI"), + ("ultimate", "Ultimate"), + ], + default="default", + help_text="The contest format module to use.", + max_length=32, + verbose_name="contest format", + ), + ), + ] diff --git a/judge/migrations/0168_css_background.py b/judge/migrations/0168_css_background.py new file mode 100644 index 0000000..6210a26 --- /dev/null +++ b/judge/migrations/0168_css_background.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.18 on 2023-09-02 00:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0167_ultimate_contest_format"), + ] + + operations = [ + migrations.AddField( + model_name="profile", + name="css_background", + field=models.TextField( + blank=True, + help_text='CSS custom background properties: url("image_url"), color, etc', + max_length=300, + null=True, + verbose_name="Custom background", + ), + ), + ] diff --git a/judge/models/contest.py b/judge/models/contest.py index 1129076..8bb3d5b 100644 --- a/judge/models/contest.py +++ b/judge/models/contest.py @@ -772,12 +772,9 @@ class ContestProblem(models.Model): partial = models.BooleanField(default=True, verbose_name=_("partial")) is_pretested = models.BooleanField(default=False, verbose_name=_("is pretested")) order = models.PositiveIntegerField(db_index=True, verbose_name=_("order")) - output_prefix_override = models.IntegerField( - help_text=_("0 to not show testcases, 1 to show"), + show_testcases = models.BooleanField( verbose_name=_("visible testcases"), - null=True, - blank=True, - default=0, + default=False, ) max_submissions = models.IntegerField( help_text=_( diff --git a/judge/models/problem.py b/judge/models/problem.py index 1149f94..3377b2d 100644 --- a/judge/models/problem.py +++ b/judge/models/problem.py @@ -403,17 +403,17 @@ class Problem(models.Model, PageVotable, Bookmarkable): ) # Authors, curators, and testers should always have access, so OR at the very end. - filter = Exists( + q |= Exists( Problem.authors.through.objects.filter( problem=OuterRef("pk"), profile=profile ) ) - filter |= Exists( + q |= Exists( Problem.curators.through.objects.filter( problem=OuterRef("pk"), profile=profile ) ) - filter |= Exists( + q |= Exists( Problem.testers.through.objects.filter( problem=OuterRef("pk"), profile=profile ) diff --git a/judge/models/profile.py b/judge/models/profile.py index 8c8a31d..96f3cfd 100644 --- a/judge/models/profile.py +++ b/judge/models/profile.py @@ -109,6 +109,13 @@ class Organization(models.Model): "Organization membership test must be Profile or primany key" ) + def delete(self, *args, **kwargs): + contests = self.contest_set + for contest in contests.all(): + if contest.organizations.count() == 1: + contest.delete() + super().delete(*args, **kwargs) + def __str__(self): return self.name @@ -176,6 +183,7 @@ class Profile(models.Model): ("setter", "Problem Setter"), ("admin", "Admin"), ), + db_index=True, ) mute = models.BooleanField( verbose_name=_("comment mute"), @@ -237,6 +245,14 @@ class Profile(models.Model): help_text=_("Notes for administrators regarding this user."), ) profile_image = models.ImageField(upload_to=profile_image_path, null=True) + email_change_pending = models.EmailField(blank=True, null=True) + css_background = models.TextField( + verbose_name=_("Custom background"), + null=True, + blank=True, + help_text=_('CSS custom background properties: url("image_url"), color, etc'), + max_length=300, + ) @cached_property def organization(self): diff --git a/judge/tasks/import_users.py b/judge/tasks/import_users.py index db8d5c5..5584687 100644 --- a/judge/tasks/import_users.py +++ b/judge/tasks/import_users.py @@ -1,5 +1,6 @@ import csv from tempfile import mktemp +import re from django.conf import settings from django.contrib.auth.models import User @@ -41,6 +42,11 @@ def csv_to_dict(csv_file): return res +def is_valid_username(username): + match = re.match(r"\w+", username) + return match is not None and match.group() == username + + # return result log def import_users(users): log = "" @@ -48,17 +54,18 @@ def import_users(users): cur_log = str(i + 1) + ". " username = row["username"] + if not is_valid_username(username): + log += username + ": Invalid username\n" + continue + cur_log += username + ": " - pwd = row["password"] - user, created = User.objects.get_or_create( username=username, defaults={ "is_active": True, }, ) - profile, _ = Profile.objects.get_or_create( user=user, defaults={ diff --git a/judge/user_log.py b/judge/user_log.py index 91a4c67..b8aec43 100644 --- a/judge/user_log.py +++ b/judge/user_log.py @@ -1,4 +1,5 @@ from django.utils.timezone import now +from django.conf import settings from judge.models import Profile @@ -17,8 +18,8 @@ class LogUserAccessMiddleware(object): ): updates = {"last_access": now()} # Decided on using REMOTE_ADDR as nginx will translate it to the external IP that hits it. - if request.META.get("REMOTE_ADDR"): - updates["ip"] = request.META.get("REMOTE_ADDR") + if request.META.get(settings.META_REMOTE_ADDRESS_KEY): + updates["ip"] = request.META.get(settings.META_REMOTE_ADDRESS_KEY) Profile.objects.filter(user_id=request.user.pk).update(**updates) return response diff --git a/judge/utils/email_render.py b/judge/utils/email_render.py new file mode 100644 index 0000000..5d790f5 --- /dev/null +++ b/judge/utils/email_render.py @@ -0,0 +1,20 @@ +from django.template.loader import render_to_string +from django.contrib.sites.shortcuts import get_current_site +from django.conf import settings + + +def render_email_message(request, contexts): + current_site = get_current_site(request) + email_contexts = { + "username": request.user.username, + "domain": current_site.domain, + "protocol": "https" if request.is_secure() else "http", + "site_name": settings.SITE_NAME, + "message": None, + "title": None, + "button_text": "Click here", + "url_path": None, + } + email_contexts.update(contexts) + message = render_to_string("general_email.html", email_contexts) + return message diff --git a/judge/views/contests.py b/judge/views/contests.py index ff4b320..f209030 100644 --- a/judge/views/contests.py +++ b/judge/views/contests.py @@ -134,7 +134,7 @@ class ContestList( QueryStringSortMixin, DiggPaginatorMixin, TitleMixin, ContestListMixin, ListView ): model = Contest - paginate_by = 20 + paginate_by = 10 template_name = "contest/list.html" title = gettext_lazy("Contests") context_object_name = "past_contests" @@ -1357,9 +1357,7 @@ class ContestClarificationAjax(ContestMixin, DetailView): raise Http404() polling_time = 1 # minute - last_one_minute = last_five_minutes = timezone.now() - timezone.timedelta( - minutes=polling_time - ) + last_one_minute = timezone.now() - timezone.timedelta(minutes=polling_time) queryset = ContestProblemClarification.objects.filter( problem__in=self.object.contest_problems.all(), date__gte=last_one_minute diff --git a/judge/views/email.py b/judge/views/email.py new file mode 100644 index 0000000..5544daf --- /dev/null +++ b/judge/views/email.py @@ -0,0 +1,121 @@ +from django.contrib.auth.tokens import default_token_generator +from django.core.mail import send_mail +from django.shortcuts import render, redirect +from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode +from django.utils.encoding import force_bytes, force_text +from django.conf import settings +from django import forms +from django.utils.translation import gettext_lazy as _ +from django.urls import reverse +from django.contrib.auth.decorators import login_required +from django.contrib.auth.models import User +from django.contrib.auth.hashers import check_password + +from urllib.parse import urlencode, urlunparse, urlparse + +from judge.models import Profile +from judge.utils.email_render import render_email_message + + +class EmailChangeForm(forms.Form): + new_email = forms.EmailField(label=_("New Email")) + password = forms.CharField(label=_("Password"), widget=forms.PasswordInput) + + def __init__(self, *args, **kwargs): + self.user = kwargs.pop("user", None) + super().__init__(*args, **kwargs) + + def clean_new_email(self): + new_email = self.cleaned_data.get("new_email") + if User.objects.filter(email=new_email).exists(): + raise forms.ValidationError(_("An account with this email already exists.")) + return new_email + + def clean_password(self): + password = self.cleaned_data.get("password") + if not self.user.check_password(password): + raise forms.ValidationError("Invalid password") + return password + + +@login_required +def email_change_view(request): + form = EmailChangeForm(request.POST or None, user=request.user) + + if request.method == "POST" and form.is_valid(): + new_email = request.POST.get("new_email") + user = request.user + profile = request.profile + + # Generate a token for email verification + token = default_token_generator.make_token(user) + uid = urlsafe_base64_encode(force_bytes(user.pk)) + + # Send the email to the user + subject = settings.SITE_NAME + " - " + _("Email Change Request") + email_contexts = { + "message": _( + "We have received a request to change your email to this email. Click the button below to change your email:" + ), + "title": _("Email Change"), + "button_text": _("Change Email"), + "url_path": reverse( + "email_change_verify", kwargs={"uidb64": uid, "token": token} + ), + } + message = render_email_message(request, email_contexts) + send_mail( + subject, + message, + settings.EMAIL_HOST_USER, + [new_email], + html_message=message, + ) + profile.email_change_pending = new_email + profile.save() + return redirect("email_change_pending") + + return render( + request, + "email_change/email_change.html", + { + "form": form, + "title": _("Change email"), + }, + ) + + +def verify_email_view(request, uidb64, token): + try: + uid = force_text(urlsafe_base64_decode(uidb64)) + user = User.objects.get(pk=uid) + except (TypeError, ValueError, OverflowError, User.DoesNotExist): + user = None + if user is not None and default_token_generator.check_token(user, token): + profile = Profile.objects.get(user=user) + new_email = profile.email_change_pending + if new_email and not User.objects.filter(email=new_email).exists(): + user.email = new_email + profile.email_change_pending = None + user.save() + profile.save() + + return render( + request, + "email_change/email_change_success.html", + {"title": _("Success"), "user": user}, + ) + + return render( + request, "email_change/email_change_failure.html", {"title": _("Invalid")} + ) + + +def email_change_pending_view(request): + return render( + request, + "email_change/email_change_pending.html", + { + "title": _("Email change pending"), + }, + ) diff --git a/judge/views/internal.py b/judge/views/internal.py index 4467fc3..eff02a4 100644 --- a/judge/views/internal.py +++ b/judge/views/internal.py @@ -3,7 +3,7 @@ import json from django.views.generic import ListView from django.utils.translation import gettext as _, gettext_lazy -from django.db.models import Count +from django.db.models import Count, Q from django.http import HttpResponseForbidden from django.urls import reverse @@ -38,13 +38,19 @@ class InternalProblem(InternalView, ListView): **kwargs ) + def get_search_query(self): + return self.request.GET.get("q") or self.request.POST.get("q") + def get_queryset(self): - queryset = ( - Problem.objects.annotate(vote_count=Count("volunteer_user_votes")) - .filter(vote_count__gte=1) - .order_by("-vote_count") - ) - return queryset + queryset = Problem.objects.annotate( + vote_count=Count("volunteer_user_votes") + ).filter(vote_count__gte=1) + query = self.get_search_query() + if query: + queryset = queryset.filter( + Q(code__icontains=query) | Q(name__icontains=query) + ) + return queryset.order_by("-vote_count") def get_context_data(self, **kwargs): context = super(InternalProblem, self).get_context_data(**kwargs) @@ -52,6 +58,7 @@ class InternalProblem(InternalView, ListView): context["title"] = self.title context["page_prefix"] = self.request.path + "?page=" context["first_page_href"] = self.request.path + context["query"] = self.get_search_query() return context diff --git a/judge/views/organization.py b/judge/views/organization.py index 962be71..0576afe 100644 --- a/judge/views/organization.py +++ b/judge/views/organization.py @@ -926,8 +926,12 @@ class EditOrganizationContest( super().post(request, *args, **kwargs) return HttpResponseRedirect( reverse( - "organization_contests", - args=(self.organization_id, self.organization.slug), + "organization_contest_edit", + args=( + self.organization_id, + self.organization.slug, + self.contest.key, + ), ) ) diff --git a/judge/views/register.py b/judge/views/register.py index 76e8267..58d1d6f 100644 --- a/judge/views/register.py +++ b/judge/views/register.py @@ -15,7 +15,7 @@ from registration.backends.default.views import ( from registration.forms import RegistrationForm from sortedm2m.forms import SortedMultipleChoiceField -from judge.models import Language, Organization, Profile, TIMEZONE +from judge.models import Language, Profile, TIMEZONE from judge.utils.recaptcha import ReCaptchaField, ReCaptchaWidget from judge.widgets import Select2MultipleWidget, Select2Widget @@ -43,29 +43,10 @@ class CustomRegistrationForm(RegistrationForm): empty_label=None, widget=Select2Widget(attrs={"style": "width:100%"}), ) - organizations = SortedMultipleChoiceField( - queryset=Organization.objects.filter(is_open=True), - label=_("Groups"), - required=False, - widget=Select2MultipleWidget(attrs={"style": "width:100%"}), - ) if ReCaptchaField is not None: captcha = ReCaptchaField(widget=ReCaptchaWidget()) - def clean_organizations(self): - organizations = self.cleaned_data.get("organizations") or [] - max_orgs = settings.DMOJ_USER_MAX_ORGANIZATION_COUNT - - if sum(org.is_open for org in organizations) > max_orgs: - raise forms.ValidationError( - _("You may not be part of more than {count} public groups.").format( - count=max_orgs - ) - ) - - return self.cleaned_data["organizations"] - def clean_email(self): if User.objects.filter(email=self.cleaned_data["email"]).exists(): raise forms.ValidationError( @@ -116,7 +97,6 @@ class RegistrationView(OldRegistrationView): cleaned_data = form.cleaned_data profile.timezone = cleaned_data["timezone"] profile.language = cleaned_data["language"] - profile.organizations.add(*cleaned_data["organizations"]) profile.save() return user diff --git a/judge/views/submission.py b/judge/views/submission.py index 147a2cc..1556dd9 100644 --- a/judge/views/submission.py +++ b/judge/views/submission.py @@ -259,13 +259,13 @@ class SubmissionStatus(SubmissionDetailBase): ) contest = submission.contest_or_none - prefix_length = 0 + show_testcases = False can_see_testcases = self.access_testcases_in_contest() if contest is not None: - prefix_length = contest.problem.output_prefix_override or 0 + show_testcases = contest.problem.show_testcases or False - if contest is None or prefix_length > 0 or can_see_testcases: + if contest is None or show_testcases or can_see_testcases: context["cases_data"] = get_cases_data(submission) context["can_see_testcases"] = True try: diff --git a/judge/widgets/datetime.py b/judge/widgets/datetime.py index 6cd7fc5..15bb383 100644 --- a/judge/widgets/datetime.py +++ b/judge/widgets/datetime.py @@ -16,8 +16,8 @@ class DateTimePickerWidget(forms.DateTimeInput): @property def media(self): - css_url = "https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.min.css" - js_url = "https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js" + css_url = "/static/datetime-picker/datetimepicker.min.css" + js_url = "/static/datetime-picker/datetimepicker.full.min.js" return forms.Media( js=[js_url], css={"screen": [css_url]}, diff --git a/judge/widgets/pagedown.py b/judge/widgets/pagedown.py index c661ddb..edc4bf1 100644 --- a/judge/widgets/pagedown.py +++ b/judge/widgets/pagedown.py @@ -47,20 +47,15 @@ else: "pagedown-extra/Markdown.Extra.js", "pagedown_init.js", ] - css = { - "all": [ - "markdown.css", - ] - } class AdminPagedownWidget(PagedownWidget, admin_widgets.AdminTextareaWidget): class Media: css = { "all": [ + "markdown.css", "pagedown_widget.css", "content-description.css", "admin/css/pagedown.css", - "markdown.css", "pagedown.css", ] } @@ -125,7 +120,6 @@ else: "pygment-github.css", "table.css", "ranks.css", - "markdown.css", "dmmd-preview.css", ] } diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po index 425241f..1432864 100644 --- a/locale/vi/LC_MESSAGES/django.po +++ b/locale/vi/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: lqdoj2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-24 23:09+0700\n" +"POT-Creation-Date: 2023-09-08 22:40+0700\n" "PO-Revision-Date: 2021-07-20 03:44\n" "Last-Translator: Icyene\n" "Language-Team: Vietnamese\n" @@ -18,26 +18,26 @@ msgstr "" "X-Crowdin-Project-ID: 466004\n" "X-Crowdin-File-ID: 5\n" -#: chat_box/models.py:31 chat_box/models.py:54 chat_box/models.py:68 +#: chat_box/models.py:39 chat_box/models.py:64 chat_box/models.py:79 #: judge/admin/interface.py:150 judge/models/contest.py:636 -#: judge/models/contest.py:845 judge/models/course.py:115 -#: judge/models/profile.py:374 judge/models/profile.py:452 +#: judge/models/contest.py:842 judge/models/course.py:115 +#: judge/models/profile.py:390 judge/models/profile.py:468 msgid "user" msgstr "người dùng" -#: chat_box/models.py:32 judge/models/comment.py:44 judge/models/comment.py:189 +#: chat_box/models.py:41 judge/models/comment.py:44 judge/models/comment.py:189 msgid "posted time" msgstr "thời gian đăng" -#: chat_box/models.py:33 judge/models/comment.py:49 +#: chat_box/models.py:43 judge/models/comment.py:49 msgid "body of comment" msgstr "nội dung bình luận" -#: chat_box/models.py:58 +#: chat_box/models.py:68 msgid "last seen" msgstr "xem lần cuối" -#: chat_box/views.py:45 +#: chat_box/views.py:47 msgid "LQDOJ Chat" msgstr "" @@ -49,11 +49,27 @@ msgstr "Tiếng Việt" msgid "English" msgstr "" -#: dmoj/urls.py:135 +#: dmoj/urls.py:108 +msgid "Activation key invalid" +msgstr "Mã kích hoạt không hợp lệ" + +#: dmoj/urls.py:113 +msgid "Register" +msgstr "Đăng ký" + +#: dmoj/urls.py:120 +msgid "Registration Completed" +msgstr "Đăng ký hoàn thành" + +#: dmoj/urls.py:128 +msgid "Registration not allowed" +msgstr "Đăng ký không thành công" + +#: dmoj/urls.py:136 msgid "Login" msgstr "Đăng nhập" -#: dmoj/urls.py:212 templates/base.html:209 +#: dmoj/urls.py:224 templates/base.html:218 #: templates/organization/org-left-sidebar.html:2 msgid "Home" msgstr "Trang chủ" @@ -82,85 +98,85 @@ msgstr "Hiện bình luận" msgid "Included contests" msgstr "" -#: judge/admin/contest.py:80 judge/admin/volunteer.py:54 +#: judge/admin/contest.py:79 judge/admin/volunteer.py:54 #: templates/contest/clarification.html:42 templates/contest/contest.html:100 #: templates/contest/moss.html:41 templates/internal/left-sidebar.html:2 -#: templates/internal/problem.html:35 templates/problem/list.html:17 +#: templates/internal/problem.html:40 templates/problem/list.html:17 #: templates/problem/list.html:34 templates/problem/list.html:153 #: templates/user/user-problems.html:56 templates/user/user-problems.html:98 msgid "Problem" msgstr "Bài tập" -#: judge/admin/contest.py:156 +#: judge/admin/contest.py:155 msgid "Settings" msgstr "Cài đặt" -#: judge/admin/contest.py:169 +#: judge/admin/contest.py:168 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:173 +#: judge/admin/contest.py:172 msgid "Details" msgstr "Chi tiết" -#: judge/admin/contest.py:185 +#: judge/admin/contest.py:184 msgid "Format" msgstr "Thể thức" -#: judge/admin/contest.py:189 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:188 templates/contest/ranking-table.html:5 #: templates/user/user-about.html:15 templates/user/user-about.html:45 msgid "Rating" msgstr "" -#: judge/admin/contest.py:201 +#: judge/admin/contest.py:200 msgid "Access" msgstr "Truy cập" -#: judge/admin/contest.py:211 judge/admin/problem.py:218 +#: judge/admin/contest.py:210 judge/admin/problem.py:218 msgid "Justice" msgstr "Xử phạt" -#: judge/admin/contest.py:331 +#: judge/admin/contest.py:330 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d kỳ thi đã được đánh dấu hiển thị." -#: judge/admin/contest.py:338 +#: judge/admin/contest.py:337 msgid "Mark contests as visible" msgstr "Đánh dấu hiển thị các kỳ thi" -#: judge/admin/contest.py:349 +#: judge/admin/contest.py:348 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d kỳ thi đã được đánh dấu ẩn." -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:355 msgid "Mark contests as hidden" msgstr "Ẩn các kỳ thi" -#: judge/admin/contest.py:377 judge/admin/submission.py:241 +#: judge/admin/contest.py:376 judge/admin/submission.py:241 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "%d bài nộp đã được lên lịch thành công để chấm lại." -#: judge/admin/contest.py:485 +#: judge/admin/contest.py:484 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d thí sinh đã được tính điểm lại." -#: judge/admin/contest.py:492 +#: judge/admin/contest.py:491 msgid "Recalculate results" msgstr "Tính toán lại kết quả" -#: judge/admin/contest.py:497 judge/admin/organization.py:99 +#: judge/admin/contest.py:496 judge/admin/organization.py:99 msgid "username" msgstr "tên đăng nhập" -#: judge/admin/contest.py:503 templates/base.html:331 +#: judge/admin/contest.py:502 templates/base.html:341 msgid "virtual" msgstr "ảo" @@ -222,7 +238,7 @@ msgid "Limits" msgstr "Giới hạn" #: judge/admin/problem.py:217 judge/admin/submission.py:351 -#: templates/base.html:245 templates/stats/tab.html:4 +#: templates/base.html:254 templates/stats/tab.html:4 #: templates/submission/list.html:347 msgid "Language" msgstr "Ngôn ngữ" @@ -293,13 +309,13 @@ msgid "User" msgstr "Thành viên" #: judge/admin/profile.py:132 templates/registration/registration_form.html:40 -#: templates/user/import/table_csv.html:8 +#: templates/user/edit-profile.html:116 templates/user/import/table_csv.html:8 msgid "Email" msgstr "Email" #: judge/admin/profile.py:138 judge/views/register.py:36 #: templates/registration/registration_form.html:68 -#: templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:140 msgid "Timezone" msgstr "Múi giờ" @@ -386,8 +402,8 @@ msgstr "Tính điểm lại cái bài nộp" #: templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:20 #: templates/problem/list.html:154 -#: templates/submission/status-testcases.html:144 -#: templates/submission/status-testcases.html:146 +#: templates/submission/status-testcases.html:139 +#: templates/submission/status-testcases.html:141 msgid "Time" msgstr "Thời gian" @@ -401,7 +417,7 @@ msgstr "%d KB" msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:345 templates/submission/status-testcases.html:151 +#: judge/admin/submission.py:345 templates/submission/status-testcases.html:146 msgid "Memory" msgstr "Bộ nhớ" @@ -417,7 +433,7 @@ msgstr "Các bài tập trong nhóm này" msgid "These problems are included in this type of problems" msgstr "Các bài tập dạng này" -#: judge/admin/volunteer.py:60 templates/internal/problem.html:76 +#: judge/admin/volunteer.py:60 templates/internal/problem.html:81 #: templates/problem/list.html:20 templates/problem/list.html:44 msgid "Types" msgstr "Dạng" @@ -467,78 +483,87 @@ msgstr "" msgid "New IOI" msgstr "IOI mới" -#: judge/forms.py:113 +#: judge/contest_format/ultimate.py:12 +msgid "Ultimate" +msgstr "" + +#: judge/forms.py:115 msgid "File size exceeds the maximum allowed limit of 5MB." msgstr "File tải lên không được quá 5MB." -#: judge/forms.py:144 +#: judge/forms.py:146 msgid "Any judge" msgstr "" -#: judge/forms.py:350 +#: judge/forms.py:352 msgid "Enter usernames separating by space" msgstr "Nhập các tên đăng nhập, cách nhau bởi dấu cách" -#: judge/forms.py:351 judge/views/stats.py:166 templates/stats/site.html:27 +#: judge/forms.py:353 judge/views/stats.py:166 templates/stats/site.html:27 msgid "New users" msgstr "Thành viên mới" -#: judge/forms.py:368 +#: judge/forms.py:370 #, python-brace-format msgid "These usernames don't exist: {usernames}" msgstr "Các tên đăng nhập này không tồn tại: {usernames}" -#: judge/forms.py:427 judge/views/register.py:30 +#: judge/forms.py:429 judge/views/register.py:30 #: templates/registration/registration_form.html:34 #: templates/user/base-users-table.html:5 #: templates/user/import/table_csv.html:4 msgid "Username" msgstr "Tên đăng nhập" -#: judge/forms.py:428 templates/registration/registration_form.html:46 +#: judge/forms.py:430 judge/views/email.py:22 +#: templates/registration/registration_form.html:46 #: templates/registration/registration_form.html:60 -#: templates/user/import/table_csv.html:5 +#: templates/user/edit-profile.html:108 templates/user/import/table_csv.html:5 msgid "Password" msgstr "Mật khẩu" -#: judge/forms.py:454 +#: judge/forms.py:456 msgid "Two Factor Authentication tokens must be 6 decimal digits." msgstr "Two Factor Authentication phải chứa 6 chữ số." -#: judge/forms.py:467 templates/registration/totp_auth.html:32 +#: judge/forms.py:469 templates/registration/totp_auth.html:32 msgid "Invalid Two Factor Authentication token." msgstr "Token Two Factor Authentication không hợp lệ." -#: judge/forms.py:474 judge/models/problem.py:133 +#: judge/forms.py:476 judge/models/problem.py:133 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Mã bài phải có dạng ^[a-z0-9]+$" -#: judge/forms.py:481 +#: judge/forms.py:483 msgid "Problem with code already exists." msgstr "Mã bài đã tồn tại." -#: judge/forms.py:488 judge/models/contest.py:93 +#: judge/forms.py:490 judge/models/contest.py:93 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Mã kỳ thi phải có dạng ^[a-z0-9]+$" -#: judge/forms.py:495 templates/problem/search-form.html:46 +#: judge/forms.py:497 templates/problem/search-form.html:46 msgid "Group" msgstr "" -#: judge/forms.py:503 +#: judge/forms.py:505 msgid "Contest with key already exists." msgstr "Mã kỳ thi đã tồn tại." -#: judge/forms.py:511 +#: judge/forms.py:513 msgid "Group doesn't exist." msgstr "" -#: judge/forms.py:513 +#: judge/forms.py:515 #, fuzzy #| msgid "You do not have the permission to rejudge submissions." msgid "You don't have permission in this group." msgstr "Bạn không có quyền chấm lại bài." +#: judge/forms.py:565 +msgid "This problem is duplicated." +msgstr "Bài này bị lặp" + #: judge/jinja2/datetime.py:26 templates/blog/blog.html:28 #: templates/blog/dashboard.html:21 msgid "N j, Y, g:i a" @@ -890,7 +915,7 @@ msgstr "riêng tư với các tổ chức" #: judge/models/contest.py:228 judge/models/course.py:34 #: judge/models/interface.py:92 judge/models/problem.py:281 -#: judge/models/profile.py:137 +#: judge/models/profile.py:144 msgid "organizations" msgstr "tổ chức" @@ -1011,7 +1036,7 @@ msgid "Edit contest problem label script" msgstr "Cách hiển thị thứ tự bài tập" #: judge/models/contest.py:620 judge/models/contest.py:767 -#: judge/models/contest.py:848 judge/models/contest.py:878 +#: judge/models/contest.py:845 judge/models/contest.py:875 #: judge/models/course.py:178 judge/models/submission.py:116 msgid "contest" msgstr "kỳ thi" @@ -1095,14 +1120,14 @@ msgstr "lần tham gia kỳ thi" msgid "contest participations" msgstr "lần tham gia kỳ thi" -#: judge/models/contest.py:763 judge/models/contest.py:819 -#: judge/models/contest.py:881 judge/models/problem.py:582 +#: judge/models/contest.py:763 judge/models/contest.py:816 +#: judge/models/contest.py:878 judge/models/problem.py:582 #: judge/models/problem.py:589 judge/models/problem.py:610 #: judge/models/problem.py:641 judge/models/problem_data.py:50 msgid "problem" msgstr "bài tập" -#: judge/models/contest.py:771 judge/models/contest.py:831 +#: judge/models/contest.py:771 judge/models/contest.py:828 #: judge/models/course.py:182 judge/models/problem.py:209 msgid "points" msgstr "điểm" @@ -1111,7 +1136,7 @@ msgstr "điểm" msgid "partial" msgstr "thành phần" -#: judge/models/contest.py:773 judge/models/contest.py:833 +#: judge/models/contest.py:773 judge/models/contest.py:830 msgid "is pretested" msgstr "dùng pretest" @@ -1120,111 +1145,107 @@ msgid "order" msgstr "thứ tự" #: judge/models/contest.py:776 -msgid "0 to not show testcases, 1 to show" -msgstr "0 để ẩn test, 1 để hiện" - -#: judge/models/contest.py:777 msgid "visible testcases" msgstr "hiển thị test" -#: judge/models/contest.py:784 +#: judge/models/contest.py:781 msgid "Maximum number of submissions for this problem, or 0 for no limit." msgstr "Số lần nộp tối đa, đặt là 0 nếu không có giới hạn." -#: judge/models/contest.py:786 +#: judge/models/contest.py:783 msgid "max submissions" msgstr "số lần nộp tối đa" -#: judge/models/contest.py:789 +#: judge/models/contest.py:786 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:793 +#: judge/models/contest.py:790 #, fuzzy #| msgid "Only for format new IOI. Separated by commas, e.g: 2, 3" msgid "Separated by commas, e.g: 2, 3" msgstr "" "Chỉ dùng với format IOI mới. Các sub cách nhau bởi dấu phẩy. Ví dụ: 2, 3" -#: judge/models/contest.py:794 +#: judge/models/contest.py:791 #, fuzzy #| msgid "frozen subtasks" msgid "hidden subtasks" msgstr "Đóng băng subtasks" -#: judge/models/contest.py:806 +#: judge/models/contest.py:803 msgid "contest problem" msgstr "bài trong kỳ thi" -#: judge/models/contest.py:807 +#: judge/models/contest.py:804 msgid "contest problems" msgstr "bài trong kỳ thi" -#: judge/models/contest.py:813 judge/models/submission.py:233 +#: judge/models/contest.py:810 judge/models/submission.py:233 msgid "submission" msgstr "bài nộp" -#: judge/models/contest.py:826 judge/models/contest.py:852 +#: judge/models/contest.py:823 judge/models/contest.py:849 msgid "participation" msgstr "lần tham gia" -#: judge/models/contest.py:834 +#: judge/models/contest.py:831 msgid "Whether this submission was ran only on pretests." msgstr "Quyết định bài nộp chỉ được chạy trên pretest không." -#: judge/models/contest.py:839 +#: judge/models/contest.py:836 msgid "contest submission" msgstr "bài nộp kỳ thi" -#: judge/models/contest.py:840 +#: judge/models/contest.py:837 msgid "contest submissions" msgstr "bài nộp kỳ thi" -#: judge/models/contest.py:856 +#: judge/models/contest.py:853 msgid "rank" msgstr "rank" -#: judge/models/contest.py:857 +#: judge/models/contest.py:854 msgid "rating" msgstr "rating" -#: judge/models/contest.py:858 +#: judge/models/contest.py:855 msgid "raw rating" msgstr "rating thật" -#: judge/models/contest.py:859 +#: judge/models/contest.py:856 msgid "contest performance" msgstr "" -#: judge/models/contest.py:860 +#: judge/models/contest.py:857 msgid "last rated" msgstr "lần cuối được xếp hạng" -#: judge/models/contest.py:864 +#: judge/models/contest.py:861 msgid "contest rating" msgstr "rating kỳ thi" -#: judge/models/contest.py:865 +#: judge/models/contest.py:862 msgid "contest ratings" msgstr "rating kỳ thi" -#: judge/models/contest.py:889 +#: judge/models/contest.py:886 msgid "contest moss result" msgstr "kết quả MOSS kỳ thi" -#: judge/models/contest.py:890 +#: judge/models/contest.py:887 msgid "contest moss results" msgstr "kết quả MOSS kỳ thi" -#: judge/models/contest.py:895 +#: judge/models/contest.py:892 msgid "clarified problem" msgstr "" -#: judge/models/contest.py:897 +#: judge/models/contest.py:894 msgid "clarification body" msgstr "" -#: judge/models/contest.py:899 +#: judge/models/contest.py:896 msgid "clarification timestamp" msgstr "" @@ -1971,142 +1992,150 @@ msgid "" "organization." msgstr "Ảnh này sẽ thay thế logo mặc định khi ở trong tổ chức." -#: judge/models/profile.py:136 judge/models/profile.py:165 -#: judge/models/profile.py:380 judge/models/profile.py:459 +#: judge/models/profile.py:143 judge/models/profile.py:172 +#: judge/models/profile.py:396 judge/models/profile.py:475 msgid "organization" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:149 msgid "user associated" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:151 msgid "self-description" msgstr "" -#: judge/models/profile.py:147 +#: judge/models/profile.py:154 msgid "location" msgstr "" -#: judge/models/profile.py:153 +#: judge/models/profile.py:160 msgid "preferred language" msgstr "" -#: judge/models/profile.py:161 +#: judge/models/profile.py:168 msgid "last access time" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:169 msgid "last IP" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:180 msgid "display rank" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:189 msgid "comment mute" msgstr "" -#: judge/models/profile.py:182 +#: judge/models/profile.py:190 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:194 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:195 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:199 #, fuzzy #| msgid "Banned from joining" msgid "banned from voting" msgstr "Bị cấm tham gia" -#: judge/models/profile.py:192 +#: judge/models/profile.py:200 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:205 msgid "user script" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:209 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:213 msgid "current contest" msgstr "kỳ thi hiện tại" -#: judge/models/profile.py:212 +#: judge/models/profile.py:220 msgid "math engine" msgstr "" -#: judge/models/profile.py:216 +#: judge/models/profile.py:224 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:219 +#: judge/models/profile.py:227 msgid "2FA enabled" msgstr "" -#: judge/models/profile.py:221 +#: judge/models/profile.py:229 msgid "check to enable TOTP-based two factor authentication" msgstr "đánh dấu để sử dụng TOTP-based two factor authentication" -#: judge/models/profile.py:227 +#: judge/models/profile.py:235 msgid "TOTP key" msgstr "mã TOTP" -#: judge/models/profile.py:228 +#: judge/models/profile.py:236 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:230 +#: judge/models/profile.py:238 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:234 +#: judge/models/profile.py:242 msgid "internal notes" msgstr "ghi chú nội bộ" -#: judge/models/profile.py:237 +#: judge/models/profile.py:245 msgid "Notes for administrators regarding this user." msgstr "Ghi chú riêng cho quản trị viên." -#: judge/models/profile.py:367 +#: judge/models/profile.py:250 +msgid "Custom background" +msgstr "Background tự chọn" + +#: judge/models/profile.py:253 +msgid "CSS custom background properties: url(\"image_url\"), color, etc" +msgstr "CSS background tự chọn. Ví dụ: url(\"image_url\"), white, ..." + +#: judge/models/profile.py:383 msgid "user profile" msgstr "thông tin người dùng" -#: judge/models/profile.py:368 +#: judge/models/profile.py:384 msgid "user profiles" msgstr "thông tin người dùng" -#: judge/models/profile.py:384 +#: judge/models/profile.py:400 msgid "request time" msgstr "thời gian đăng ký" -#: judge/models/profile.py:387 +#: judge/models/profile.py:403 msgid "state" msgstr "trạng thái" -#: judge/models/profile.py:394 +#: judge/models/profile.py:410 msgid "reason" msgstr "lý do" -#: judge/models/profile.py:397 +#: judge/models/profile.py:413 msgid "organization join request" msgstr "đơn đăng ký tham gia" -#: judge/models/profile.py:398 +#: judge/models/profile.py:414 msgid "organization join requests" msgstr "đơn đăng ký tham gia" -#: judge/models/profile.py:464 +#: judge/models/profile.py:480 #, fuzzy #| msgid "last seen" msgid "last visit" @@ -2695,7 +2724,7 @@ msgid "You already voted." msgstr "Bạn đã vote." #: judge/views/comment.py:253 judge/views/organization.py:807 -#: judge/views/organization.py:953 judge/views/organization.py:1118 +#: judge/views/organization.py:957 judge/views/organization.py:1122 msgid "Edited from site" msgstr "Chỉnh sửa từ web" @@ -2839,6 +2868,50 @@ msgstr "Mô tả vấn đề" msgid "New clarification for %s" msgstr "Thông báo mới cho %s" +#: judge/views/email.py:21 +msgid "New Email" +msgstr "Email mới" + +#: judge/views/email.py:31 +msgid "An account with this email already exists." +msgstr "Email đã được dùng cho tài khoản khác." + +#: judge/views/email.py:55 +msgid "Email Change Request" +msgstr "Thay đổi Email" + +#: judge/views/email.py:58 +msgid "" +"We have received a request to change your email to this email. Click the " +"button below to change your email:" +msgstr "" +"Chúng tôi đã nhận được yêu cầu thay đổi địa chỉ email của bạn thành địa chỉ " +"email này. Vui lòng nhấp vào nút bên dưới để thay đổi địa chỉ email của bạn:" + +#: judge/views/email.py:60 +msgid "Email Change" +msgstr "Thay đổi Email" + +#: judge/views/email.py:61 +msgid "Change Email" +msgstr "Thay đổi Email" + +#: judge/views/email.py:83 templates/user/edit-profile.html:120 +msgid "Change email" +msgstr "Thay đổi email" + +#: judge/views/email.py:106 +msgid "Success" +msgstr "Thành công" + +#: judge/views/email.py:110 +msgid "Invalid" +msgstr "Không hợp lệ" + +#: judge/views/email.py:119 +msgid "Email change pending" +msgstr "Yêu cầu thay đổi email đang đợi xác thực." + #: judge/views/error.py:17 msgid "404 error" msgstr "Lỗi 404" @@ -2864,7 +2937,7 @@ msgstr "trang bị sập %s" msgid "Internal problems" msgstr "bài trong kỳ thi" -#: judge/views/internal.py:76 +#: judge/views/internal.py:83 #, fuzzy #| msgid "request time" msgid "Request times" @@ -2902,19 +2975,17 @@ msgid "You are not allowed to edit this organization." msgstr "Bạn không được phép chỉnh sửa tổ chức này." #: judge/views/organization.py:193 judge/views/organization.py:337 -#, fuzzy -#| msgid "Can't edit organization" msgid "Can't access organization" -msgstr "Không thể chỉnh sửa tổ chức" +msgstr "Không thể truy cập nhóm" #: judge/views/organization.py:194 judge/views/organization.py:338 msgid "You are not allowed to access this organization." msgstr "Bạn không được phép chỉnh sửa tổ chức này." -#: judge/views/organization.py:230 judge/views/register.py:48 -#: judge/views/stats.py:184 templates/contest/list.html:89 -#: templates/problem/list-base.html:97 templates/stats/site.html:33 -#: templates/user/user-left-sidebar.html:4 templates/user/user-list-tabs.html:6 +#: judge/views/organization.py:230 judge/views/stats.py:184 +#: templates/contest/list.html:93 templates/problem/list-base.html:97 +#: templates/stats/site.html:33 templates/user/user-left-sidebar.html:4 +#: templates/user/user-list-tabs.html:6 msgid "Groups" msgstr "Nhóm" @@ -2941,7 +3012,7 @@ msgstr "Bạn đã ở trong nhóm." msgid "This group is not open." msgstr "Nhóm này là nhóm kín." -#: judge/views/organization.py:510 judge/views/register.py:62 +#: judge/views/organization.py:510 #, python-brace-format msgid "You may not be part of more than {count} public groups." msgstr "Bạn không thể tham gia nhiều hơn {count} nhóm công khai." @@ -3018,7 +3089,7 @@ msgstr "" msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/organization.py:790 judge/views/organization.py:942 +#: judge/views/organization.py:790 judge/views/organization.py:946 #, fuzzy, python-format #| msgid "Editing %s" msgid "Edit %s" @@ -3038,7 +3109,7 @@ msgid "You created too many groups. You can only create at most %d groups" msgstr "" #: judge/views/organization.py:839 judge/views/organization.py:864 -#: judge/views/organization.py:1008 +#: judge/views/organization.py:1012 msgid "Added from site" msgstr "Thêm từ web" @@ -3047,7 +3118,7 @@ msgstr "Thêm từ web" msgid "Add contest" msgstr "Thêm kỳ thi" -#: judge/views/organization.py:898 judge/views/organization.py:1060 +#: judge/views/organization.py:898 judge/views/organization.py:1064 msgid "Permission denied" msgstr "Truy cập bị từ chối" @@ -3057,21 +3128,21 @@ msgstr "Truy cập bị từ chối" msgid "You are not allowed to edit this contest" msgstr "Bạn không được phép chỉnh sửa tổ chức này." -#: judge/views/organization.py:997 +#: judge/views/organization.py:1001 #, python-format msgid "Add blog for %s" msgstr "Thêm bài đăng cho %s" -#: judge/views/organization.py:1061 +#: judge/views/organization.py:1065 msgid "Not allowed to edit this blog" msgstr "Bạn không được phép chỉnh sửa bài đăng này." -#: judge/views/organization.py:1093 +#: judge/views/organization.py:1097 #, python-format msgid "Edit blog %s" msgstr "Chỉnh sửa %s" -#: judge/views/organization.py:1144 +#: judge/views/organization.py:1148 #, python-format msgid "Pending blogs in %s" msgstr "Bài đang đợi duyệt trong %s" @@ -3205,11 +3276,11 @@ msgstr "Các bài nộp tốt nhất cho {0}" msgid "A username must contain letters, numbers, or underscores" msgstr "Tên đăng nhập phải chứa ký tự, chữ số, hoặc dấu gạch dưới" -#: judge/views/register.py:42 templates/user/edit-profile.html:123 +#: judge/views/register.py:42 templates/user/edit-profile.html:144 msgid "Preferred language" msgstr "Ngôn ngữ ưa thích" -#: judge/views/register.py:73 +#: judge/views/register.py:54 #, python-format msgid "" "The email address \"%s\" is already taken. Only one registration is allowed " @@ -3217,7 +3288,7 @@ msgid "" msgstr "" "Email \"%s\" đã được sử dụng. Mỗi email chỉ có thể đăng ký một tài khoản." -#: judge/views/register.py:85 +#: judge/views/register.py:66 msgid "" "Your email provider is not allowed due to history of abuse. Please use a " "reputable email provider." @@ -3225,11 +3296,11 @@ msgstr "" "Your email provider is not allowed due to history of abuse. Please use a " "reputable email provider." -#: judge/views/register.py:93 judge/views/register.py:131 +#: judge/views/register.py:74 judge/views/register.py:111 msgid "Registration" msgstr "Đăng ký" -#: judge/views/register.py:145 +#: judge/views/register.py:125 msgid "Authentication failure" msgstr "Xác thực thất bại" @@ -3329,8 +3400,8 @@ msgstr "Phải qua một kỳ thi" #: judge/views/submission.py:914 #, python-brace-format msgid "" -"{0}'s submissions for {2} in {4}" +"{0}'s submissions for {2} in {4}" msgstr "" "Các bài nộp của {0} cho {2} trong {4}" @@ -3435,7 +3506,7 @@ msgid "Updated on site" msgstr "Được cập nhật trên web" #: judge/views/user.py:431 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:291 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:300 #: templates/user/user-tabs.html:11 msgid "Edit profile" msgstr "Chỉnh sửa thông tin" @@ -3526,26 +3597,26 @@ msgstr "Chỉnh sửa thông tin" msgid "Rejudge" msgstr "Chấm lại" -#: templates/base.html:227 templates/chat/chat.html:610 +#: templates/base.html:236 templates/chat/chat.html:65 msgid "Chat" msgstr "Chat" -#: templates/base.html:237 +#: templates/base.html:246 msgid "Notification" msgstr "Thông báo" -#: templates/base.html:258 +#: templates/base.html:267 msgid "Dark Mode" msgstr "" -#: templates/base.html:275 +#: templates/base.html:284 msgid "Profile" msgstr "Trang cá nhân" -#: templates/base.html:279 templates/chat/chat.html:21 +#: templates/base.html:288 templates/chat/chat_js.html:5 #: templates/comments/content-list.html:81 #: templates/contest/contest-list-tabs.html:4 -#: templates/contest/ranking-table.html:47 templates/internal/problem.html:57 +#: templates/contest/ranking-table.html:47 templates/internal/problem.html:62 #: templates/organization/org-left-sidebar.html:12 #: templates/problem/left-sidebar.html:6 #: templates/problem/problem-list-tabs.html:6 @@ -3554,44 +3625,44 @@ msgstr "Trang cá nhân" msgid "Admin" msgstr "Admin" -#: templates/base.html:284 +#: templates/base.html:293 msgid "Internal" msgstr "Nội bộ" -#: templates/base.html:287 +#: templates/base.html:296 msgid "Stats" msgstr "Thống kê" -#: templates/base.html:300 +#: templates/base.html:309 msgid "Log out" msgstr "Đăng xuất" -#: templates/base.html:310 +#: templates/base.html:319 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Đăng nhập" -#: templates/base.html:311 templates/registration/registration_form.html:72 +#: templates/base.html:320 templates/registration/registration_form.html:72 msgid "or" msgstr "hoặc" -#: templates/base.html:312 +#: templates/base.html:321 msgid "Sign up" msgstr "Đăng ký" -#: templates/base.html:325 +#: templates/base.html:335 msgid "spectating" msgstr "đang theo dõi" -#: templates/base.html:337 +#: templates/base.html:347 msgid "Compete" msgstr "Thi" -#: templates/base.html:339 +#: templates/base.html:349 msgid "General" msgstr "Chung" -#: templates/base.html:346 +#: templates/base.html:356 msgid "This site works best with JavaScript enabled." msgstr "" @@ -3602,7 +3673,7 @@ msgstr "đã đăng vào %(time)s" #: templates/blog/blog.html:31 templates/comments/content-list.html:62 #: templates/comments/content-list.html:76 -#: templates/contest/contest-tabs.html:35 templates/contest/list.html:124 +#: templates/contest/contest-tabs.html:35 templates/contest/list.html:129 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 #: templates/license.html:10 templates/problem/editorial.html:15 #: templates/problem/feed/problems.html:50 @@ -3663,47 +3734,47 @@ msgstr "Thêm mới" msgid "No clarifications have been made at this time." msgstr "Không có thông báo nào." -#: templates/chat/chat.html:5 templates/chat/chat.html:584 +#: templates/chat/chat.html:5 templates/chat/chat_js.html:548 msgid "Chat Box" msgstr "Chat Box" -#: templates/chat/chat.html:19 -msgid "Recent" -msgstr "Gần đây" +#: templates/chat/chat.html:67 +msgid "Online Users" +msgstr "Trực tuyến" -#: templates/chat/chat.html:20 -msgid "Following" -msgstr "Bạn bè" - -#: templates/chat/chat.html:22 -msgid "Other" -msgstr "Thành viên khác" - -#: templates/chat/chat.html:169 -msgid "New message(s)" -msgstr "Tin nhắn mới" - -#: templates/chat/chat.html:435 -msgid "Mute this user and delete all messages?" -msgstr "Mute người dùng này và xóa tất cả tin nhắn chung?" - -#: templates/chat/chat.html:546 templates/chat/chat.html:627 +#: templates/chat/chat.html:78 templates/chat/chat_js.html:510 #: templates/user/base-users-js.html:10 #: templates/user/base-users-two-col.html:19 msgid "Search by handle..." msgstr "Tìm kiếm theo tên..." -#: templates/chat/chat.html:612 templates/chat/chat.html:619 -msgid "Online Users" -msgstr "Trực tuyến" +#: templates/chat/chat.html:97 +msgid "Enter your message" +msgstr "Nhập tin nhắn" -#: templates/chat/chat.html:648 +#: templates/chat/chat.html:98 msgid "Emoji" msgstr "" -#: templates/chat/chat.html:649 -msgid "Enter your message" -msgstr "Nhập tin nhắn" +#: templates/chat/chat_js.html:3 +msgid "Recent" +msgstr "Gần đây" + +#: templates/chat/chat_js.html:4 +msgid "Following" +msgstr "Bạn bè" + +#: templates/chat/chat_js.html:6 +msgid "Other" +msgstr "Thành viên khác" + +#: templates/chat/chat_js.html:124 +msgid "New message(s)" +msgstr "Tin nhắn mới" + +#: templates/chat/chat_js.html:401 +msgid "Mute this user and delete all messages?" +msgstr "Mute người dùng này và xóa tất cả tin nhắn chung?" #: templates/chat/message.html:20 templates/fine_uploader/script.html:25 #: templates/organization/blog/edit.html:37 @@ -3878,7 +3949,7 @@ msgstr "Thứ sáu" msgid "Saturday" msgstr "Thứ bảy" -#: templates/contest/clarification.html:52 templates/contest/list.html:229 +#: templates/contest/clarification.html:52 templates/contest/list.html:232 #: templates/organization/new.html:10 templates/ticket/new.html:38 msgid "Create" msgstr "Tạo mới" @@ -3943,8 +4014,8 @@ msgstr "G:i T, j F, Y" #: templates/contest/contest-datetime.html:39 #, python-format msgid "" -"%(time_limit)s window between %(start_time)s and " -"%(end_time)s" +"%(time_limit)s window between %(start_time)s and " +"%(end_time)s" msgstr "" "Kéo dài %(time_limit)s từ %(start_time)s đến %(end_time)s" @@ -4004,7 +4075,7 @@ msgstr "Nhân bản" msgid "Leave contest" msgstr "Rời kỳ thi" -#: templates/contest/contest.html:42 templates/contest/list.html:401 +#: templates/contest/contest.html:42 templates/contest/list.html:400 msgid "Virtual join" msgstr "Tham gia ảo" @@ -4028,9 +4099,7 @@ msgstr "Đăng nhập để tham gia" msgid "AC Rate" msgstr "Tỷ lệ AC" -#: templates/contest/contest.html:103 templates/contest/list.html:242 -#: templates/contest/list.html:291 templates/contest/list.html:378 -#: templates/problem/list.html:24 +#: templates/contest/contest.html:103 templates/problem/list.html:24 msgid "Users" msgstr "Người nộp" @@ -4039,11 +4108,11 @@ msgstr "Người nộp" msgid "Editorial" msgstr "Hướng dẫn" -#: templates/contest/list.html:85 templates/contest/media-js.html:152 +#: templates/contest/list.html:89 templates/contest/media-js.html:152 msgid "Are you sure you want to join?" msgstr "Bạn có chắc tham gia?" -#: templates/contest/list.html:86 +#: templates/contest/list.html:90 msgid "" "Joining a contest for the first time starts your timer, after which it " "becomes unstoppable." @@ -4051,63 +4120,58 @@ msgstr "" "Tham gia kỳ thi lần đầu sẽ kích hoạt thời gian đếm ngược, không thể dừng lại " "sau đó." -#: templates/contest/list.html:118 +#: templates/contest/list.html:123 msgid "hidden" msgstr "ẩn" -#: templates/contest/list.html:130 +#: templates/contest/list.html:135 msgid "private" msgstr "riêng tư" -#: templates/contest/list.html:146 +#: templates/contest/list.html:151 msgid "rated" msgstr "rated" -#: templates/contest/list.html:172 +#: templates/contest/list.html:177 #, python-format msgid "%(time_limit)s window" msgstr "Cửa sổ thi dài %(time_limit)s" -#: templates/contest/list.html:174 +#: templates/contest/list.html:179 #, python-format msgid "%(duration)s long" msgstr "Kéo dài %(duration)s" -#: templates/contest/list.html:194 +#: templates/contest/list.html:198 msgid "Spectate" msgstr "Theo dõi" -#: templates/contest/list.html:200 templates/organization/home.html:30 +#: templates/contest/list.html:204 templates/organization/home.html:30 msgid "Join" msgstr "Tham gia" -#: templates/contest/list.html:211 +#: templates/contest/list.html:214 msgid "Search contests..." msgstr "Tìm kiếm kỳ thi..." -#: templates/contest/list.html:221 +#: templates/contest/list.html:224 templates/internal/problem.html:33 msgid "Search" msgstr "Tìm kiếm" -#: templates/contest/list.html:225 +#: templates/contest/list.html:228 msgid "Hide organization contests" msgstr "Ẩn các kỳ thi riêng tư của nhóm" -#: templates/contest/list.html:235 +#: templates/contest/list.html:238 msgid "Active Contests" msgstr "Kỳ thi bạn đang tham gia" -#: templates/contest/list.html:241 templates/contest/list.html:290 -#: templates/contest/list.html:333 templates/contest/list.html:375 -msgid "Contest" -msgstr "Kỳ thi" - -#: templates/contest/list.html:259 +#: templates/contest/list.html:255 #, python-format msgid "Window ends in %(countdown)s" msgstr "Cửa số thi còn %(countdown)s" -#: templates/contest/list.html:262 templates/contest/list.html:306 +#: templates/contest/list.html:258 templates/contest/list.html:299 #, python-format msgid "Ends in %(countdown)s" msgstr "Kết thúc trong %(countdown)s" @@ -4116,18 +4180,26 @@ msgstr "Kết thúc trong %(countdown)s" msgid "Ongoing Contests" msgstr "Kỳ thi đang diễn ra" -#: templates/contest/list.html:326 +#: templates/contest/list.html:322 +msgid "There is no ongoing contest at this time." +msgstr "Không có kỳ thi nào đang diễn ra hiện tại." + +#: templates/contest/list.html:329 msgid "Upcoming Contests" msgstr "Kỳ thi sắp tới" -#: templates/contest/list.html:357 -msgid "There are no scheduled contests at this time." +#: templates/contest/list.html:359 +msgid "There is no scheduled contest at this time." msgstr "Không có kỳ thi nào được lên lịch hiện tại." -#: templates/contest/list.html:364 +#: templates/contest/list.html:366 msgid "Past Contests" msgstr "Kỳ thi trong quá khứ" +#: templates/contest/list.html:413 +msgid "There is no past contest." +msgstr "Không có kỳ thi nào trong quá khứ." + #: templates/contest/media-js.html:147 msgid "Are you sure you want to leave?" msgstr "Bạn có chắc muốn rời?" @@ -4185,11 +4257,11 @@ msgstr "Khôi phục kết quả" msgid "Disqualify" msgstr "Hủy kết quả" -#: templates/contest/ranking-table.html:54 templates/user/edit-profile.html:96 +#: templates/contest/ranking-table.html:54 templates/user/edit-profile.html:100 msgid "Fullname" msgstr "Tên đầy đủ" -#: templates/contest/ranking-table.html:55 templates/user/edit-profile.html:100 +#: templates/contest/ranking-table.html:55 templates/user/edit-profile.html:104 #: templates/user/import/table_csv.html:7 msgid "School" msgstr "Trường" @@ -4262,6 +4334,26 @@ msgstr "Còn" msgid "Upcoming contests" msgstr "Kỳ thi sắp diễn ra" +#: templates/email_change/email_change.html:15 +msgid "Verify Email" +msgstr "Xác thực Email" + +#: templates/email_change/email_change_failure.html:3 +msgid "Invalid reset link." +msgstr "Đường dẫn không hợp lệ" + +#: templates/email_change/email_change_pending.html:4 +msgid "An email was sent to" +msgstr "Email đã được gửi đến" + +#: templates/email_change/email_change_pending.html:4 +msgid "If you don't see it, kindly check your spam folder as well." +msgstr "Nếu bạn không tìm thấy nó, vui lòng kiểm tra thư mục spam của bạn." + +#: templates/email_change/email_change_success.html:3 +msgid "Your email was sucessfully changed to" +msgstr "Bạn đã đổi email thành công." + #: templates/feed/has_next.html:3 msgid "View more" msgstr "Xem thêm" @@ -4290,6 +4382,10 @@ msgstr "Dừng" msgid "Continue" msgstr "Tiếp tục" +#: templates/general_email.html:15 +msgid "Dear" +msgstr "Xin chào" + #: templates/internal/left-sidebar.html:3 msgid "Average speed" msgstr "Tốc độ trung bình" @@ -4298,33 +4394,33 @@ msgstr "Tốc độ trung bình" msgid "Slow requests" msgstr "Requests chậm" -#: templates/internal/problem.html:36 +#: templates/internal/problem.html:41 msgid "Code" msgstr "" -#: templates/internal/problem.html:37 +#: templates/internal/problem.html:42 #, fuzzy #| msgid "Total points" msgid "Vote count" msgstr "Tổng điểm" -#: templates/internal/problem.html:60 +#: templates/internal/problem.html:65 #, fuzzy #| msgid "contest problem" msgid "Votes for problem" msgstr "bài trong kỳ thi" -#: templates/internal/problem.html:68 +#: templates/internal/problem.html:73 msgid "Knowledge" msgstr "" -#: templates/internal/problem.html:72 +#: templates/internal/problem.html:77 #, fuzzy #| msgid "Rankings" msgid "Thinking" msgstr "Bảng xếp hạng" -#: templates/internal/problem.html:80 templates/problem/feed/problems.html:97 +#: templates/internal/problem.html:85 templates/problem/feed/problems.html:97 #, fuzzy #| msgid "Feed" msgid "Feedback" @@ -4344,8 +4440,8 @@ msgstr "Hoạt động" #: templates/organization/blog/edit.html:36 #: templates/organization/contest/add.html:36 -#: templates/organization/contest/edit.html:87 -#: templates/organization/form.html:24 +#: templates/organization/contest/edit.html:86 +#: templates/organization/form.html:23 msgid "Save" msgstr "Lưu" @@ -4359,12 +4455,15 @@ msgid "Author" msgstr "Tác giả" #: templates/organization/blog/pending.html:14 -#, fuzzy -#| msgid "posted time" msgid "Post time" -msgstr "thời gian đăng" +msgstr "Thời gian đăng" -#: templates/organization/contest/edit.html:61 +#: templates/organization/contest/edit.html:40 +#: templates/organization/form.html:6 +msgid "Please fix below errors" +msgstr "Vui lòng sửa các lỗi bên dưới" + +#: templates/organization/contest/edit.html:60 msgid "If you run out of rows, click Save" msgstr "Ấn nút lưu lại nếu cần thêm hàng" @@ -4505,6 +4604,10 @@ msgstr "Từ chối" msgid "Kick" msgstr "Đuổi" +#: templates/pagedown.html:9 +msgid "Update Preview" +msgstr "Cập nhật xem trước" + #: templates/problem/clone.html:37 msgid "Enter a new code for the cloned problem:" msgstr "Nhập mã bài mới cho bài tập được nhân bản:" @@ -4618,7 +4721,7 @@ msgid "Thinking point" msgstr "Độ khó nghĩ" #: templates/problem/feed/problems.html:83 -#: templates/problem/search-form.html:83 +#: templates/problem/search-form.html:68 msgid "Problem types" msgstr "Dạng bài" @@ -4646,7 +4749,7 @@ msgstr "Hệ thống lỗi!" msgid "Successful vote! Thank you!" msgstr "Đã gửi thành công! Cảm ơn bạn!" -#: templates/problem/list.html:40 templates/problem/search-form.html:67 +#: templates/problem/list.html:40 templates/problem/search-form.html:79 #: templates/user/user-problems.html:57 msgid "Category" msgstr "Nhóm bài" @@ -4820,7 +4923,7 @@ msgid "Memory limit:" msgstr "Bộ nhớ:" #: templates/problem/problem.html:244 templates/problem/raw.html:67 -#: templates/submission/status-testcases.html:160 +#: templates/submission/status-testcases.html:155 msgid "Input:" msgstr "Input:" @@ -4829,7 +4932,7 @@ msgid "stdin" msgstr "bàn phím" #: templates/problem/problem.html:250 templates/problem/raw.html:70 -#: templates/submission/status-testcases.html:164 +#: templates/submission/status-testcases.html:159 msgid "Output:" msgstr "Output:" @@ -4914,7 +5017,7 @@ msgstr "Hiển thị hướng dẫn" msgid "Have editorial" msgstr "Có hướng dẫn" -#: templates/problem/search-form.html:70 templates/problem/search-form.html:72 +#: templates/problem/search-form.html:82 templates/problem/search-form.html:84 #: templates/submission/list.html:381 #: templates/submission/submission-list-tabs.html:4 msgid "All" @@ -4994,6 +5097,42 @@ msgstr "%(key)s không phải mã xác thực hợp lệ." msgid "Your account has been successfully activated." msgstr "Tài khoản được kích hoạt thành công." +#: templates/registration/activation_email.html:2 +msgid "Account activation" +msgstr "Kích hoạt tài khoản" + +#: templates/registration/activation_email.html:3 +#, python-format +msgid "" +"Thanks for registering! We're glad to have you. The last step is activating " +"your account. Please activate your account in the next %(expiration_days)d " +"days." +msgstr "" +"Cảm ơn bạn đã đăng ký! Chúng tôi rất vui được chào đón bạn. Bước cuối cùng " +"là kích hoạt tài khoản của bạn. Vui lòng kích hoạt tài khoản trong vòng " +"%(expiration_days)d ngày." + +#: templates/registration/activation_email.html:5 +msgid "Activate" +msgstr "Kích hoạt" + +#: templates/registration/activation_email.html:10 +msgid "" +"Alternatively, you can reply to this message to activate your account. Your " +"reply must keep the following text intact for this to work:" +msgstr "" +"Hoặc bạn có thể trả lời tin nhắn này để kích hoạt tài khoản của bạn. Email " +"trả lời của bạn phải giữ nguyên đoạn văn sau đây:" + +#: templates/registration/activation_email.html:16 +msgid "See you soon!" +msgstr "Hẹn sớm gặp lại bạn!" + +#: templates/registration/activation_email_subject.txt:1 +#, python-format +msgid "Activate your %(SITE_NAME)s account" +msgstr "Kích hoạt tài khoản %(SITE_NAME)s" + #: templates/registration/login.html:9 msgid "Invalid username or password." msgstr "Tên đăng nhập hoặc mật khẩu không hợp lệ." @@ -5032,6 +5171,7 @@ msgid "Your password has been set. You may go ahead and log in now" msgstr "Mật khẩu đã được cập nhật. Hãy thử đăng nhập lại" #: templates/registration/password_reset_confirm.html:9 +#: templates/registration/password_reset_email.html:5 msgid "Reset Password" msgstr "Reset mật khẩu" @@ -5039,7 +5179,7 @@ msgstr "Reset mật khẩu" msgid "" "We've emailed you instructions for setting your password. You should be " "receiving them shortly." -msgstr "Kiểm tra email để xem hướng dẫn đặt mật khẩu." +msgstr "Chúng tôi đã gửi email cho bạn để đặt lại mật khẩu." #: templates/registration/password_reset_done.html:5 msgid "" @@ -5047,13 +5187,25 @@ msgid "" "you registered with, and check your spam folder." msgstr "Nếu bạn không nhận được email, hãy kiểm tra hộp thư rác (spam)." +#: templates/registration/password_reset_email.html:2 +msgid "Password Reset" +msgstr "Đặt lại mật khẩu" + +#: templates/registration/password_reset_email.html:3 +msgid "" +"We have received a request to reset your password. Click the button below to " +"reset your password:" +msgstr "" +"Chúng tôi đã nhận được yêu cầu đặt lại mật khẩu của bạn. Nhấn vào nút bên " +"dưới để đặt lại mật khẩu của bạn:" + #: templates/registration/password_reset_email.txt:1 #, python-format msgid "" "You're receiving this email because you requested a password reset for your " "user account at %(site_name)s." msgstr "" -"Bạn nhận được email này vì bạn đã yêu cầu reset mật khẩu tại %(site_name)s." +"Bạn nhận được email này vì bạn đã yêu cầu đặt lại mật khẩu tại %(site_name)s." #: templates/registration/password_reset_email.txt:3 msgid "Please go to the following page and choose a new password:" @@ -5075,7 +5227,7 @@ msgstr "%(site_name)s team" #: templates/registration/password_reset_subject.txt:1 #, python-format msgid "Password reset on %(site_name)s" -msgstr "Reset mật khẩu trên %(site_name)s" +msgstr "Đặt lại mật khẩu trên %(site_name)s" #: templates/registration/profile_creation.html:36 #: templates/registration/username_select.html:7 @@ -5089,8 +5241,11 @@ msgstr "Đăng ký hiện tại đã bị dừng. Hãy liên hệ admin." #: templates/registration/registration_complete.html:3 msgid "" "You have successfully been registered. An email has been sent to the email " -"address you provided to confirm your registration." -msgstr "Bạn đã đăng ký thành công. Kiểm tra email để hoàn thành việc xác thực." +"address you provided to confirm your registration. If you don't see it, " +"kindly check your spam folder as well." +msgstr "" +"Bạn đã đăng ký thành công. Kiểm tra email để hoàn thành việc xác thực. Nếu " +"bạn không tìm thấy nó, vui lòng kiểm tra thư mục spam của bạn." #: templates/registration/registration_form.html:61 msgid "(again, for confirmation)" @@ -5106,21 +5261,9 @@ msgstr "chọn từ bản đồ" #: templates/registration/registration_form.html:78 msgid "Default language" -msgstr "Ngôn ngữ ưa thích" +msgstr "Ngôn ngữ mặc định" -#: templates/registration/registration_form.html:81 -msgid "Affiliated organizations" -msgstr "Tổ chức bạn muốn tham gia" - -#: templates/registration/registration_form.html:97 -msgid "By registering, you agree to our" -msgstr "Bạn đồng ý với" - -#: templates/registration/registration_form.html:98 -msgid "Terms & Conditions" -msgstr "Điều khoản của chúng tôi" - -#: templates/registration/registration_form.html:101 +#: templates/registration/registration_form.html:89 msgid "Register!" msgstr "Đăng ký!" @@ -5128,7 +5271,7 @@ msgstr "Đăng ký!" #: templates/registration/totp_disable.html:45 #: templates/registration/totp_enable.html:83 msgid "Enter the 6-digit code generated by your app:" -msgstr "" +msgstr "Nhập mã xác thực gồm 6 chữ số từ app bạn chọn" #: templates/registration/totp_auth.html:41 #, python-format @@ -5294,84 +5437,84 @@ msgstr "Xem mã nguồn" msgid "Resubmit" msgstr "Nộp lại" -#: templates/submission/status-testcases.html:10 +#: templates/submission/status-testcases.html:5 msgid "We are waiting for a suitable judge to process your submission..." msgstr "Các máy chấm đang bận. Hãy kiên nhẫn chờ đợi một chút..." -#: templates/submission/status-testcases.html:12 +#: templates/submission/status-testcases.html:7 msgid "Your submission is being processed..." msgstr "Đang chấm..." -#: templates/submission/status-testcases.html:14 +#: templates/submission/status-testcases.html:9 msgid "Compilation Error" msgstr "Lỗi biên dịch" -#: templates/submission/status-testcases.html:18 +#: templates/submission/status-testcases.html:13 msgid "Compilation Warnings" msgstr "Cảnh báo khi biên dịch" -#: templates/submission/status-testcases.html:23 +#: templates/submission/status-testcases.html:18 msgid "Pretest Execution Results" msgstr "Kết quả chấm Pretest" -#: templates/submission/status-testcases.html:25 +#: templates/submission/status-testcases.html:20 msgid "Execution Results" msgstr "Kết quả chấm" -#: templates/submission/status-testcases.html:32 -#: templates/submission/status-testcases.html:47 -#: templates/submission/status-testcases.html:98 +#: templates/submission/status-testcases.html:27 +#: templates/submission/status-testcases.html:42 +#: templates/submission/status-testcases.html:93 msgid "Batch " msgstr "Nhóm " -#: templates/submission/status-testcases.html:37 -#: templates/submission/status-testcases.html:39 -#: templates/submission/status-testcases.html:124 +#: templates/submission/status-testcases.html:32 +#: templates/submission/status-testcases.html:34 +#: templates/submission/status-testcases.html:119 msgid "Case" msgstr "Test" -#: templates/submission/status-testcases.html:58 +#: templates/submission/status-testcases.html:53 msgid "Overall: " msgstr "Tổng cộng: " -#: templates/submission/status-testcases.html:72 +#: templates/submission/status-testcases.html:67 msgid "Point: " msgstr "Điểm: " -#: templates/submission/status-testcases.html:77 +#: templates/submission/status-testcases.html:72 msgid "Time: " msgstr "Thời gian: " -#: templates/submission/status-testcases.html:86 +#: templates/submission/status-testcases.html:81 msgid "Memory: " msgstr "Bộ nhớ: " -#: templates/submission/status-testcases.html:109 -#: templates/submission/status-testcases.html:138 +#: templates/submission/status-testcases.html:104 +#: templates/submission/status-testcases.html:133 msgid "Point" msgstr "Điểm" -#: templates/submission/status-testcases.html:126 +#: templates/submission/status-testcases.html:121 msgid "Pretest" msgstr "Pretest" -#: templates/submission/status-testcases.html:128 +#: templates/submission/status-testcases.html:123 msgid "Test case" msgstr "Test" -#: templates/submission/status-testcases.html:168 +#: templates/submission/status-testcases.html:163 msgid "Answer:" msgstr "Kết quả:" -#: templates/submission/status-testcases.html:173 +#: templates/submission/status-testcases.html:168 msgid "Judge feedback:" msgstr "Phản hồi từ máy chấm:" -#: templates/submission/status-testcases.html:195 +#: templates/submission/status-testcases.html:190 msgid "Passing pretests does not guarantee a full score on system tests." msgstr "AC pretest không đồng nghĩa AC cả bài nhé :))" -#: templates/submission/status-testcases.html:198 +#: templates/submission/status-testcases.html:193 msgid "Submission aborted!" msgstr "Đã hủy chấm bài nộp!" @@ -5516,43 +5659,55 @@ msgstr "Top Score" msgid "Rank" msgstr "Rank" -#: templates/user/edit-profile.html:104 -msgid "Avatar" -msgstr "Ảnh đại diện" - -#: templates/user/edit-profile.html:110 -msgid "Self-description" -msgstr "Tự giới thiệu" - -#: templates/user/edit-profile.html:118 -msgid "Select your closest major city" -msgstr "Chọn thành phố gần nhất" - -#: templates/user/edit-profile.html:127 -msgid "Editor theme" -msgstr "Giao diện cho code editor" - -#: templates/user/edit-profile.html:132 -msgid "Math engine" -msgstr "" - -#: templates/user/edit-profile.html:139 +#: templates/user/edit-profile.html:111 msgid "Change your password" msgstr "Đổi mật khẩu" -#: templates/user/edit-profile.html:150 +#: templates/user/edit-profile.html:125 +msgid "Avatar" +msgstr "Ảnh đại diện" + +#: templates/user/edit-profile.html:131 +msgid "Self-description" +msgstr "Tự giới thiệu" + +#: templates/user/edit-profile.html:139 +msgid "Select your closest major city" +msgstr "Chọn thành phố gần nhất" + +#: templates/user/edit-profile.html:148 +msgid "Editor theme" +msgstr "Giao diện cho code editor" + +#: templates/user/edit-profile.html:153 +msgid "Math engine" +msgstr "" + +#: templates/user/edit-profile.html:164 msgid "Two Factor Authentication is enabled." msgstr "Two Factor Authentication đã được kích hoạt." -#: templates/user/edit-profile.html:157 -msgid "Two Factor Authentication is disabled." -msgstr "Two Factor Authentication đã được hủy kích hoạt." +#: templates/user/edit-profile.html:168 +msgid "Disable" +msgstr "Tắt" -#: templates/user/edit-profile.html:162 +#: templates/user/edit-profile.html:171 +msgid "Two Factor Authentication is disabled." +msgstr "Two Factor Authentication chưa kích hoạt." + +#: templates/user/edit-profile.html:172 +msgid "Enable" +msgstr "Bật" + +#: templates/user/edit-profile.html:176 +msgid "CSS background" +msgstr "" + +#: templates/user/edit-profile.html:180 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:166 +#: templates/user/edit-profile.html:184 msgid "Update profile" msgstr "Cập nhật thông tin" @@ -5768,6 +5923,24 @@ msgstr "Thông tin" msgid "Check all" msgstr "Chọn tất cả" +#~ msgid "Contest" +#~ msgstr "Kỳ thi" + +#~ msgid "0 to not show testcases, 1 to show" +#~ msgstr "0 để ẩn test, 1 để hiện" + +#~ msgid "{settings.SITE_NAME} - Email Change Request" +#~ msgstr "{settings.SITE_NAME} - Thay đổi email" + +#~ msgid "Affiliated organizations" +#~ msgstr "Tổ chức bạn muốn tham gia" + +#~ msgid "By registering, you agree to our" +#~ msgstr "Bạn đồng ý với" + +#~ msgid "Terms & Conditions" +#~ msgstr "Điều khoản của chúng tôi" + #~ msgid "Change your avatar" #~ msgstr "Đổi ảnh đại diện" @@ -5789,8 +5962,8 @@ msgstr "Chọn tất cả" #~ msgstr "bình luận nữa" #~ msgid "" -#~ "This comment is hidden due to too much negative feedback. Click here to view it." +#~ "This comment is hidden due to too much negative feedback. Click here to view it." #~ msgstr "" #~ "Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở." @@ -5875,9 +6048,6 @@ msgstr "Chọn tất cả" #~ msgid "Color theme" #~ msgstr "Chủ đề màu sắc" -#~ msgid "Change color theme" -#~ msgstr "Đổi chủ đề màu sắc" - #~ msgid "commented on {time}" #~ msgstr "bình luận vào {time}" @@ -6028,9 +6198,6 @@ msgstr "Chọn tất cả" #~ msgid "Organization news" #~ msgstr "Tin tức tổ chức" -#~ msgid "There is no news at this time." -#~ msgstr "Không có tin tức." - #~ msgid "Admin organization" #~ msgstr "Trang admin tổ chức" diff --git a/locale/vi/LC_MESSAGES/dmoj-user.po b/locale/vi/LC_MESSAGES/dmoj-user.po index ffd36e9..8202ea2 100644 --- a/locale/vi/LC_MESSAGES/dmoj-user.po +++ b/locale/vi/LC_MESSAGES/dmoj-user.po @@ -15,12 +15,15 @@ msgstr "Thành viên" msgid "Contests" msgstr "Kỳ thi" -msgid "Groups" -msgstr "Nhóm" +msgid "Chat" +msgstr "" msgid "About" msgstr "Giới thiệu" +msgid "Groups" +msgstr "Nhóm" + msgid "Status" msgstr "Máy chấm" diff --git a/resources/base.scss b/resources/base.scss index 48ac6af..a9661a4 100644 --- a/resources/base.scss +++ b/resources/base.scss @@ -191,11 +191,19 @@ header { display: block; margin: 0; - & > li > a > span { + & > li > span { height: 36px; padding-top: 8px; display: block; white-space: nowrap; + cursor: pointer; + + &:hover { + border-top: 2px solid #9c3706; + color: black; + background: rgba(255, 255, 255, 0.25); + margin: 0; + } & > img { vertical-align: middle; @@ -232,8 +240,8 @@ header { position: fixed; top: 0; left: 0; - right: 0; - height: 48px; + right: 10px; + height: $navbar_height; } nav { @@ -377,7 +385,7 @@ hr { } #content { - margin: 48px auto 1em auto; + margin: $navbar_height auto 1em auto; padding-top: 1em; // Header @@ -705,11 +713,11 @@ math { } #chat-icon { - color: lightseagreen; + color: $theme_color; } #chat-icon:hover { - color: darkgreen; + color: green; } #nav-lang-icon { @@ -860,6 +868,16 @@ select { margin-bottom: 1em; } +#loading-bar { + position: fixed; + top: 0; + left: 0; + height: 2px; + background-color: #993932; + width: 0; + z-index: 9999; +} + @media (max-width: 799px) { #user-links, .anon { padding-right: 0.5em; @@ -887,4 +905,56 @@ select { .view-next-page { display: none; } +} + +.colored-text { + color: black; +} + +.bold-text { + font-weight: bold; +} + +.non-italics { + font-style: normal; +} + +.margin-label{ + margin-bottom: 2.5px; +} + +::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ + color: $theme_color; + opacity: 1; /* Firefox */ + text-align: center; +} + +:-ms-input-placeholder { /* Internet Explorer 10-11 */ + color: $theme_color; + text-align: center; +} + +::-ms-input-placeholder { /* Microsoft Edge */ + color: $theme_color; + text-align: center; +} + +input::placeholder{ + color: $theme_color; + text-align: center; +} + +::-webkit-input-placeholder { + color: $theme_color; + text-align: center; +} + +:-moz-placeholder { /* Firefox 18- */ + color: $theme_color; + text-align: center; +} + +::-moz-placeholder { /* Firefox 19+ */ + color: $theme_color; + text-align: center; } \ No newline at end of file diff --git a/resources/blog.scss b/resources/blog.scss index adf21d4..d0910c8 100644 --- a/resources/blog.scss +++ b/resources/blog.scss @@ -33,11 +33,12 @@ } .left-sidebar-item.active { - color: green; + color: white; font-weight: bold; - background-color: lightgreen; + background-color: $theme_color; + .sidebar-icon { - color: green; + color: white; } } @@ -198,7 +199,7 @@ } .left-sidebar-item.active:hover { - background-color: lightgreen; + background-color: $theme_color; } .sidebar-icon { diff --git a/resources/chatbox.scss b/resources/chatbox.scss index c433ce1..89fef60 100644 --- a/resources/chatbox.scss +++ b/resources/chatbox.scss @@ -1,3 +1,5 @@ +@import "vars"; + .chat { background: white; } @@ -11,15 +13,6 @@ float: right; margin-right: 1em; } -#emoji-button { - position: absolute; - right: 1em; - font-size: 2em; - color: lightgray; -} -#emoji-button:hover { - color: gray; -} #chat-log { padding: 0; padding-top: 2em; @@ -39,15 +32,15 @@ #chat-online { border-right: 1px solid #ccc; padding-bottom: 0 !important; - min-width: 25%; border-bottom: 0; + font-size: 1.2em; } #chat-online-content { margin-bottom: 0; overflow: hidden; overflow-wrap: break-word; overflow-y: auto; - max-height: calc(100% - 44px); + max-height: 100%; } #chat-box { /*border: 1px solid #ccc;*/ @@ -58,37 +51,40 @@ overflow-y: scroll; border-bottom-left-radius: 0; border-bottom-right-radius: 0; - height: 75%; + flex-grow: 1; } #chat-input { - width: 100%; - padding: 0.4em 4em 1em 1.2em; - border: 0; color: black; - border-top-left-radius: 0; - border-top-right-radius: 0; - height: 100%; - font-size: 16px; + border: 2px solid #e4a81c; } #chat-online-content { padding: 0; width: 100%; } +.selected-status-row { + background-color: lightgray; +} +.status_last_message { + color: darkgray; + font-size: 0.8em; +} + @media (min-width: 800px) { #chat-container { display: flex; width: 100%; - height: calc(100vh - 3em);; + height: calc(100vh - 3em); border: 1px solid #ccc; /*border-radius: 0 4px 0 0;*/ border-bottom: 0; } #chat-online { margin: 0; + width: 35%; } - .chat-left-panel, .chat-right-panel { - display: block !important; + #chat-area { + flex-grow: 1; } } #chat-input, #chat-log .content-message { @@ -97,14 +93,7 @@ .info-pic { height: 100%; } -.info-circle { - position: absolute; - cx: 12%; - cy: 12%; - r: 12%; - stroke: white; - stroke-width: 1; -} + .info-name { margin-left: 10px; font-size: 2em; @@ -138,29 +127,30 @@ transition: 1.5s ease-in-out; } .status-pic { - height: 1.3em; - width: 1.3em; - border-radius: 0.3em; + height: 32px; + width: 32px; + border-radius: 50%; } .status-container { position: relative; display: inline-flex; + flex: 0 0 auto; } .status-circle { position: absolute; bottom: 0; right: 0; - cx: 18px; - cy: 18px; + cx: 27px; + cy: 27px; r: 4.5px; stroke: white; stroke-width: 1; } .status-row { display: flex; - font-size: 15px; - padding: 0.2em 0.2em 0.2em 1em; - border-radius: 4px; + padding: 15px; + gap: 0.5em; + border-radius: 6px; } .status-row:hover { background: lightgray; @@ -168,6 +158,7 @@ } .status-list { padding: 0; + margin: 0; } .status-section-title { cursor: pointer; @@ -178,6 +169,8 @@ border-radius: 15px; max-width: 70%; width: fit-content; + font-size: 1.05rem; + line-height: 1.3; } .message-text-other { background: #eeeeee; @@ -187,7 +180,12 @@ background: rgb(0, 132, 255); color: white; } - +.chat-input-icon { + color: $theme_color; +} +.chat-input-icon:hover { + background: lightgray; +} .chat { .active-span { color: #636363; @@ -200,6 +198,7 @@ background-color: darkcyan; border-radius: 2px; padding: 0 0.5em; + align-self: flex-end; } #setting-content { display: none; @@ -225,9 +224,6 @@ @media (max-width: 799px) { #chat-area { - height: 500px; - } - #emoji-button { - display: none; + height: calc(100vh - 120px); } } diff --git a/resources/common.js b/resources/common.js index 488fb33..fabff56 100644 --- a/resources/common.js +++ b/resources/common.js @@ -385,6 +385,13 @@ function onWindowReady() { showTooltip(e.trigger, fallbackMessage(e.action)); }); }); + $('a').click(function() { + $("#loading-bar").show(); + $("#loading-bar").animate({ width: "100%" }, 1500, function() { + $(this).hide(); + $("#loading-bar").css({ width: 0}); + }); + }); } $(function() { @@ -429,4 +436,5 @@ $(function() { $('html').click(function () { $nav_list.hide(); }); + }); \ No newline at end of file diff --git a/resources/content-description.scss b/resources/content-description.scss index df4f4e4..69ff279 100644 --- a/resources/content-description.scss +++ b/resources/content-description.scss @@ -51,7 +51,7 @@ } pre.no-border { - margin-top: -0.7em; + margin-top: 0.4em; padding: 0.5em; border: none; background-color: inherit; @@ -137,7 +137,7 @@ .linenos { width: 4%; - + pre { color: rgba(0,0,0,.26); background-color: rgba(0,0,0,.07); @@ -166,8 +166,8 @@ textarea, pre { -moz-tab-size : 4; - -o-tab-size : 4; - tab-size : 4; + -o-tab-size : 4; + tab-size : 4; } diff --git a/resources/contest.scss b/resources/contest.scss index 95da7a8..2bc2ab1 100644 --- a/resources/contest.scss +++ b/resources/contest.scss @@ -1,5 +1,40 @@ @import "vars"; +.list-contest { + box-shadow: 0px 4px 8px rgba(4, 83, 67, 0.2), 0px 6px 20px rgba(4, 83, 67, 0.19); + border-radius: 15px; + padding: 20px; + margin-bottom: 20px; + width: 100%; + box-sizing: border-box; + display: flex; + + .info-contest:first-child { + margin-right: 15px; + } + + .info-contest:nth-child(2) { + margin-right: 5px; + } + + .info-contest { + flex: 1; + } + + .participate-button { + display: flex; + justify-content: center; + align-items: center; + } + + .contest-title { + font-size: 17px; + font-weight: 600; + line-height: 150%; + margin-bottom: 10px; + } +} + #contest-calendar { border-collapse: collapse; width: 100%; diff --git a/resources/darkmode.css b/resources/darkmode.css index 47c03f5..8baddd6 100644 --- a/resources/darkmode.css +++ b/resources/darkmode.css @@ -23,113 +23,113 @@ _______|_______/__/ ____ \__\__|___\__\__|___\__\____ /* User-Agent Style */ html { - background-color: #181a1b !important; + background-color: #141616 !important; } html { color-scheme: dark !important; } html, body, input, textarea, select, button, dialog { - background-color: #181a1b; + background-color: #141616; } html, body, input, textarea, select, button { - border-color: #736b5e; - color: #e8e6e3; + border-color: #5f594e; + color: #c1bfbc; } a { - color: #3391ff; + color: #2a78d4; } table { - border-color: #545b5e; + border-color: #464c4e; } ::placeholder { - color: #b2aba1; + color: #948e86; } input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill { - background-color: #404400 !important; - color: #e8e6e3 !important; + background-color: #353800 !important; + color: #c1bfbc !important; } ::-webkit-scrollbar { - background-color: #202324; - color: #aba499; + background-color: #1b1d1e; + color: #8e887f; } ::-webkit-scrollbar-thumb { - background-color: #454a4d; + background-color: #393d40; } ::-webkit-scrollbar-thumb:hover { - background-color: #575e62; -} -::-webkit-scrollbar-thumb:active { background-color: #484e51; } +::-webkit-scrollbar-thumb:active { + background-color: #3c4143; +} ::-webkit-scrollbar-corner { - background-color: #181a1b; + background-color: #141616; } ::selection { - background-color: #004daa !important; - color: #e8e6e3 !important; + background-color: #00408d !important; + color: #c1bfbc !important; } ::-moz-selection { - background-color: #004daa !important; - color: #e8e6e3 !important; + background-color: #00408d !important; + color: #c1bfbc !important; } /* Invert Style */ .jfk-bubble.gtx-bubble, .captcheck_answer_label > input + img, span#closed_text > img[src^="https://www.gstatic.com/images/branding/googlelogo"], span[data-href^="https://www.hcaptcha.com/"] > #icon, #bit-notification-bar-iframe, ::-webkit-calendar-picker-indicator { - filter: invert(100%) hue-rotate(180deg) contrast(90%) !important; + filter: invert(100%) hue-rotate(180deg) brightness(83%) contrast(90%) !important; } /* Variables Style */ :root { - --darkreader-neutral-background: #131516; - --darkreader-neutral-text: #d8d4cf; - --darkreader-selection-background: #004daa; - --darkreader-selection-text: #e8e6e3; + --darkreader-neutral-background: #101112; + --darkreader-neutral-text: #b3b0ac; + --darkreader-selection-background: #00408d; + --darkreader-selection-text: #c1bfbc; } /* Modified CSS */ :root, [data-md-color-scheme="default"] { --darkreader-bg--md-default-fg-color: rgba(0, 0, 0, 0.87); - --darkreader-text--md-default-fg-color: rgba(232, 230, 227, 0.87); + --darkreader-text--md-default-fg-color: rgba(193, 191, 188, 0.87); --darkreader-bg--md-default-fg-color--light: rgba(0, 0, 0, 0.54); - --darkreader-text--md-default-fg-color--light: rgba(232, 230, 227, 0.54); - --darkreader-border--md-default-fg-color--light: rgba(140, 130, 115, 0.54); + --darkreader-text--md-default-fg-color--light: rgba(193, 191, 188, 0.54); + --darkreader-border--md-default-fg-color--light: rgba(116, 108, 95, 0.54); --darkreader-bg--md-default-fg-color--lighter: rgba(0, 0, 0, 0.32); - --darkreader-text--md-default-fg-color--lighter: rgba(232, 230, 227, 0.32); - --darkreader-border--md-default-fg-color--lighter: rgba(140, 130, 115, 0.32); + --darkreader-text--md-default-fg-color--lighter: rgba(193, 191, 188, 0.32); + --darkreader-border--md-default-fg-color--lighter: rgba(116, 108, 95, 0.32); --darkreader-bg--md-default-fg-color--lightest: rgba(0, 0, 0, 0.07); - --darkreader-text--md-default-fg-color--lightest: rgba(232, 230, 227, 0.07); - --darkreader-border--md-default-fg-color--lightest: rgba(140, 130, 115, 0.07); - --darkreader-bg--md-default-bg-color: #181a1b; - --darkreader-text--md-default-bg-color: #e8e6e3; - --darkreader-border--md-default-bg-color: #303436; - --md-default-bg-color--light: hsla(0,0%,100%,0.7); - --md-default-bg-color--lighter: hsla(0,0%,100%,0.3); - --md-default-bg-color--lightest: hsla(0,0%,100%,0.12); - --darkreader-bg--md-primary-fg-color: #334191; - --darkreader-text--md-primary-fg-color: #6d94cb; - --darkreader-border--md-primary-fg-color: #2f3c86; + --darkreader-text--md-default-fg-color--lightest: rgba(193, 191, 188, 0.07); + --darkreader-border--md-default-fg-color--lightest: rgba(116, 108, 95, 0.07); + --darkreader-bg--md-default-bg-color: #141616; + --darkreader-text--md-default-bg-color: #c1bfbc; + --darkreader-border--md-default-bg-color: #282b2d; + --md-default-bg-color--light: hsla(0,0%,100%,.7); + --md-default-bg-color--lighter: hsla(0,0%,100%,.3); + --md-default-bg-color--lightest: hsla(0,0%,100%,.12); + --darkreader-bg--md-primary-fg-color: #2a3678; + --darkreader-text--md-primary-fg-color: #5a7ba8; + --darkreader-border--md-primary-fg-color: #27326f; --md-primary-fg-color--light: #5d6cc0; - --darkreader-bg--md-primary-fg-color--dark: #263281; - --darkreader-text--md-primary-bg-color: #e8e6e3; - --darkreader-text--md-primary-bg-color--light: rgba(232, 230, 227, 0.7); - --darkreader-bg--md-accent-fg-color: #01189b; - --darkreader-text--md-accent-fg-color: #539bfe; - --darkreader-border--md-accent-fg-color: #011899; - --darkreader-bg--md-accent-fg-color--transparent: rgba(1, 24, 155, 0.1); - --darkreader-bg--md-accent-bg-color: #181a1b; - --darkreader-text--md-accent-bg-color: #e8e6e3; - --md-accent-bg-color--light: hsla(0,0%,100%,0.7); - --darkreader-text--md-code-fg-color: #beb9b0; - --darkreader-bg--md-code-bg-color: #1e2021; - --darkreader-bg--md-code-hl-color: rgba(153, 153, 0, 0.5); - --darkreader-text--md-code-hl-number-color: #d93f3f; - --darkreader-text--md-code-hl-special-color: #ed3774; - --darkreader-text--md-code-hl-function-color: #b159c0; - --darkreader-text--md-code-hl-constant-color: #7561db; - --darkreader-text--md-code-hl-keyword-color: #518ecb; - --darkreader-text--md-code-hl-string-color: #7ee2b0; + --darkreader-bg--md-primary-fg-color--dark: #20296b; + --darkreader-text--md-primary-bg-color: #c1bfbc; + --darkreader-text--md-primary-bg-color--light: rgba(193, 191, 188, 0.7); + --darkreader-bg--md-accent-fg-color: #011481; + --darkreader-text--md-accent-fg-color: #4581d3; + --darkreader-border--md-accent-fg-color: #01147f; + --darkreader-bg--md-accent-fg-color--transparent: rgba(1, 20, 129, 0.1); + --darkreader-bg--md-accent-bg-color: #141616; + --darkreader-text--md-accent-bg-color: #c1bfbc; + --md-accent-bg-color--light: hsla(0,0%,100%,.7); + --darkreader-text--md-code-fg-color: #9e9a92; + --darkreader-bg--md-code-bg-color: #191b1b; + --darkreader-bg--md-code-hl-color: rgba(127, 127, 0, 0.5); + --darkreader-text--md-code-hl-number-color: #b43434; + --darkreader-text--md-code-hl-special-color: #c52e60; + --darkreader-text--md-code-hl-function-color: #934a9f; + --darkreader-text--md-code-hl-constant-color: #6151b6; + --darkreader-text--md-code-hl-keyword-color: #4376a8; + --darkreader-text--md-code-hl-string-color: #69bc92; --darkreader-text--md-code-hl-name-color: var(--darkreader-text--md-code-fg-color); --darkreader-text--md-code-hl-operator-color: var(--darkreader-text--md-default-fg-color--light); --darkreader-text--md-code-hl-punctuation-color: var(--darkreader-text--md-default-fg-color--light); @@ -138,26 +138,26 @@ select:-webkit-autofill { --darkreader-text--md-code-hl-variable-color: var(--darkreader-text--md-default-fg-color--light); --md-typeset-color: var(--md-default-fg-color); --darkreader-text--md-typeset-a-color: var(--darkreader-text--md-primary-fg-color); - --darkreader-bg--md-typeset-mark-color: rgba(153, 153, 0, 0.5); - --darkreader-bg--md-typeset-del-color: rgba(165, 25, 9, 0.15); - --darkreader-bg--md-typeset-ins-color: rgba(9, 170, 90, 0.15); - --darkreader-bg--md-typeset-kbd-color: #1b1d1e; - --darkreader-bg--md-typeset-kbd-accent-color: #181a1b; - --darkreader-bg--md-typeset-kbd-border-color: #404548; - --darkreader-border--md-typeset-table-color: rgba(140, 130, 115, 0.12); + --darkreader-bg--md-typeset-mark-color: rgba(127, 127, 0, 0.5); + --darkreader-bg--md-typeset-del-color: rgba(137, 21, 7, 0.15); + --darkreader-bg--md-typeset-ins-color: rgba(7, 141, 75, 0.15); + --darkreader-bg--md-typeset-kbd-color: #161819; + --darkreader-bg--md-typeset-kbd-accent-color: #141616; + --darkreader-bg--md-typeset-kbd-border-color: #35393c; + --darkreader-border--md-typeset-table-color: rgba(116, 108, 95, 0.12); --darkreader-text--md-admonition-fg-color: var(--darkreader-text--md-default-fg-color); --darkreader-bg--md-admonition-bg-color: var(--darkreader-bg--md-default-bg-color); - --darkreader-text--md-footer-fg-color: #e8e6e3; - --darkreader-text--md-footer-fg-color--light: rgba(232, 230, 227, 0.7); - --darkreader-text--md-footer-fg-color--lighter: rgba(232, 230, 227, 0.3); + --darkreader-text--md-footer-fg-color: #c1bfbc; + --darkreader-text--md-footer-fg-color--light: rgba(193, 191, 188, 0.7); + --darkreader-text--md-footer-fg-color--lighter: rgba(193, 191, 188, 0.3); --darkreader-bg--md-footer-bg-color: rgba(0, 0, 0, 0.87); --darkreader-bg--md-footer-bg-color--dark: rgba(0, 0, 0, 0.32); - --darkreader-bg--md-shadow-z1: 0 0.2rem 0.5rem rgba(0,0,0,0.05), - 0 0 0.05rem rgba(0,0,0,0.1); - --darkreader-bg--md-shadow-z2: 0 0.2rem 0.5rem rgba(0,0,0,0.1), - 0 0 0.05rem rgba(0,0,0,0.25); - --darkreader-bg--md-shadow-z3: 0 0.2rem 0.5rem rgba(0,0,0,0.2), - 0 0 0.05rem rgba(0,0,0,0.35); + --darkreader-bg--md-shadow-z1: 0 0.2rem 0.5rem rgba(0,0,0,.05), + 0 0 0.05rem rgba(0,0,0,.1); + --darkreader-bg--md-shadow-z2: 0 0.2rem 0.5rem rgba(0,0,0,.1), + 0 0 0.05rem rgba(0,0,0,.25); + --darkreader-bg--md-shadow-z3: 0 0.2rem 0.5rem rgba(0,0,0,.2), + 0 0 0.05rem rgba(0,0,0,.35); } .md-icon svg { fill: currentcolor; @@ -188,7 +188,7 @@ body { color: var(--darkreader-text--md-default-fg-color--light); } .md-typeset hr { - border-bottom: 0.05rem solid var(--darkreader-border--md-default-fg-color--lightest); + border-bottom: .05rem solid var(--darkreader-border--md-default-fg-color--lightest); } .md-typeset code, .md-typeset kbd, @@ -197,9 +197,9 @@ body { } .md-typeset kbd { background-color: var(--darkreader-bg--md-typeset-kbd-color); - box-shadow: 0 0.1rem 0 0.05rem var(--darkreader-bg--md-typeset-kbd-border-color), - 0 0.1rem 0 var(--darkreader-bg--md-typeset-kbd-border-color), - 0 -0.1rem 0.2rem var(--darkreader-bg--md-typeset-kbd-accent-color) inset; + box-shadow: 0 .1rem 0 .05rem var(--darkreader-bg--md-typeset-kbd-border-color), + 0 .1rem 0 var(--darkreader-bg--md-typeset-kbd-border-color), + 0 -.1rem .2rem var(--darkreader-bg--md-typeset-kbd-accent-color) inset; color: var(--darkreader-text--md-default-fg-color); } .md-typeset mark { @@ -208,7 +208,7 @@ body { } .md-typeset abbr { text-decoration-color: initial; - border-bottom: 0.05rem dotted var(--darkreader-border--md-default-fg-color--light); + border-bottom: .05rem dotted var(--darkreader-border--md-default-fg-color--light); } @media (hover: none) { .md-typeset abbr[title]:-webkit-any(:focus, :hover)::after { @@ -223,24 +223,24 @@ body { } } .md-typeset blockquote { - border-left: 0.2rem solid var(--darkreader-border--md-default-fg-color--lighter) ; + border-left: .2rem solid var(--darkreader-border--md-default-fg-color--lighter); } [dir="rtl"] .md-typeset blockquote { - border-right: 0.2rem solid var(--darkreader-border--md-default-fg-color--lighter) ; + border-right: .2rem solid var(--darkreader-border--md-default-fg-color--lighter); } .md-typeset blockquote { color: var(--darkreader-text--md-default-fg-color--light); } .md-typeset table:not([class]) { background-color: var(--darkreader-bg--md-default-bg-color); - border: 0.05rem solid var(--darkreader-border--md-typeset-table-color); + border: .05rem solid var(--darkreader-border--md-typeset-table-color); } .md-typeset table:not([class]) td { - border-top: 0.05rem solid var(--darkreader-border--md-typeset-table-color); + border-top: .05rem solid var(--darkreader-border--md-typeset-table-color); } .md-typeset table:not([class]) tbody tr:hover { background-color: rgba(0, 0, 0, 0.04); - box-shadow: 0 0.05rem 0 var(--darkreader-bg--md-default-bg-color) inset; + box-shadow: 0 .05rem 0 var(--darkreader-bg--md-default-bg-color) inset; } .md-typeset table th[role="columnheader"]:hover::after { background-color: var(--darkreader-bg--md-default-fg-color--lighter); @@ -271,7 +271,7 @@ body { outline-color: var(--darkreader-border--md-accent-fg-color); } :root { - --darkreader-bgimg--md-clipboard-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMjFIOFY3aDExbTAtMkg4YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxMWEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMm0tMy00SDRhMiAyIDAgMCAwLTIgMnYxNGgyVjNoMTJWMVoiLz48L3N2Zz4iIC8+PC9zdmc+"); + --darkreader-bgimg--md-clipboard-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjIwNyAtMC41MDkgLTAuNTU3IDAuMDAwIDAuODU5IC0wLjUzNiAwLjIzOSAtMC41NTEgMC4wMDAgMC44NDcgLTAuNTI4IC0wLjUwNiAwLjIwOCAwLjAwMCAwLjgyNSAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMjFIOFY3aDExbTAtMkg4YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxMWEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMm0tMy00SDRhMiAyIDAgMCAwLTIgMnYxNGgyVjNoMTJWMVoiLz48L3N2Zz4iIC8+PC9zdmc+"); } .md-clipboard { color: var(--darkreader-text--md-default-fg-color--lightest); @@ -384,7 +384,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } .md-typeset .md-input { box-shadow: var(--darkreader-bg--md-shadow-z1); - border-bottom: 0.1rem solid var(--darkreader-border--md-default-fg-color--lighter); + border-bottom: .1rem solid var(--darkreader-border--md-default-fg-color--lighter); } .md-typeset .md-input:-webkit-any(:focus, :hover) { border-bottom-color: var(--darkreader-border--md-accent-fg-color); @@ -419,8 +419,8 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { fill: currentcolor; } :root { - --darkreader-bgimg--md-nav-icon--prev: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-nav-icon--next: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-nav-icon--prev: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-nav-icon--next: url("data:image/svg+xml;charset=utf-8,"); --darkreader-bgimg--md-toc-icon: url("data:image/svg+xml;charset=utf-8,"); } .md-nav__title .md-nav__button.md-logo :-webkit-any(img, svg) { @@ -464,7 +464,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } .md-nav--primary .md-nav__title ~ .md-nav__list { background-color: var(--darkreader-bg--md-default-bg-color); - box-shadow: 0 0.05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; + box-shadow: 0 .05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; } .md-nav--primary .md-nav__title ~ .md-nav__list > :first-child { border-top-color: initial; @@ -474,7 +474,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { color: var(--darkreader-text--md-primary-bg-color); } .md-nav--primary .md-nav__item { - border-top: 0.05rem solid var(--darkreader-border--md-default-fg-color--lightest); + border-top: .05rem solid var(--darkreader-border--md-default-fg-color--lightest); } .md-nav--primary .md-nav__item--active > .md-nav__link { color: var(--darkreader-text--md-typeset-a-color); @@ -503,13 +503,13 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } @media screen and (min-width: 60em) { .md-nav--secondary .md-nav__title { - box-shadow: 0 0 0.4rem 0.4rem var(--darkreader-bg--md-default-bg-color); + box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); background: var(--darkreader-bg--md-default-bg-color); } } @media screen and (min-width: 76.25em) { .md-nav--primary .md-nav__title { - box-shadow: 0 0 0.4rem 0.4rem var(--darkreader-bg--md-default-bg-color); + box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); background: var(--darkreader-bg--md-default-bg-color); } .md-nav__icon:hover { @@ -519,18 +519,18 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { background-color: currentcolor; } .md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link { - box-shadow: 0 0 0.4rem 0.4rem var(--darkreader-bg--md-default-bg-color); + box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); background: var(--darkreader-bg--md-default-bg-color); } .md-nav--integrated > .md-nav__list > .md-nav__item--active .md-nav--secondary { - border-left: 0.05rem solid var(--darkreader-border--md-primary-fg-color) ; + border-left: .05rem solid var(--darkreader-border--md-primary-fg-color); } [dir="rtl"] .md-nav--integrated > .md-nav__list > .md-nav__item--active .md-nav--secondary { - border-right: 0.05rem solid var(--darkreader-border--md-primary-fg-color) ; + border-right: .05rem solid var(--darkreader-border--md-primary-fg-color); } } :root { - --darkreader-bgimg--md-search-result-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-search-result-icon: url("data:image/svg+xml;charset=utf-8,"); } @media screen and (max-width: 59.9375em) { .md-search__overlay { @@ -551,7 +551,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { background-color: rgba(0, 0, 0, 0.26); } .md-search__form:hover { - background-color: rgba(24, 26, 27, 0.12); + background-color: rgba(20, 22, 22, 0.12); } } [data-md-toggle="search"]:checked ~ .md-header .md-search__form { @@ -618,7 +618,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { list-style-image: initial; } .md-search-result__item { - box-shadow: 0 -0.05rem var(--darkreader-bg--md-default-fg-color--lightest); + box-shadow: 0 -.05rem var(--darkreader-bg--md-default-fg-color--lightest); } .md-search-result__item:first-child { box-shadow: none; @@ -704,10 +704,10 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } } :root { - --darkreader-bgimg--md-source-forks-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01IDMuMjVhLjc1Ljc1IDAgMSAxLTEuNSAwIC43NS43NSAwIDAgMSAxLjUgMHptMCAyLjEyMmEyLjI1IDIuMjUgMCAxIDAtMS41IDB2Ljg3OEEyLjI1IDIuMjUgMCAwIDAgNS43NSA4LjVoMS41djIuMTI4YTIuMjUxIDIuMjUxIDAgMSAwIDEuNSAwVjguNWgxLjVhMi4yNSAyLjI1IDAgMCAwIDIuMjUtMi4yNXYtLjg3OGEyLjI1IDIuMjUgMCAxIDAtMS41IDB2Ljg3OGEuNzUuNzUgMCAwIDEtLjc1Ljc1aC00LjVBLjc1Ljc1IDAgMCAxIDUgNi4yNXYtLjg3OHptMy43NSA3LjM3OGEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0zLTguNzVhLjc1Ljc1IDAgMSAwIDAtMS41Ljc1Ljc1IDAgMCAwIDAgMS41eiIvPjwvc3ZnPiIgLz48L3N2Zz4="); - --darkreader-bgimg--md-source-repositories-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yIDIuNUEyLjUgMi41IDAgMCAxIDQuNSAwaDguNzVhLjc1Ljc1IDAgMCAxIC43NS43NXYxMi41YS43NS43NSAwIDAgMS0uNzUuNzVoLTIuNWEuNzUuNzUgMCAxIDEgMC0xLjVoMS43NXYtMmgtOGExIDEgMCAwIDAtLjcxNCAxLjcuNzUuNzUgMCAwIDEtMS4wNzIgMS4wNUEyLjQ5NSAyLjQ5NSAwIDAgMSAyIDExLjV2LTl6bTEwLjUtMVY5aC04Yy0uMzU2IDAtLjY5NC4wNzQtMSAuMjA4VjIuNWExIDEgMCAwIDEgMS0xaDh6TTUgMTIuMjV2My4yNWEuMjUuMjUgMCAwIDAgLjQuMmwxLjQ1LTEuMDg3YS4yNS4yNSAwIDAgMSAuMyAwTDguNiAxNS43YS4yNS4yNSAwIDAgMCAuNC0uMnYtMy4yNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtMy41YS4yNS4yNSAwIDAgMC0uMjUuMjV6Ii8+PC9zdmc+IiAvPjwvc3ZnPg=="); - --darkreader-bgimg--md-source-stars-icon: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-source-version-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjUgNy43NzVWMi43NWEuMjUuMjUgMCAwIDEgLjI1LS4yNWg1LjAyNWEuMjUuMjUgMCAwIDEgLjE3Ny4wNzNsNi4yNSA2LjI1YS4yNS4yNSAwIDAgMSAwIC4zNTRsLTUuMDI1IDUuMDI1YS4yNS4yNSAwIDAgMS0uMzU0IDBsLTYuMjUtNi4yNWEuMjUuMjUgMCAwIDEtLjA3My0uMTc3em0tMS41IDBWMi43NUMxIDEuNzg0IDEuNzg0IDEgMi43NSAxaDUuMDI1Yy40NjQgMCAuOTEuMTg0IDEuMjM4LjUxM2w2LjI1IDYuMjVhMS43NSAxLjc1IDAgMCAxIDAgMi40NzRsLTUuMDI2IDUuMDI2YTEuNzUgMS43NSAwIDAgMS0yLjQ3NCAwbC02LjI1LTYuMjVBMS43NSAxLjc1IDAgMCAxIDEgNy43NzV6TTYgNWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6Ii8+PC9zdmc+IiAvPjwvc3ZnPg=="); + --darkreader-bgimg--md-source-forks-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjIwNyAtMC41MDkgLTAuNTU3IDAuMDAwIDAuODU5IC0wLjUzNiAwLjIzOSAtMC41NTEgMC4wMDAgMC44NDcgLTAuNTI4IC0wLjUwNiAwLjIwOCAwLjAwMCAwLjgyNSAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01IDMuMjVhLjc1Ljc1IDAgMSAxLTEuNSAwIC43NS43NSAwIDAgMSAxLjUgMHptMCAyLjEyMmEyLjI1IDIuMjUgMCAxIDAtMS41IDB2Ljg3OEEyLjI1IDIuMjUgMCAwIDAgNS43NSA4LjVoMS41djIuMTI4YTIuMjUxIDIuMjUxIDAgMSAwIDEuNSAwVjguNWgxLjVhMi4yNSAyLjI1IDAgMCAwIDIuMjUtMi4yNXYtLjg3OGEyLjI1IDIuMjUgMCAxIDAtMS41IDB2Ljg3OGEuNzUuNzUgMCAwIDEtLjc1Ljc1aC00LjVBLjc1Ljc1IDAgMCAxIDUgNi4yNXYtLjg3OHptMy43NSA3LjM3OGEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0zLTguNzVhLjc1Ljc1IDAgMSAwIDAtMS41Ljc1Ljc1IDAgMCAwIDAgMS41eiIvPjwvc3ZnPiIgLz48L3N2Zz4="); + --darkreader-bgimg--md-source-repositories-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjIwNyAtMC41MDkgLTAuNTU3IDAuMDAwIDAuODU5IC0wLjUzNiAwLjIzOSAtMC41NTEgMC4wMDAgMC44NDcgLTAuNTI4IC0wLjUwNiAwLjIwOCAwLjAwMCAwLjgyNSAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yIDIuNUEyLjUgMi41IDAgMCAxIDQuNSAwaDguNzVhLjc1Ljc1IDAgMCAxIC43NS43NXYxMi41YS43NS43NSAwIDAgMS0uNzUuNzVoLTIuNWEuNzUuNzUgMCAxIDEgMC0xLjVoMS43NXYtMmgtOGExIDEgMCAwIDAtLjcxNCAxLjcuNzUuNzUgMCAwIDEtMS4wNzIgMS4wNUEyLjQ5NSAyLjQ5NSAwIDAgMSAyIDExLjV2LTl6bTEwLjUtMVY5aC04Yy0uMzU2IDAtLjY5NC4wNzQtMSAuMjA4VjIuNWExIDEgMCAwIDEgMS0xaDh6TTUgMTIuMjV2My4yNWEuMjUuMjUgMCAwIDAgLjQuMmwxLjQ1LTEuMDg3YS4yNS4yNSAwIDAgMSAuMyAwTDguNiAxNS43YS4yNS4yNSAwIDAgMCAuNC0uMnYtMy4yNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtMy41YS4yNS4yNSAwIDAgMC0uMjUuMjV6Ii8+PC9zdmc+IiAvPjwvc3ZnPg=="); + --darkreader-bgimg--md-source-stars-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-source-version-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjIwNyAtMC41MDkgLTAuNTU3IDAuMDAwIDAuODU5IC0wLjUzNiAwLjIzOSAtMC41NTEgMC4wMDAgMC44NDcgLTAuNTI4IC0wLjUwNiAwLjIwOCAwLjAwMCAwLjgyNSAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjUgNy43NzVWMi43NWEuMjUuMjUgMCAwIDEgLjI1LS4yNWg1LjAyNWEuMjUuMjUgMCAwIDEgLjE3Ny4wNzNsNi4yNSA2LjI1YS4yNS4yNSAwIDAgMSAwIC4zNTRsLTUuMDI1IDUuMDI1YS4yNS4yNSAwIDAgMS0uMzU0IDBsLTYuMjUtNi4yNWEuMjUuMjUgMCAwIDEtLjA3My0uMTc3em0tMS41IDBWMi43NUMxIDEuNzg0IDEuNzg0IDEgMi43NSAxaDUuMDI1Yy40NjQgMCAuOTEuMTg0IDEuMjM4LjUxM2w2LjI1IDYuMjVhMS43NSAxLjc1IDAgMCAxIDAgMi40NzRsLTUuMDI2IDUuMDI2YTEuNzUgMS43NSAwIDAgMS0yLjQ3NCAwbC02LjI1LTYuMjVBMS43NSAxLjc1IDAgMCAxIDEgNy43NzV6TTYgNWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6Ii8+PC9zdmc+IiAvPjwvc3ZnPg=="); } .md-source { outline-color: var(--darkreader-border--md-accent-fg-color); @@ -734,7 +734,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { color: inherit; } :root { - --darkreader-bgimg--md-tag-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-tag-icon: url("data:image/svg+xml;charset=utf-8,"); } .md-typeset .md-tag { background: var(--darkreader-bg--md-default-fg-color--lightest); @@ -767,7 +767,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { color: var(--darkreader-text--md-default-fg-color); } :is(.focus-visible > .md-tooltip, .md-tooltip:target) { - outline: var(--darkreader-border--md-accent-fg-color) auto ; + outline: var(--darkreader-border--md-accent-fg-color) auto; } .md-annotation { outline-color: initial; @@ -776,13 +776,13 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { outline-color: initial; } .md-annotation .md-annotation__index { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .md-annotation .md-annotation__index:-webkit-any(:focus, :hover) { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .md-annotation .md-annotation__index:is(:focus, :hover) { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .md-annotation__index::after { background-color: var(--darkreader-bg--md-default-fg-color--lighter); @@ -808,7 +808,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { color: var(--darkreader-text--md-accent-bg-color); } :root { - --darkreader-bgimg--md-version-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-version-icon: url("data:image/svg+xml;charset=utf-8,"); } .md-version__current { color: inherit; @@ -835,329 +835,329 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { background-color: var(--darkreader-bg--md-default-fg-color--lightest); } :root { - --darkreader-bgimg--md-admonition-icon--note: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--abstract: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--note: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--abstract: url("data:image/svg+xml;charset=utf-8,"); --darkreader-bgimg--md-admonition-icon--info: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--tip: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--success: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--question: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--tip: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--success: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--question: url("data:image/svg+xml;charset=utf-8,"); --darkreader-bgimg--md-admonition-icon--warning: url("data:image/svg+xml;charset=utf-8,"); --darkreader-bgimg--md-admonition-icon--failure: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--danger: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--bug: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--example: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--danger: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--bug: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--example: url("data:image/svg+xml;charset=utf-8,"); --darkreader-bgimg--md-admonition-icon--quote: url("data:image/svg+xml;charset=utf-8,"); } .md-typeset .admonition, .md-typeset details { background-color: var(--darkreader-bg--md-admonition-bg-color); - border-color: rgb(0, 59, 158); + border-color: rgb(0, 49, 131); box-shadow: var(--darkreader-bg--md-shadow-z1); color: var(--darkreader-text--md-admonition-fg-color); } .md-typeset .admonition-title, .md-typeset summary { - background-color: rgba(0, 61, 163, 0.1); + background-color: rgba(0, 51, 135, 0.1); border-color: initial; } .md-typeset .admonition-title::before, .md-typeset summary::before { - background-color: rgb(73, 165, 255); + background-color: rgb(61, 137, 212); } .md-typeset .admonition-title code, .md-typeset summary code { - box-shadow: 0 0 0 0.05rem var(--darkreader-bg--md-default-fg-color--lightest); + box-shadow: 0 0 0 .05rem var(--darkreader-bg--md-default-fg-color--lightest); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.note) { - border-color: rgb(0, 59, 158); + border-color: rgb(0, 49, 131); } .md-typeset :is(.admonition, details):is(.note) { - border-color: rgb(0, 59, 158); + border-color: rgb(0, 49, 131); } .md-typeset :-webkit-any(.note) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(0, 61, 163, 0.1); + background-color: rgba(0, 51, 135, 0.1); } .md-typeset :is(.note) > :is(.admonition-title, summary) { - background-color: rgba(0, 61, 163, 0.1); + background-color: rgba(0, 51, 135, 0.1); } .md-typeset :-webkit-any(.note) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(73, 165, 255); + background-color: rgb(61, 137, 212); } .md-typeset :is(.note) > :is(.admonition-title, summary)::before { - background-color: rgb(73, 165, 255); + background-color: rgb(61, 137, 212); } .md-typeset :-webkit-any(.note) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(73, 165, 255); + color: rgb(61, 137, 212); } .md-typeset :is(.note) > :is(.admonition-title, summary)::after { - color: rgb(73, 165, 255); + color: rgb(61, 137, 212); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.abstract, .summary, .tldr) { - border-color: rgb(0, 123, 179); + border-color: rgb(0, 102, 149); } .md-typeset :is(.admonition, details):is(.abstract, .summary, .tldr) { - border-color: rgb(0, 123, 179); + border-color: rgb(0, 102, 149); } .md-typeset :-webkit-any(.abstract, .summary, .tldr) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(0, 141, 204, 0.1); + background-color: rgba(0, 117, 169, 0.1); } .md-typeset :is(.abstract, .summary, .tldr) > :is(.admonition-title, summary) { - background-color: rgba(0, 141, 204, 0.1); + background-color: rgba(0, 117, 169, 0.1); } .md-typeset :-webkit-any(.abstract, .summary, .tldr) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(26, 184, 255); + background-color: rgb(22, 153, 212); } .md-typeset :is(.abstract, .summary, .tldr) > :is(.admonition-title, summary)::before { - background-color: rgb(26, 184, 255); + background-color: rgb(22, 153, 212); } .md-typeset :-webkit-any(.abstract, .summary, .tldr) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(26, 184, 255); + color: rgb(22, 153, 212); } .md-typeset :is(.abstract, .summary, .tldr) > :is(.admonition-title, summary)::after { - color: rgb(26, 184, 255); + color: rgb(22, 153, 212); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.info, .todo) { - border-color: rgb(0, 166, 191); + border-color: rgb(0, 138, 159); } .md-typeset :is(.admonition, details):is(.info, .todo) { - border-color: rgb(0, 166, 191); + border-color: rgb(0, 138, 159); } .md-typeset :-webkit-any(.info, .todo) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(0, 147, 170, 0.1); + background-color: rgba(0, 122, 141, 0.1); } .md-typeset :is(.info, .todo) > :is(.admonition-title, summary) { - background-color: rgba(0, 147, 170, 0.1); + background-color: rgba(0, 122, 141, 0.1); } .md-typeset :-webkit-any(.info, .todo) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(56, 229, 255); + background-color: rgb(46, 190, 212); } .md-typeset :is(.info, .todo) > :is(.admonition-title, summary)::before { - background-color: rgb(56, 229, 255); + background-color: rgb(46, 190, 212); } .md-typeset :-webkit-any(.info, .todo) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(56, 229, 255); + color: rgb(46, 190, 212); } .md-typeset :is(.info, .todo) > :is(.admonition-title, summary)::after { - color: rgb(56, 229, 255); + color: rgb(46, 190, 212); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.tip, .hint, .important) { - border-color: rgb(0, 198, 171); + border-color: rgb(0, 164, 142); } .md-typeset :is(.admonition, details):is(.tip, .hint, .important) { - border-color: rgb(0, 198, 171); + border-color: rgb(0, 164, 142); } .md-typeset :-webkit-any(.tip, .hint, .important) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(0, 153, 132, 0.1); + background-color: rgba(0, 127, 110, 0.1); } .md-typeset :is(.tip, .hint, .important) > :is(.admonition-title, summary) { - background-color: rgba(0, 153, 132, 0.1); + background-color: rgba(0, 127, 110, 0.1); } .md-typeset :-webkit-any(.tip, .hint, .important) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(70, 255, 230); + background-color: rgb(58, 212, 191); } .md-typeset :is(.tip, .hint, .important) > :is(.admonition-title, summary)::before { - background-color: rgb(70, 255, 230); + background-color: rgb(58, 212, 191); } .md-typeset :-webkit-any(.tip, .hint, .important) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(70, 255, 230); + color: rgb(58, 212, 191); } .md-typeset :is(.tip, .hint, .important) > :is(.admonition-title, summary)::after { - color: rgb(70, 255, 230); + color: rgb(58, 212, 191); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.success, .check, .done) { - border-color: rgb(0, 195, 81); + border-color: rgb(0, 162, 67); } .md-typeset :is(.admonition, details):is(.success, .check, .done) { - border-color: rgb(0, 195, 81); + border-color: rgb(0, 162, 67); } .md-typeset :-webkit-any(.success, .check, .done) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(0, 160, 66, 0.1); + background-color: rgba(0, 133, 55, 0.1); } .md-typeset :is(.success, .check, .done) > :is(.admonition-title, summary) { - background-color: rgba(0, 160, 66, 0.1); + background-color: rgba(0, 133, 55, 0.1); } .md-typeset :-webkit-any(.success, .check, .done) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(64, 255, 143); + background-color: rgb(53, 212, 119); } .md-typeset :is(.success, .check, .done) > :is(.admonition-title, summary)::before { - background-color: rgb(64, 255, 143); + background-color: rgb(53, 212, 119); } .md-typeset :-webkit-any(.success, .check, .done) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(64, 255, 143); + color: rgb(53, 212, 119); } .md-typeset :is(.success, .check, .done) > :is(.admonition-title, summary)::after { - color: rgb(64, 255, 143); + color: rgb(53, 212, 119); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.question, .help, .faq) { - border-color: rgb(75, 165, 17); + border-color: rgb(62, 137, 14); } .md-typeset :is(.admonition, details):is(.question, .help, .faq) { - border-color: rgb(75, 165, 17); + border-color: rgb(62, 137, 14); } .md-typeset :-webkit-any(.question, .help, .faq) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(80, 177, 18, 0.1); + background-color: rgba(66, 147, 15, 0.1); } .md-typeset :is(.question, .help, .faq) > :is(.admonition-title, summary) { - background-color: rgba(80, 177, 18, 0.1); + background-color: rgba(66, 147, 15, 0.1); } .md-typeset :-webkit-any(.question, .help, .faq) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(124, 234, 54); + background-color: rgb(103, 194, 45); } .md-typeset :is(.question, .help, .faq) > :is(.admonition-title, summary)::before { - background-color: rgb(124, 234, 54); + background-color: rgb(103, 194, 45); } .md-typeset :-webkit-any(.question, .help, .faq) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(124, 234, 54); + color: rgb(103, 194, 45); } .md-typeset :is(.question, .help, .faq) > :is(.admonition-title, summary)::after { - color: rgb(124, 234, 54); + color: rgb(103, 194, 45); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.warning, .caution, .attention) { - border-color: rgb(179, 102, 0); + border-color: rgb(149, 85, 0); } .md-typeset :is(.admonition, details):is(.warning, .caution, .attention) { - border-color: rgb(179, 102, 0); + border-color: rgb(149, 85, 0); } .md-typeset :-webkit-any(.warning, .caution, .attention) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(204, 116, 0, 0.1); + background-color: rgba(169, 96, 0, 0.1); } .md-typeset :is(.warning, .caution, .attention) > :is(.admonition-title, summary) { - background-color: rgba(204, 116, 0, 0.1); + background-color: rgba(169, 96, 0, 0.1); } .md-typeset :-webkit-any(.warning, .caution, .attention) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(255, 156, 26); + background-color: rgb(212, 129, 22); } .md-typeset :is(.warning, .caution, .attention) > :is(.admonition-title, summary)::before { - background-color: rgb(255, 156, 26); + background-color: rgb(212, 129, 22); } .md-typeset :-webkit-any(.warning, .caution, .attention) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(255, 156, 26); + color: rgb(212, 129, 22); } .md-typeset :is(.warning, .caution, .attention) > :is(.admonition-title, summary)::after { - color: rgb(255, 156, 26); + color: rgb(212, 129, 22); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.failure, .fail, .missing) { - border-color: rgb(154, 0, 0); + border-color: rgb(128, 0, 0); } .md-typeset :is(.admonition, details):is(.failure, .fail, .missing) { - border-color: rgb(154, 0, 0); + border-color: rgb(128, 0, 0); } .md-typeset :-webkit-any(.failure, .fail, .missing) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(155, 0, 0, 0.1); + background-color: rgba(129, 0, 0, 0.1); } .md-typeset :is(.failure, .fail, .missing) > :is(.admonition-title, summary) { - background-color: rgba(155, 0, 0, 0.1); + background-color: rgba(129, 0, 0, 0.1); } .md-typeset :-webkit-any(.failure, .fail, .missing) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(255, 83, 83); + background-color: rgb(212, 69, 69); } .md-typeset :is(.failure, .fail, .missing) > :is(.admonition-title, summary)::before { - background-color: rgb(255, 83, 83); + background-color: rgb(212, 69, 69); } .md-typeset :-webkit-any(.failure, .fail, .missing) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(255, 83, 83); + color: rgb(212, 69, 69); } .md-typeset :is(.failure, .fail, .missing) > :is(.admonition-title, summary)::after { - color: rgb(255, 83, 83); + color: rgb(212, 69, 69); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.danger, .error) { - border-color: rgb(172, 0, 33); + border-color: rgb(143, 0, 27); } .md-typeset :is(.admonition, details):is(.danger, .error) { - border-color: rgb(172, 0, 33); + border-color: rgb(143, 0, 27); } .md-typeset :-webkit-any(.danger, .error) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(190, 0, 37, 0.1); + background-color: rgba(158, 0, 31, 0.1); } .md-typeset :is(.danger, .error) > :is(.admonition-title, summary) { - background-color: rgba(190, 0, 37, 0.1); + background-color: rgba(158, 0, 31, 0.1); } .md-typeset :-webkit-any(.danger, .error) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(255, 42, 83); + background-color: rgb(212, 35, 69); } .md-typeset :is(.danger, .error) > :is(.admonition-title, summary)::before { - background-color: rgb(255, 42, 83); + background-color: rgb(212, 35, 69); } .md-typeset :-webkit-any(.danger, .error) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(255, 42, 83); + color: rgb(212, 35, 69); } .md-typeset :is(.danger, .error) > :is(.admonition-title, summary)::after { - color: rgb(255, 42, 83); + color: rgb(212, 35, 69); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.bug) { - border-color: rgb(182, 0, 64); + border-color: rgb(151, 0, 53); } .md-typeset :is(.admonition, details):is(.bug) { - border-color: rgb(182, 0, 64); + border-color: rgb(151, 0, 53); } .md-typeset :-webkit-any(.bug) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(196, 0, 70, 0.1); + background-color: rgba(163, 0, 58, 0.1); } .md-typeset :is(.bug) > :is(.admonition-title, summary) { - background-color: rgba(196, 0, 70, 0.1); + background-color: rgba(163, 0, 58, 0.1); } .md-typeset :-webkit-any(.bug) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(255, 33, 112); + background-color: rgb(212, 27, 93); } .md-typeset :is(.bug) > :is(.admonition-title, summary)::before { - background-color: rgb(255, 33, 112); + background-color: rgb(212, 27, 93); } .md-typeset :-webkit-any(.bug) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(255, 33, 112); + color: rgb(212, 27, 93); } .md-typeset :is(.bug) > :is(.admonition-title, summary)::after { - color: rgb(255, 33, 112); + color: rgb(212, 27, 93); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.example) { - border-color: rgb(41, 0, 155); + border-color: rgb(34, 0, 129); } .md-typeset :is(.admonition, details):is(.example) { - border-color: rgb(41, 0, 155); + border-color: rgb(34, 0, 129); } .md-typeset :-webkit-any(.example) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(42, 0, 158, 0.1); + background-color: rgba(35, 0, 131, 0.1); } .md-typeset :is(.example) > :is(.admonition-title, summary) { - background-color: rgba(42, 0, 158, 0.1); + background-color: rgba(35, 0, 131, 0.1); } .md-typeset :-webkit-any(.example) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(126, 79, 255); + background-color: rgb(105, 66, 212); } .md-typeset :is(.example) > :is(.admonition-title, summary)::before { - background-color: rgb(126, 79, 255); + background-color: rgb(105, 66, 212); } .md-typeset :-webkit-any(.example) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(126, 79, 255); + color: rgb(105, 66, 212); } .md-typeset :is(.example) > :is(.admonition-title, summary)::after { - color: rgb(126, 79, 255); + color: rgb(105, 66, 212); } .md-typeset :-webkit-any(.admonition, details):-webkit-any(.quote, .cite) { - border-color: rgb(75, 82, 85); + border-color: rgb(62, 68, 71); } .md-typeset :is(.admonition, details):is(.quote, .cite) { - border-color: rgb(75, 82, 85); + border-color: rgb(62, 68, 71); } .md-typeset :-webkit-any(.quote, .cite) > :-webkit-any(.admonition-title, summary) { - background-color: rgba(79, 85, 89, 0.1); + background-color: rgba(66, 71, 74, 0.1); } .md-typeset :is(.quote, .cite) > :is(.admonition-title, summary) { - background-color: rgba(79, 85, 89, 0.1); + background-color: rgba(66, 71, 74, 0.1); } .md-typeset :-webkit-any(.quote, .cite) > :-webkit-any(.admonition-title, summary)::before { - background-color: rgb(171, 163, 152); + background-color: rgb(142, 135, 126); } .md-typeset :is(.quote, .cite) > :is(.admonition-title, summary)::before { - background-color: rgb(171, 163, 152); + background-color: rgb(142, 135, 126); } .md-typeset :-webkit-any(.quote, .cite) > :-webkit-any(.admonition-title, summary)::after { - color: rgb(171, 163, 152); + color: rgb(142, 135, 126); } .md-typeset :is(.quote, .cite) > :is(.admonition-title, summary)::after { - color: rgb(171, 163, 152); + color: rgb(142, 135, 126); } :root { - --darkreader-bgimg--md-footnotes-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-footnotes-icon: url("data:image/svg+xml;charset=utf-8,"); } .md-typeset .footnote { color: var(--darkreader-text--md-default-fg-color--light); @@ -1219,7 +1219,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { box-shadow: none; } :root { - --darkreader-bgimg--md-details-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-details-icon: url("data:image/svg+xml;charset=utf-8,"); } .md-typeset details:not([open]) { box-shadow: none; @@ -1326,18 +1326,18 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } .highlight span.filename { background-color: var(--darkreader-bg--md-code-bg-color); - border-bottom: 0.05rem solid var(--darkreader-border--md-default-fg-color--lightest); + border-bottom: .05rem solid var(--darkreader-border--md-default-fg-color--lightest); } .highlight [data-linenos]::before { background-color: var(--darkreader-bg--md-code-bg-color); - box-shadow: -0.05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; + box-shadow: -.05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; color: var(--darkreader-text--md-default-fg-color--light); } .highlighttable .linenos { background-color: var(--darkreader-bg--md-code-bg-color); } .highlighttable .linenodiv { - box-shadow: -0.05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; + box-shadow: -.05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; } .highlighttable .linenodiv pre { color: var(--darkreader-text--md-default-fg-color--light); @@ -1349,14 +1349,14 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { color: var(--darkreader-text--md-default-fg-color--light); } :root { - --darkreader-bgimg--md-tabbed-icon--prev: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-tabbed-icon--next: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-tabbed-icon--prev: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-tabbed-icon--next: url("data:image/svg+xml;charset=utf-8,"); } .md-typeset .tabbed-set > input:target { --md-scroll-offset: 0.625em; } .md-typeset .tabbed-labels { - box-shadow: 0 -0.05rem var(--darkreader-bg--md-default-fg-color--lightest) inset; + box-shadow: 0 -.05rem var(--darkreader-bg--md-default-fg-color--lightest) inset; } @media screen { .js .md-typeset .tabbed-labels::before { @@ -1451,7 +1451,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { .no-js .md-typeset .tabbed-set > input:nth-child(7):checked ~ .tabbed-labels > :nth-child(7), .no-js .md-typeset .tabbed-set > input:nth-child(8):checked ~ .tabbed-labels > :nth-child(8), .no-js .md-typeset .tabbed-set > input:nth-child(9):checked ~ .tabbed-labels > :nth-child(9) { - border-color: var(--darkreader-border--md-accent-fg-color) ; + border-color: var(--darkreader-border--md-accent-fg-color); } } .md-typeset .tabbed-set > input:first-child.focus-visible ~ .tabbed-labels > :first-child, @@ -1477,14 +1477,14 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { background-color: var(--darkreader-bg--md-accent-fg-color--transparent); } :root { - --darkreader-bgimg--md-tasklist-icon: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-tasklist-icon--checked: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-tasklist-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-tasklist-icon--checked: url("data:image/svg+xml;charset=utf-8,"); } .md-typeset .task-list-indicator::before { background-color: var(--darkreader-bg--md-default-fg-color--lightest); } .md-typeset [type="checkbox"]:checked + .task-list-indicator::before { - background-color: rgb(43, 255, 152); + background-color: rgb(36, 212, 126); } :root > * { --md-mermaid-font-family: var(--md-text-font-family), @@ -1496,59 +1496,65 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { --md-mermaid-label-fg-color: var(--md-code-fg-color); } a { - color: rgb(94, 165, 234); + color: rgb(78, 137, 194); } a:hover { - color: rgb(102, 177, 250); + color: rgb(85, 147, 207); } a:active { - color: rgb(255, 180, 29); + color: rgb(212, 149, 24); } * { -webkit-tap-highlight-color: transparent; } table.sortable thead { - background-color: rgb(34, 37, 38); - color: rgb(168, 160, 149); + background-color: rgb(28, 31, 32); + color: rgb(139, 133, 124); } hr { border-top-color: initial; border-right-color: initial; border-left-color: initial; - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); } .dashed { - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); } .form-area { background-image: initial; - background-color: rgb(27, 29, 30); - border-color: rgb(62, 68, 70); + background-color: rgb(22, 24, 25); + border-color: rgb(51, 56, 58); } footer { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } body { background-image: initial; - background-color: rgb(27, 29, 30); - color: rgb(232, 230, 227); + background-color: rgb(22, 24, 25); + color: rgb(193, 191, 188); } header { background-image: initial; - background-color: rgb(13, 14, 14); - color: rgb(178, 172, 162); + background-color: rgb(11, 12, 12); + color: rgb(148, 143, 134); } #user-links { - color: rgb(176, 170, 159); + color: rgb(146, 141, 132); +} +#user-links > ul > li > span:hover { + border-top-color: rgb(165, 58, 7); + color: rgb(193, 191, 188); + background-image: initial; + background-color: rgba(20, 22, 22, 0.25); } #nav-shadow { - background-image: linear-gradient(rgb(49, 53, 55), + background-image: linear-gradient(rgb(41, 44, 46), rgba(0, 0, 0, 0)); background-color: initial; } #nav-container { background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } nav ul { list-style-image: initial; @@ -1556,7 +1562,7 @@ nav ul { background-color: transparent; } nav ul li { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } nav ul li.home-nav-element a:hover { border-bottom-color: initial; @@ -1564,44 +1570,44 @@ nav ul li.home-nav-element a:hover { nav ul li a, nav ul li button { text-decoration-color: initial; - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); border-top-color: transparent; border-bottom-color: transparent; } nav ul li a:link, nav ul li button:link { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } nav ul li a:hover, nav ul li button:hover { - border-top-color: rgb(199, 70, 8); - color: rgb(232, 230, 227); + border-top-color: rgb(165, 58, 7); + color: rgb(193, 191, 188); background-image: initial; - background-color: rgba(24, 26, 27, 0.25); + background-color: rgba(20, 22, 22, 0.25); } nav ul li a.active, nav ul li button.active { - border-top-color: rgb(199, 70, 8); - color: rgb(249, 146, 97); + border-top-color: rgb(165, 58, 7); + color: rgb(207, 121, 81); background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } nav ul li ul { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); box-shadow: rgba(0, 0, 0, 0.4) 2px 2px 4px; } nav ul li ul li:hover { background-image: initial; - background-color: rgb(49, 53, 55); + background-color: rgb(41, 44, 46); } nav ul li ul li a { - color: rgb(232, 230, 227) !important; + color: rgb(193, 191, 188) !important; } nav ul li ul li a, nav ul li ul li button { - border-left-color: rgb(140, 130, 115); + border-left-color: rgb(116, 108, 95); } nav ul li button { background-image: none; @@ -1614,78 +1620,78 @@ nav ul li.home-nav-element a:hover { background-color: transparent; } nav .nav-divider { - border-right-color: rgba(48, 52, 54, 0.15); + border-right-color: rgba(40, 43, 45, 0.15); } hr { - color: rgba(232, 230, 227, 0.2); + color: rgba(193, 191, 188, 0.2); } #content .title { - color: rgb(199, 194, 187); + color: rgb(165, 161, 155); } footer { - border-top-color: rgb(62, 68, 70); + border-top-color: rgb(51, 56, 58); background-image: initial; - background-color: rgb(34, 37, 38); + background-color: rgb(28, 31, 32); } a { text-decoration-color: initial; } noscript #noscript { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); background-image: initial; - background-color: rgb(139, 0, 0); + background-color: rgb(115, 0, 0); } #announcement { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); background-image: initial; - background-color: rgb(139, 0, 0); + background-color: rgb(115, 0, 0); } #announcement a { - color: rgb(255, 174, 26); + color: rgb(212, 144, 22); } .time { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } #form-errors, .form-errors { background-image: initial; - background-color: rgba(204, 0, 0, 0.3); - border-color: rgb(179, 0, 0); + background-color: rgba(169, 0, 0, 0.3); + border-color: rgb(149, 0, 0); } #nav-placeholder { background-image: initial; - background-color: rgb(24, 26, 27); - border-right-color: rgb(62, 68, 70); - border-left-color: rgb(62, 68, 70); + background-color: rgb(20, 22, 22); + border-right-color: rgb(51, 56, 58); + border-left-color: rgb(51, 56, 58); } #contest-info a { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } #contest-info-main { - border-left-color: rgb(48, 52, 54); + border-left-color: rgb(40, 43, 45); background-image: initial; background-color: rgba(0, 0, 0, 0.77); - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .contest-info-toggle-mode-on { background-image: initial; - background-color: rgba(0, 164, 0, 0.57); + background-color: rgba(0, 136, 0, 0.57); } .contest-info-toggle-mode-on:hover { background-image: initial; - background-color: rgba(0, 164, 0, 0.97); + background-color: rgba(0, 136, 0, 0.97); } .contest-info-toggle-mode-off { background-image: initial; - background-color: rgba(204, 0, 0, 0.57); + background-color: rgba(169, 0, 0, 0.57); } .contest-info-toggle-mode-off:hover { background-image: initial; - background-color: rgba(204, 0, 0, 0.97); + background-color: rgba(169, 0, 0, 0.97); } #page-container { - border-right-color: rgb(62, 68, 70); - border-left-color: rgb(62, 68, 70); + border-right-color: rgb(51, 56, 58); + border-left-color: rgb(51, 56, 58); } .MathJax:focus { outline-color: initial; @@ -1698,639 +1704,663 @@ noscript #noscript { } @media (max-width: 799px) { #navicon { - color: rgb(129, 175, 255); + color: rgb(107, 145, 212); } #navicon.hover { - color: rgb(80, 184, 254); - text-shadow: rgb(24, 26, 27) 0px 0px 5px; + color: rgb(66, 153, 211); + text-shadow: rgb(20, 22, 22) 0px 0px 5px; } #nav-list { background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); box-shadow: none; border-color: initial; } } #notification { - color: rgb(164, 192, 217); + color: rgb(136, 159, 180); } #notification:hover { - color: rgb(178, 171, 161); + color: rgb(148, 142, 134); } #chat-icon { - color: rgb(87, 225, 217); + color: rgb(170, 166, 161); } #chat-icon:hover { - color: rgb(200, 196, 189); + color: rgb(95, 212, 95); } #nav-lang-icon { - color: rgb(51, 125, 255); + color: rgb(42, 104, 212); } #nav-lang-icon:hover { - color: rgb(121, 170, 255); + color: rgb(100, 141, 212); } #nav-darkmode-icon:hover { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .dropdown { - border-color: rgb(60, 65, 68); + border-color: rgb(50, 54, 56); background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .dropdown a { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .dropdown-item:hover { background-image: initial; - background-color: rgb(49, 53, 55); + background-color: rgb(41, 44, 46); } .unread_boxes { - background-color: rgb(204, 0, 0); - color: rgb(232, 230, 227); + background-color: rgb(169, 0, 0); + color: rgb(193, 191, 188); } .sub-lang { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .notification-open #notification { - color: rgb(114, 255, 114) !important; + color: rgb(95, 212, 95) !important; } .title-row { - color: rgb(199, 194, 187); + color: rgb(165, 161, 155); } .gray { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .white { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .black { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .red { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } .green { - color: rgb(114, 255, 114); + color: rgb(95, 212, 95); } .grayed { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .darkcyan { - color: rgb(107, 255, 255); + color: rgb(89, 212, 212); } .peru { - color: rgb(209, 144, 80); + color: rgb(173, 120, 66); } .blue { - color: rgb(51, 125, 255); + color: rgb(42, 104, 212); } .background-d6e8f7 { - background-color: rgb(38, 41, 43); + background-color: rgb(32, 34, 36); } .background-bisque { - background-color: rgb(86, 47, 0); + background-color: rgb(71, 39, 0); } .background-footer { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); +} +#loading-bar { + background-color: rgb(101, 38, 33); } @media (min-width: 800px) { #page-container { background-image: initial; - background-color: rgb(32, 34, 36); + background-color: rgb(27, 28, 30); } #content.wrapper { background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } } +.colored-text { + color: rgb(193, 191, 188); +} +::-webkit-input-placeholder { + color: rgb(170, 166, 161); +} +::placeholder { + color: rgb(170, 166, 161); +} +input::-webkit-input-placeholder { + color: rgb(170, 166, 161); +} +input::placeholder { + color: rgb(170, 166, 161); +} +::-webkit-input-placeholder { + color: rgb(170, 166, 161); +} .table { background-image: initial; background-color: rgba(0, 0, 0, 0.01); } .table.striped tr:nth-child(2n) { background-image: initial; - background-color: rgb(29, 31, 32); + background-color: rgb(24, 26, 27); } .table.striped tr:nth-child(2n+1) { background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .table td:first-child { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); } .table tr:last-child td { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); } .table tr:last-child td:first-child { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); } .table th { - color: rgb(232, 230, 227); - background-color: rgb(0, 0, 100); - border-color: rgb(62, 68, 70); + color: rgb(193, 191, 188); + background-color: rgb(0, 0, 83); + border-color: rgb(51, 56, 58); } .table td { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); } #users-table th a { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .AB { - background-color: rgb(53, 57, 59); - color: rgb(232, 230, 227); + background-color: rgb(44, 47, 49); + color: rgb(193, 191, 188); } .AC { - background-color: rgb(62, 163, 11); - color: rgb(114, 255, 114); + background-color: rgb(51, 135, 9); + color: rgb(95, 212, 95); } ._AC { - background-color: rgb(139, 153, 0); - color: rgb(114, 255, 114); + background-color: rgb(115, 127, 0); + color: rgb(95, 212, 95); } .WA { - background-color: rgb(53, 57, 59); - color: rgb(240, 48, 99); + background-color: rgb(44, 47, 49); + color: rgb(199, 40, 82); } .TLE, .MLE { - background-color: rgb(53, 57, 59); - color: rgb(232, 230, 227); + background-color: rgb(44, 47, 49); + color: rgb(193, 191, 188); } .OLE, .IR, .RTE, .OTH { - background-color: rgb(136, 94, 3); - color: rgb(232, 230, 227); + background-color: rgb(113, 78, 2); + color: rgb(193, 191, 188); } .CE { - background-color: rgb(53, 57, 59); - color: rgb(232, 230, 227); + background-color: rgb(44, 47, 49); + color: rgb(193, 191, 188); } .IE { - background-color: rgb(204, 0, 0); - color: rgb(232, 230, 227); + background-color: rgb(169, 0, 0); + color: rgb(193, 191, 188); } .QU, .G { background-image: initial; - background-color: rgb(24, 26, 27); - color: rgb(232, 230, 227); + background-color: rgb(20, 22, 22); + color: rgb(193, 191, 188); } .judge-online { - color: rgb(100, 196, 97); + color: rgb(83, 163, 81); } .judge-offline { - color: rgb(225, 55, 55); + color: rgb(187, 46, 46); } .middle-content .post { - border-color: rgb(76, 83, 86) rgb(84, 91, 94) rgb(84, 91, 94); + border-color: rgb(63, 69, 71) rgb(70, 76, 78) rgb(70, 76, 78); } .middle-content .post .title a { - color: rgb(255, 114, 114) !important; + color: rgb(212, 95, 95) !important; } .middle-content .post .title a:hover { - color: rgb(255, 70, 70) !important; -} -.left-sidebar-item { - border-color: rgb(60, 65, 68); - background-color: rgb(24, 26, 27); + color: rgb(212, 58, 58) !important; } .left-sidebar-item.active { - color: rgb(114, 255, 114); - background-color: rgb(40, 111, 17); + color: rgb(193, 191, 188); + background-color: rgb(2, 55, 45); } .left-sidebar-item.active .sidebar-icon { - color: rgb(114, 255, 114); + color: rgb(193, 191, 188); } .blog-sidebox .contest { - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); } .blog-sidebox .contest:last-child { border-bottom-color: initial; } .blog-sidebox .contest .name a { - color: rgb(104, 149, 191) !important; + color: rgb(86, 124, 159) !important; } .blog-sidebox .contest .name a:hover { - color: rgb(102, 177, 250) !important; + color: rgb(85, 147, 207) !important; } .no-dot-blog-sidebox ul { list-style-image: initial; } .blog-comment-count-link { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } .rssatom span { - color: rgb(232, 230, 227); - border-color: rgb(174, 78, 16); + color: rgb(193, 191, 188); + border-color: rgb(144, 65, 13); background-image: linear-gradient(135deg, - rgb(175, 79, 22) 0px, - rgb(169, 90, 3) 47%, - rgb(175, 79, 22) 100%); + rgb(145, 66, 18) 0px, + rgb(140, 75, 2) 47%, + rgb(145, 66, 18) 100%); background-color: initial; } .blog-box { - border-bottom-color: rgb(60, 65, 68); - border-top-color: rgb(60, 65, 68); - background-color: rgb(24, 26, 27); + border-bottom-color: rgb(50, 54, 56); + border-top-color: rgb(50, 54, 56); + background-color: rgb(20, 22, 22); box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 5px; } .blog-box:hover { - border-color: rgb(81, 88, 91); + border-color: rgb(67, 73, 76); } .problem-feed-name a { - color: rgb(102, 177, 250); + color: rgb(85, 147, 207); } .problem-feed-types { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .left-sidebar-item:hover { - background-color: rgb(40, 43, 45); + background-color: rgb(33, 36, 37); } .left-sidebar-item.active:hover { - background-color: rgb(40, 111, 17); + background-color: rgb(2, 55, 45); } .sidebar-icon { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .left-sidebar-header { - border-bottom-color: rgb(140, 130, 115); - color: rgb(232, 230, 227); + border-bottom-color: rgb(116, 108, 95); + color: rgb(193, 191, 188); } .show-more { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); background-image: linear-gradient(rgba(0, 0, 0, 0), - rgb(24, 26, 27)); + rgb(20, 22, 22)); background-color: initial; } .middle-right-content.wrapper { background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); +} +@media (max-width: 799px) { + .left-sidebar { + background-image: inherit; + background-color: inherit; + } } @media (min-width: 800px) { + .left-sidebar-item { + border-color: rgb(50, 54, 56); + box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 5px; + background-color: rgb(20, 22, 22); + } .left-sidebar { - /* border-right-color: rgb(60, 65, 68); */ - /* box-shadow: rgba(0, 0, 0, 0.5) 0px -10px 2px 0px; */ - background-image: initial; - - /* background-color: rgb(24, 26, 27); */ + border-right-color: initial; } .blog-box { - border-left-color: rgb(60, 65, 68); - border-right-color: rgb(60, 65, 68); + border-left-color: rgb(50, 54, 56); + border-right-color: rgb(50, 54, 56); } } #problem-table tr:hover { background-image: initial; - background-color: rgb(36, 39, 40); + background-color: rgb(30, 32, 33); } ul.problem-list { list-style-image: initial; } .solved-problem-color { - color: rgb(100, 196, 97); + color: rgb(83, 163, 81); } .unsolved-problem-color { - color: rgb(225, 55, 55); + color: rgb(187, 46, 46); } .attempted-problem-color { - color: rgb(255, 174, 26); + color: rgb(212, 144, 22); } .submissions-left { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .no-submissions-left { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } .organization-tag { box-shadow: rgba(0, 0, 0, 0.12) 0px -0.1em 0px inset; - background-color: rgb(53, 57, 59); + background-color: rgb(44, 47, 49); } .organization-tag a { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .pdf-icon .pdf-icon-logo { - color: rgb(242, 59, 63); + color: rgb(201, 49, 52); } .pdf-icon .pdf-icon-bar { background-image: initial; - background-color: rgb(170, 11, 15); + background-color: rgb(141, 9, 12); } .license a { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); text-decoration-color: initial; } #problem_submit #result-version-info { - border-bottom-color: rgb(78, 85, 88); - color: rgb(158, 150, 137); + border-bottom-color: rgb(65, 71, 73); + color: rgb(131, 125, 114); } #problem_submit #language-select2 .select2-results__option { - color: rgb(158, 150, 137) !important; + color: rgb(131, 125, 114) !important; background-image: initial !important; - background-color: rgb(24, 26, 27) !important; + background-color: rgb(20, 22, 22) !important; } #problem_submit #language-select2 .select2-results__option--highlighted { text-decoration-color: initial; } #problem_submit #language-select2 .select2-results__option[aria-selected="true"] { - color: rgb(232, 230, 227) !important; + color: rgb(193, 191, 188) !important; } #problem-table th a { color: inherit; } .problem-data-form .bad-file input, .problem-data-form .bad-file .select2-selection { - border-color: rgb(179, 0, 0); + border-color: rgb(149, 0, 0); } .problem-clarification { - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); } #clarification_header { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } #clarification_header:hover { - color: rgb(255, 174, 26); + color: rgb(212, 144, 22); } #comment-announcement { - background-color: rgb(49, 53, 55); - color: rgb(166, 158, 146); + background-color: rgb(41, 44, 46); + color: rgb(138, 131, 121); } #comment-announcement:hover { - background-color: rgb(96, 104, 108); + background-color: rgb(80, 86, 90); } .admin a, .admin { - color: rgb(232, 230, 227) !important; + color: rgb(193, 191, 188) !important; } svg.rate-box circle { fill: none; } svg.rate-box.rate-newbie circle { - stroke: rgb(168, 160, 149); + stroke: rgb(139, 133, 124); } svg.rate-box.rate-newbie path { - fill: rgb(168, 160, 149); + fill: rgb(139, 133, 124); } svg.rate-box.rate-amateur circle { - stroke: rgb(86, 255, 86); + stroke: rgb(71, 212, 71); } svg.rate-box.rate-amateur path { - fill: rgb(86, 255, 86); + fill: rgb(71, 212, 71); } svg.rate-box.rate-specialist circle { - stroke: rgb(87, 252, 242); + stroke: rgb(72, 209, 201); } svg.rate-box.rate-specialist path { - fill: rgb(87, 252, 242); + fill: rgb(72, 209, 201); } svg.rate-box.rate-expert circle { - stroke: rgb(97, 155, 255); + stroke: rgb(81, 129, 212); } svg.rate-box.rate-expert path { - fill: rgb(97, 155, 255); + fill: rgb(81, 129, 212); } svg.rate-box.rate-candidate-master circle { - stroke: rgb(255, 97, 255); + stroke: rgb(212, 81, 212); } svg.rate-box.rate-candidate-master path { - fill: rgb(255, 97, 255); + fill: rgb(212, 81, 212); } svg.rate-box.rate-master circle { - stroke: rgb(255, 239, 49); + stroke: rgb(212, 198, 41); } svg.rate-box.rate-master path { - fill: rgb(255, 239, 49); + fill: rgb(212, 198, 41); } svg.rate-box.rate-grandmaster circle, svg.rate-box.rate-target circle { - stroke: rgb(255, 37, 37); + stroke: rgb(212, 31, 31); } svg.rate-box.rate-grandmaster path, svg.rate-box.rate-target path { - fill: rgb(255, 37, 37); + fill: rgb(212, 31, 31); } svg.rate-box.rate-target circle:last-child { stroke: none; - fill: rgb(255, 37, 37); + fill: rgb(212, 31, 31); } .rate-none, .rate-none a { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .rate-newbie, .rate-newbie a { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .rate-amateur, .rate-amateur a { - color: rgb(86, 255, 86); + color: rgb(71, 212, 71); } .rate-specialist, .rate-specialist a { - color: rgb(107, 255, 255); + color: rgb(89, 212, 212); } .rate-expert, .rate-expert a { - color: rgb(51, 125, 255); + color: rgb(42, 104, 212); } .rate-candidate-master, .rate-candidate-master a { - color: rgb(255, 85, 255); + color: rgb(212, 71, 212); } .rate-master, .rate-master a { - color: rgb(255, 152, 26); + color: rgb(212, 126, 22); } .rate-grandmaster, .rate-grandmaster a, .rate-target, .rate-target a { - color: rgb(255, 37, 37); + color: rgb(212, 31, 31); } .rate-group { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } #users-table th a, #users-table th a:link, #users-table th a:visited { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } #users-table th a:hover { - color: rgb(26, 255, 26); + color: rgb(22, 212, 22); } #users-table tr:hover { background-image: initial; - background-color: rgb(36, 39, 40); + background-color: rgb(30, 32, 33); } #users-table tr.highlight { background-image: initial; - background-color: rgb(85, 79, 0); + background-color: rgb(71, 66, 0); } #users-table tr:target { background-image: initial; - background-color: rgb(85, 79, 0); + background-color: rgb(71, 66, 0); } #users-table .organization-column a { - color: rgb(152, 143, 129) !important; + color: rgb(126, 119, 107) !important; } #users-table .disqualified { - background-color: rgb(103, 0, 0) !important; + background-color: rgb(85, 0, 0) !important; } #users-table .frozen { background-image: initial !important; - background-color: rgb(5, 77, 121) !important; + background-color: rgb(4, 64, 100) !important; } #users-table .full-score, #users-table .full-score a { - color: rgb(114, 255, 114); + color: rgb(95, 212, 95); } #users-table .partial-score, #users-table .partial-score a { - color: rgb(114, 255, 114); + color: rgb(95, 212, 95); } #users-table .failed-score, #users-table .failed-score a { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } #users-table .pretest-full-score, #users-table .pretest-full-score a { - color: rgb(84, 164, 217); + color: rgb(70, 136, 180); } #users-table .pretest-partial-score, #users-table .pretest-partial-score a { - color: rgb(84, 164, 217); + color: rgb(70, 136, 180); } #users-table .pretest-failed-score, #users-table .pretest-failed-score a { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } #users-table .user-points { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } #users-table .solving-time { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } #users-table .point-denominator { - border-top-color: rgb(84, 91, 94); + border-top-color: rgb(70, 76, 78); } #users-table .fullname-column { border-right-color: initial !important; } #users-table .fullname-column span { - color: rgb(152, 143, 129) !important; + color: rgb(126, 119, 107) !important; } #search-form .select2-results__option--highlighted { - background-color: rgb(43, 46, 48) !important; + background-color: rgb(36, 38, 40) !important; } a.user-redirect { - color: rgb(84, 164, 217); + color: rgb(70, 136, 180); } a.user-redirect:hover { - text-shadow: rgb(0, 0, 204) 0px 0px 2px; + text-shadow: rgb(0, 0, 169) 0px 0px 2px; } .user-info-cell { - border-left-color: rgb(62, 68, 70); + border-left-color: rgb(51, 56, 58); } .contest-history-cell { - border-left-color: rgb(62, 68, 70); + border-left-color: rgb(51, 56, 58); } .hide-solved-problems > span::before { background-image: initial; background-color: rgba(0, 0, 0, 0.2); } .pp-table .pp-weighted { - color: rgb(157, 148, 136); + color: rgb(130, 123, 113); } .pp-table div.sub-pp { border-left-color: initial; } #pp-load-link-wrapper { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); } #rating-tooltip { background-image: initial; background-color: rgba(0, 0, 0, 0.7); - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } #rating-tooltip.rate-group { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .follow { background-image: initial; - background-color: rgb(0, 102, 0); - border-color: rgb(19, 122, 19); + background-color: rgb(0, 85, 0); + border-color: rgb(16, 101, 16); } .follow:hover { background-image: initial; - background-color: rgb(0, 80, 0); + background-color: rgb(0, 66, 0); } .unfollow { background-image: initial; - background-color: rgb(204, 0, 0); - border-color: rgb(121, 0, 21); + background-color: rgb(169, 0, 0); + border-color: rgb(100, 0, 17); } .unfollow:hover { background-image: initial; - background-color: rgb(111, 0, 0); + background-color: rgb(92, 0, 0); } #submission-activity #submission-activity-actions #year { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } #submission-activity #submission-activity-display { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); } #submission-activity #submission-activity-display .info-text { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } #submission-activity #submission-activity-display table td.activity-blank { - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } #submission-activity #submission-activity-display table td.activity-0 { - background-color: rgb(43, 47, 49); + background-color: rgb(36, 39, 41); } #submission-activity #submission-activity-display table td.activity-1 { - background-color: rgb(22, 102, 52); + background-color: rgb(18, 85, 43); } #submission-activity #submission-activity-display table td.activity-2 { - background-color: rgb(47, 154, 95); + background-color: rgb(39, 128, 79); } #submission-activity #submission-activity-display table td.activity-3 { - background-color: rgb(38, 125, 61); + background-color: rgb(32, 104, 51); } #submission-activity #submission-activity-display table td.activity-4 { - background-color: rgb(26, 88, 46); + background-color: rgb(22, 73, 38); } .user-info-header { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .user-stat-header { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .content-description pre, .content-description code, .content-description kbd, .content-description samp, .content-description span.code { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .content-description code, .content-description span.code { - border-color: rgb(62, 68, 70); - background-color: rgb(28, 30, 31); - color: rgb(189, 183, 175); + border-color: rgb(51, 56, 58); + background-color: rgb(23, 25, 26); + color: rgb(157, 152, 145); } .content-description pre { - border-color: rgb(62, 68, 70); - background-color: rgb(28, 30, 31); - color: rgb(232, 230, 227); + border-color: rgb(51, 56, 58); + background-color: rgb(23, 25, 26); + color: rgb(193, 191, 188); } .content-description pre code, .content-description pre div.code { border-color: initial; background-image: initial; background-color: transparent; - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .content-description pre.no-border { border-color: initial; @@ -2338,134 +2368,142 @@ a.user-redirect:hover { } .content-description ins { background-image: initial; - background-color: rgb(84, 84, 0); - color: rgb(232, 230, 227); + background-color: rgb(70, 70, 0); + color: rgb(193, 191, 188); text-decoration-color: initial; } .content-description mark { background-image: initial; - background-color: rgb(153, 153, 0); - color: rgb(232, 230, 227); + background-color: rgb(127, 127, 0); + color: rgb(193, 191, 188); } .content-description img { border-color: initial; } .codehilitetable pre { - background-color: rgba(35, 38, 39, 0.5); + background-color: rgba(29, 32, 32, 0.5); } .codehilitetable .linenos pre { - color: rgba(232, 230, 227, 0.26); + color: rgba(193, 191, 188, 0.26); background-color: rgba(0, 0, 0, 0.07); border-right-color: initial; } .info-float .fa { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .tweet-this i { - color: rgb(90, 176, 238); + color: rgb(75, 146, 198); } .facebook-this it { - color: rgb(132, 183, 237); + color: rgb(110, 152, 197); } .gplus-this i { - color: rgb(224, 90, 72); + color: rgb(186, 75, 60); } .button, button, input[type="submit"] { - background-color: rgb(200, 80, 0); + background-color: rgb(2, 55, 45); border-color: transparent; box-shadow: rgba(0, 0, 0, 0.02) 0px 1px 3px 0px; text-decoration-color: initial; - color: rgb(232, 230, 227) !important; + color: rgb(193, 191, 188) !important; } .button.disabled, button.disabled, input[type="submit"].disabled { - background-image: linear-gradient(rgb(73, 79, 82) 0px, - rgb(96, 104, 108) 100%) !important; + background-image: linear-gradient(rgb(61, 66, 68) 0px, + rgb(80, 86, 90) 100%) !important; background-color: initial !important; - border-color: rgb(84, 91, 94) !important; + border-color: rgb(70, 76, 78) !important; } .button.btn-gray, button.btn-gray, input[type="submit"].btn-gray { background-image: initial; - background-color: rgb(96, 104, 108); + background-color: rgb(80, 86, 90); } .button.btn-hovergray:hover, button.btn-hovergray:hover, input[type="submit"].btn-hovergray:hover { background-image: initial; - background-color: rgb(49, 53, 55); + background-color: rgb(41, 44, 46); } .button.btn-green, button.btn-green, input[type="submit"].btn-green { background-image: initial; - background-color: rgb(0, 102, 0); + background-color: rgb(0, 85, 0); } .button.btn-green:hover, button.btn-green:hover, input[type="submit"].btn-green:hover { background-image: initial; - background-color: rgb(35, 121, 60); + background-color: rgb(29, 100, 50); } .button.btn-darkred, button.btn-darkred, input[type="submit"].btn-darkred { background-image: initial; - background-color: rgb(111, 0, 0); + background-color: rgb(92, 0, 0); } .button.btn-darkred:hover, button.btn-darkred:hover, input[type="submit"].btn-darkred:hover { background-image: initial; - background-color: rgb(132, 34, 34); + background-color: rgb(110, 28, 28); } .button.btn-midnightblue, button.btn-midnightblue, input[type="submit"].btn-midnightblue { background-image: initial; - background-color: rgb(20, 20, 90); + background-color: rgb(17, 17, 75); } .button.btn-midnightblue:hover, button.btn-midnightblue:hover, input[type="submit"].btn-midnightblue:hover { background-image: initial; - background-color: rgb(0, 0, 111); + background-color: rgb(0, 0, 92); +} +.button.btn-darkGreen, button.btn-darkGreen, input[type="submit"].btn-darkGreen { + background-image: initial; + background-color: rgb(2, 55, 45); +} +.button.btn-darkGreen:hover, button.btn-darkGreen:hover, input[type="submit"].btn-darkGreen:hover { + background-image: initial; + background-color: rgb(2, 55, 45); } .button:hover, button:hover, input[type="submit"]:hover { - background-color: rgb(173, 72, 3); + background-color: rgb(2, 55, 45); box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; } .button:focus, button:focus, input[type="submit"]:focus { - background-color: rgb(173, 72, 3); + background-color: rgb(2, 55, 45); box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; } .button:active, button:active, input[type="submit"]:hover { - background-color: rgb(160, 64, 0); + background-color: rgb(2, 55, 45); box-shadow: rgba(0, 0, 0, 0.06) 0px 2px 4px; } input[type="text"], input[type="password"], input[type="email"], input[type="number"] { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); background-image: none; - background-color: rgb(24, 26, 27); - border-color: rgb(62, 68, 70); + background-color: rgb(20, 22, 22); + border-color: rgb(51, 56, 58); box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset; } textarea { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); background-image: none; - background-color: rgb(24, 26, 27); - border-color: rgb(62, 68, 70); + background-color: rgb(20, 22, 22); + border-color: rgb(51, 56, 58); box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset; } textarea:hover { - border-color: rgba(16, 87, 144, 0.8); + border-color: rgba(13, 72, 120, 0.8); box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset, - rgba(16, 91, 150, 0.6) 0px 0px 4px; + rgba(13, 76, 125, 0.6) 0px 0px 4px; } input[type="text"]:hover, input[type="password"]:hover { - border-color: rgba(16, 87, 144, 0.8); + border-color: rgba(13, 72, 120, 0.8); box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset, - rgba(16, 91, 150, 0.6) 0px 0px 4px; + rgba(13, 76, 125, 0.6) 0px 0px 4px; } textarea:focus { - border-color: rgba(16, 87, 144, 0.8); + border-color: rgba(13, 72, 120, 0.8); box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset, - rgba(16, 91, 150, 0.6) 0px 0px 8px; outline-color: initial; + rgba(13, 76, 125, 0.6) 0px 0px 8px; outline-color: initial; } input[type="text"]:focus, input[type="password"]:focus { - border-color: rgba(16, 87, 144, 0.8); + border-color: rgba(13, 72, 120, 0.8); box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset, - rgba(16, 91, 150, 0.6) 0px 0px 8px; + rgba(13, 76, 125, 0.6) 0px 0px 8px; outline-color: initial; } .btn-clipboard { - color: rgb(157, 149, 136); - background-color: rgb(24, 26, 27); - border-color: rgb(55, 60, 62); + color: rgb(130, 124, 113); + background-color: rgb(20, 22, 22); + border-color: rgb(46, 50, 51); } .ul_tab_a_active, .tabs > ul > li.active > a:focus, @@ -2474,128 +2512,135 @@ input[type="text"]:focus, input[type="password"]:focus { .tabs > ul > li.active > span:hover, .tabs > ul > li.active > a, .tabs > ul > li.active > span { - color: rgb(205, 200, 194); - border-bottom-color: rgb(126, 117, 103); + color: rgb(170, 166, 161); + border-bottom-color: rgb(105, 97, 85); background-image: initial; background-color: transparent; } .tabs { - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); } .tabs .tab .tab-icon { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .tabs .tab.active a, .tabs .tab.active span { - border-top-color: rgb(48, 52, 54) !important; + border-top-color: rgb(40, 43, 45) !important; } .tabs .tab.active .tab-icon { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .tabs h2 { - color: rgb(199, 194, 187); + color: rgb(165, 161, 155); } .tabs > ul { list-style-image: none; } +.tabs > ul::-webkit-scrollbar { + background-color: transparent; +} +.tabs > ul::-webkit-scrollbar-thumb { + background-color: transparent; +} .tabs > ul > li > a, .tabs > ul > li > span { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); text-decoration-color: initial; } .tabs > ul > li > a:hover, .tabs > ul > li > span:hover { - border-bottom-color: rgb(0, 217, 0); + border-bottom-color: rgb(0, 180, 0); } ul.pagination a:hover { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); background-image: initial; - background-color: rgba(0, 0, 0, 0.55); + background-color: rgb(7, 106, 86); + border-color: initial; } ul.pagination > li > a, ul.pagination > li > span { text-decoration-color: initial; - color: rgb(232, 230, 227); - background-color: rgb(0, 0, 100); - border-color: rgb(114, 106, 93); + color: rgb(170, 166, 161); + background-color: rgb(20, 22, 22); + border-color: rgb(105, 97, 85); } ul.pagination > .disabled-page > a { - color: rgb(157, 148, 136); - background-color: rgb(0, 0, 100); - border-color: rgb(127, 118, 104); + color: rgb(130, 123, 113); + background-color: rgba(2, 55, 45, 0.5); + border-color: rgba(105, 97, 85, 0.5); } ul.pagination > .disabled-page > span { - color: rgb(157, 148, 136); - background-color: rgb(0, 0, 100); - border-color: rgb(114, 106, 93); + color: rgb(130, 123, 113); + background-color: rgba(2, 55, 45, 0.5); + border-color: rgba(105, 97, 85, 0.5); } ul.pagination > .active-page > a { - color: rgb(232, 230, 227); - background-color: rgb(0, 73, 129); + color: rgb(193, 191, 188); + background-color: rgb(2, 55, 45); border-color: transparent; } ul.pagination > .active-page > span { - color: rgb(232, 230, 227); - background-color: rgb(24, 26, 27); + color: rgb(193, 191, 188); + background-color: rgb(20, 22, 22); border-color: transparent; } .alert { border-color: transparent; } .alert-info { - color: rgb(117, 178, 208); - background-color: rgb(14, 48, 65); - border-color: rgb(22, 90, 104); + color: rgb(97, 148, 173); + background-color: rgb(12, 40, 54); + border-color: rgb(18, 75, 86); } .alert-warning { - color: rgb(198, 171, 123); - background-color: rgb(47, 40, 5); - border-color: rgb(108, 76, 11); + color: rgb(164, 142, 102); + background-color: rgb(39, 33, 4); + border-color: rgb(90, 63, 9); } .alert-danger { - color: rgb(194, 102, 100); - background-color: rgb(56, 22, 22); - border-color: rgb(89, 35, 43); + color: rgb(161, 85, 83); + background-color: rgb(46, 18, 18); + border-color: rgb(74, 29, 36); } .alert-dismissable .close, .alert-dismissible .close { color: inherit; } .close { - color: rgb(232, 230, 227); - text-shadow: rgb(24, 26, 27) 0px 1px 0px; + color: rgb(193, 191, 188); + text-shadow: rgb(20, 22, 22) 0px 1px 0px; } a.close { text-decoration-color: initial !important; } a.close:hover { - color: rgb(232, 230, 227) !important; + color: rgb(193, 191, 188) !important; } .close:focus, .close:hover { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); text-decoration-color: initial; } .badge { - color: rgb(232, 230, 227); - background-color: rgb(155, 19, 19); + color: rgb(193, 191, 188); + background-color: rgb(129, 16, 16); } .form-submit-group { - border-top-color: rgb(53, 57, 59); + border-top-color: rgb(44, 47, 49); } .sidebox h3 { background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .sidebox h3 .fa { background-image: initial; - background-color: rgb(3, 66, 54); - color: rgb(232, 230, 227); + background-color: rgb(2, 55, 45); + color: rgb(193, 191, 188); } .sidebox-content { border-top-color: initial; background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .sidebox-content.sidebox-table { border-color: initial; @@ -2605,132 +2650,133 @@ a.close:hover { } .ws-closed { background-image: initial; - background-color: rgb(139, 0, 0); + background-color: rgb(115, 0, 0); } .ws-closed a { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .messages li { border-color: transparent; } .messages li.debug { - color: rgb(194, 188, 180); - background-color: rgb(40, 43, 44); - border-color: rgb(59, 64, 66); + color: rgb(161, 156, 149); + background-color: rgb(33, 36, 37); + border-color: rgb(49, 53, 55); } .messages li.info { - color: rgb(142, 227, 241); - background-color: rgb(20, 59, 67); - border-color: rgb(30, 89, 97); + color: rgb(118, 188, 200); + background-color: rgb(17, 49, 56); + border-color: rgb(25, 74, 81); } .messages li.success { - color: rgb(153, 230, 171); - background-color: rgb(26, 62, 41); - border-color: rgb(37, 90, 50); + color: rgb(127, 191, 142); + background-color: rgb(22, 51, 34); + border-color: rgb(31, 75, 41); } .messages li.warning { - color: rgb(251, 215, 112); - background-color: rgb(61, 46, 0); - border-color: rgb(123, 92, 0); + color: rgb(208, 178, 93); + background-color: rgb(51, 38, 0); + border-color: rgb(102, 76, 0); } .messages li.error { - color: rgb(225, 134, 143); - background-color: rgb(67, 12, 17); - border-color: rgb(104, 18, 27); + color: rgb(187, 111, 119); + background-color: rgb(56, 10, 14); + border-color: rgb(86, 15, 22); } .spoiler-text { - border-color: rgb(140, 130, 115); + border-color: rgb(116, 108, 95); background-image: initial; - background-color: rgb(34, 36, 38); + background-color: rgb(28, 30, 32); } .spoiler-summary { text-decoration-color: initial; } .control-button { background-image: initial; - background-color: rgb(49, 53, 55); + background-color: rgb(41, 44, 46); border-color: initial; - color: rgb(232, 230, 227) !important; + color: rgb(193, 191, 188) !important; } .control-button:hover { background-image: initial; - background-color: rgb(96, 104, 108); + background-color: rgb(80, 86, 90); +} +ul.errorlist { + list-style-image: initial; + color: rgb(212, 22, 22); } .registration-form .block-header { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } .registration-form .fullwidth-error input { - border-color: rgb(179, 0, 0); + border-color: rgb(149, 0, 0); } .registration-form .form-field-error { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } .registration-form #edit-form { border-color: unset; background-image: unset; background-color: unset; } -.registration-form ul.errorlist { - list-style-image: initial; -} #login-panel .google-icon i { - color: rgb(224, 90, 72); + color: rgb(186, 75, 60); } #login-panel .facebook-icon i { - color: rgb(132, 183, 237); + color: rgb(110, 152, 197); } #login-panel .github-icon i { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } a.upvote-link, a.downvote-link { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } a.voted { text-shadow: rgb(0, 0, 0) 0px 0px 4px, - rgb(0, 0, 204) 0px 0px 9px; + rgb(0, 0, 169) 0px 0px 9px; } .comment-area .featherlight-edit .featherlight-content { background-image: initial; - background-color: rgb(27, 29, 30); - border-color: rgb(62, 68, 70); + background-color: rgb(22, 24, 25); + border-color: rgb(51, 56, 58); } .comment-area .new-comments .comment-display { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); background-image: initial; - background-color: rgb(27, 29, 30); + background-color: rgb(22, 24, 25); } .comment-area .new-comments .comment .detail .header { - border-bottom-color: rgb(82, 88, 92); - color: rgb(157, 148, 136); + border-bottom-color: rgb(68, 73, 76); + color: rgb(130, 123, 113); } .comment-area .previous-revision, .comment-area .next-revision { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } .comment-area .new-comments .header i { - color: rgb(157, 148, 136) !important; + color: rgb(130, 123, 113) !important; } .comment-area .new-comments .comment:target > .comment-display { - border-color: rgb(34, 106, 153); + border-color: rgb(28, 88, 127); } .comment-author { - color: rgb(200, 195, 188); + color: rgb(166, 162, 156); } .comment-header { - color: rgb(231, 229, 226); + color: rgb(192, 190, 188); background-image: initial; background-color: rgba(0, 0, 0, 0.1); - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); } .comment-edits:not(:empty) { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } .comment-operation .fa { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } .comment-box { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); background-image: initial; background-color: rgba(0, 0, 0, 0.01); } @@ -2738,150 +2784,154 @@ a.voted { list-style-image: none; } .comment:target > .comment-box { - border-left-color: rgb(48, 52, 54); + border-left-color: rgb(40, 43, 45); } .actionbar .actionbar-button { - border-color: rgb(60, 65, 68); + border-color: rgb(50, 54, 56); } .actionbar .actionbar-button:hover { background-image: initial; - background-color: rgb(49, 53, 55); + background-color: rgb(41, 44, 46); } .actionbar .dislike-button { border-left-color: initial; } .actionbar .like-button.voted { - color: rgb(51, 125, 255); + color: rgb(42, 104, 212); } .actionbar .dislike-button.voted { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } .actionbar .bookmarked { - color: rgb(248, 248, 80); + color: rgb(206, 206, 66); } #submissions-table { background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .submission-row { - border-left-color: rgb(62, 68, 70); - border-right-color: rgb(62, 68, 70); + border-left-color: rgb(51, 56, 58); + border-right-color: rgb(51, 56, 58); } .submission-row:hover { background-image: initial; - background-color: rgb(31, 34, 35); + background-color: rgb(26, 28, 29); } .submission-row:first-of-type { - border-top-color: rgb(62, 68, 70); + border-top-color: rgb(51, 56, 58); } .submission-row > div { - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); } .submission-row .sub-result { - border-bottom-color: rgb(48, 52, 54); - border-right-color: rgb(62, 68, 70); + border-bottom-color: rgb(40, 43, 45); + border-right-color: rgb(51, 56, 58); } .submission-row .sub-result .score { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .submission-row .sub-testcase { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } .submission-row .sub-usage { - border-left-color: rgb(62, 68, 70); + border-left-color: rgb(51, 56, 58); } #statistics-table tr:not(:first-child) td { - border-top-color: rgb(48, 52, 54) !important; + border-top-color: rgb(40, 43, 45) !important; } #statistics-table tr:not(:last-child) td:not(:last-child) { - border-right-color: rgb(48, 52, 54); + border-right-color: rgb(40, 43, 45); } .submission-contest { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } .source-ln { - color: rgb(152, 143, 129); - border-right-color: rgb(84, 91, 94); + color: rgb(126, 119, 107); + border-right-color: rgb(70, 76, 78); } .source-ln a { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .source-ln a:hover { text-decoration-color: initial; } .source-wrap { - border-color: rgb(72, 78, 81); + border-color: rgb(60, 65, 67); } .statistics-table .count { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } #test-cases .case-info { - border-color: rgb(34, 106, 153); - color: rgb(211, 207, 201); + border-color: rgb(28, 88, 127); + color: rgb(175, 172, 167); } #test-cases .case-output { - box-shadow: rgba(27, 29, 30, 0.15) 0px 1px 2px 0px; - border-color: rgba(128, 119, 105, 0.15); + box-shadow: rgba(22, 24, 25, 0.15) 0px 1px 2px 0px; + border-color: rgba(106, 99, 87, 0.15); } #test-cases .testcases-table { border-color: initial; } .overall-result-AC { background-image: linear-gradient(45deg, - rgb(68, 132, 0), - rgb(0, 132, 102)); + rgb(56, 110, 0), + rgb(0, 110, 85)); background-color: initial; } .overall-result-WA { background-image: linear-gradient(45deg, - rgb(153, 153, 0), - rgb(204, 0, 0)); + rgb(127, 127, 0), + rgb(169, 0, 0)); background-color: initial; } .overall-result-TLE { background-image: linear-gradient(45deg, - rgb(42, 45, 47), - rgb(83, 91, 112)); + rgb(35, 37, 39), + rgb(69, 76, 93)); background-color: initial; } .overall-result-RTE, .overall-result-MLE { background-image: linear-gradient(45deg, - rgb(67, 49, 3), - rgb(198, 145, 0)); + rgb(56, 41, 2), + rgb(164, 120, 0)); background-color: initial; } .case-AC { - color: rgb(114, 255, 114); + color: rgb(95, 212, 95); } .case-_AC { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } .case-WA { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } .case-TLE, .case-SC { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .case-MLE, .case-OLE, .case-RTE, .case-IR { - color: rgb(255, 174, 26); + color: rgb(212, 144, 22); } .source-wrap a:active .line .highlighter { background-image: initial; - background-color: rgba(153, 127, 0, 0.48); + background-color: rgba(127, 105, 0, 0.48); } .submission-info .submission-date { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); +} +.list-contest { + box-shadow: rgba(2, 55, 45, 0.2) 0px 4px 8px, + rgba(2, 55, 45, 0.19) 0px 6px 20px; } #contest-calendar th { - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); } #contest-calendar th.sun { - border-left-color: rgb(62, 68, 70); + border-left-color: rgb(51, 56, 58); } #contest-calendar th.sun, #contest-calendar th.mon, @@ -2890,145 +2940,142 @@ a.voted { #contest-calendar th.thu, #contest-calendar th.fri, #contest-calendar th.sat { - border-right-color: rgb(62, 68, 70); + border-right-color: rgb(51, 56, 58); background-image: initial; - background-color: rgb(27, 29, 30); + background-color: rgb(22, 24, 25); } #contest-calendar td { - color: rgb(232, 230, 227); - border-right-color: rgb(62, 68, 70); - border-bottom-color: rgb(62, 68, 70); + color: rgb(193, 191, 188); + border-right-color: rgb(51, 56, 58); + border-bottom-color: rgb(51, 56, 58); } #contest-calendar td .num { - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); } #contest-calendar td ul { text-decoration-color: initial; } #contest-calendar td ul li i.fa { - color: rgb(255, 174, 26); + color: rgb(212, 144, 22); } #contest-calendar td ul li a { text-decoration-color: initial; - color: rgb(211, 207, 201); + color: rgb(175, 172, 167); } #contest-calendar td ul li a:hover { text-decoration-color: initial; } #contest-calendar td:hover { background-image: initial; - background-color: rgba(0, 0, 204, 0.3); - color: rgb(232, 230, 227); + background-color: rgba(0, 0, 169, 0.3); + color: rgb(193, 191, 188); } #contest-calendar .noday { background-image: initial; - background-color: rgb(32, 35, 36); + background-color: rgb(27, 29, 30); } #contest-calendar .today { background-image: initial; - background-color: rgba(108, 108, 0, 0.5); + background-color: rgba(90, 90, 0, 0.5); } #contest-calendar tr td:first-child { - border-left-color: rgb(72, 78, 81); + border-left-color: rgb(60, 65, 67); } #banner a.date { text-decoration-color: initial; } #banner a.date:link, #banner a.date:visited { - color: rgb(104, 149, 191); + color: rgb(86, 124, 159); } #banner a.date:hover { - color: rgb(102, 177, 250); + color: rgb(85, 147, 207); } #banner .time { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } .time-left { - color: rgb(157, 148, 136); + color: rgb(130, 123, 113); } .contest-list .contest-tag-hidden { background-color: rgb(0, 0, 0); - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .first-solve { background-image: initial; - background-color: rgb(0, 199, 129); + background-color: rgb(0, 165, 107); } .contest-tag { box-shadow: rgba(0, 0, 0, 0.12) 0px -0.1em 0px inset; } .contest-tag-edit { - background-color: rgb(0, 102, 0); + background-color: rgb(0, 85, 0); } .contest-tag-private { - background-color: rgb(77, 83, 86); - color: rgb(232, 230, 227); + background-color: rgb(64, 69, 71); + color: rgb(193, 191, 188); } .contest-tag-org { - background-color: rgb(53, 57, 59); + background-color: rgb(44, 47, 49); } .contest-tag-org a { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .contest-tag-rated { - background-color: rgb(183, 61, 16); - color: rgb(232, 230, 227); + background-color: rgb(152, 51, 13); + color: rgb(193, 191, 188); } .contest-list-sort { - color: rgb(113, 195, 255); + color: rgb(94, 162, 212); } .contest-participation-operation .fa { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } #add-clarification { - color: rgb(140, 255, 26); + color: rgb(116, 212, 22); } #add-clarification:hover { - color: rgb(26, 255, 255); + color: rgb(22, 212, 212); } #judge-versions .version-blank { background-image: initial; - background-color: rgb(34, 36, 38); + background-color: rgb(28, 30, 32); } #judge-versions .version-latest { background-image: initial; - background-color: rgba(88, 125, 0, 0.9); + background-color: rgba(73, 104, 0, 0.9); } #judge-versions .version-outdated { background-image: initial; - background-color: rgba(204, 0, 0, 0.8); - color: rgb(232, 230, 227); + background-color: rgba(169, 0, 0, 0.8); + color: rgb(193, 191, 188); } .chat { background-image: initial; - background-color: rgb(24, 26, 27); -} -#emoji-button { - color: rgb(204, 200, 193); -} -#emoji-button:hover { - color: rgb(152, 143, 129); + background-color: rgb(20, 22, 22); } #chat-online { - border-right-color: rgb(62, 68, 70); + border-right-color: rgb(51, 56, 58); border-bottom-color: initial; } #chat-input { - border-color: initial; - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); + border-color: rgb(132, 97, 16); +} +.selected-status-row { + background-color: rgb(41, 44, 46); +} +.status_last_message { + color: rgb(148, 142, 134); } @media (min-width: 800px) { #chat-container { - border-top-color: rgb(62, 68, 70); - border-right-color: rgb(62, 68, 70); - border-left-color: rgb(62, 68, 70); + border-top-color: rgb(51, 56, 58); + border-right-color: rgb(51, 56, 58); + border-left-color: rgb(51, 56, 58); border-bottom-color: initial; } } -.info-circle { - stroke: rgb(232, 230, 227); -} #chat-info { box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 3px; } @@ -3039,122 +3086,129 @@ a.voted { } #refresh-button:hover { background-image: initial; - background-color: rgb(40, 111, 17); + background-color: rgb(33, 92, 14); } .status-circle { - stroke: rgb(232, 230, 227); + stroke: rgb(193, 191, 188); } .status-row:hover { background-image: initial; - background-color: rgb(49, 53, 55); + background-color: rgb(41, 44, 46); } .message-text-other { background-image: initial; - background-color: rgb(34, 36, 38); - color: rgb(232, 230, 227); + background-color: rgb(28, 30, 32); + color: rgb(193, 191, 188); } .message-text-myself { background-image: initial; - background-color: rgb(0, 106, 204); - color: rgb(232, 230, 227); + background-color: rgb(0, 88, 169); + color: rgb(193, 191, 188); +} +.chat-input-icon { + color: rgb(170, 166, 161); +} +.chat-input-icon:hover { + background-image: initial; + background-color: rgb(41, 44, 46); } .chat .active-span { - color: rgb(169, 162, 151); + color: rgb(140, 134, 125); } .chat .unread-count { - color: rgb(232, 230, 227); - background-color: rgb(0, 111, 111); + color: rgb(193, 191, 188); + background-color: rgb(0, 92, 92); } .chat #setting-content { - background-color: rgb(32, 35, 36); + background-color: rgb(27, 29, 30); box-shadow: rgba(0, 0, 0, 0.2) 0px 8px 16px 0px; } .chat #setting-content li { text-decoration-color: initial; - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .chat #setting-content li:hover { - background-color: rgb(43, 47, 49); + background-color: rgb(36, 39, 41); } .leave-organization, .leave-organization:hover { - color: rgb(255, 26, 26); + color: rgb(212, 22, 22); } #control-list li { - border-bottom-color: rgb(140, 130, 115); + border-bottom-color: rgb(116, 108, 95); } #pending-count-box { background-image: initial; - background-color: rgb(204, 0, 0); - color: rgb(232, 230, 227); + background-color: rgb(169, 0, 0); + color: rgb(193, 191, 188); } .organization-row { - border-bottom-color: rgb(62, 68, 70); + border-bottom-color: rgb(51, 56, 58); border-top-color: initial; - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .organization-row:hover { - background-color: rgb(31, 33, 35); + background-color: rgb(26, 27, 29); } .organization-container { - border-color: rgb(62, 68, 70); + border-color: rgb(51, 56, 58); } .ticket-container #content > h2:first-child small { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .ticket-container #content > h2:first-child .fa-check-circle-o { - color: rgb(86, 255, 86); + color: rgb(71, 212, 71); } .ticket-container #content > h2:first-child .fa-exclamation-circle { - color: rgb(255, 107, 107); + color: rgb(212, 89, 89); } .ticket-container .info-box { - border-color: rgb(77, 83, 86); + border-color: rgb(64, 69, 71); } .ticket-container .info-title { - border-bottom-color: rgb(77, 83, 86); + border-bottom-color: rgb(64, 69, 71); background-image: initial; - background-color: rgb(34, 36, 38); + background-color: rgb(28, 30, 32); } .ticket-container .info-empty { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .ticket-container .close-ticket { - background-image: linear-gradient(rgb(60, 138, 0) 0%, - rgb(31, 109, 14) 100%); + background-image: linear-gradient(rgb(50, 115, 0) 0%, + rgb(26, 90, 12) 100%); background-color: initial; - border-color: rgb(61, 193, 24); + border-color: rgb(51, 160, 20); } .ticket-container .close-ticket:hover { background-image: initial; - background-color: rgb(29, 90, 11); + background-color: rgb(24, 75, 9); } .ticket-container .open-ticket { - background-image: linear-gradient(rgb(195, 3, 0), - rgb(141, 49, 18)); + background-image: linear-gradient(rgb(162, 2, 0), + rgb(117, 41, 15)); background-color: initial; - border-color: rgb(186, 67, 24); + border-color: rgb(154, 56, 20); } .ticket-container .open-ticket:hover { background-image: initial; - background-color: rgb(106, 38, 14); + background-color: rgb(88, 32, 12); } .ticket-container .message .detail { - border-color: rgb(77, 83, 86); + border-color: rgb(64, 69, 71); } .ticket-container .message .header { background-image: initial; - background-color: rgb(34, 36, 38); - color: rgb(157, 148, 136); - border-bottom-color: rgb(77, 83, 86); + background-color: rgb(28, 30, 32); + color: rgb(130, 123, 113); + border-bottom-color: rgb(64, 69, 71); } .wmd-button-bar { - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .wmd-input { background-image: initial; - background-color: rgb(24, 26, 27); - border-color: rgb(72, 78, 81); + background-color: rgb(20, 22, 22); + border-color: rgb(60, 65, 67); } .wmd-preview { background-image: none; @@ -3164,13 +3218,13 @@ a.voted { list-style-image: initial; } .wmd-bold-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMjQ5IC0wLjYxNCAtMC42NzIgMC4wMDAgMS4wMzUgLTAuNjQ2IDAuMjg4IC0wLjY2NCAwLjAwMCAxLjAyMCAtMC42MzYgLTAuNjA5IDAuMjUwIDAuMDAwIDAuOTk0IDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpT0hCNElpQm9aV2xuYUhROUlqaHdlQ0lnZG1sbGQwSnZlRDBpTUNBd0lEZ2dPQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajROQ2lBZ1BIQmhkR2dnWkQwaVRUQWdNSFl4WXk0MU5TQXdJREVnTGpRMUlERWdNWFkwWXpBZ0xqVTFMUzQwTlNBeExURWdNWFl4YURVdU5XTXhMak00SURBZ01pNDFMVEV1TVRJZ01pNDFMVEl1TlNBd0xURXRMalU1TFRFdU9EVXRNUzQwTkMweUxqSTFMakkzTFM0ek5DNDBOQzB1TnpndU5EUXRNUzR5TlNBd0xURXVNUzB1T0RrdE1pMHlMVEpvTFRWNmJUTWdNV2d4WXk0MU5TQXdJREVnTGpRMUlERWdNWE10TGpRMUlERXRNU0F4YUMweGRpMHllbTB3SUROb01TNDFZeTQ0TXlBd0lERXVOUzQyTnlBeExqVWdNUzQxY3kwdU5qY2dNUzQxTFRFdU5TQXhMalZvTFRFdU5YWXRNM29pSUM4K0RRbzhMM04yWno0PSIgLz48L3N2Zz4="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMjA3IC0wLjUwOSAtMC41NTcgMC4wMDAgMC44NTkgLTAuNTM2IDAuMjM5IC0wLjU1MSAwLjAwMCAwLjg0NyAtMC41MjggLTAuNTA2IDAuMjA4IDAuMDAwIDAuODI1IDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpT0hCNElpQm9aV2xuYUhROUlqaHdlQ0lnZG1sbGQwSnZlRDBpTUNBd0lEZ2dPQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajROQ2lBZ1BIQmhkR2dnWkQwaVRUQWdNSFl4WXk0MU5TQXdJREVnTGpRMUlERWdNWFkwWXpBZ0xqVTFMUzQwTlNBeExURWdNWFl4YURVdU5XTXhMak00SURBZ01pNDFMVEV1TVRJZ01pNDFMVEl1TlNBd0xURXRMalU1TFRFdU9EVXRNUzQwTkMweUxqSTFMakkzTFM0ek5DNDBOQzB1TnpndU5EUXRNUzR5TlNBd0xURXVNUzB1T0RrdE1pMHlMVEpvTFRWNmJUTWdNV2d4WXk0MU5TQXdJREVnTGpRMUlERWdNWE10TGpRMUlERXRNU0F4YUMweGRpMHllbTB3SUROb01TNDFZeTQ0TXlBd0lERXVOUzQyTnlBeExqVWdNUzQxY3kwdU5qY2dNUzQxTFRFdU5TQXhMalZvTFRFdU5YWXRNM29pSUM4K0RRbzhMM04yWno0PSIgLz48L3N2Zz4="); } .wmd-italic-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNTI1IiBoZWlnaHQ9IjUyNSI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSI1MjUiIGhlaWdodD0iNTI1IiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIyWlhKemFXOXVQU0l4TGpFaUlHbGtQU0pEWVhCaFh6RWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZlR3hwYm1zaUlIZzlJakJ3ZUNJZ2VUMGlNSEI0SWcwS0lDQWdkMmxrZEdnOUlqVXlOUzR4TkRKd2VDSWdhR1ZwWjJoMFBTSTFNalV1TVRReWNIZ2lJSFpwWlhkQ2IzZzlJakFnTUNBMU1qVXVNVFF5SURVeU5TNHhORElpSUhOMGVXeGxQU0psYm1GaWJHVXRZbUZqYTJkeWIzVnVaRHB1WlhjZ01DQXdJRFV5TlM0eE5ESWdOVEkxTGpFME1qc2lEUW9nSUNCNGJXdzZjM0JoWTJVOUluQnlaWE5sY25abElqNE5DanhuUGcwS0lDQThaejROQ2lBZ0lDQThjR0YwYUNCa1BTSk5NemMxTGpVMExEQXVNalEwWXkweE15NHpNellzTVM0Mk9Ea3RNall1T0RNc01pNDROeTAwTUM0ME9UWXNNeTQxTlRaakxURTFMamMwTVN3d0xqYzVOaTB5Tnk0NU9EY3NNUzR4T0RndE16WXVOekkzTERFdU1UZzREUW9nSUNBZ0lDQmpMVEV3TGpBMk55d3dMVEl5TGpBNE55MHdMalV4TkMwek5pNHdOekV0TVM0MU56bGpMVEV5TGpJeU9DMHdMamt4T0MweU5TNHlPREl0TWk0d05TMHpPUzR4TmpJdE15NHpOemhqTFRNdU16WTJMVEF1TXpJMExUWXVPVFU0TERJdU1ERTBMVGN1T0RBekxEVXVNamc0RFFvZ0lDQWdJQ0JqTFRFdU1EVXpMRFF1TURnNExURXVOVGN6TERjdU5ERTRMVEV1TlRjekxEa3VPVGMyWXpBc05pNDROek1zTkM0NE1EUXNNVEV1TURrMUxERTBMalF5TlN3eE1pNDJPR014TWk0Mk9ERXNNUzQxTnprc01qQXVOall4TERVdU1ESTFMREl6TGprME1Td3hNQzR6TURZTkNpQWdJQ0FnSUdNekxqSTRMRFV1TWpneUxEUXVNRE01TERFeUxqWTNOU3d5TGpJNU5Td3lNaTR4T1RGc0xUWTBMakkyTml3ME1ETXVNemswWXkweExqYzFOaXd4TUM0d05ETXROUzQwTnpnc01UY3VOVGMyTFRFeExqRTFOeXd5TWk0MU9Ea05DaUFnSUNBZ0lHTXROUzQyT0RZc05TNHdNalF0TVRRdU1qRXNPQzQxT1RrdE1qVXVOVGMxTERFd0xqWTVOMk10TkM0NE1UWXNNUzR3TmpVdE55NDVPRGNzTWk0Mk5qSXRPUzQxTURRc05DNDNOVFZqTFRFdU5UUXlMREl1TVRFNExUSXVNamsxTERVdU1qZ3lMVEl1TWprMUxEa3VOVEU0RFFvZ0lDQWdJQ0JqTUN3eUxqVTJNeXd3TGpJME5TdzFMak15TkN3d0xqY3lPQ3c0TGpJNFl6QXVOVFExTERNdU16TTFMRE11T1RZMkxEVXVOamszTERjdU16STJMRFV1TXpVMFl6RXlMamMwT0MweExqTXhMREkxTGpJMU55MHlMalF5TkN3ek55NDFNamd0TXk0ek1qa05DaUFnSUNBZ0lHTXhOQzR4T1RndE1TNHdOalVzTWpVdU5qY3pMVEV1TlRjNUxETTBMalF5TlMweExqVTNPV014TUM0d05UVXNNQ3d5TWk0NU5UY3NNQzQxTVRRc016Z3VOamszTERFdU5UYzVZekV6TGpjMk5Dd3dMamt5TkN3eU55NDJPREVzTWk0d05TdzBNUzQzT0RFc015NHpPRFFOQ2lBZ0lDQWdJR016TGpNMk5pd3dMak14T0N3MkxqYzROeTB5TGpBMk9DdzNMak16TWkwMUxqUXdNMk13TGpRNE15MHlMamsxTml3d0xqY3lPUzAxTGpjeExEQXVOekk1TFRndU1qaGpNQzAzTGpNNU5DMDBMakUyTWkweE1pNHhORGd0TVRJdU5EWXhMVEUwTGpJM01nMEtJQ0FnSUNBZ1l5MHhNUzQ0TURZdE1pNDJNemd0TVRrdU9EazJMVFV1T1RReUxUSTBMakkyTmkwNUxqa3dNV010TkM0ek56WXRNeTQ1TmkwMUxqWTROaTB4TVM0eU1qVXRNeTQ1TXpVdE1qRXVOemswVERNek1pNDBNVGdzTmpJdU1EVU5DaUFnSUNBZ0lHTXhMamN6T0MweE1DNDFOak1zTlM0eE1qa3RNVGd1TWpJMUxERXdMakUyTlMweU1pNDVPR00xTGpBeE9TMDBMamMxTlN3eE15NDJOaTA0TGpFNE1pd3lOUzQ1TURZdE1UQXVNekEyWXpZdU1USXRNUzR3TlRNc01UQXVNVGN5TFRJdU5qTTRMREV5TGpFekxUUXVOelUxRFFvZ0lDQWdJQ0JqTVM0NU56RXRNaTR4TURVc01pNDVOUzAxTGpJM05Td3lMamsxTFRrdU5URXhZekF0TWk0Mk9UTXRNQzR5TmpRdE5TNDNNUzB3TGpnd01pMDVMakExTVVNek9ESXVNalF4TERJdU1URXhMRE0zT0M0NE9UUXRNQzR4T0RRc016YzFMalUwTERBdU1qUTBlaUl2UGcwS0lDQThMMmMrRFFvOEwyYytEUW84Wno0TkNqd3ZaejROQ2p4blBnMEtQQzluUGcwS1BHYytEUW84TDJjK0RRbzhaejROQ2p3dlp6NE5DanhuUGcwS1BDOW5QZzBLUEdjK0RRbzhMMmMrRFFvOFp6NE5Dand2Wno0TkNqeG5QZzBLUEM5blBnMEtQR2MrRFFvOEwyYytEUW84Wno0TkNqd3ZaejROQ2p4blBnMEtQQzluUGcwS1BHYytEUW84TDJjK0RRbzhaejROQ2p3dlp6NE5DanhuUGcwS1BDOW5QZzBLUEdjK0RRbzhMMmMrRFFvOEwzTjJaejROQ2c9PSIgLz48L3N2Zz4="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNTI1IiBoZWlnaHQ9IjUyNSI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjIwNyAtMC41MDkgLTAuNTU3IDAuMDAwIDAuODU5IC0wLjUzNiAwLjIzOSAtMC41NTEgMC4wMDAgMC44NDcgLTAuNTI4IC0wLjUwNiAwLjIwOCAwLjAwMCAwLjgyNSAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSI1MjUiIGhlaWdodD0iNTI1IiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIyWlhKemFXOXVQU0l4TGpFaUlHbGtQU0pEWVhCaFh6RWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZlR3hwYm1zaUlIZzlJakJ3ZUNJZ2VUMGlNSEI0SWcwS0lDQWdkMmxrZEdnOUlqVXlOUzR4TkRKd2VDSWdhR1ZwWjJoMFBTSTFNalV1TVRReWNIZ2lJSFpwWlhkQ2IzZzlJakFnTUNBMU1qVXVNVFF5SURVeU5TNHhORElpSUhOMGVXeGxQU0psYm1GaWJHVXRZbUZqYTJkeWIzVnVaRHB1WlhjZ01DQXdJRFV5TlM0eE5ESWdOVEkxTGpFME1qc2lEUW9nSUNCNGJXdzZjM0JoWTJVOUluQnlaWE5sY25abElqNE5DanhuUGcwS0lDQThaejROQ2lBZ0lDQThjR0YwYUNCa1BTSk5NemMxTGpVMExEQXVNalEwWXkweE15NHpNellzTVM0Mk9Ea3RNall1T0RNc01pNDROeTAwTUM0ME9UWXNNeTQxTlRaakxURTFMamMwTVN3d0xqYzVOaTB5Tnk0NU9EY3NNUzR4T0RndE16WXVOekkzTERFdU1UZzREUW9nSUNBZ0lDQmpMVEV3TGpBMk55d3dMVEl5TGpBNE55MHdMalV4TkMwek5pNHdOekV0TVM0MU56bGpMVEV5TGpJeU9DMHdMamt4T0MweU5TNHlPREl0TWk0d05TMHpPUzR4TmpJdE15NHpOemhqTFRNdU16WTJMVEF1TXpJMExUWXVPVFU0TERJdU1ERTBMVGN1T0RBekxEVXVNamc0RFFvZ0lDQWdJQ0JqTFRFdU1EVXpMRFF1TURnNExURXVOVGN6TERjdU5ERTRMVEV1TlRjekxEa3VPVGMyWXpBc05pNDROek1zTkM0NE1EUXNNVEV1TURrMUxERTBMalF5TlN3eE1pNDJPR014TWk0Mk9ERXNNUzQxTnprc01qQXVOall4TERVdU1ESTFMREl6TGprME1Td3hNQzR6TURZTkNpQWdJQ0FnSUdNekxqSTRMRFV1TWpneUxEUXVNRE01TERFeUxqWTNOU3d5TGpJNU5Td3lNaTR4T1RGc0xUWTBMakkyTml3ME1ETXVNemswWXkweExqYzFOaXd4TUM0d05ETXROUzQwTnpnc01UY3VOVGMyTFRFeExqRTFOeXd5TWk0MU9Ea05DaUFnSUNBZ0lHTXROUzQyT0RZc05TNHdNalF0TVRRdU1qRXNPQzQxT1RrdE1qVXVOVGMxTERFd0xqWTVOMk10TkM0NE1UWXNNUzR3TmpVdE55NDVPRGNzTWk0Mk5qSXRPUzQxTURRc05DNDNOVFZqTFRFdU5UUXlMREl1TVRFNExUSXVNamsxTERVdU1qZ3lMVEl1TWprMUxEa3VOVEU0RFFvZ0lDQWdJQ0JqTUN3eUxqVTJNeXd3TGpJME5TdzFMak15TkN3d0xqY3lPQ3c0TGpJNFl6QXVOVFExTERNdU16TTFMRE11T1RZMkxEVXVOamszTERjdU16STJMRFV1TXpVMFl6RXlMamMwT0MweExqTXhMREkxTGpJMU55MHlMalF5TkN3ek55NDFNamd0TXk0ek1qa05DaUFnSUNBZ0lHTXhOQzR4T1RndE1TNHdOalVzTWpVdU5qY3pMVEV1TlRjNUxETTBMalF5TlMweExqVTNPV014TUM0d05UVXNNQ3d5TWk0NU5UY3NNQzQxTVRRc016Z3VOamszTERFdU5UYzVZekV6TGpjMk5Dd3dMamt5TkN3eU55NDJPREVzTWk0d05TdzBNUzQzT0RFc015NHpPRFFOQ2lBZ0lDQWdJR016TGpNMk5pd3dMak14T0N3MkxqYzROeTB5TGpBMk9DdzNMak16TWkwMUxqUXdNMk13TGpRNE15MHlMamsxTml3d0xqY3lPUzAxTGpjeExEQXVOekk1TFRndU1qaGpNQzAzTGpNNU5DMDBMakUyTWkweE1pNHhORGd0TVRJdU5EWXhMVEUwTGpJM01nMEtJQ0FnSUNBZ1l5MHhNUzQ0TURZdE1pNDJNemd0TVRrdU9EazJMVFV1T1RReUxUSTBMakkyTmkwNUxqa3dNV010TkM0ek56WXRNeTQ1TmkwMUxqWTROaTB4TVM0eU1qVXRNeTQ1TXpVdE1qRXVOemswVERNek1pNDBNVGdzTmpJdU1EVU5DaUFnSUNBZ0lHTXhMamN6T0MweE1DNDFOak1zTlM0eE1qa3RNVGd1TWpJMUxERXdMakUyTlMweU1pNDVPR00xTGpBeE9TMDBMamMxTlN3eE15NDJOaTA0TGpFNE1pd3lOUzQ1TURZdE1UQXVNekEyWXpZdU1USXRNUzR3TlRNc01UQXVNVGN5TFRJdU5qTTRMREV5TGpFekxUUXVOelUxRFFvZ0lDQWdJQ0JqTVM0NU56RXRNaTR4TURVc01pNDVOUzAxTGpJM05Td3lMamsxTFRrdU5URXhZekF0TWk0Mk9UTXRNQzR5TmpRdE5TNDNNUzB3TGpnd01pMDVMakExTVVNek9ESXVNalF4TERJdU1URXhMRE0zT0M0NE9UUXRNQzR4T0RRc016YzFMalUwTERBdU1qUTBlaUl2UGcwS0lDQThMMmMrRFFvOEwyYytEUW84Wno0TkNqd3ZaejROQ2p4blBnMEtQQzluUGcwS1BHYytEUW84TDJjK0RRbzhaejROQ2p3dlp6NE5DanhuUGcwS1BDOW5QZzBLUEdjK0RRbzhMMmMrRFFvOFp6NE5Dand2Wno0TkNqeG5QZzBLUEM5blBnMEtQR2MrRFFvOEwyYytEUW84Wno0TkNqd3ZaejROQ2p4blBnMEtQQzluUGcwS1BHYytEUW84TDJjK0RRbzhaejROQ2p3dlp6NE5DanhuUGcwS1BDOW5QZzBLUEdjK0RRbzhMMmMrRFFvOEwzTjJaejROQ2c9PSIgLz48L3N2Zz4="); } .wmd-latex-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QmxibUZpYkdVdFltRmphMmR5YjNWdVpEMGlibVYzSURBZ01DQTJOQ0EyTkNJZ2FHVnBaMmgwUFNJMk5IQjRJaUJwWkQwaVRHRjVaWEpmTVNJZ2RtVnljMmx2YmowaU1TNHhJaUIyYVdWM1FtOTRQU0l3SURBZ05qUWdOalFpSUhkcFpIUm9QU0kyTkhCNElpQjRiV3c2YzNCaFkyVTlJbkJ5WlhObGNuWmxJaUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGh0Ykc1ek9uaHNhVzVyUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMM2hzYVc1cklqNDhjR0YwYUNCa1BTSk5ORFV1TnpNc05qUklNelF1TnpVeVl5MHdMamN4TlN3d0xURXVNamsxTFRBdU1UY3pMVEV1TnpNNExUQXVOVEp6TFRBdU56azBMVEF1TnpVNExURXVNRFUyTFRFdU1qTTBiQzA1TGpRNE5DMHhOaTQxTmpRZ0lHTXRNQzR4TnpRc01DNDBOemd0TUM0ek5qa3NNQzQ0T0RjdE1DNDFPRFFzTVM0eU16UnNMVGd1T0RNMUxERTFMak16WXkwd0xqTXdOQ3d3TGpRek5DMHdMalkyTVN3d0xqZ3pOQzB4TGpBM01pd3hMakl3TVVNeE1TNDFOeklzTmpNdU9ERTJMREV4TGpBME1TdzJOQ3d4TUM0ek9URXNOalJJTUM0eE1qY2dJRXd4TlM0ek5pd3pPUzQyTkRGTU1DNDNNVElzTVRZdU5qYzFTREV4TGpZNVl6QXVOekUwTERBc01TNHlOQ3d3TGpBNU15d3hMalUzTml3d0xqSTNObU13TGpNek5Td3dMakU0TlN3d0xqWXpOQ3d3TGpRNU15d3dMamc1TXl3d0xqa3lObXc1TGpReUxERTFMamswT0NBZ1l6QXVNVEE0TFRBdU1qZ3NNQzR5TXpJdE1DNDFOVElzTUM0ek56UXRNQzQ0TVRKak1DNHhOQzB3TGpJMk1pd3dMakk1Tnkwd0xqVXpNU3d3TGpRM01TMHdMamd4TTJ3NExqSTFMVEUwTGpFMk1XTXdMak13TlMwd0xqUTNOeXd3TGpZeU1pMHdMamd5TXl3d0xqazFPQzB4TGpBMElDQmpNQzR6TXpZdE1DNHlNVGNzTUM0M05USXRNQzR6TWpVc01TNHlOVEV0TUM0ek1qVm9NVEF1TlRJMFRETXdMalUyTWl3ek9TNHhPRFpNTkRVdU56TXNOalI2SWk4K1BIQmhkR2dnWkQwaVRUWXhMamcwTERJekxqZzJZekF1TmpZM0xEQXNNUzR4T1RNc01DNHhPRE1zTVM0MU9Dd3dMalUxWXpBdU16ZzNMREF1TXpZMkxEQXVOVGdzTUM0NE5Td3dMalU0TERFdU5EVjJNeTQyU0RRekxqVXlNWFl0TW1Nd0xUQXVNemczTERBdU1EYzVMVEF1T0N3d0xqSXpPUzB4TGpJMElDQmpNQzR4Tmkwd0xqUXpPU3d3TGpRMExUQXVPRFFzTUM0NE5DMHhMakpzT0M0MExUZ3VORFpqTUM0M01qRXRNQzQzTWl3eExqTTBOeTB4TGpRd05pd3hMamc0TVMweUxqQTJZekF1TlRNekxUQXVOalV6TERBdU9UY3pMVEV1TWprM0xERXVNekU1TFRFdU9UTWdJR013TGpNME55MHdMall6TkN3d0xqWXdOaTB4TGpJMk55d3dMamM0TFRFdU9XTXdMakUzTXkwd0xqWXpNeXd3TGpJMkxURXVNekEwTERBdU1qWXRNaTR3TVdNd0xURXVNVFl0TUM0eU56Y3RNaTR3TlMwd0xqZ3pMVEl1TmpjZ0lHTXRNQzQxTlRNdE1DNDJNaTB4TGpNNU5pMHdMamt6TFRJdU5USTVMVEF1T1ROakxUQXVPVElzTUMweExqWTVOeXd3TGpJME15MHlMak16TERBdU56TmpMVEF1TmpNMExEQXVORGczTFRFdU1EY3NNUzR3T1MweExqTXhNU3d4TGpneElDQmpMVEF1TWpjNUxEQXVOek16TFRBdU5qUTJMREV1TWpJdE1TNHhMREV1TkRaakxUQXVORFV6TERBdU1qUXRNUzR4TERBdU1qa3pMVEV1T1RRc01DNHhObXd0TXk0eU9DMHdMalU0WXpBdU1qRXpMVEV1TkRVekxEQXVOakl6TFRJdU56SXNNUzR5TXkwekxqZ2dJR013TGpZd05pMHhMakE0TERFdU16VTVMVEV1T1Rnc01pNHlOaTB5TGpkak1DNDVMVEF1TnpJc01TNDVNeTB4TGpJMU55d3pMakE1TFRFdU5qRkROVEV1TmpZc01DNHhOemNzTlRJdU9UQTJMREFzTlRRdU1qUXNNR014TGpRek9Td3dMREl1TnpNMkxEQXVNakVzTXk0NE9URXNNQzQyTXlBZ1l6RXVNVFV5TERBdU5ESXNNaTR4TXpjc01TNHdNRE1zTWk0NU5Ea3NNUzQzTldNd0xqZ3hNeXd3TGpjME55d3hMalF6T0N3eExqWXpOeXd4TGpnM0xESXVOamRETmpNdU16Z3pMRFl1TURnekxEWXpMallzTnk0eU1pdzJNeTQyTERndU5EWWdJR013TERFdU1EWTJMVEF1TVRRNUxESXVNRFUwTFRBdU5EUTVMREl1T1RaakxUQXVNekF4TERBdU9UQTNMVEF1TnpFc01TNDNOekV0TVM0eU15d3lMalU1WXkwd0xqVXlMREF1T0RJdE1TNHhNak1zTVM0Mk1UTXRNUzQ0TVN3eUxqTTRJQ0JqTFRBdU5qZzNMREF1TnpZNExURXVOREUzTERFdU5UUTBMVEl1TVRrc01pNHpNMnd0TlM0Mk9Ua3NOUzQ0TkdNd0xqY3pNaTB3TGpJeU55d3hMalExT1Mwd0xqTTVPU3d5TGpFNExUQXVOVEpqTUM0M01pMHdMakV5TERFdU16ZzNMVEF1TVRnc01pMHdMakU0U0RZeExqZzBlaUl2UGp3dmMzWm5QZz09IiAvPjwvc3ZnPg=="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yMDcgLTAuNTA5IC0wLjU1NyAwLjAwMCAwLjg1OSAtMC41MzYgMC4yMzkgLTAuNTUxIDAuMDAwIDAuODQ3IC0wLjUyOCAtMC41MDYgMC4yMDggMC4wMDAgMC44MjUgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QmxibUZpYkdVdFltRmphMmR5YjNWdVpEMGlibVYzSURBZ01DQTJOQ0EyTkNJZ2FHVnBaMmgwUFNJMk5IQjRJaUJwWkQwaVRHRjVaWEpmTVNJZ2RtVnljMmx2YmowaU1TNHhJaUIyYVdWM1FtOTRQU0l3SURBZ05qUWdOalFpSUhkcFpIUm9QU0kyTkhCNElpQjRiV3c2YzNCaFkyVTlJbkJ5WlhObGNuWmxJaUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGh0Ykc1ek9uaHNhVzVyUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMM2hzYVc1cklqNDhjR0YwYUNCa1BTSk5ORFV1TnpNc05qUklNelF1TnpVeVl5MHdMamN4TlN3d0xURXVNamsxTFRBdU1UY3pMVEV1TnpNNExUQXVOVEp6TFRBdU56azBMVEF1TnpVNExURXVNRFUyTFRFdU1qTTBiQzA1TGpRNE5DMHhOaTQxTmpRZ0lHTXRNQzR4TnpRc01DNDBOemd0TUM0ek5qa3NNQzQ0T0RjdE1DNDFPRFFzTVM0eU16UnNMVGd1T0RNMUxERTFMak16WXkwd0xqTXdOQ3d3TGpRek5DMHdMalkyTVN3d0xqZ3pOQzB4TGpBM01pd3hMakl3TVVNeE1TNDFOeklzTmpNdU9ERTJMREV4TGpBME1TdzJOQ3d4TUM0ek9URXNOalJJTUM0eE1qY2dJRXd4TlM0ek5pd3pPUzQyTkRGTU1DNDNNVElzTVRZdU5qYzFTREV4TGpZNVl6QXVOekUwTERBc01TNHlOQ3d3TGpBNU15d3hMalUzTml3d0xqSTNObU13TGpNek5Td3dMakU0TlN3d0xqWXpOQ3d3TGpRNU15d3dMamc1TXl3d0xqa3lObXc1TGpReUxERTFMamswT0NBZ1l6QXVNVEE0TFRBdU1qZ3NNQzR5TXpJdE1DNDFOVElzTUM0ek56UXRNQzQ0TVRKak1DNHhOQzB3TGpJMk1pd3dMakk1Tnkwd0xqVXpNU3d3TGpRM01TMHdMamd4TTJ3NExqSTFMVEUwTGpFMk1XTXdMak13TlMwd0xqUTNOeXd3TGpZeU1pMHdMamd5TXl3d0xqazFPQzB4TGpBMElDQmpNQzR6TXpZdE1DNHlNVGNzTUM0M05USXRNQzR6TWpVc01TNHlOVEV0TUM0ek1qVm9NVEF1TlRJMFRETXdMalUyTWl3ek9TNHhPRFpNTkRVdU56TXNOalI2SWk4K1BIQmhkR2dnWkQwaVRUWXhMamcwTERJekxqZzJZekF1TmpZM0xEQXNNUzR4T1RNc01DNHhPRE1zTVM0MU9Dd3dMalUxWXpBdU16ZzNMREF1TXpZMkxEQXVOVGdzTUM0NE5Td3dMalU0TERFdU5EVjJNeTQyU0RRekxqVXlNWFl0TW1Nd0xUQXVNemczTERBdU1EYzVMVEF1T0N3d0xqSXpPUzB4TGpJMElDQmpNQzR4Tmkwd0xqUXpPU3d3TGpRMExUQXVPRFFzTUM0NE5DMHhMakpzT0M0MExUZ3VORFpqTUM0M01qRXRNQzQzTWl3eExqTTBOeTB4TGpRd05pd3hMamc0TVMweUxqQTJZekF1TlRNekxUQXVOalV6TERBdU9UY3pMVEV1TWprM0xERXVNekU1TFRFdU9UTWdJR013TGpNME55MHdMall6TkN3d0xqWXdOaTB4TGpJMk55d3dMamM0TFRFdU9XTXdMakUzTXkwd0xqWXpNeXd3TGpJMkxURXVNekEwTERBdU1qWXRNaTR3TVdNd0xURXVNVFl0TUM0eU56Y3RNaTR3TlMwd0xqZ3pMVEl1TmpjZ0lHTXRNQzQxTlRNdE1DNDJNaTB4TGpNNU5pMHdMamt6TFRJdU5USTVMVEF1T1ROakxUQXVPVElzTUMweExqWTVOeXd3TGpJME15MHlMak16TERBdU56TmpMVEF1TmpNMExEQXVORGczTFRFdU1EY3NNUzR3T1MweExqTXhNU3d4TGpneElDQmpMVEF1TWpjNUxEQXVOek16TFRBdU5qUTJMREV1TWpJdE1TNHhMREV1TkRaakxUQXVORFV6TERBdU1qUXRNUzR4TERBdU1qa3pMVEV1T1RRc01DNHhObXd0TXk0eU9DMHdMalU0WXpBdU1qRXpMVEV1TkRVekxEQXVOakl6TFRJdU56SXNNUzR5TXkwekxqZ2dJR013TGpZd05pMHhMakE0TERFdU16VTVMVEV1T1Rnc01pNHlOaTB5TGpkak1DNDVMVEF1TnpJc01TNDVNeTB4TGpJMU55d3pMakE1TFRFdU5qRkROVEV1TmpZc01DNHhOemNzTlRJdU9UQTJMREFzTlRRdU1qUXNNR014TGpRek9Td3dMREl1TnpNMkxEQXVNakVzTXk0NE9URXNNQzQyTXlBZ1l6RXVNVFV5TERBdU5ESXNNaTR4TXpjc01TNHdNRE1zTWk0NU5Ea3NNUzQzTldNd0xqZ3hNeXd3TGpjME55d3hMalF6T0N3eExqWXpOeXd4TGpnM0xESXVOamRETmpNdU16Z3pMRFl1TURnekxEWXpMallzTnk0eU1pdzJNeTQyTERndU5EWWdJR013TERFdU1EWTJMVEF1TVRRNUxESXVNRFUwTFRBdU5EUTVMREl1T1RaakxUQXVNekF4TERBdU9UQTNMVEF1TnpFc01TNDNOekV0TVM0eU15d3lMalU1WXkwd0xqVXlMREF1T0RJdE1TNHhNak1zTVM0Mk1UTXRNUzQ0TVN3eUxqTTRJQ0JqTFRBdU5qZzNMREF1TnpZNExURXVOREUzTERFdU5UUTBMVEl1TVRrc01pNHpNMnd0TlM0Mk9Ua3NOUzQ0TkdNd0xqY3pNaTB3TGpJeU55d3hMalExT1Mwd0xqTTVPU3d5TGpFNExUQXVOVEpqTUM0M01pMHdMakV5TERFdU16ZzNMVEF1TVRnc01pMHdMakU0U0RZeExqZzBlaUl2UGp3dmMzWm5QZz09IiAvPjwvc3ZnPg=="); } .wmd-latex-button-display { background-image: url("http://localhost:8000/static/pagedown/resources/latex-display.svg"); @@ -3179,10 +3233,10 @@ a.voted { background-image: url("http://localhost:8000/static/pagedown/resources/link.svg"); } .wmd-user-reference-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnYUdWcFoyaDBQU0l5TkNJZ2RtVnljMmx2YmowaU1TNHhJaUIzYVdSMGFEMGlNalFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZZMk05SW1oMGRIQTZMeTlqY21WaGRHbDJaV052YlcxdmJuTXViM0puTDI1ekl5SWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQanhuSUhSeVlXNXpabTl5YlQwaWRISmhibk5zWVhSbEtEQWdMVEV3TWpndU5Da2lQanh3WVhSb0lHUTlJbTB4TWlBd1l5MHdMalF3TlNBd0xUQXVPREExSURBdU1EWXdNekkyTFRFdU1UZzRJREF1TVRVMk1qVXRNQzR5TWpRZ01DNHdOVFkzT0Mwd0xqUTBJREF1TVRNeE16VXRNQzQyTlRZZ01DNHlNVGczTlMwd0xqQTRNeUF3TGpBek5EQXhMVEF1TVRZM09TQXdMakExTlRNMExUQXVNalE1T0NBd0xqQTVNemMxTFRBdU1ETTBJREF1TURFMU9ETXRNQzR3TmlBd0xqQTBOVGswTFRBdU1Ea3pOeUF3TGpBMk1qVXRNQzR5TURNeUlEQXVNVEF3TlRndE1DNDBNREl4SURBdU1qRTNNRFF0TUM0MU9UTTNJREF1TXpRek56VXRNQzR3TWpjZ01DNHdNVGMwTFRBdU1EWTNNU0F3TGpBeE16TTVMVEF1TURrek9DQXdMakF6TVRJMUxUQXVNRFUyTXlBd0xqQXpPRFkwTFRBdU1UQXhJREF1TURnME1Ua3RNQzR4TlRZeUlEQXVNVEkwT1RVdE1DNHhOVFk1SURBdU1URXlOaTB3TGpNeU1UWWdNQzR5TVRZdE1DNDBOamc0SURBdU16UXpPQzB3TGpFek5ESWdNQzR4TWpBM0xUQXVNalE1TkNBd0xqSTNNalF0TUM0ek56VWdNQzQwTURZeUxUQXVOREkxTVNBd0xqUXpOVGt0TUM0M09UTTJJREF1T0RrM01TMHhMakE1TXpnZ01TNDBNemMyTFRBdU5URTFOQ0F3TGprd016UXRNQzQ1TURBeUlERXVPVEl3TlMweExqQTJNalFnTWk0NU5qZzNMVEF1TURjNE15MHdMakF4TmpVdE1DNHhOVEF4TFRBdU1ESXlOQzB3TGpJeE9EZ2dNQzB3TGpVeU5URWdNQzR4TnpFdE1DNDJOVFExSURFdU1UWTROUzB3TGpNeE1qVWdNaTR5TVRnM0lEQXVNakF3TnlBd0xqWXhOak1nTUM0MU16UTJJREV1TVRBeE5TQXdMamczTlNBeExqTTNOU0F3TGpRMU56TWdNUzQzTnpjNElERXVOREkxTnlBekxqSTFPVGdnTWk0Mk9EYzFJRFF1TVRnM09IWXhMakF6TVd3dE1TQXhMVElnTVdNdE1TNDJNVGN6SURBdU9EQXhMVE11TWpJNE5DQXhMall3TlMwMExqZzBNemdnTWk0ME1EWXRNQzQ0T1RVeE15QXdMalUwTFRFdU1qUXhOU0F4TGpZdE1TNHhOVFl5SURJdU5UazBJREF1TURReE5qWTBJREF1TmpJMkxUQXVNVGcwTkRnZ01TNDBNamNnTUM0ME16YzFJREV1T0RRMElEQXVOVGt3T1NBd0xqTXdOQ0F4TGpJNU5Ua2dNQzR4TURZZ01TNDVNemMxSURBdU1UVTJJREV1T0RjMk5pMHdMakF3TVNBekxqYzBPRFFnTUNBMUxqWXlOU0F3SURJdU5qWTVJREF1TURBeElEVXVNek14SURBZ09DQXdJREl1TXpZM0lEQWdOQzQzTWpjZ01DNHdNRFFnTnk0d09UUWdNQ0F3TGpjMk9DMHdMakExTkNBd0xqazRNUzB3TGpnMk5TQXdMamt3TmkweExqVWdNQzR3TVRRdE1DNDVNeklnTUM0d05qa3RNUzQ1TnpZdE1DNDJOVFl0TWk0Mk9EZ3RNQzQxT1RJdE1DNDJNREl0TVM0ME16UXRNQzQ0TkMweUxqRTFOaTB4TGpJMUxURXVNRFl4TFRBdU5USTFMVEl1TVRJNExURXVNRE0zTFRNdU1UZzRMVEV1TlRZeWJDMHlMVEV0TVMweGRpMHhMakF6TVdNeExqSTJNaTB3TGpreU9DQXlMakl6TFRJdU5ERWdNaTQyT0RndE5DNHhPRGM0SURBdU16UXRNQzR5TnpNMklEQXVOamMwTFRBdU56VTRPQ0F3TGpnM05DMHhMak0zTlNBd0xqTTBNaTB4TGpBMU1ESWdNQzR5TVRNdE1pNHdORGMzTFRBdU16RXlMVEl1TWpFNE55MHdMakEyT1Mwd0xqQXlNalF0TUM0eE5DMHdMakF4TmpVdE1DNHlNVGtnTUMwd0xqRTJNaTB4TGpBME9ESXRNQzQxTkRjdE1pNHdOalV6TFRFdU1EWXlMVEl1T1RZNE55MHdMak10TUM0MU5EQTFMVEF1TmpZNUxURXVNREF4TnkweExqQTVOQzB4TGpRek56WXRNQzR4TWpZdE1DNHhNek00TFRBdU1qUXhMVEF1TWpnMU5TMHdMak0zTlMwd0xqUXdOakl0TUM0d01EWXRNQzR3TURVMUxUQXVNREkxSURBdU1EQTFOUzB3TGpBek1TQXdMVEF1TXpreUxUQXVNelE1T1Mwd0xqZ3lOeTB3TGpZeE9EazBMVEV1TWpneExUQXVPRFF6TnpVdE1DNHhNVFV0TUM0d05UWXlNaTB3TGpJeU55MHdMakV3T0RVMExUQXVNelEwTFRBdU1UVTJNalV0TUM0d09EUXRNQzR3TXpRd01TMHdMakUyTlMwd0xqQTJOREkyTFRBdU1qVXRNQzR3T1RNM05TMHdMakkxTlMwd0xqQTRPRFE0TFRBdU5URTJMVEF1TVRjek5UWXRNQzQzT0RJdE1DNHlNVGczTlMwd0xqQXlMVEF1TURBek5EQTFMVEF1TURReUlEQXVNREF6TVRRNExUQXVNRFl5SURBdE1DNHlORGt0TUM0d016a3hORFF0TUM0ME9UVXRNQzR3TmpVeU5TMHdMamMxTFRBdU1EWXlOWG9pSUdacGJHdzlJaU16TkRRNU5XVWlJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RBZ01UQXlPQzQwS1NJdlBqeHdZWFJvSUdROUltMHdJREV3TlRFdU5HTXdMakF5TmpReE9TQXdMak1nTUM0eE1qWTFNU0F3TGpZZ01DNDBNemMxSURBdU9DQXdMalU1TURrZ01DNHpJREV1TWprMU9TQXdMakVnTVM0NU16YzFJREF1TW1nMUxqWXlOU0E0SURjdU1EazBZekF1TlRjMkxUQXVNU0F3TGpnME1pMHdMalVnTUM0NU1EWXRNV2d0TWpSNklpQm1hV3hzUFNJak1tTXpaVFV3SWk4K1BDOW5Qand2YzNablBnPT0iIC8+PC9zdmc+"); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yMDcgLTAuNTA5IC0wLjU1NyAwLjAwMCAwLjg1OSAtMC41MzYgMC4yMzkgLTAuNTUxIDAuMDAwIDAuODQ3IC0wLjUyOCAtMC41MDYgMC4yMDggMC4wMDAgMC44MjUgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnYUdWcFoyaDBQU0l5TkNJZ2RtVnljMmx2YmowaU1TNHhJaUIzYVdSMGFEMGlNalFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZZMk05SW1oMGRIQTZMeTlqY21WaGRHbDJaV052YlcxdmJuTXViM0puTDI1ekl5SWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQanhuSUhSeVlXNXpabTl5YlQwaWRISmhibk5zWVhSbEtEQWdMVEV3TWpndU5Da2lQanh3WVhSb0lHUTlJbTB4TWlBd1l5MHdMalF3TlNBd0xUQXVPREExSURBdU1EWXdNekkyTFRFdU1UZzRJREF1TVRVMk1qVXRNQzR5TWpRZ01DNHdOVFkzT0Mwd0xqUTBJREF1TVRNeE16VXRNQzQyTlRZZ01DNHlNVGczTlMwd0xqQTRNeUF3TGpBek5EQXhMVEF1TVRZM09TQXdMakExTlRNMExUQXVNalE1T0NBd0xqQTVNemMxTFRBdU1ETTBJREF1TURFMU9ETXRNQzR3TmlBd0xqQTBOVGswTFRBdU1Ea3pOeUF3TGpBMk1qVXRNQzR5TURNeUlEQXVNVEF3TlRndE1DNDBNREl4SURBdU1qRTNNRFF0TUM0MU9UTTNJREF1TXpRek56VXRNQzR3TWpjZ01DNHdNVGMwTFRBdU1EWTNNU0F3TGpBeE16TTVMVEF1TURrek9DQXdMakF6TVRJMUxUQXVNRFUyTXlBd0xqQXpPRFkwTFRBdU1UQXhJREF1TURnME1Ua3RNQzR4TlRZeUlEQXVNVEkwT1RVdE1DNHhOVFk1SURBdU1URXlOaTB3TGpNeU1UWWdNQzR5TVRZdE1DNDBOamc0SURBdU16UXpPQzB3TGpFek5ESWdNQzR4TWpBM0xUQXVNalE1TkNBd0xqSTNNalF0TUM0ek56VWdNQzQwTURZeUxUQXVOREkxTVNBd0xqUXpOVGt0TUM0M09UTTJJREF1T0RrM01TMHhMakE1TXpnZ01TNDBNemMyTFRBdU5URTFOQ0F3TGprd016UXRNQzQ1TURBeUlERXVPVEl3TlMweExqQTJNalFnTWk0NU5qZzNMVEF1TURjNE15MHdMakF4TmpVdE1DNHhOVEF4TFRBdU1ESXlOQzB3TGpJeE9EZ2dNQzB3TGpVeU5URWdNQzR4TnpFdE1DNDJOVFExSURFdU1UWTROUzB3TGpNeE1qVWdNaTR5TVRnM0lEQXVNakF3TnlBd0xqWXhOak1nTUM0MU16UTJJREV1TVRBeE5TQXdMamczTlNBeExqTTNOU0F3TGpRMU56TWdNUzQzTnpjNElERXVOREkxTnlBekxqSTFPVGdnTWk0Mk9EYzFJRFF1TVRnM09IWXhMakF6TVd3dE1TQXhMVElnTVdNdE1TNDJNVGN6SURBdU9EQXhMVE11TWpJNE5DQXhMall3TlMwMExqZzBNemdnTWk0ME1EWXRNQzQ0T1RVeE15QXdMalUwTFRFdU1qUXhOU0F4TGpZdE1TNHhOVFl5SURJdU5UazBJREF1TURReE5qWTBJREF1TmpJMkxUQXVNVGcwTkRnZ01TNDBNamNnTUM0ME16YzFJREV1T0RRMElEQXVOVGt3T1NBd0xqTXdOQ0F4TGpJNU5Ua2dNQzR4TURZZ01TNDVNemMxSURBdU1UVTJJREV1T0RjMk5pMHdMakF3TVNBekxqYzBPRFFnTUNBMUxqWXlOU0F3SURJdU5qWTVJREF1TURBeElEVXVNek14SURBZ09DQXdJREl1TXpZM0lEQWdOQzQzTWpjZ01DNHdNRFFnTnk0d09UUWdNQ0F3TGpjMk9DMHdMakExTkNBd0xqazRNUzB3TGpnMk5TQXdMamt3TmkweExqVWdNQzR3TVRRdE1DNDVNeklnTUM0d05qa3RNUzQ1TnpZdE1DNDJOVFl0TWk0Mk9EZ3RNQzQxT1RJdE1DNDJNREl0TVM0ME16UXRNQzQ0TkMweUxqRTFOaTB4TGpJMUxURXVNRFl4TFRBdU5USTFMVEl1TVRJNExURXVNRE0zTFRNdU1UZzRMVEV1TlRZeWJDMHlMVEV0TVMweGRpMHhMakF6TVdNeExqSTJNaTB3TGpreU9DQXlMakl6TFRJdU5ERWdNaTQyT0RndE5DNHhPRGM0SURBdU16UXRNQzR5TnpNMklEQXVOamMwTFRBdU56VTRPQ0F3TGpnM05DMHhMak0zTlNBd0xqTTBNaTB4TGpBMU1ESWdNQzR5TVRNdE1pNHdORGMzTFRBdU16RXlMVEl1TWpFNE55MHdMakEyT1Mwd0xqQXlNalF0TUM0eE5DMHdMakF4TmpVdE1DNHlNVGtnTUMwd0xqRTJNaTB4TGpBME9ESXRNQzQxTkRjdE1pNHdOalV6TFRFdU1EWXlMVEl1T1RZNE55MHdMak10TUM0MU5EQTFMVEF1TmpZNUxURXVNREF4TnkweExqQTVOQzB4TGpRek56WXRNQzR4TWpZdE1DNHhNek00TFRBdU1qUXhMVEF1TWpnMU5TMHdMak0zTlMwd0xqUXdOakl0TUM0d01EWXRNQzR3TURVMUxUQXVNREkxSURBdU1EQTFOUzB3TGpBek1TQXdMVEF1TXpreUxUQXVNelE1T1Mwd0xqZ3lOeTB3TGpZeE9EazBMVEV1TWpneExUQXVPRFF6TnpVdE1DNHhNVFV0TUM0d05UWXlNaTB3TGpJeU55MHdMakV3T0RVMExUQXVNelEwTFRBdU1UVTJNalV0TUM0d09EUXRNQzR3TXpRd01TMHdMakUyTlMwd0xqQTJOREkyTFRBdU1qVXRNQzR3T1RNM05TMHdMakkxTlMwd0xqQTRPRFE0TFRBdU5URTJMVEF1TVRjek5UWXRNQzQzT0RJdE1DNHlNVGczTlMwd0xqQXlMVEF1TURBek5EQTFMVEF1TURReUlEQXVNREF6TVRRNExUQXVNRFl5SURBdE1DNHlORGt0TUM0d016a3hORFF0TUM0ME9UVXRNQzR3TmpVeU5TMHdMamMxTFRBdU1EWXlOWG9pSUdacGJHdzlJaU16TkRRNU5XVWlJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RBZ01UQXlPQzQwS1NJdlBqeHdZWFJvSUdROUltMHdJREV3TlRFdU5HTXdMakF5TmpReE9TQXdMak1nTUM0eE1qWTFNU0F3TGpZZ01DNDBNemMxSURBdU9DQXdMalU1TURrZ01DNHpJREV1TWprMU9TQXdMakVnTVM0NU16YzFJREF1TW1nMUxqWXlOU0E0SURjdU1EazBZekF1TlRjMkxUQXVNU0F3TGpnME1pMHdMalVnTUM0NU1EWXRNV2d0TWpSNklpQm1hV3hzUFNJak1tTXpaVFV3SWk4K1BDOW5Qand2YzNablBnPT0iIC8+PC9zdmc+"); } .wmd-quote-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNDgiIGhlaWdodD0iNDgiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1Bqd2hSRTlEVkZsUVJTQnpkbWNnSUZCVlFreEpReUFuTFM4dlZ6TkRMeTlFVkVRZ1UxWkhJREV1TVM4dlJVNG5JQ0FuYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2UjNKaGNHaHBZM012VTFaSEx6RXVNUzlFVkVRdmMzWm5NVEV1WkhSa0p6NDhjM1puSUdWdVlXSnNaUzFpWVdOclozSnZkVzVrUFNKdVpYY2dNQ0F3SURRNElEUTRJaUJvWldsbmFIUTlJalE0Y0hnaUlHbGtQU0pNWVhsbGNsOHpJaUIyWlhKemFXOXVQU0l4TGpFaUlIWnBaWGRDYjNnOUlqQWdNQ0EwT0NBME9DSWdkMmxrZEdnOUlqUTRjSGdpSUhodGJEcHpjR0ZqWlQwaWNISmxjMlZ5ZG1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpUGp4blBqeHdZWFJvSUdROUlrMHdMREk0TGpNM05XZ3hNaTQyTjJNdE1DNHdOaklzTXk0ek1TMHhMak16T0N3MkxqTXhNeTB6TGpRd015dzRMalpqTFRBdU9UUTFMREF1T0RreUxURXVPVGd5TERFdU5EQTRMVEl1T0RjNUxERXVOekEySUNBZ1l5MHhMakVzTUM0ek1qZ3RNaTR5Tml3d0xqTTVOaTB5TGpnNE15d3dMalF3T0Vnd2RqSXVNamcyYURndU56VjJMVEF1TURBell6Y3VNakExTFRBdU1ETXlMREV6TGpBME15MDFMamd4Tml3eE15NHhOemN0TVRJdU9UazNTREl5ZGkweU1rZ3dWakk0TGpNM05Yb2lJR1pwYkd3OUlpTXlOREZHTWpBaUx6NDhjR0YwYUNCa1BTSk5NallzTmk0ek56VjJNakpvTVRJdU56UmpNQ3d5TGprNU1TMHhMRFV1TnpReUxUSXVOamMwTERjdU9UVTJZeTB3TGpnek9Td3hMakE0T1MweExqZ3lPQ3d4TGpjNU1pMHlMamMyTVN3eUxqSXpNeUFnSUdNdE1DNHdNRGdzTUM0d01EUXRNQzR3TVRZc01DNHdNRGd0TUM0d01qTXNNQzR3TVRKakxUQXVNVE01TERBdU1EWTFMVEF1TWpjMExEQXVNVEl5TFRBdU5EQTVMREF1TVRjMll5MHhMalV4TkN3d0xqVTFOeTB6TGpreE5Td3dMalU0Tnkwekxqa3hOU3d3TGpVNE4wZ3lObll5TGpJNE5tZzRMamMxSUNBZ1l6Y3VNekUzTERBc01UTXVNalV0TlM0NU16TXNNVE11TWpVdE1UTXVNalYyTFRJeVNESTJlaUlnWm1sc2JEMGlJekkwTVVZeU1DSXZQand2Wno0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNDgiIGhlaWdodD0iNDgiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yMDcgLTAuNTA5IC0wLjU1NyAwLjAwMCAwLjg1OSAtMC41MzYgMC4yMzkgLTAuNTUxIDAuMDAwIDAuODQ3IC0wLjUyOCAtMC41MDYgMC4yMDggMC4wMDAgMC44MjUgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1Bqd2hSRTlEVkZsUVJTQnpkbWNnSUZCVlFreEpReUFuTFM4dlZ6TkRMeTlFVkVRZ1UxWkhJREV1TVM4dlJVNG5JQ0FuYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2UjNKaGNHaHBZM012VTFaSEx6RXVNUzlFVkVRdmMzWm5NVEV1WkhSa0p6NDhjM1puSUdWdVlXSnNaUzFpWVdOclozSnZkVzVrUFNKdVpYY2dNQ0F3SURRNElEUTRJaUJvWldsbmFIUTlJalE0Y0hnaUlHbGtQU0pNWVhsbGNsOHpJaUIyWlhKemFXOXVQU0l4TGpFaUlIWnBaWGRDYjNnOUlqQWdNQ0EwT0NBME9DSWdkMmxrZEdnOUlqUTRjSGdpSUhodGJEcHpjR0ZqWlQwaWNISmxjMlZ5ZG1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpUGp4blBqeHdZWFJvSUdROUlrMHdMREk0TGpNM05XZ3hNaTQyTjJNdE1DNHdOaklzTXk0ek1TMHhMak16T0N3MkxqTXhNeTB6TGpRd015dzRMalpqTFRBdU9UUTFMREF1T0RreUxURXVPVGd5TERFdU5EQTRMVEl1T0RjNUxERXVOekEySUNBZ1l5MHhMakVzTUM0ek1qZ3RNaTR5Tml3d0xqTTVOaTB5TGpnNE15d3dMalF3T0Vnd2RqSXVNamcyYURndU56VjJMVEF1TURBell6Y3VNakExTFRBdU1ETXlMREV6TGpBME15MDFMamd4Tml3eE15NHhOemN0TVRJdU9UazNTREl5ZGkweU1rZ3dWakk0TGpNM05Yb2lJR1pwYkd3OUlpTXlOREZHTWpBaUx6NDhjR0YwYUNCa1BTSk5NallzTmk0ek56VjJNakpvTVRJdU56UmpNQ3d5TGprNU1TMHhMRFV1TnpReUxUSXVOamMwTERjdU9UVTJZeTB3TGpnek9Td3hMakE0T1MweExqZ3lPQ3d4TGpjNU1pMHlMamMyTVN3eUxqSXpNeUFnSUdNdE1DNHdNRGdzTUM0d01EUXRNQzR3TVRZc01DNHdNRGd0TUM0d01qTXNNQzR3TVRKakxUQXVNVE01TERBdU1EWTFMVEF1TWpjMExEQXVNVEl5TFRBdU5EQTVMREF1TVRjMll5MHhMalV4TkN3d0xqVTFOeTB6TGpreE5Td3dMalU0Tnkwekxqa3hOU3d3TGpVNE4wZ3lObll5TGpJNE5tZzRMamMxSUNBZ1l6Y3VNekUzTERBc01UTXVNalV0TlM0NU16TXNNVE11TWpVdE1UTXVNalYyTFRJeVNESTJlaUlnWm1sc2JEMGlJekkwTVVZeU1DSXZQand2Wno0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); } .wmd-code-button { background-image: url("http://localhost:8000/static/pagedown/resources/code.svg"); @@ -3191,16 +3245,16 @@ a.voted { background-image: url("http://localhost:8000/static/pagedown/resources/image.svg"); } .wmd-olist-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnWm1sc2JEMGlibTl1WlNJZ2FHVnBaMmgwUFNJeU5DSWdkbWxsZDBKdmVEMGlNQ0F3SURJMElESTBJaUIzYVdSMGFEMGlNalFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrUEhCaGRHZ2daRDBpVFRZdU1EQXdNU0F5TGpjMVF6WXVNREF3TVNBeUxqTTVOVGMzSURVdU56VXlNamNnTWk0d09EazROQ0ExTGpRd05UYzJJREl1TURFMk16TkROUzR3TmpBeE1TQXhMamswTXlBMExqY3hNRE1nTWk0eE1qQTROaUEwTGpVMk5UZ2dNaTQwTkRNd00wdzBMalUyTkRJMklESXVORFEyTXpkRE5DNDFOakl5TmlBeUxqUTFNRFkzSURRdU5UVTRORElnTWk0ME5UZzRNU0EwTGpVMU1qYzFJREl1TkRjd05ESkROQzQxTkRFMElESXVORGt6TmpZZ05DNDFNakk0TWlBeUxqVXpNRFUxSURRdU5EazNNRFFnTWk0MU56Z3dPRU0wTGpRME5USTNJREl1Tmpjek5UWWdOQzR6TmpVNE5DQXlMamd3T1RRMUlEUXVNalU1TkNBeUxqazJNalE0UXpRdU1EUXhOellnTXk0eU56VXpOeUF6TGpjek5UTTRJRE11TmpJME9EZ2dNeTR6TlRJM05TQXpMamcyTXpreFF6TXVNREF4TkRRZ05DNHdPRE16TmlBeUxqZzVORFUySURRdU5UUTJNRFVnTXk0eE1UUXdNU0EwTGpnNU56TTFRek11TXpNek5EWWdOUzR5TkRnMk5pQXpMamM1TmpFMUlEVXVNelUxTlRRZ05DNHhORGMwTmlBMUxqRXpOakE1UXpRdU1qY3lNRFVnTlM0d05UZ3lOaUEwTGpNNE9UVTJJRFF1T1RjME56TWdOQzQxTURBeElEUXVPRGczTmpWV055NHlOVU0wTGpVd01ERWdOeTQyTmpReU1TQTBMamd6TlRnNUlEZ2dOUzR5TlRBeElEaEROUzQyTmpRek1TQTRJRFl1TURBd01TQTNMalkyTkRJeElEWXVNREF3TVNBM0xqSTFWakl1TnpWYUlpQm1hV3hzUFNJak1qRXlNVEl4SWk4K1BIQmhkR2dnWkQwaVRURTVMalE1T1RVZ01UaElNVEF1T1RrNU5Vd3hNQzQ0T0RJNUlERTRMakF3TmpkRE1UQXVNemcxTmlBeE9DNHdOalExSURrdU9UazVOVEVnTVRndU5EZzNNaUE1TGprNU9UVXhJREU1UXprdU9UazVOVEVnTVRrdU5UVXlNeUF4TUM0ME5EY3lJREl3SURFd0xqazVPVFVnTWpCSU1Ua3VORGs1TlV3eE9TNDJNVFl4SURFNUxqazVNek5ETWpBdU1URXpOU0F4T1M0NU16VTFJREl3TGpRNU9UVWdNVGt1TlRFeU9DQXlNQzQwT1RrMUlERTVRekl3TGpRNU9UVWdNVGd1TkRRM055QXlNQzR3TlRFNElERTRJREU1TGpRNU9UVWdNVGhhSWlCbWFXeHNQU0lqTWpFeU1USXhJaTgrUEhCaGRHZ2daRDBpVFRFNUxqUTVPVFVnTVRFdU5VZ3hNQzQ1T1RrMVRERXdMamc0TWprZ01URXVOVEEyTjBNeE1DNHpPRFUySURFeExqVTJORFVnT1M0NU9UazFNU0F4TVM0NU9EY3lJRGt1T1RrNU5URWdNVEl1TlVNNUxqazVPVFV4SURFekxqQTFNak1nTVRBdU5EUTNNaUF4TXk0MUlERXdMams1T1RVZ01UTXVOVWd4T1M0ME9UazFUREU1TGpZeE5qRWdNVE11TkRrek0wTXlNQzR4TVRNMUlERXpMalF6TlRVZ01qQXVORGs1TlNBeE15NHdNVEk0SURJd0xqUTVPVFVnTVRJdU5VTXlNQzQwT1RrMUlERXhMamswTnpjZ01qQXVNRFV4T0NBeE1TNDFJREU1TGpRNU9UVWdNVEV1TlZvaUlHWnBiR3c5SWlNeU1USXhNakVpTHo0OGNHRjBhQ0JrUFNKTk1Ua3VORGs1TlNBMVNERXdMams1T1RWTU1UQXVPRGd5T1NBMUxqQXdOamN6UXpFd0xqTTROVFlnTlM0d05qUTBPU0E1TGprNU9UVXhJRFV1TkRnM01UWWdPUzQ1T1RrMU1TQTJRemt1T1RrNU5URWdOaTQxTlRJeU9DQXhNQzQwTkRjeUlEY2dNVEF1T1RrNU5TQTNTREU1TGpRNU9UVk1NVGt1TmpFMk1TQTJMams1TXpJM1F6SXdMakV4TXpVZ05pNDVNelUxTVNBeU1DNDBPVGsxSURZdU5URXlPRFFnTWpBdU5EazVOU0EyUXpJd0xqUTVPVFVnTlM0ME5EYzNNaUF5TUM0d05URTRJRFVnTVRrdU5EazVOU0ExV2lJZ1ptbHNiRDBpSXpJeE1qRXlNU0l2UGp4d1lYUm9JR1E5SWswMUxqRTFNRGt6SURFd0xqVXhPVGxETkM0NE5EazFOeUF4TUM0ME5qWTNJRFF1TkRjME5EUWdNVEF1TlRnMk15QTBMakk0TURNeElERXdMamM0TURSRE15NDVPRGMwTVNBeE1TNHdOek16SURNdU5URXlOVE1nTVRFdU1EY3pNeUF6TGpJeE9UWTFJREV3TGpjNE1EUkRNaTQ1TWpZM055QXhNQzQwT0RjMElESXVPVEkyTnpnZ01UQXVNREV5TmlBekxqSXhPVFk1SURrdU56RTVOamxETXk0M056VTFOaUE1TGpFMk16ZzFJRFF1TmpVd05EUWdPQzQ1TURnMElEVXVOREV4TlRjZ09TNHdOREkzUXpVdU9EQTVJRGt1TVRFeU9ETWdOaTR5TVRjeklEa3VNamszTVNBMkxqVXlOekl5SURrdU5qUTRNelJETmk0NE5ESTJJREV3TGpBd05UZ2dOeUF4TUM0ME56STNJRGNnTVRGRE55QXhNUzQyTVRrMUlEWXVOekk0T1RVZ01USXVNRGdnTmk0ek9UUXdOaUF4TWk0ME1qQTFRell1TVRFMk15QXhNaTQzTURJNUlEVXVOell6TVRVZ01USXVPVE14SURVdU5EZzRNallnTVRNdU1UQTROa3cxTGpRd09EYzBJREV6TGpFMk1ERkROUzR5TVRNME9DQXhNeTR5T0RjZ05TNHdOVFF5T0NBeE15NHpPVGNnTkM0NU1qWTROaUF4TXk0MVNEWXVNalZETmk0Mk5qUXlNU0F4TXk0MUlEY2dNVE11T0RNMU9DQTNJREUwTGpJMVF6Y2dNVFF1TmpZME1pQTJMalkyTkRJZ01UVWdOaTR5TkRrNU9TQXhOVWd6TGpjMVF6TXVNek0xTnprZ01UVWdNeUF4TkM0Mk5qUXlJRE1nTVRRdU1qVkRNeUF4TWk0NU16WTBJRE11T1Rnek9EVWdNVEl1TWprM01TQTBMalUzTlRBMUlERXhMamt4TTB3MExqWXpOVEl5SURFeExqZzNNemxETkM0NU5USTFPU0F4TVM0Mk5qYzNJRFV1TVRZNE5ETWdNVEV1TlRJM05TQTFMak15TkRZNUlERXhMak0yT0RaRE5TNDBOVGcxTlNBeE1TNHlNekkxSURVdU5TQXhNUzR4TXpBMklEVXVOU0F4TVVNMUxqVWdNVEF1TnpjM05DQTFMalF6T0RZMUlERXdMalk0TVRnZ05TNDBNREkwTnlBeE1DNDJOREE0UXpVdU16WXdPRE1nTVRBdU5Ua3pOaUExTGpJNE5EYzFJREV3TGpVME16VWdOUzR4TlRBNU15QXhNQzQxTVRrNVdpSWdabWxzYkQwaUl6SXhNakV5TVNJdlBqeHdZWFJvSUdROUlrMHlMamsyT1RZM0lESXhMakk0TURORE1pNDVOamsyTnlBeU1TNHlPREF6SURNdU1EWXlOVEVnTWpFdU16WTBNU0F5TGprM05ESTJJREl4TGpJNE5EbE1NaTQ1TnprMk1pQXlNUzR5T1RBeFRESXVPVGt5T1NBeU1TNHpNREk0UXpNdU1EQXlPRGNnTWpFdU16RXlNU0F6TGpBeE5UQTVJREl4TGpNeU16TWdNeTR3TWprMU5pQXlNUzR6TXpVNVF6TXVNRFU0TkRnZ01qRXVNell4TWlBekxqQTVOalV6SURJeExqTTVNamNnTXk0eE5ETTNOU0F5TVM0ME1qZ3hRek11TWpNNE1TQXlNUzQwT1RnNUlETXVNelk1T1RZZ01qRXVOVGcySURNdU5UTTVOVGtnTWpFdU5qY3dPRU16TGpnNE1UTXhJREl4TGpnME1UY2dOQzR6TnpBME15QXlNaUExSURJeVF6VXVOak01TWpFZ01qSWdOaTR4T1RVNU5pQXlNUzQ0TVRnMklEWXVOakF4TXpJZ01qRXVORFl3TlVNM0xqQXdPVEl5SURJeExqRXdNREVnTnk0eU1URTJNeUF5TUM0Mk1ETXlJRGN1TVRrMU5UTWdNakF1TVRBeFF6Y3VNVGd5TVRrZ01Ua3VOamcwTmlBM0xqQXlPVEF6SURFNUxqTXdOVE1nTmk0M05qazROaUF4T1VNM0xqQXlPVEF6SURFNExqWTVORGNnTnk0eE9ESXhPU0F4T0M0ek1UVTBJRGN1TVRrMU5UTWdNVGN1T0RrNVF6Y3VNakV4TmpNZ01UY3VNemsyT0NBM0xqQXdPVEl5SURFMkxqZzVPVGtnTmk0Mk1ERXpNaUF4Tmk0MU16azFRell1TVRrMU9UWWdNVFl1TVRneE5DQTFMall6T1RJeElERTJJRFVnTVRaRE5DNHpOekEwTXlBeE5pQXpMamc0TVRNeElERTJMakUxT0RNZ015NDFNemsxT1NBeE5pNHpNamt5UXpNdU16WTVPVFlnTVRZdU5ERTBJRE11TWpNNE1TQXhOaTQxTURFeElETXVNVFF6TnpVZ01UWXVOVGN4T1VNekxqQTVOalV6SURFMkxqWXdOek1nTXk0d05UZzBPQ0F4Tmk0Mk16ZzRJRE11TURJNU5UWWdNVFl1TmpZME1VTXpMakF4TlRBNUlERTJMalkzTmpjZ015NHdNREk0TnlBeE5pNDJPRGM1SURJdU9Ua3lPU0F4Tmk0Mk9UY3lUREl1T1RjNU5qSWdNVFl1TnpBNU9Vd3lMamszTkRJeklERTJMamN4TlRGTU1pNDVOekU0T1NBeE5pNDNNVGMxVERJdU9UY3dPVEVnTVRZdU56RTROVXd5TGprMk9UWTNJREUyTGpjeE9UZERNaTQyTnpZM09DQXhOeTR3TVRJMklESXVOamMyTnpnZ01UY3VORGczTkNBeUxqazJPVFkzSURFM0xqYzRNRE5ETXk0eU5UZzJJREU0TGpBMk9UTWdNeTQzTWpRMk1pQXhPQzR3TnpNeUlEUXVNREU0TXpRZ01UY3VOemt5TVVNMExqQXlNVGNnTVRjdU56ZzVNaUEwTGpBek1ERTRJREUzTGpjNE1pQTBMakEwTXpjMUlERTNMamMzTVRsRE5DNHdOelEwSURFM0xqYzBPRGtnTkM0eE16QXdOQ0F4Tnk0M01URWdOQzR5TVRBME1TQXhOeTQyTnpBNFF6UXVNelk0TmprZ01UY3VOVGt4TnlBMExqWXlPVFUzSURFM0xqVWdOU0F4Tnk0MVF6VXVNell3TnprZ01UY3VOU0ExTGpVek5qQXhJREUzTGpVNU9Ua2dOUzQyTURneE1pQXhOeTQyTmpNMlF6VXVOamMzTmpnZ01UY3VOekkxTVNBMUxqWTVPREl6SURFM0xqYzVNRGNnTlM0Mk9UWXpJREUzTGpnMU1VTTFMalk1TkRJeklERTNMamt4TlRVZ05TNDJOalF3TXlBeE9DNHdNREkzSURVdU5UY3lOemdnTVRndU1EZ3hPRU0xTGpRNE5EVWdNVGd1TVRVNE5DQTFMak13T1RZeUlERTRMakkxSURVZ01UZ3VNalZETkM0MU9EVTNPU0F4T0M0eU5TQTBMakkxSURFNExqVTROVGdnTkM0eU5TQXhPVU0wTGpJMUlERTVMalF4TkRJZ05DNDFPRFUzT1NBeE9TNDNOU0ExSURFNUxqYzFRelV1TXpBNU5qSWdNVGt1TnpVZ05TNDBPRFExSURFNUxqZzBNVFlnTlM0MU56STNPQ0F4T1M0NU1UZ3lRelV1TmpZME1ETWdNVGt1T1RrM015QTFMalk1TkRJeklESXdMakE0TkRVZ05TNDJPVFl6SURJd0xqRTBPVU0xTGpZNU9ESXpJREl3TGpJd09UTWdOUzQyTnpjMk9DQXlNQzR5TnpRNUlEVXVOakE0TVRJZ01qQXVNek0yTkVNMUxqVXpOakF4SURJd0xqUXdNREVnTlM0ek5qQTNPU0F5TUM0MUlEVWdNakF1TlVNMExqWXlPVFUzSURJd0xqVWdOQzR6TmpnMk9TQXlNQzQwTURneklEUXVNakV3TkRFZ01qQXVNekk1TWtNMExqRXpNREEwSURJd0xqSTRPU0EwTGpBM05EUWdNakF1TWpVeE1TQTBMakEwTXpjMUlESXdMakl5T0RGRE5DNHdNekF4T0NBeU1DNHlNVGdnTkM0d01qRTNJREl3TGpJeE1EZ2dOQzR3TVRnek5DQXlNQzR5TURjNVF6TXVOekkwTmpJZ01Ua3VPVEkyT0NBekxqSTFPRFlnTVRrdU9UTXdOeUF5TGprMk9UWTNJREl3TGpJeE9UZERNaTQyTnpZM09DQXlNQzQxTVRJMklESXVOamMyTnpnZ01qQXVPVGczTkNBeUxqazJPVFkzSURJeExqSTRNRE5hVFRJdU9UY3hPRGtnTVRZdU56RTNOVXd5TGprM01Ea3hJREUyTGpjeE9EVkRNaTQ1TnpjMklERTJMamN4TWprZ015NHhOekU0TWlBeE5pNDFOVEUxSURJdU9UY3hPRGtnTVRZdU56RTNOVm9pSUdacGJHdzlJaU15TVRJeE1qRWlMejQ4TDNOMlp6ND0iIC8+PC9zdmc+"); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yMDcgLTAuNTA5IC0wLjU1NyAwLjAwMCAwLjg1OSAtMC41MzYgMC4yMzkgLTAuNTUxIDAuMDAwIDAuODQ3IC0wLjUyOCAtMC41MDYgMC4yMDggMC4wMDAgMC44MjUgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnWm1sc2JEMGlibTl1WlNJZ2FHVnBaMmgwUFNJeU5DSWdkbWxsZDBKdmVEMGlNQ0F3SURJMElESTBJaUIzYVdSMGFEMGlNalFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrUEhCaGRHZ2daRDBpVFRZdU1EQXdNU0F5TGpjMVF6WXVNREF3TVNBeUxqTTVOVGMzSURVdU56VXlNamNnTWk0d09EazROQ0ExTGpRd05UYzJJREl1TURFMk16TkROUzR3TmpBeE1TQXhMamswTXlBMExqY3hNRE1nTWk0eE1qQTROaUEwTGpVMk5UZ2dNaTQwTkRNd00wdzBMalUyTkRJMklESXVORFEyTXpkRE5DNDFOakl5TmlBeUxqUTFNRFkzSURRdU5UVTRORElnTWk0ME5UZzRNU0EwTGpVMU1qYzFJREl1TkRjd05ESkROQzQxTkRFMElESXVORGt6TmpZZ05DNDFNakk0TWlBeUxqVXpNRFUxSURRdU5EazNNRFFnTWk0MU56Z3dPRU0wTGpRME5USTNJREl1Tmpjek5UWWdOQzR6TmpVNE5DQXlMamd3T1RRMUlEUXVNalU1TkNBeUxqazJNalE0UXpRdU1EUXhOellnTXk0eU56VXpOeUF6TGpjek5UTTRJRE11TmpJME9EZ2dNeTR6TlRJM05TQXpMamcyTXpreFF6TXVNREF4TkRRZ05DNHdPRE16TmlBeUxqZzVORFUySURRdU5UUTJNRFVnTXk0eE1UUXdNU0EwTGpnNU56TTFRek11TXpNek5EWWdOUzR5TkRnMk5pQXpMamM1TmpFMUlEVXVNelUxTlRRZ05DNHhORGMwTmlBMUxqRXpOakE1UXpRdU1qY3lNRFVnTlM0d05UZ3lOaUEwTGpNNE9UVTJJRFF1T1RjME56TWdOQzQxTURBeElEUXVPRGczTmpWV055NHlOVU0wTGpVd01ERWdOeTQyTmpReU1TQTBMamd6TlRnNUlEZ2dOUzR5TlRBeElEaEROUzQyTmpRek1TQTRJRFl1TURBd01TQTNMalkyTkRJeElEWXVNREF3TVNBM0xqSTFWakl1TnpWYUlpQm1hV3hzUFNJak1qRXlNVEl4SWk4K1BIQmhkR2dnWkQwaVRURTVMalE1T1RVZ01UaElNVEF1T1RrNU5Vd3hNQzQ0T0RJNUlERTRMakF3TmpkRE1UQXVNemcxTmlBeE9DNHdOalExSURrdU9UazVOVEVnTVRndU5EZzNNaUE1TGprNU9UVXhJREU1UXprdU9UazVOVEVnTVRrdU5UVXlNeUF4TUM0ME5EY3lJREl3SURFd0xqazVPVFVnTWpCSU1Ua3VORGs1TlV3eE9TNDJNVFl4SURFNUxqazVNek5ETWpBdU1URXpOU0F4T1M0NU16VTFJREl3TGpRNU9UVWdNVGt1TlRFeU9DQXlNQzQwT1RrMUlERTVRekl3TGpRNU9UVWdNVGd1TkRRM055QXlNQzR3TlRFNElERTRJREU1TGpRNU9UVWdNVGhhSWlCbWFXeHNQU0lqTWpFeU1USXhJaTgrUEhCaGRHZ2daRDBpVFRFNUxqUTVPVFVnTVRFdU5VZ3hNQzQ1T1RrMVRERXdMamc0TWprZ01URXVOVEEyTjBNeE1DNHpPRFUySURFeExqVTJORFVnT1M0NU9UazFNU0F4TVM0NU9EY3lJRGt1T1RrNU5URWdNVEl1TlVNNUxqazVPVFV4SURFekxqQTFNak1nTVRBdU5EUTNNaUF4TXk0MUlERXdMams1T1RVZ01UTXVOVWd4T1M0ME9UazFUREU1TGpZeE5qRWdNVE11TkRrek0wTXlNQzR4TVRNMUlERXpMalF6TlRVZ01qQXVORGs1TlNBeE15NHdNVEk0SURJd0xqUTVPVFVnTVRJdU5VTXlNQzQwT1RrMUlERXhMamswTnpjZ01qQXVNRFV4T0NBeE1TNDFJREU1TGpRNU9UVWdNVEV1TlZvaUlHWnBiR3c5SWlNeU1USXhNakVpTHo0OGNHRjBhQ0JrUFNKTk1Ua3VORGs1TlNBMVNERXdMams1T1RWTU1UQXVPRGd5T1NBMUxqQXdOamN6UXpFd0xqTTROVFlnTlM0d05qUTBPU0E1TGprNU9UVXhJRFV1TkRnM01UWWdPUzQ1T1RrMU1TQTJRemt1T1RrNU5URWdOaTQxTlRJeU9DQXhNQzQwTkRjeUlEY2dNVEF1T1RrNU5TQTNTREU1TGpRNU9UVk1NVGt1TmpFMk1TQTJMams1TXpJM1F6SXdMakV4TXpVZ05pNDVNelUxTVNBeU1DNDBPVGsxSURZdU5URXlPRFFnTWpBdU5EazVOU0EyUXpJd0xqUTVPVFVnTlM0ME5EYzNNaUF5TUM0d05URTRJRFVnTVRrdU5EazVOU0ExV2lJZ1ptbHNiRDBpSXpJeE1qRXlNU0l2UGp4d1lYUm9JR1E5SWswMUxqRTFNRGt6SURFd0xqVXhPVGxETkM0NE5EazFOeUF4TUM0ME5qWTNJRFF1TkRjME5EUWdNVEF1TlRnMk15QTBMakk0TURNeElERXdMamM0TURSRE15NDVPRGMwTVNBeE1TNHdOek16SURNdU5URXlOVE1nTVRFdU1EY3pNeUF6TGpJeE9UWTFJREV3TGpjNE1EUkRNaTQ1TWpZM055QXhNQzQwT0RjMElESXVPVEkyTnpnZ01UQXVNREV5TmlBekxqSXhPVFk1SURrdU56RTVOamxETXk0M056VTFOaUE1TGpFMk16ZzFJRFF1TmpVd05EUWdPQzQ1TURnMElEVXVOREV4TlRjZ09TNHdOREkzUXpVdU9EQTVJRGt1TVRFeU9ETWdOaTR5TVRjeklEa3VNamszTVNBMkxqVXlOekl5SURrdU5qUTRNelJETmk0NE5ESTJJREV3TGpBd05UZ2dOeUF4TUM0ME56STNJRGNnTVRGRE55QXhNUzQyTVRrMUlEWXVOekk0T1RVZ01USXVNRGdnTmk0ek9UUXdOaUF4TWk0ME1qQTFRell1TVRFMk15QXhNaTQzTURJNUlEVXVOell6TVRVZ01USXVPVE14SURVdU5EZzRNallnTVRNdU1UQTROa3cxTGpRd09EYzBJREV6TGpFMk1ERkROUzR5TVRNME9DQXhNeTR5T0RjZ05TNHdOVFF5T0NBeE15NHpPVGNnTkM0NU1qWTROaUF4TXk0MVNEWXVNalZETmk0Mk5qUXlNU0F4TXk0MUlEY2dNVE11T0RNMU9DQTNJREUwTGpJMVF6Y2dNVFF1TmpZME1pQTJMalkyTkRJZ01UVWdOaTR5TkRrNU9TQXhOVWd6TGpjMVF6TXVNek0xTnprZ01UVWdNeUF4TkM0Mk5qUXlJRE1nTVRRdU1qVkRNeUF4TWk0NU16WTBJRE11T1Rnek9EVWdNVEl1TWprM01TQTBMalUzTlRBMUlERXhMamt4TTB3MExqWXpOVEl5SURFeExqZzNNemxETkM0NU5USTFPU0F4TVM0Mk5qYzNJRFV1TVRZNE5ETWdNVEV1TlRJM05TQTFMak15TkRZNUlERXhMak0yT0RaRE5TNDBOVGcxTlNBeE1TNHlNekkxSURVdU5TQXhNUzR4TXpBMklEVXVOU0F4TVVNMUxqVWdNVEF1TnpjM05DQTFMalF6T0RZMUlERXdMalk0TVRnZ05TNDBNREkwTnlBeE1DNDJOREE0UXpVdU16WXdPRE1nTVRBdU5Ua3pOaUExTGpJNE5EYzFJREV3TGpVME16VWdOUzR4TlRBNU15QXhNQzQxTVRrNVdpSWdabWxzYkQwaUl6SXhNakV5TVNJdlBqeHdZWFJvSUdROUlrMHlMamsyT1RZM0lESXhMakk0TURORE1pNDVOamsyTnlBeU1TNHlPREF6SURNdU1EWXlOVEVnTWpFdU16WTBNU0F5TGprM05ESTJJREl4TGpJNE5EbE1NaTQ1TnprMk1pQXlNUzR5T1RBeFRESXVPVGt5T1NBeU1TNHpNREk0UXpNdU1EQXlPRGNnTWpFdU16RXlNU0F6TGpBeE5UQTVJREl4TGpNeU16TWdNeTR3TWprMU5pQXlNUzR6TXpVNVF6TXVNRFU0TkRnZ01qRXVNell4TWlBekxqQTVOalV6SURJeExqTTVNamNnTXk0eE5ETTNOU0F5TVM0ME1qZ3hRek11TWpNNE1TQXlNUzQwT1RnNUlETXVNelk1T1RZZ01qRXVOVGcySURNdU5UTTVOVGtnTWpFdU5qY3dPRU16TGpnNE1UTXhJREl4TGpnME1UY2dOQzR6TnpBME15QXlNaUExSURJeVF6VXVOak01TWpFZ01qSWdOaTR4T1RVNU5pQXlNUzQ0TVRnMklEWXVOakF4TXpJZ01qRXVORFl3TlVNM0xqQXdPVEl5SURJeExqRXdNREVnTnk0eU1URTJNeUF5TUM0Mk1ETXlJRGN1TVRrMU5UTWdNakF1TVRBeFF6Y3VNVGd5TVRrZ01Ua3VOamcwTmlBM0xqQXlPVEF6SURFNUxqTXdOVE1nTmk0M05qazROaUF4T1VNM0xqQXlPVEF6SURFNExqWTVORGNnTnk0eE9ESXhPU0F4T0M0ek1UVTBJRGN1TVRrMU5UTWdNVGN1T0RrNVF6Y3VNakV4TmpNZ01UY3VNemsyT0NBM0xqQXdPVEl5SURFMkxqZzVPVGtnTmk0Mk1ERXpNaUF4Tmk0MU16azFRell1TVRrMU9UWWdNVFl1TVRneE5DQTFMall6T1RJeElERTJJRFVnTVRaRE5DNHpOekEwTXlBeE5pQXpMamc0TVRNeElERTJMakUxT0RNZ015NDFNemsxT1NBeE5pNHpNamt5UXpNdU16WTVPVFlnTVRZdU5ERTBJRE11TWpNNE1TQXhOaTQxTURFeElETXVNVFF6TnpVZ01UWXVOVGN4T1VNekxqQTVOalV6SURFMkxqWXdOek1nTXk0d05UZzBPQ0F4Tmk0Mk16ZzRJRE11TURJNU5UWWdNVFl1TmpZME1VTXpMakF4TlRBNUlERTJMalkzTmpjZ015NHdNREk0TnlBeE5pNDJPRGM1SURJdU9Ua3lPU0F4Tmk0Mk9UY3lUREl1T1RjNU5qSWdNVFl1TnpBNU9Vd3lMamszTkRJeklERTJMamN4TlRGTU1pNDVOekU0T1NBeE5pNDNNVGMxVERJdU9UY3dPVEVnTVRZdU56RTROVXd5TGprMk9UWTNJREUyTGpjeE9UZERNaTQyTnpZM09DQXhOeTR3TVRJMklESXVOamMyTnpnZ01UY3VORGczTkNBeUxqazJPVFkzSURFM0xqYzRNRE5ETXk0eU5UZzJJREU0TGpBMk9UTWdNeTQzTWpRMk1pQXhPQzR3TnpNeUlEUXVNREU0TXpRZ01UY3VOemt5TVVNMExqQXlNVGNnTVRjdU56ZzVNaUEwTGpBek1ERTRJREUzTGpjNE1pQTBMakEwTXpjMUlERTNMamMzTVRsRE5DNHdOelEwSURFM0xqYzBPRGtnTkM0eE16QXdOQ0F4Tnk0M01URWdOQzR5TVRBME1TQXhOeTQyTnpBNFF6UXVNelk0TmprZ01UY3VOVGt4TnlBMExqWXlPVFUzSURFM0xqVWdOU0F4Tnk0MVF6VXVNell3TnprZ01UY3VOU0ExTGpVek5qQXhJREUzTGpVNU9Ua2dOUzQyTURneE1pQXhOeTQyTmpNMlF6VXVOamMzTmpnZ01UY3VOekkxTVNBMUxqWTVPREl6SURFM0xqYzVNRGNnTlM0Mk9UWXpJREUzTGpnMU1VTTFMalk1TkRJeklERTNMamt4TlRVZ05TNDJOalF3TXlBeE9DNHdNREkzSURVdU5UY3lOemdnTVRndU1EZ3hPRU0xTGpRNE5EVWdNVGd1TVRVNE5DQTFMak13T1RZeUlERTRMakkxSURVZ01UZ3VNalZETkM0MU9EVTNPU0F4T0M0eU5TQTBMakkxSURFNExqVTROVGdnTkM0eU5TQXhPVU0wTGpJMUlERTVMalF4TkRJZ05DNDFPRFUzT1NBeE9TNDNOU0ExSURFNUxqYzFRelV1TXpBNU5qSWdNVGt1TnpVZ05TNDBPRFExSURFNUxqZzBNVFlnTlM0MU56STNPQ0F4T1M0NU1UZ3lRelV1TmpZME1ETWdNVGt1T1RrM015QTFMalk1TkRJeklESXdMakE0TkRVZ05TNDJPVFl6SURJd0xqRTBPVU0xTGpZNU9ESXpJREl3TGpJd09UTWdOUzQyTnpjMk9DQXlNQzR5TnpRNUlEVXVOakE0TVRJZ01qQXVNek0yTkVNMUxqVXpOakF4SURJd0xqUXdNREVnTlM0ek5qQTNPU0F5TUM0MUlEVWdNakF1TlVNMExqWXlPVFUzSURJd0xqVWdOQzR6TmpnMk9TQXlNQzQwTURneklEUXVNakV3TkRFZ01qQXVNekk1TWtNMExqRXpNREEwSURJd0xqSTRPU0EwTGpBM05EUWdNakF1TWpVeE1TQTBMakEwTXpjMUlESXdMakl5T0RGRE5DNHdNekF4T0NBeU1DNHlNVGdnTkM0d01qRTNJREl3TGpJeE1EZ2dOQzR3TVRnek5DQXlNQzR5TURjNVF6TXVOekkwTmpJZ01Ua3VPVEkyT0NBekxqSTFPRFlnTVRrdU9UTXdOeUF5TGprMk9UWTNJREl3TGpJeE9UZERNaTQyTnpZM09DQXlNQzQxTVRJMklESXVOamMyTnpnZ01qQXVPVGczTkNBeUxqazJPVFkzSURJeExqSTRNRE5hVFRJdU9UY3hPRGtnTVRZdU56RTNOVXd5TGprM01Ea3hJREUyTGpjeE9EVkRNaTQ1TnpjMklERTJMamN4TWprZ015NHhOekU0TWlBeE5pNDFOVEUxSURJdU9UY3hPRGtnTVRZdU56RTNOVm9pSUdacGJHdzlJaU15TVRJeE1qRWlMejQ4TDNOMlp6ND0iIC8+PC9zdmc+"); } .wmd-ulist-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnWm1sc2JEMGlibTl1WlNJZ2FHVnBaMmgwUFNJeU1DSWdkbWxsZDBKdmVEMGlNQ0F3SURJd0lESXdJaUIzYVdSMGFEMGlNakFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrUEhCaGRHZ2daRDBpVFRNdU1qVWdOME16TGprME1ETTJJRGNnTkM0MUlEWXVORFF3TXpZZ05DNDFJRFV1TnpWRE5DNDFJRFV1TURVNU5qUWdNeTQ1TkRBek5pQTBMalVnTXk0eU5TQTBMalZETWk0MU5UazJOQ0EwTGpVZ01pQTFMakExT1RZMElESWdOUzQzTlVNeUlEWXVORFF3TXpZZ01pNDFOVGsyTkNBM0lETXVNalVnTjFwTk55QTFMamMxUXpjZ05TNHpNelUzT1NBM0xqTXpOVGM1SURVZ055NDNOU0ExU0RFM0xqSTFRekUzTGpZMk5ESWdOU0F4T0NBMUxqTXpOVGM1SURFNElEVXVOelZETVRnZ05pNHhOalF5TVNBeE55NDJOalF5SURZdU5TQXhOeTR5TlNBMkxqVklOeTQzTlVNM0xqTXpOVGM1SURZdU5TQTNJRFl1TVRZME1qRWdOeUExTGpjMVdrMDNMamMxSURFd1F6Y3VNek0xTnprZ01UQWdOeUF4TUM0ek16VTRJRGNnTVRBdU56VkROeUF4TVM0eE5qUXlJRGN1TXpNMU56a2dNVEV1TlNBM0xqYzFJREV4TGpWSU1UY3VNalZETVRjdU5qWTBNaUF4TVM0MUlERTRJREV4TGpFMk5ESWdNVGdnTVRBdU56VkRNVGdnTVRBdU16TTFPQ0F4Tnk0Mk5qUXlJREV3SURFM0xqSTFJREV3U0RjdU56VmFUVGN1TnpVZ01UVkROeTR6TXpVM09TQXhOU0EzSURFMUxqTXpOVGdnTnlBeE5TNDNOVU0zSURFMkxqRTJORElnTnk0ek16VTNPU0F4Tmk0MUlEY3VOelVnTVRZdU5VZ3hOeTR5TlVNeE55NDJOalF5SURFMkxqVWdNVGdnTVRZdU1UWTBNaUF4T0NBeE5TNDNOVU14T0NBeE5TNHpNelU0SURFM0xqWTJORElnTVRVZ01UY3VNalVnTVRWSU55NDNOVnBOTkM0MUlERXdMamMxUXpRdU5TQXhNUzQwTkRBMElETXVPVFF3TXpZZ01USWdNeTR5TlNBeE1rTXlMalUxT1RZMElERXlJRElnTVRFdU5EUXdOQ0F5SURFd0xqYzFReklnTVRBdU1EVTVOaUF5TGpVMU9UWTBJRGt1TlNBekxqSTFJRGt1TlVNekxqazBNRE0ySURrdU5TQTBMalVnTVRBdU1EVTVOaUEwTGpVZ01UQXVOelZhVFRNdU1qVWdNVGRETXk0NU5EQXpOaUF4TnlBMExqVWdNVFl1TkRRd05DQTBMalVnTVRVdU56VkROQzQxSURFMUxqQTFPVFlnTXk0NU5EQXpOaUF4TkM0MUlETXVNalVnTVRRdU5VTXlMalUxT1RZMElERTBMalVnTWlBeE5TNHdOVGsySURJZ01UVXVOelZETWlBeE5pNDBOREEwSURJdU5UVTVOalFnTVRjZ015NHlOU0F4TjFvaUlHWnBiR3c5SWlNeU1USXhNakVpTHo0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yMDcgLTAuNTA5IC0wLjU1NyAwLjAwMCAwLjg1OSAtMC41MzYgMC4yMzkgLTAuNTUxIDAuMDAwIDAuODQ3IC0wLjUyOCAtMC41MDYgMC4yMDggMC4wMDAgMC44MjUgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnWm1sc2JEMGlibTl1WlNJZ2FHVnBaMmgwUFNJeU1DSWdkbWxsZDBKdmVEMGlNQ0F3SURJd0lESXdJaUIzYVdSMGFEMGlNakFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrUEhCaGRHZ2daRDBpVFRNdU1qVWdOME16TGprME1ETTJJRGNnTkM0MUlEWXVORFF3TXpZZ05DNDFJRFV1TnpWRE5DNDFJRFV1TURVNU5qUWdNeTQ1TkRBek5pQTBMalVnTXk0eU5TQTBMalZETWk0MU5UazJOQ0EwTGpVZ01pQTFMakExT1RZMElESWdOUzQzTlVNeUlEWXVORFF3TXpZZ01pNDFOVGsyTkNBM0lETXVNalVnTjFwTk55QTFMamMxUXpjZ05TNHpNelUzT1NBM0xqTXpOVGM1SURVZ055NDNOU0ExU0RFM0xqSTFRekUzTGpZMk5ESWdOU0F4T0NBMUxqTXpOVGM1SURFNElEVXVOelZETVRnZ05pNHhOalF5TVNBeE55NDJOalF5SURZdU5TQXhOeTR5TlNBMkxqVklOeTQzTlVNM0xqTXpOVGM1SURZdU5TQTNJRFl1TVRZME1qRWdOeUExTGpjMVdrMDNMamMxSURFd1F6Y3VNek0xTnprZ01UQWdOeUF4TUM0ek16VTRJRGNnTVRBdU56VkROeUF4TVM0eE5qUXlJRGN1TXpNMU56a2dNVEV1TlNBM0xqYzFJREV4TGpWSU1UY3VNalZETVRjdU5qWTBNaUF4TVM0MUlERTRJREV4TGpFMk5ESWdNVGdnTVRBdU56VkRNVGdnTVRBdU16TTFPQ0F4Tnk0Mk5qUXlJREV3SURFM0xqSTFJREV3U0RjdU56VmFUVGN1TnpVZ01UVkROeTR6TXpVM09TQXhOU0EzSURFMUxqTXpOVGdnTnlBeE5TNDNOVU0zSURFMkxqRTJORElnTnk0ek16VTNPU0F4Tmk0MUlEY3VOelVnTVRZdU5VZ3hOeTR5TlVNeE55NDJOalF5SURFMkxqVWdNVGdnTVRZdU1UWTBNaUF4T0NBeE5TNDNOVU14T0NBeE5TNHpNelU0SURFM0xqWTJORElnTVRVZ01UY3VNalVnTVRWSU55NDNOVnBOTkM0MUlERXdMamMxUXpRdU5TQXhNUzQwTkRBMElETXVPVFF3TXpZZ01USWdNeTR5TlNBeE1rTXlMalUxT1RZMElERXlJRElnTVRFdU5EUXdOQ0F5SURFd0xqYzFReklnTVRBdU1EVTVOaUF5TGpVMU9UWTBJRGt1TlNBekxqSTFJRGt1TlVNekxqazBNRE0ySURrdU5TQTBMalVnTVRBdU1EVTVOaUEwTGpVZ01UQXVOelZhVFRNdU1qVWdNVGRETXk0NU5EQXpOaUF4TnlBMExqVWdNVFl1TkRRd05DQTBMalVnTVRVdU56VkROQzQxSURFMUxqQTFPVFlnTXk0NU5EQXpOaUF4TkM0MUlETXVNalVnTVRRdU5VTXlMalUxT1RZMElERTBMalVnTWlBeE5TNHdOVGsySURJZ01UVXVOelZETWlBeE5pNDBOREEwSURJdU5UVTVOalFnTVRjZ015NHlOU0F4TjFvaUlHWnBiR3c5SWlNeU1USXhNakVpTHo0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); } .wmd-heading-button { background-image: url("http://localhost:8000/static/pagedown/resources/heading.svg"); } .wmd-hr-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9Qanh6ZG1jZ2RtbGxkMEp2ZUQwaU1DQXdJREl3SURJd0lpQjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaVBqeHdZWFJvSUdROUlrMHhJREZvTW5ZeVNERldNWHB0TUNBMGFESjJNa2d4VmpWNmJUQWdOR2d4T0hZeVNERldPWHB0TUNBMGFESjJNa2d4ZGkweWVtMHdJRFJvTW5ZeVNERjJMVEo2VFRVZ01XZ3lkakpJTlZZeGVtMHdJREUyYURKMk1rZzFkaTB5ZWswNUlERm9Nbll5U0RsV01YcHRNQ0EwYURKMk1rZzVWalY2YlRBZ09HZ3lkakpJT1hZdE1ucHRNQ0EwYURKMk1rZzVkaTB5ZW0wMExURTJhREoyTW1ndE1sWXhlbTB3SURFMmFESjJNbWd0TW5ZdE1ucHROQzB4Tm1neWRqSm9MVEpXTVhwdE1DQTBhREoyTW1ndE1sWTFlbTB3SURob01uWXlhQzB5ZGkweWVtMHdJRFJvTW5ZeWFDMHlkaTB5ZWlJdlBqd3ZjM1puUGc9PSIgLz48L3N2Zz4="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjIwNyAtMC41MDkgLTAuNTU3IDAuMDAwIDAuODU5IC0wLjUzNiAwLjIzOSAtMC41NTEgMC4wMDAgMC44NDcgLTAuNTI4IC0wLjUwNiAwLjIwOCAwLjAwMCAwLjgyNSAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9Qanh6ZG1jZ2RtbGxkMEp2ZUQwaU1DQXdJREl3SURJd0lpQjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaVBqeHdZWFJvSUdROUlrMHhJREZvTW5ZeVNERldNWHB0TUNBMGFESjJNa2d4VmpWNmJUQWdOR2d4T0hZeVNERldPWHB0TUNBMGFESjJNa2d4ZGkweWVtMHdJRFJvTW5ZeVNERjJMVEo2VFRVZ01XZ3lkakpJTlZZeGVtMHdJREUyYURKMk1rZzFkaTB5ZWswNUlERm9Nbll5U0RsV01YcHRNQ0EwYURKMk1rZzVWalY2YlRBZ09HZ3lkakpJT1hZdE1ucHRNQ0EwYURKMk1rZzVkaTB5ZW0wMExURTJhREoyTW1ndE1sWXhlbTB3SURFMmFESjJNbWd0TW5ZdE1ucHROQzB4Tm1neWRqSm9MVEpXTVhwdE1DQTBhREoyTW1ndE1sWTFlbTB3SURob01uWXlhQzB5ZGkweWVtMHdJRFJvTW5ZeWFDMHlkaTB5ZWlJdlBqd3ZjM1puUGc9PSIgLz48L3N2Zz4="); } .wmd-undo-button { background-image: url("http://localhost:8000/static/pagedown/resources/undo.svg"); @@ -3209,242 +3263,242 @@ a.voted { background-image: url("http://localhost:8000/static/pagedown/resources/redo.svg"); } .wmd-admonition-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9QandoUkU5RFZGbFFSU0J6ZG1jZ0lGQlZRa3hKUXlBbkxTOHZWek5ETHk5RVZFUWdVMVpISURFdU1TOHZSVTRuSUNBbmFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdlIzSmhjR2hwWTNNdlUxWkhMekV1TVM5RVZFUXZjM1puTVRFdVpIUmtKejQ4YzNabklHVnVZV0pzWlMxaVlXTnJaM0p2ZFc1a1BTSnVaWGNnTUNBd0lEVXhNaUExTVRJaUlHbGtQU0pNWVhsbGNsOHhJaUIyWlhKemFXOXVQU0l4TGpFaUlIWnBaWGRDYjNnOUlqQWdNQ0ExTVRJZ05URXlJaUI0Yld3NmMzQmhZMlU5SW5CeVpYTmxjblpsSWlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhodGJHNXpPbmhzYVc1clBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1TDNoc2FXNXJJajQ4Wno0OFp6NDhjR0YwYUNCa1BTSk5NelkxTERFMk55NDRTREl5T0M0eVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxERTJNeTR4TERNM01DNDRMREUyTnk0NExETTJOU3d4TmpjdU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERJeU9DNDRTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxESXlOQzR4TERNM01DNDRMREl5T0M0NExETTJOU3d5TWpndU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERJNE9TNDRTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxESTROUzR4TERNM01DNDRMREk0T1M0NExETTJOU3d5T0RrdU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERNMU1DNDVTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxETTBOaTR5TERNM01DNDRMRE0xTUM0NUxETTJOU3d6TlRBdU9Yb2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERReE1TNDVTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxEUXdOeTR5TERNM01DNDRMRFF4TVM0NUxETTJOU3cwTVRFdU9Yb2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhMMmMrUEhCaGRHZ2daRDBpVFRNNU1pdzBNeTQxU0RFM09TNHliRE00TGpZc05URXVOR2d4TkRRdU4yTXlOeTR5TERBc05Ea3VOU3d5TWk0ekxEUTVMalVzTkRrdU5YWXlOamt1TTJNd0xESTNMakl0TWpJdU15dzBPUzQxTFRRNUxqVXNORGt1TlVneE5UUXVOQ0FnSUdNdE1qY3VNaXd3TFRRNUxqVXRNakl1TXkwME9TNDFMVFE1TGpWV01UVXdMamxNTmpVdU15dzVPQzQwWXkwd0xqTXNNaTQzTFRBdU9DdzFMak10TUM0NExEaDJNelF5TGpOak1Dd3pOQzQyTERJNExqTXNOak1zTmpNc05qTklNemt5WXpNMExqWXNNQ3cyTXkweU9DNHpMRFl6TFRZelZqRXdOaTQwSUNBZ1F6UTFOQzQ1TERjeExqZ3NOREkyTGpZc05ETXVOU3d6T1RJc05ETXVOWG9pSUdacGJHdzlJaU16TUROQk0wWWlMejQ4Wno0OGNHRjBhQ0JrUFNKTk1USTFMalVzTVRRNUxqaHNOamd1TXl3eU5XTXpMallzTVM0ekxEWXVOUzB3TGpjc05pNHpMVFF1Tm13dE15NHlMVGN5TGpkakxUQXVNUzB4TGpVdE1DNDFMVEl1T1MweExqTXROQzR6YkRBdU1TMHdMakVnSUNBZ1l5MHdMakV0TUM0eUxUQXVNeTB3TGpRdE1DNDBMVEF1Tm13dE5EZ3VPQzAyTmk0MmJDMHhOaXd4TVM0M2JEUTBMakVzTmpBdU1tTXhMamdzTWk0MExERXVNaXcxTGpndE1TNHlMRGN1Tm13dE15NDRMREl1T0dNdE1pNDBMREV1T0MwMUxqZ3NNUzR5TFRjdU5pMHhMakpNTVRFNExEUTJMamtnSUNBZ2JDMHhOUzQ0TERFeExqWnNORFF1TkN3Mk1DNDNZekV1Tml3eUxqSXNNUzR4TERVdU1pMHhMakVzTmk0NGJDMDBMamNzTXk0MVl5MHlMaklzTVM0MkxUVXVNaXd4TGpFdE5pNDRMVEV1TVV3NE9TNDJMRFkzTGpaTU56SXVOaXc0TUd3ME55NHlMRFkwTGpRZ0lDQWdRekV5TVN3eE5EWXVPQ3d4TWpNc01UUTRMamtzTVRJMUxqVXNNVFE1TGpoNklFMHhNemdzTVRReExqbHNORGN1Tmkwek5DNDVZekl1T1MweUxqRXNOeTQyTERFdU15dzNMamdzTlM0NGJERXVNU3d6T1M0M1l5MHdMamNzTUM0eUxURXVOQ3d3TGpNdE1pd3dMamRzTFRFMExqSXNNVEF1TkNBZ0lDQmpMVEF1TVN3d0xqRXRNQzR6TERBdE1DNHpMREF1TVd3dE16WXVPQzB4TWk0MlF6RXpOeXd4TkRrdU5pd3hNelV1TVN3eE5EUXNNVE00TERFME1TNDVlaUlnWm1sc2JEMGlJek13TTBFelJpSXZQanh3WVhSb0lHUTlJazAyT0M0NUxEYzFMak5zTFRVdU55MDNMamRqTFRFd0xqVXRNVFF1TXkwM0xqTXRNelF1TlN3M0xUUTFiREl5TFRFMkxqRmpNVFF1TXkweE1DNDFMRE0wTGpVdE55NHpMRFExTERkc05TNDNMRGN1TjB3Mk9DNDVMRGMxTGpONklpQm1hV3hzUFNJak16QXpRVE5HSWk4K1BDOW5Qand2Wno0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjIwNyAtMC41MDkgLTAuNTU3IDAuMDAwIDAuODU5IC0wLjUzNiAwLjIzOSAtMC41NTEgMC4wMDAgMC44NDcgLTAuNTI4IC0wLjUwNiAwLjIwOCAwLjAwMCAwLjgyNSAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9QandoUkU5RFZGbFFSU0J6ZG1jZ0lGQlZRa3hKUXlBbkxTOHZWek5ETHk5RVZFUWdVMVpISURFdU1TOHZSVTRuSUNBbmFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdlIzSmhjR2hwWTNNdlUxWkhMekV1TVM5RVZFUXZjM1puTVRFdVpIUmtKejQ4YzNabklHVnVZV0pzWlMxaVlXTnJaM0p2ZFc1a1BTSnVaWGNnTUNBd0lEVXhNaUExTVRJaUlHbGtQU0pNWVhsbGNsOHhJaUIyWlhKemFXOXVQU0l4TGpFaUlIWnBaWGRDYjNnOUlqQWdNQ0ExTVRJZ05URXlJaUI0Yld3NmMzQmhZMlU5SW5CeVpYTmxjblpsSWlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhodGJHNXpPbmhzYVc1clBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1TDNoc2FXNXJJajQ4Wno0OFp6NDhjR0YwYUNCa1BTSk5NelkxTERFMk55NDRTREl5T0M0eVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxERTJNeTR4TERNM01DNDRMREUyTnk0NExETTJOU3d4TmpjdU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERJeU9DNDRTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxESXlOQzR4TERNM01DNDRMREl5T0M0NExETTJOU3d5TWpndU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERJNE9TNDRTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxESTROUzR4TERNM01DNDRMREk0T1M0NExETTJOU3d5T0RrdU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERNMU1DNDVTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxETTBOaTR5TERNM01DNDRMRE0xTUM0NUxETTJOU3d6TlRBdU9Yb2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERReE1TNDVTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxEUXdOeTR5TERNM01DNDRMRFF4TVM0NUxETTJOU3cwTVRFdU9Yb2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhMMmMrUEhCaGRHZ2daRDBpVFRNNU1pdzBNeTQxU0RFM09TNHliRE00TGpZc05URXVOR2d4TkRRdU4yTXlOeTR5TERBc05Ea3VOU3d5TWk0ekxEUTVMalVzTkRrdU5YWXlOamt1TTJNd0xESTNMakl0TWpJdU15dzBPUzQxTFRRNUxqVXNORGt1TlVneE5UUXVOQ0FnSUdNdE1qY3VNaXd3TFRRNUxqVXRNakl1TXkwME9TNDFMVFE1TGpWV01UVXdMamxNTmpVdU15dzVPQzQwWXkwd0xqTXNNaTQzTFRBdU9DdzFMak10TUM0NExEaDJNelF5TGpOak1Dd3pOQzQyTERJNExqTXNOak1zTmpNc05qTklNemt5WXpNMExqWXNNQ3cyTXkweU9DNHpMRFl6TFRZelZqRXdOaTQwSUNBZ1F6UTFOQzQ1TERjeExqZ3NOREkyTGpZc05ETXVOU3d6T1RJc05ETXVOWG9pSUdacGJHdzlJaU16TUROQk0wWWlMejQ4Wno0OGNHRjBhQ0JrUFNKTk1USTFMalVzTVRRNUxqaHNOamd1TXl3eU5XTXpMallzTVM0ekxEWXVOUzB3TGpjc05pNHpMVFF1Tm13dE15NHlMVGN5TGpkakxUQXVNUzB4TGpVdE1DNDFMVEl1T1MweExqTXROQzR6YkRBdU1TMHdMakVnSUNBZ1l5MHdMakV0TUM0eUxUQXVNeTB3TGpRdE1DNDBMVEF1Tm13dE5EZ3VPQzAyTmk0MmJDMHhOaXd4TVM0M2JEUTBMakVzTmpBdU1tTXhMamdzTWk0MExERXVNaXcxTGpndE1TNHlMRGN1Tm13dE15NDRMREl1T0dNdE1pNDBMREV1T0MwMUxqZ3NNUzR5TFRjdU5pMHhMakpNTVRFNExEUTJMamtnSUNBZ2JDMHhOUzQ0TERFeExqWnNORFF1TkN3Mk1DNDNZekV1Tml3eUxqSXNNUzR4TERVdU1pMHhMakVzTmk0NGJDMDBMamNzTXk0MVl5MHlMaklzTVM0MkxUVXVNaXd4TGpFdE5pNDRMVEV1TVV3NE9TNDJMRFkzTGpaTU56SXVOaXc0TUd3ME55NHlMRFkwTGpRZ0lDQWdRekV5TVN3eE5EWXVPQ3d4TWpNc01UUTRMamtzTVRJMUxqVXNNVFE1TGpoNklFMHhNemdzTVRReExqbHNORGN1Tmkwek5DNDVZekl1T1MweUxqRXNOeTQyTERFdU15dzNMamdzTlM0NGJERXVNU3d6T1M0M1l5MHdMamNzTUM0eUxURXVOQ3d3TGpNdE1pd3dMamRzTFRFMExqSXNNVEF1TkNBZ0lDQmpMVEF1TVN3d0xqRXRNQzR6TERBdE1DNHpMREF1TVd3dE16WXVPQzB4TWk0MlF6RXpOeXd4TkRrdU5pd3hNelV1TVN3eE5EUXNNVE00TERFME1TNDVlaUlnWm1sc2JEMGlJek13TTBFelJpSXZQanh3WVhSb0lHUTlJazAyT0M0NUxEYzFMak5zTFRVdU55MDNMamRqTFRFd0xqVXRNVFF1TXkwM0xqTXRNelF1TlN3M0xUUTFiREl5TFRFMkxqRmpNVFF1TXkweE1DNDFMRE0wTGpVdE55NHpMRFExTERkc05TNDNMRGN1TjB3Mk9DNDVMRGMxTGpONklpQm1hV3hzUFNJak16QXpRVE5HSWk4K1BDOW5Qand2Wno0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); } .wmd-spoiler-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9Qanh6ZG1jZ1pHRjBZUzF1WVcxbFBTSk1ZWGxsY2lBeElpQnBaRDBpVEdGNVpYSmZNU0lnZG1sbGQwSnZlRDBpTUNBd0lETXlJRE15SWlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpUGp4MGFYUnNaUzgrUEhCaGRHZ2daRDBpVFRJM0xqTTNMREpJTVRRdU1EVmhPQzR3Tnl3NExqQTNMREFzTUN3eExESXVOemNzTmk0eExEY3VPVEVzTnk0NU1Td3dMREFzTVMwdU5qTXNNeTR4TW1nM0xqUTRZUzQ1TkM0NU5Dd3dMREVzTVN3d0xERXVPRGRJTVRVdU1XTXRMakUyTGpJdExqTTBMalF0TGpVeUxqVTVZVGd1TVRJc09DNHhNaXd3TERBc01TMDFMamcxTERJdU5URXNNaTR4Tnl3eUxqRTNMREFzTUN3eExTNHpOaXd3VmpJNFlUSXNNaXd3TERBc01Dd3lMREpvTVRkaE1pd3lMREFzTUN3d0xESXRNbFkwUVRJc01pd3dMREFzTUN3eU55NHpOeXd5V20wdE15NDNMREU0TGpjNGFDMDVMalpoTGprMExqazBMREFzTVN3eExEQXRNUzQ0TjJnNUxqWmhMamswTGprMExEQXNNU3d4TERBc01TNDROMXB0TUMwekxqZzFhQzA1TGpaaExqa3pMamt6TERBc01Td3hMREF0TVM0NE5tZzVMalpoTGprekxqa3pMREFzTVN3eExEQXNNUzQ0TmxvaUx6NDhjR0YwYUNCa1BTSk5PQzQzTXl3eE5DNHhPV0UyTGpBM0xEWXVNRGNzTUN3d0xEQXNOQzQwTVMweExqbEJOUzQyTVN3MUxqWXhMREFzTUN3d0xERTBMREV4TGpJellUWXNOaXd3TERBc01Dd3VPRGN0TXk0eE15dzJMakVzTmk0eExEQXNNQ3d3TFRVdE5tZ3dZVFlzTml3d0xEQXNNQzB4TFM0d09TdzJMakE1TERZdU1Ea3NNQ3d3TERBdExqTTJMREV5TGpFM1FUSXVNVGNzTWk0eE55d3dMREFzTUN3NExqY3pMREUwTGpFNVdtMHRNeTAyTGpBNVlURXNNU3d3TERBc01Td3hMVEZvTkdFeExERXNNQ3d3TERFc01Dd3lhQzAwUVRFc01Td3dMREFzTVN3MUxqY3pMRGd1TVZvaUx6NDhMM04yWno0PSIgLz48L3N2Zz4="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjIwNyAtMC41MDkgLTAuNTU3IDAuMDAwIDAuODU5IC0wLjUzNiAwLjIzOSAtMC41NTEgMC4wMDAgMC44NDcgLTAuNTI4IC0wLjUwNiAwLjIwOCAwLjAwMCAwLjgyNSAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9Qanh6ZG1jZ1pHRjBZUzF1WVcxbFBTSk1ZWGxsY2lBeElpQnBaRDBpVEdGNVpYSmZNU0lnZG1sbGQwSnZlRDBpTUNBd0lETXlJRE15SWlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpUGp4MGFYUnNaUzgrUEhCaGRHZ2daRDBpVFRJM0xqTTNMREpJTVRRdU1EVmhPQzR3Tnl3NExqQTNMREFzTUN3eExESXVOemNzTmk0eExEY3VPVEVzTnk0NU1Td3dMREFzTVMwdU5qTXNNeTR4TW1nM0xqUTRZUzQ1TkM0NU5Dd3dMREVzTVN3d0xERXVPRGRJTVRVdU1XTXRMakUyTGpJdExqTTBMalF0TGpVeUxqVTVZVGd1TVRJc09DNHhNaXd3TERBc01TMDFMamcxTERJdU5URXNNaTR4Tnl3eUxqRTNMREFzTUN3eExTNHpOaXd3VmpJNFlUSXNNaXd3TERBc01Dd3lMREpvTVRkaE1pd3lMREFzTUN3d0xESXRNbFkwUVRJc01pd3dMREFzTUN3eU55NHpOeXd5V20wdE15NDNMREU0TGpjNGFDMDVMalpoTGprMExqazBMREFzTVN3eExEQXRNUzQ0TjJnNUxqWmhMamswTGprMExEQXNNU3d4TERBc01TNDROMXB0TUMwekxqZzFhQzA1TGpaaExqa3pMamt6TERBc01Td3hMREF0TVM0NE5tZzVMalpoTGprekxqa3pMREFzTVN3eExEQXNNUzQ0TmxvaUx6NDhjR0YwYUNCa1BTSk5PQzQzTXl3eE5DNHhPV0UyTGpBM0xEWXVNRGNzTUN3d0xEQXNOQzQwTVMweExqbEJOUzQyTVN3MUxqWXhMREFzTUN3d0xERTBMREV4TGpJellUWXNOaXd3TERBc01Dd3VPRGN0TXk0eE15dzJMakVzTmk0eExEQXNNQ3d3TFRVdE5tZ3dZVFlzTml3d0xEQXNNQzB4TFM0d09TdzJMakE1TERZdU1Ea3NNQ3d3TERBdExqTTJMREV5TGpFM1FUSXVNVGNzTWk0eE55d3dMREFzTUN3NExqY3pMREUwTGpFNVdtMHRNeTAyTGpBNVlURXNNU3d3TERBc01Td3hMVEZvTkdFeExERXNNQ3d3TERFc01Dd3lhQzAwUVRFc01Td3dMREFzTVN3MUxqY3pMRGd1TVZvaUx6NDhMM04yWno0PSIgLz48L3N2Zz4="); } .wmd-button-active:hover { - background-color: rgb(49, 53, 55); + background-color: rgb(41, 44, 46); } .wmd-prompt-background { background-color: rgb(0, 0, 0); } .wmd-prompt-dialog { - border-color: rgb(77, 83, 86); - background-color: rgb(30, 32, 33); + border-color: rgb(64, 69, 71); + background-color: rgb(25, 27, 27); } .wmd-prompt-dialog > form > input[type="text"] { - border-color: rgb(77, 83, 86); - color: rgb(232, 230, 227); + border-color: rgb(64, 69, 71); + color: rgb(193, 191, 188); } .wmd-prompt-dialog > form > input[type="button"] { - border-color: rgb(82, 88, 92); + border-color: rgb(68, 73, 76); } .wmd-preview { background-image: initial; - background-color: rgb(24, 26, 27); - border-color: rgb(72, 78, 81); + background-color: rgb(20, 22, 22); + border-color: rgb(60, 65, 67); } .pagedown-image-upload { background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); box-shadow: rgba(0, 0, 0, 0.5) 2px 2px 10px 0px; } .pagedown-image-upload .submit-loading { - border-color: rgb(46, 91, 113) rgb(51, 56, 58) rgb(51, 56, 58); + border-color: rgb(38, 76, 94) rgb(42, 46, 48) rgb(42, 46, 48); } div.dmmd-preview-update { background-image: initial; - background-color: rgb(53, 57, 59); - color: rgb(200, 195, 188); + background-color: rgb(44, 47, 49); + color: rgb(166, 162, 156); } div.dmmd-preview-stale { background-image: repeating-linear-gradient(-45deg, - rgb(24, 26, 27), - rgb(24, 26, 27) 10px, - rgb(28, 30, 31) 10px, - rgb(28, 30, 31) 20px); + rgb(20, 22, 22), + rgb(20, 22, 22) 10px, + rgb(23, 25, 26) 10px, + rgb(23, 25, 26) 20px); background-color: initial; } code .hll { - background-color: rgb(61, 61, 0); + background-color: rgb(51, 51, 0); } code .c { - color: rgb(162, 154, 142); + color: rgb(134, 128, 118); } code .err { - color: rgb(233, 94, 94); - background-color: rgb(58, 36, 36); + color: rgb(193, 78, 78); + background-color: rgb(48, 30, 30); } code .k { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .o { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .cm { - color: rgb(162, 154, 142); + color: rgb(134, 128, 118); } code .cp { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } code .c1 { - color: rgb(162, 154, 142); + color: rgb(134, 128, 118); } code .cs { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } code .gd { - color: rgb(232, 230, 227); - background-color: rgb(71, 0, 0); + color: rgb(193, 191, 188); + background-color: rgb(59, 0, 0); } code .ge { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .gr { - color: rgb(255, 85, 85); + color: rgb(212, 71, 71); } code .gh { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } code .gi { - color: rgb(232, 230, 227); - background-color: rgb(18, 71, 0); + color: rgb(193, 191, 188); + background-color: rgb(15, 59, 0); } code .go { - color: rgb(157, 148, 136); + color: rgb(130, 123, 113); } code .gp { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } code .gu { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } code .gt { - color: rgb(255, 85, 85); + color: rgb(212, 71, 71); } code .kc { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .kd { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .kn { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .kp { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .kr { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .kt { - color: rgb(139, 166, 197); + color: rgb(115, 138, 164); } code .m { - color: rgb(97, 255, 255); + color: rgb(81, 212, 212); } code .s { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .na { - color: rgb(114, 255, 255); + color: rgb(95, 212, 212); } code .nb { - color: rgb(79, 211, 255); + color: rgb(66, 175, 212); } code .nc { - color: rgb(139, 166, 197); + color: rgb(115, 138, 164); } code .no { - color: rgb(114, 255, 255); + color: rgb(95, 212, 212); } code .nd { - color: rgb(184, 178, 168); + color: rgb(153, 148, 139); } code .ni { - color: rgb(255, 114, 255); + color: rgb(212, 95, 212); } code .ne { - color: rgb(255, 97, 97); + color: rgb(212, 81, 81); } code .nf { - color: rgb(255, 97, 97); + color: rgb(212, 81, 81); } code .nl { - color: rgb(255, 97, 97); + color: rgb(212, 81, 81); } code .nn { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } code .nt { - color: rgb(127, 174, 255); + color: rgb(105, 144, 212); } code .nv { - color: rgb(114, 255, 255); + color: rgb(95, 212, 212); } code .ow { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } code .w { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } code .mf { - color: rgb(97, 255, 255); + color: rgb(81, 212, 212); } code .mh { - color: rgb(97, 255, 255); + color: rgb(81, 212, 212); } code .mi { - color: rgb(97, 255, 255); + color: rgb(81, 212, 212); } code .mo { - color: rgb(97, 255, 255); + color: rgb(81, 212, 212); } code .sb { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .sc { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .sd { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .s2 { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .se { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .sh { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .si { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .sx { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .sr { - color: rgb(97, 255, 136); + color: rgb(81, 212, 113); } code .s1 { - color: rgb(240, 62, 107); + color: rgb(199, 51, 89); } code .ss { - color: rgb(255, 97, 216); + color: rgb(212, 81, 179); } code .bp { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } code .vc { - color: rgb(114, 255, 255); + color: rgb(95, 212, 212); } code .vg { - color: rgb(114, 255, 255); + color: rgb(95, 212, 212); } code .vi { - color: rgb(114, 255, 255); + color: rgb(95, 212, 212); } code .il { - color: rgb(97, 255, 255); + color: rgb(81, 212, 212); } .fa-border { - border-color: rgb(53, 57, 59); + border-color: rgb(44, 47, 49); } .fa-inverse { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } @media all { .featherlight { @@ -3458,12 +3512,12 @@ code .il { .featherlight .featherlight-content { border-bottom-color: transparent; background-image: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .featherlight .featherlight-close-icon { background-image: initial; - background-color: rgba(24, 26, 27, 0.3); - color: rgb(232, 230, 227); + background-color: rgba(20, 22, 22, 0.3); + color: rgb(193, 191, 188); } .featherlight-iframe .featherlight-content { border-bottom-color: initial; @@ -3478,14 +3532,14 @@ code .il { } } .tooltipped::after { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); text-decoration-color: initial; text-shadow: none; background-image: initial; background-color: rgba(0, 0, 0, 0.8); } .tooltipped::before { - color: rgba(232, 230, 227, 0.8); + color: rgba(193, 191, 188, 0.8); border-color: transparent; } .tooltipped:hover::before, @@ -3499,25 +3553,25 @@ code .il { .tooltipped-s::before, .tooltipped-se::before, .tooltipped-sw::before { - border-bottom-color: rgba(140, 130, 115, 0.8); + border-bottom-color: rgba(116, 108, 95, 0.8); } .tooltipped-n::before, .tooltipped-ne::before, .tooltipped-nw::before { - border-top-color: rgba(140, 130, 115, 0.8); + border-top-color: rgba(116, 108, 95, 0.8); } .tooltipped-w::before { - border-left-color: rgba(140, 130, 115, 0.8); + border-left-color: rgba(116, 108, 95, 0.8); } .tooltipped-e::before { - border-right-color: rgba(140, 130, 115, 0.8); + border-right-color: rgba(116, 108, 95, 0.8); } .select2-container .select2-search--inline .select2-search__field { border-color: initial; } .select2-dropdown { - background-color: rgb(24, 26, 27); - border-color: rgb(72, 78, 81); + background-color: rgb(20, 22, 22); + border-color: rgb(60, 65, 67); } .select2-results__options { list-style-image: initial; @@ -3530,109 +3584,109 @@ code .il { } .select2-close-mask { border-color: initial; - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .select2-hidden-accessible { border-color: initial !important; } .select2-container--default .select2-selection--single { - background-color: rgb(24, 26, 27); - border-color: rgb(72, 78, 81); + background-color: rgb(20, 22, 22); + border-color: rgb(60, 65, 67); } .select2-container--default .select2-selection--single .select2-selection__rendered { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } .select2-container--default .select2-selection--single .select2-selection__placeholder { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .select2-container--default .select2-selection--single .select2-selection__arrow b { - border-color: rgb(82, 88, 92) transparent transparent; + border-color: rgb(68, 73, 76) transparent transparent; } .select2-container--default.select2-container--disabled .select2-selection--single { - background-color: rgb(34, 36, 38); + background-color: rgb(28, 30, 32); } .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent rgb(82, 88, 92); + border-color: transparent transparent rgb(68, 73, 76); } .select2-container--default .select2-selection--multiple { - background-color: rgb(24, 26, 27); - border-color: rgb(72, 78, 81); + background-color: rgb(20, 22, 22); + border-color: rgb(60, 65, 67); } .select2-container--default .select2-selection--multiple .select2-selection__rendered { list-style-image: initial; } .select2-container--default .select2-selection--multiple .select2-selection__placeholder { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .select2-container--default .select2-selection--multiple .select2-selection__choice { - background-color: rgb(39, 43, 44); - border-color: rgb(72, 78, 81); + background-color: rgb(32, 36, 37); + border-color: rgb(60, 65, 67); } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { - color: rgb(200, 195, 188); + color: rgb(166, 162, 156); } .select2-container--default.select2-container--focus .select2-selection--multiple { - border-color: rgb(140, 130, 115); + border-color: rgb(116, 108, 95); outline-color: initial; } .select2-container--default.select2-container--disabled .select2-selection--multiple { - background-color: rgb(34, 36, 38); + background-color: rgb(28, 30, 32); } .select2-container--default .select2-search--dropdown .select2-search__field { - border-color: rgb(72, 78, 81); + border-color: rgb(60, 65, 67); } .select2-container--default .select2-search--inline .select2-search__field { background-image: initial; background-color: transparent; border-color: initial; outline-color: initial; box-shadow: none; } .select2-container--default .select2-results__option[aria-disabled="true"] { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .select2-container--default .select2-results__option[aria-selected="true"] { - background-color: rgb(43, 47, 49); + background-color: rgb(36, 39, 41); } .select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: rgb(4, 60, 150); - color: rgb(232, 230, 227); + background-color: rgb(3, 50, 125); + color: rgb(193, 191, 188); } .select2-container--classic .select2-selection--single { - background-color: rgb(29, 31, 32); - border-color: rgb(72, 78, 81); + background-color: rgb(24, 26, 27); + border-color: rgb(60, 65, 67); outline-color: initial; - background-image: linear-gradient(rgb(24, 26, 27) 50%, - rgb(34, 36, 38) 100%); + background-image: linear-gradient(rgb(20, 22, 22) 50%, + rgb(28, 30, 32) 100%); } .select2-container--classic .select2-selection--single:focus { - border-color: rgb(4, 60, 150); + border-color: rgb(3, 50, 125); } .select2-container--classic .select2-selection--single .select2-selection__rendered { - color: rgb(189, 183, 175); + color: rgb(157, 152, 145); } .select2-container--classic .select2-selection--single .select2-selection__placeholder { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .select2-container--classic .select2-selection--single .select2-selection__arrow { - background-color: rgb(43, 47, 49); + background-color: rgb(36, 39, 41); border-top-color: initial; border-right-color: initial; border-bottom-color: initial; - border-left-color: rgb(72, 78, 81); - background-image: linear-gradient(rgb(34, 36, 38) 50%, - rgb(53, 57, 59) 100%); + border-left-color: rgb(60, 65, 67); + background-image: linear-gradient(rgb(28, 30, 32) 50%, + rgb(44, 47, 49) 100%); } .select2-container--classic .select2-selection--single .select2-selection__arrow b { - border-color: rgb(82, 88, 92) transparent transparent; + border-color: rgb(68, 73, 76) transparent transparent; } .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { border-top-color: initial; border-bottom-color: initial; border-left-color: initial; - border-right-color: rgb(72, 78, 81); + border-right-color: rgb(60, 65, 67); } .select2-container--classic.select2-container--open .select2-selection--single { - border-color: rgb(4, 60, 150); + border-color: rgb(3, 50, 125); } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { background-image: initial; @@ -3640,41 +3694,41 @@ code .il { border-color: initial; } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent rgb(82, 88, 92); + border-color: transparent transparent rgb(68, 73, 76); } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { border-top-color: initial; - background-image: linear-gradient(rgb(24, 26, 27) 0%, - rgb(34, 36, 38) 50%); + background-image: linear-gradient(rgb(20, 22, 22) 0%, + rgb(28, 30, 32) 50%); } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { border-bottom-color: initial; - background-image: linear-gradient(rgb(34, 36, 38) 50%, - rgb(24, 26, 27) 100%); + background-image: linear-gradient(rgb(28, 30, 32) 50%, + rgb(20, 22, 22) 100%); } .select2-container--classic .select2-selection--multiple { - background-color: rgb(24, 26, 27); - border-color: rgb(72, 78, 81); + background-color: rgb(20, 22, 22); + border-color: rgb(60, 65, 67); outline-color: initial; } .select2-container--classic .select2-selection--multiple:focus { - border-color: rgb(4, 60, 150); + border-color: rgb(3, 50, 125); } .select2-container--classic .select2-selection--multiple .select2-selection__rendered { list-style-image: initial; } .select2-container--classic .select2-selection--multiple .select2-selection__choice { - background-color: rgb(39, 43, 44); - border-color: rgb(72, 78, 81); + background-color: rgb(32, 36, 37); + border-color: rgb(60, 65, 67); } .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { - color: rgb(157, 148, 136); + color: rgb(130, 123, 113); } .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { - color: rgb(178, 172, 162); + color: rgb(148, 143, 134); } .select2-container--classic.select2-container--open .select2-selection--multiple { - border-color: rgb(4, 60, 150); + border-color: rgb(3, 50, 125); } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { border-top-color: initial; @@ -3683,7 +3737,7 @@ code .il { border-bottom-color: initial; } .select2-container--classic .select2-search--dropdown .select2-search__field { - border-color: rgb(72, 78, 81); + border-color: rgb(60, 65, 67); outline-color: initial; } .select2-container--classic .select2-search--inline .select2-search__field { @@ -3691,7 +3745,7 @@ code .il { box-shadow: none; } .select2-container--classic .select2-dropdown { - background-color: rgb(24, 26, 27); border-color: transparent; + background-color: rgb(20, 22, 22); border-color: transparent; } .select2-container--classic .select2-dropdown--above { border-bottom-color: initial; @@ -3700,97 +3754,97 @@ code .il { border-top-color: initial; } .select2-container--classic .select2-results__option[aria-disabled="true"] { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .select2-container--classic .select2-results__option--highlighted[aria-selected] { - background-color: rgb(33, 82, 162); - color: rgb(232, 230, 227); + background-color: rgb(27, 68, 134); + color: rgb(193, 191, 188); } .select2-container--classic.select2-container--open .select2-dropdown { - border-color: rgb(4, 60, 150); + border-color: rgb(3, 50, 125); } .icofont-border { - border-color: rgb(52, 56, 58); + border-color: rgb(43, 46, 48); } .icofont-inverse { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .sr-only { border-color: initial; } .CtxtMenu_InfoContent { border-color: initial; - background-color: rgb(34, 36, 38); + background-color: rgb(28, 30, 32); } .CtxtMenu_Info.CtxtMenu_MousePost { outline-color: initial; } .CtxtMenu_Info { border-color: initial; - background-color: rgb(43, 47, 49); - color: rgb(232, 230, 227); - box-shadow: rgb(96, 104, 108) 0px 10px 20px; + background-color: rgb(36, 39, 41); + color: rgb(193, 191, 188); + box-shadow: rgb(80, 86, 90) 0px 10px 20px; } .CtxtMenu_MenuClose { - border-color: rgb(72, 78, 81); - color: rgb(223, 220, 215); + border-color: rgb(60, 65, 67); + color: rgb(185, 183, 178); } .CtxtMenu_MenuClose span { - background-color: rgb(72, 78, 81); + background-color: rgb(60, 65, 67); border-color: initial; } .CtxtMenu_MenuClose:hover { - color: rgb(232, 230, 227) !important; - border-color: rgb(62, 68, 70) !important; + color: rgb(193, 191, 188) !important; + border-color: rgb(51, 56, 58) !important; } .CtxtMenu_MenuClose:hover span { - background-color: rgb(53, 57, 59) !important; + background-color: rgb(44, 47, 49) !important; } .CtxtMenu_MenuClose:hover:focus { outline-color: initial; } .CtxtMenu_Menu { - background-color: rgb(24, 26, 27); - color: rgb(232, 230, 227); - border-color: rgb(62, 68, 70); - box-shadow: rgb(96, 104, 108) 0px 10px 20px; + background-color: rgb(20, 22, 22); + color: rgb(193, 191, 188); + border-color: rgb(51, 56, 58); + box-shadow: rgb(80, 86, 90) 0px 10px 20px; } .CtxtMenu_MenuItem { background-image: initial; background-color: transparent; } .CtxtMenu_MenuArrow { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .CtxtMenu_MenuActive .CtxtMenu_MenuArrow { - color: rgb(232, 230, 227); + color: rgb(193, 191, 188); } .CtxtMenu_MenuInputBox { - color: rgb(168, 160, 149); + color: rgb(139, 133, 124); } .CtxtMenu_SliderValue { - color: rgb(200, 195, 188); + color: rgb(166, 162, 156); } .CtxtMenu_SliderBar { outline-color: initial; background-image: initial; - background-color: rgb(49, 53, 55); + background-color: rgb(41, 44, 46); } .CtxtMenu_MenuRule { - border-top-color: rgb(58, 62, 65); + border-top-color: rgb(48, 51, 54); } .CtxtMenu_MenuDisabled { - color: rgb(152, 143, 129); + color: rgb(126, 119, 107); } .CtxtMenu_MenuActive { - background-color: rgb(79, 86, 89); - color: rgb(232, 230, 227); + background-color: rgb(66, 71, 74); + color: rgb(193, 191, 188); } .CtxtMenu_MenuDisabled:focus { - background-color: rgb(37, 40, 42); + background-color: rgb(31, 33, 35); } .CtxtMenu_MenuLabel:focus { - background-color: rgb(37, 40, 42); + background-color: rgb(31, 33, 35); } .CtxtMenu_ContextMenu:focus { outline-color: initial; @@ -3803,30 +3857,27 @@ code .il { box-shadow: none; } .CtxtMenu_SelectionBox { - background-color: rgb(24, 26, 27); + background-color: rgb(20, 22, 22); } .CtxtMenu_SelectionDivider { - border-top-color: rgb(140, 130, 115); + border-top-color: rgb(116, 108, 95); } mjx-merror { - color: rgb(255, 26, 26); - background-color: rgb(153, 153, 0); + color: rgb(212, 22, 22); + background-color: rgb(127, 127, 0); } mjx-assistive-mml { border-color: initial !important; } -mjx-stretchy-v > mjx-ext { - border-color: transparent; -} -.recently-attempted ul { - list-style-image: initial; -} /* Override Style */ .vimvixen-hint { - background-color: #7b5300 !important; - border-color: #d8b013 !important; - color: #f3e8c8 !important; + background-color: #664500 !important; + border-color: #b39210 !important; + color: #cac1a6 !important; +} +#vimvixen-console-frame { + color-scheme: light !important } ::placeholder { opacity: 0.5 !important; @@ -3837,7 +3888,7 @@ mjx-stretchy-v > mjx-ext { color: var(--darkreader-neutral-text) !important; } gr-main-header { - background-color: #0f3a48 !important; + background-color: #0d303c !important; } .tou-z65h9k, .tou-mignzq, @@ -3846,7 +3897,7 @@ gr-main-header { background-color: var(--darkreader-neutral-background) !important; } .tou-75mvi { - background-color: #032029 !important; + background-color: #031b22 !important; } .tou-ta9e87, .tou-1w3fhi0, @@ -3855,11 +3906,43 @@ gr-main-header { .tou-1lpmd9d, .tou-1frrtv8, .tou-17ezmgn { - background-color: #0a0a0a !important; + background-color: #080808 !important; } .tou-uknfeu { - background-color: #231603 !important; + background-color: #1d1202 !important; } .tou-6i3zyv { - background-color: #19576c !important; + background-color: #15485a !important; +} +div.mermaid-viewer-control-panel .btn { + fill: var(--darkreader-neutral-text); + background-color: var(--darkreader-neutral-background); +} +svg g rect.er { + fill: var(--darkreader-neutral-background) !important; +} +svg g rect.er.entityBox { + fill: var(--darkreader-neutral-background) !important; +} +svg g rect.er.attributeBoxOdd { + fill: var(--darkreader-neutral-background) !important; +} +svg g rect.er.attributeBoxEven { + fill-opacity: 0.8 !important; + fill: var(--darkreader-selection-background); +} +svg rect.er.relationshipLabelBox { + fill: var(--darkreader-neutral-background) !important; +} +svg g g.nodes rect, svg g g.nodes polygon { + fill: var(--darkreader-neutral-background) !important; +} +svg g rect.task { + fill: var(--darkreader-selection-background) !important; +} +svg line.messageLine0, svg line.messageLine1 { + stroke: var(--darkreader-neutral-text) !important; +} +div.mermaid .actor { + fill: var(--darkreader-neutral-background) !important; } diff --git a/resources/datetime-picker/datetimepicker.full.min.js b/resources/datetime-picker/datetimepicker.full.min.js new file mode 100644 index 0000000..a2a09c6 --- /dev/null +++ b/resources/datetime-picker/datetimepicker.full.min.js @@ -0,0 +1 @@ +var DateFormatter;!function(){"use strict";var e,t,a,r,n,o,i;o=864e5,i=3600,e=function(e,t){return"string"==typeof e&&"string"==typeof t&&e.toLowerCase()===t.toLowerCase()},t=function(e,a,r){var n=r||"0",o=e.toString();return o.lengths?"20":"19")+i):s,h=!0;break;case"m":case"n":case"M":case"F":if(isNaN(s)){if(!((u=m.getMonth(i))>0))return null;D.month=u}else{if(!(s>=1&&12>=s))return null;D.month=s}h=!0;break;case"d":case"j":if(!(s>=1&&31>=s))return null;D.day=s,h=!0;break;case"g":case"h":if(d=r.indexOf("a")>-1?r.indexOf("a"):r.indexOf("A")>-1?r.indexOf("A"):-1,c=n[d],d>-1)l=e(c,p.meridiem[0])?0:e(c,p.meridiem[1])?12:-1,s>=1&&12>=s&&l>-1?D.hour=s+l-1:s>=0&&23>=s&&(D.hour=s);else{if(!(s>=0&&23>=s))return null;D.hour=s}g=!0;break;case"G":case"H":if(!(s>=0&&23>=s))return null;D.hour=s,g=!0;break;case"i":if(!(s>=0&&59>=s))return null;D.min=s,g=!0;break;case"s":if(!(s>=0&&59>=s))return null;D.sec=s,g=!0}if(!0===h&&D.year&&D.month&&D.day)D.date=new Date(D.year,D.month-1,D.day,D.hour,D.min,D.sec,0);else{if(!0!==g)return null;D.date=new Date(0,0,0,D.hour,D.min,D.sec,0)}return D.date},guessDate:function(e,t){if("string"!=typeof e)return e;var a,r,n,o,i,s,u=this,d=e.replace(u.separators,"\0").split("\0"),l=/^[djmn]/g,f=t.match(u.validParts),c=new Date,m=0;if(!l.test(f[0]))return e;for(n=0;na?a:4,!(r=parseInt(4>a?r.toString().substr(0,4-a)+i:i.substr(0,4))))return null;c.setFullYear(r);break;case 3:c.setHours(s);break;case 4:c.setMinutes(s);break;case 5:c.setSeconds(s)}(o=i.substr(m)).length>0&&d.splice(n+1,0,o)}return c},parseFormat:function(e,a){var r,n=this,s=n.dateSettings,u=/\\?(.?)/gi,d=function(e,t){return r[e]?r[e]():t};return r={d:function(){return t(r.j(),2)},D:function(){return s.daysShort[r.w()]},j:function(){return a.getDate()},l:function(){return s.days[r.w()]},N:function(){return r.w()||7},w:function(){return a.getDay()},z:function(){var e=new Date(r.Y(),r.n()-1,r.j()),t=new Date(r.Y(),0,1);return Math.round((e-t)/o)},W:function(){var e=new Date(r.Y(),r.n()-1,r.j()-r.N()+3),a=new Date(e.getFullYear(),0,4);return t(1+Math.round((e-a)/o/7),2)},F:function(){return s.months[a.getMonth()]},m:function(){return t(r.n(),2)},M:function(){return s.monthsShort[a.getMonth()]},n:function(){return a.getMonth()+1},t:function(){return new Date(r.Y(),r.n(),0).getDate()},L:function(){var e=r.Y();return e%4==0&&e%100!=0||e%400==0?1:0},o:function(){var e=r.n(),t=r.W();return r.Y()+(12===e&&9>t?1:1===e&&t>9?-1:0)},Y:function(){return a.getFullYear()},y:function(){return r.Y().toString().slice(-2)},a:function(){return r.A().toLowerCase()},A:function(){var e=r.G()<12?0:1;return s.meridiem[e]},B:function(){var e=a.getUTCHours()*i,r=60*a.getUTCMinutes(),n=a.getUTCSeconds();return t(Math.floor((e+r+n+i)/86.4)%1e3,3)},g:function(){return r.G()%12||12},G:function(){return a.getHours()},h:function(){return t(r.g(),2)},H:function(){return t(r.G(),2)},i:function(){return t(a.getMinutes(),2)},s:function(){return t(a.getSeconds(),2)},u:function(){return t(1e3*a.getMilliseconds(),6)},e:function(){return/\((.*)\)/.exec(String(a))[1]||"Coordinated Universal Time"},I:function(){return new Date(r.Y(),0)-Date.UTC(r.Y(),0)!=new Date(r.Y(),6)-Date.UTC(r.Y(),6)?1:0},O:function(){var e=a.getTimezoneOffset(),r=Math.abs(e);return(e>0?"-":"+")+t(100*Math.floor(r/60)+r%60,4)},P:function(){var e=r.O();return e.substr(0,3)+":"+e.substr(3,2)},T:function(){return(String(a).match(n.tzParts)||[""]).pop().replace(n.tzClip,"")||"UTC"},Z:function(){return 60*-a.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(u,d)},r:function(){return"D, d M Y H:i:s O".replace(u,d)},U:function(){return a.getTime()/1e3||0}},d(e,e)},formatDate:function(e,t){var a,r,n,o,i,s=this,u="";if("string"==typeof e&&!(e=s.parseDate(e,t)))return null;if(e instanceof Date){for(n=t.length,a=0;n>a;a++)"S"!==(i=t.charAt(a))&&"\\"!==i&&(a>0&&"\\"===t.charAt(a-1)?u+=i:(o=s.parseFormat(i,e),a!==n-1&&s.intParts.test(i)&&"S"===t.charAt(a+1)&&(r=parseInt(o)||0,o+=s.dateSettings.ordinal(r)),u+=o));return u}return""}}}();var datetimepickerFactory=function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},km:{months:["មករា​","កុម្ភៈ","មិនា​","មេសា​","ឧសភា​","មិថុនា​","កក្កដា​","សីហា​","កញ្ញា​","តុលា​","វិច្ឆិកា","ធ្នូ​"],dayOfWeekShort:["អាទិ​","ច័ន្ទ​","អង្គារ​","ពុធ​","ព្រហ​​","សុក្រ​","សៅរ៍"],dayOfWeek:["អាទិត្យ​","ច័ន្ទ​","អង្គារ​","ពុធ​","ព្រហស្បតិ៍​","សុក្រ​","សៅរ៍"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},ug:{months:["1-ئاي","2-ئاي","3-ئاي","4-ئاي","5-ئاي","6-ئاي","7-ئاي","8-ئاي","9-ئاي","10-ئاي","11-ئاي","12-ئاي"],dayOfWeek:["يەكشەنبە","دۈشەنبە","سەيشەنبە","چارشەنبە","پەيشەنبە","جۈمە","شەنبە"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},ownerDocument:document,contentWindow:window,value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,openOnFocus:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,minDateTime:!1,maxDateTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",touchMovedThreshold:5,onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},r=null,n=null,o="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[o],s={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};"function"==typeof DateFormatter&&(r=n=new DateFormatter({dateSettings:e.extend({},i,s)}))},u={moment:{default_options:{format:"YYYY/MM/DD HH:mm",formatDate:"YYYY/MM/DD",formatTime:"HH:mm"},formatter:{parseDate:function(e,t){if(l(t))return n.parseDate(e,t);var a=moment(e,t);return!!a.isValid()&&a.toDate()},formatDate:function(e,t){return l(t)?n.formatDate(e,t):moment(e).format(t)},formatMask:function(e){return e.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59")}}}};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:"en";o!==t&&(o=t,s())},setDateFormatter:function(t){if("string"==typeof t&&u.hasOwnProperty(t)){var n=u[t];e.extend(a,n.default_options),r=n.formatter}else r=t}};var d={RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},l=function(e){return-1!==Object.values(d).indexOf(e)};e.extend(e.datetimepicker,d),s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(-([a-z]))/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,r;for(a=t||0,r=this.length;a'),s=e('
'),i.append(s),u.addClass("xdsoft_scroller_box").append(i),D=function(e){var t=d(e).y-c+p;t<0&&(t=0),t+s[0].offsetHeight>h&&(t=h-s[0].offsetHeight),u.trigger("scroll_element.xdsoft_scroller",[l?t/l:0])},s.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(r){n||u.trigger("resize_scroll.xdsoft_scroller",[a]),c=d(r).y,p=parseInt(s.css("margin-top"),10),h=i[0].offsetHeight,"mousedown"===r.type||"touchstart"===r.type?(t.ownerDocument&&e(t.ownerDocument.body).addClass("xdsoft_noselect"),e([t.ownerDocument.body,t.contentWindow]).on("touchend mouseup.xdsoft_scroller",function a(){e([t.ownerDocument.body,t.contentWindow]).off("touchend mouseup.xdsoft_scroller",a).off("mousemove.xdsoft_scroller",D).removeClass("xdsoft_noselect")}),e(t.ownerDocument.body).on("mousemove.xdsoft_scroller",D)):(g=!0,r.stopPropagation(),r.preventDefault())}).on("touchmove",function(e){g&&(e.preventDefault(),D(e))}).on("touchend touchcancel",function(){g=!1,p=0}),u.on("scroll_element.xdsoft_scroller",function(e,t){n||u.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:t<0||isNaN(t)?0:t,s.css("margin-top",l*t),setTimeout(function(){r.css("marginTop",-parseInt((r[0].offsetHeight-n)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,a){var d,f;n=u[0].clientHeight,o=r[0].offsetHeight,f=(d=n/o)*i[0].offsetHeight,d>1?s.hide():(s.show(),s.css("height",parseInt(f>10?f:10,10)),l=i[0].offsetHeight-s[0].offsetHeight,!0!==a&&u.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(r.css("marginTop"),10))/(o-n)]))}),u.on("mousewheel",function(e){var t=Math.abs(parseInt(r.css("marginTop"),10));return(t-=20*e.deltaY)<0&&(t=0),u.trigger("scroll_element.xdsoft_scroller",[t/(o-n)]),e.stopPropagation(),!1}),u.on("touchstart",function(e){f=d(e),m=Math.abs(parseInt(r.css("marginTop"),10))}),u.on("touchmove",function(e){if(f){e.preventDefault();var t=d(e);u.trigger("scroll_element.xdsoft_scroller",[(m-(t.y-f.y))/(o-n)])}}),u.on("touchend touchcancel",function(){f=!1,m=0})),u.trigger("resize_scroll.xdsoft_scroller",[a])):u.find(".xdsoft_scrollbar").hide()})},e.fn.datetimepicker=function(n,i){var s,u,d=this,l=48,f=57,c=96,m=105,h=17,g=46,p=13,D=27,v=8,y=37,b=38,k=39,x=40,T=9,S=116,M=65,w=67,O=86,W=90,_=89,F=!1,C=e.isPlainObject(n)||!n?e.extend(!0,{},a,n):e.extend(!0,{},a),P=0,Y=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(P),P=setTimeout(function(){e.data("xdsoft_datetimepicker")||s(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return s=function(a){function i(){var e,t=!1;return C.startDate?t=A.strToDate(C.startDate):(t=C.value||(a&&a.val&&a.val()?a.val():""))?(t=A.strToDateTime(t),C.yearOffset&&(t=new Date(t.getFullYear()-C.yearOffset,t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()))):C.defaultDate&&(t=A.strToDateTime(C.defaultDate),C.defaultTime&&(e=A.strtotime(C.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes()))),t&&A.isValidDate(t)?j.data("changed",!0):t="",t||0}function s(t){var n=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)},o=function(e,a){if(!(e="string"==typeof e||e instanceof String?t.ownerDocument.getElementById(e):e))return!1;if(e.createTextRange){var r=e.createTextRange();return r.collapse(!0),r.moveEnd("character",a),r.moveStart("character",a),r.select(),!0}return!!e.setSelectionRange&&(e.setSelectionRange(a,a),!0)};t.mask&&a.off("keydown.xdsoft"),!0===t.mask&&(r.formatMask?t.mask=r.formatMask(t.format):t.mask=t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(t.mask)&&(n(t.mask,a.val())||(a.val(t.mask.replace(/[0-9]/g,"_")),o(a[0],0)),a.on("paste.xdsoft",function(r){var i=(r.clipboardData||r.originalEvent.clipboardData||window.clipboardData).getData("text"),s=this.value,u=this.selectionStart;return s=s.substr(0,u)+i+s.substr(u+i.length),u+=i.length,n(t.mask,s)?(this.value=s,o(this,u)):""===e.trim(s)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft"),r.preventDefault(),!1}),a.on("keydown.xdsoft",function(r){var i,s=this.value,u=r.which,d=this.selectionStart,C=this.selectionEnd,P=d!==C;if(u>=l&&u<=f||u>=c&&u<=m||u===v||u===g){for(i=u===v||u===g?"_":String.fromCharCode(c<=u&&u<=m?u-l:u),u===v&&d&&!P&&(d-=1);;){var Y=t.mask.substr(d,1),A=d0;if(!(/[^0-9_]/.test(Y)&&A&&H))break;d+=u!==v||P?1:-1}if(P){var j=C-d,J=t.mask.replace(/[0-9]/g,"_"),z=J.substr(d,j).substr(1);s=s.substr(0,d)+(i+z)+s.substr(d+j)}else s=s.substr(0,d)+i+s.substr(d+1);if(""===e.trim(s))s=J;else if(d===t.mask.length)return r.preventDefault(),!1;for(d+=u===v?0:1;/[^0-9_]/.test(t.mask.substr(d,1))&&d0;)d+=u===v?0:1;n(t.mask,s)?(this.value=s,o(this,d)):""===e.trim(s)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[M,w,O,W,_].indexOf(u)&&F||-1!==[D,b,x,y,k,S,h,T,p].indexOf(u))return!0;return r.preventDefault(),!1}))}var u,d,P,Y,A,H,j=e('
'),J=e(''),z=e('
'),I=e('
'),N=e('
'),L=e('
'),E=L.find(".xdsoft_time_box").eq(0),R=e('
'),V=e(''),B=e('
'),G=e('
'),U=!1,q=0;C.id&&j.attr("id",C.id),C.style&&j.attr("style",C.style),C.weeks&&j.addClass("xdsoft_showweeks"),C.rtl&&j.addClass("xdsoft_rtl"),j.addClass("xdsoft_"+C.theme),j.addClass(C.className),I.find(".xdsoft_month span").after(B),I.find(".xdsoft_year span").after(G),I.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,r,n=e(this).find(".xdsoft_select").eq(0),o=0,i=0,s=n.is(":visible");for(I.find(".xdsoft_select").hide(),A.currentTime&&(o=A.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),n[s?"hide":"show"](),a=n.find("div.xdsoft_option"),r=0;rC.touchMovedThreshold&&(this.touchMoved=!0)};I.find(".xdsoft_select").xdsoftScroller(C).on("touchstart mousedown.xdsoft",function(e){var t=e.originalEvent;this.touchMoved=!1,this.touchStartPosition=t.touches?t.touches[0]:t,e.stopPropagation(),e.preventDefault()}).on("touchmove",".xdsoft_option",X).on("touchend mousedown.xdsoft",".xdsoft_option",function(){if(!this.touchMoved){void 0!==A.currentTime&&null!==A.currentTime||(A.currentTime=A.now());var t=A.currentTime.getFullYear();A&&A.currentTime&&A.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),j.trigger("xchange.xdsoft"),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(j,A.currentTime,j.data("input")),t!==A.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(j,A.currentTime,j.data("input"))}}),j.getValue=function(){return A.getCurrentTime()},j.setOptions=function(n){var o={};C=e.extend(!0,{},C,n),n.allowTimes&&e.isArray(n.allowTimes)&&n.allowTimes.length&&(C.allowTimes=e.extend(!0,[],n.allowTimes)),n.weekends&&e.isArray(n.weekends)&&n.weekends.length&&(C.weekends=e.extend(!0,[],n.weekends)),n.allowDates&&e.isArray(n.allowDates)&&n.allowDates.length&&(C.allowDates=e.extend(!0,[],n.allowDates)),n.allowDateRe&&"[object String]"===Object.prototype.toString.call(n.allowDateRe)&&(C.allowDateRe=new RegExp(n.allowDateRe)),n.highlightedDates&&e.isArray(n.highlightedDates)&&n.highlightedDates.length&&(e.each(n.highlightedDates,function(a,n){var i,s=e.map(n.split(","),e.trim),u=new t(r.parseDate(s[0],C.formatDate),s[1],s[2]),d=r.formatDate(u.date,C.formatDate);void 0!==o[d]?(i=o[d].desc)&&i.length&&u.desc&&u.desc.length&&(o[d].desc=i+"\n"+u.desc):o[d]=u}),C.highlightedDates=e.extend(!0,[],o)),n.highlightedPeriods&&e.isArray(n.highlightedPeriods)&&n.highlightedPeriods.length&&(o=e.extend(!0,[],C.highlightedDates),e.each(n.highlightedPeriods,function(a,n){var i,s,u,d,l,f,c;if(e.isArray(n))i=n[0],s=n[1],u=n[2],c=n[3];else{var m=e.map(n.split(","),e.trim);i=r.parseDate(m[0],C.formatDate),s=r.parseDate(m[1],C.formatDate),u=m[2],c=m[3]}for(;i<=s;)d=new t(i,u,c),l=r.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==o[l]?(f=o[l].desc)&&f.length&&d.desc&&d.desc.length&&(o[l].desc=f+"\n"+d.desc):o[l]=d}),C.highlightedDates=e.extend(!0,[],o)),n.disabledDates&&e.isArray(n.disabledDates)&&n.disabledDates.length&&(C.disabledDates=e.extend(!0,[],n.disabledDates)),n.disabledWeekDays&&e.isArray(n.disabledWeekDays)&&n.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],n.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(U=!0,j.addClass("xdsoft_inline"),a.after(j).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?z.addClass("active"):z.removeClass("active"),C.timepicker?L.addClass("active"):L.removeClass("active"),C.value&&(A.setCurrentTime(C.value),a&&a.val&&a.val(A.str)),isNaN(C.dayOfWeekStart)?C.dayOfWeekStart=0:C.dayOfWeekStart=parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||E.xdsoftScroller(C,"hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=r.formatDate(A.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=r.formatDate(A.strToDateTime(C.maxDate),C.formatDate)),C.minDateTime&&/^\+(.*)$/.test(C.minDateTime)&&(C.minDateTime=A.strToDateTime(C.minDateTime).dateFormat(C.formatDate)),C.maxDateTime&&/^\+(.*)$/.test(C.maxDateTime)&&(C.maxDateTime=A.strToDateTime(C.maxDateTime).dateFormat(C.formatDate)),V.toggle(C.showApplyButton),I.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),I.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),I.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),j.data("xdsoft_datetime").empty();else{var t=r.parseDate(e(this).val(),C.format);if(t)e(this).val(r.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),n=+[e(this).val()[2],e(this).val()[3]].join("");!C.datepicker&&C.timepicker&&a>=0&&a<24&&n>=0&&n<60?e(this).val([a,n].map(function(e){return e>9?e:"0"+e}).join(":")):e(this).val(r.formatDate(A.now(),C.format))}j.data("xdsoft_datetime").setCurrentTime(e(this).val())}j.trigger("changedatetime.xdsoft"),j.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,j.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},j.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),G.hide(),B.hide(),!1}),E.append(R),E.xdsoftScroller(C),j.on("afterOpen.xdsoft",function(){E.xdsoftScroller(C)}),j.append(z).append(L),!0!==C.withoutCopyright&&j.append(J),z.append(I).append(N).append(V),e(C.parentID).append(j),A=new function(){var t=this;t.now=function(e){var a,r,n=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),n.setFullYear(a.getFullYear()),n.setMonth(a.getMonth()),n.setDate(a.getDate())),n.setFullYear(n.getFullYear()),!e&&C.defaultTime&&(r=t.strtotime(C.defaultTime),n.setHours(r.getHours()),n.setMinutes(r.getMinutes()),n.setSeconds(r.getSeconds()),n.setMilliseconds(r.getMilliseconds())),n},t.isValidDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.getTime())},t.setCurrentTime=function(e,a){"string"==typeof e?t.currentTime=t.strToDateTime(e):t.isValidDate(e)?t.currentTime=e:e||a||!C.allowBlank||C.inline?t.currentTime=t.now():t.currentTime=null,j.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){void 0!==t.currentTime&&null!==t.currentTime||(t.currentTime=t.now());var a,r=t.currentTime.getMonth()+1;return 12===r&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),r=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),r+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(r),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(j,A.currentTime,j.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(j,A.currentTime,j.data("input")),j.trigger("xchange.xdsoft"),r},t.prevMonth=function(){void 0!==t.currentTime&&null!==t.currentTime||(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(j,A.currentTime,j.data("input")),j.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(j,t);if(void 0!==a)return a}var r=new Date(t.getFullYear(),0,1);return 4!==r.getDay()&&r.setMonth(0,1+(4-r.getDay()+7)%7),Math.ceil(((t-r)/864e5+r.getDay()+1)/7)},t.strToDateTime=function(e){var a,n,o=[];return e&&e instanceof Date&&t.isValidDate(e)?e:((o=/^([+-]{1})(.*)$/.exec(e))&&(o[2]=r.parseDate(o[2],C.formatDate)),o&&o[2]?(a=o[2].getTime()-6e4*o[2].getTimezoneOffset(),n=new Date(t.now(!0).getTime()+parseInt(o[1]+"1",10)*a)):n=e?r.parseDate(e,C.format):t.now(),t.isValidDate(n)||(n=t.now()),n)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){var e=C.format;return C.yearOffset&&(e=(e=e.replace("Y",t.currentTime.getFullYear()+C.yearOffset)).replace("y",String(t.currentTime.getFullYear()+C.yearOffset).substring(2,4))),r.formatDate(t.currentTime,e)},t.currentTime=this.now()},V.on("touchend click",function(e){e.preventDefault(),j.data("changed",!0),A.setCurrentTime(i()),a.val(A.str()),j.trigger("close.xdsoft")}),I.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){j.data("changed",!0),A.setCurrentTime(0,!0),j.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,r=A.getCurrentTime();r=new Date(r.getFullYear(),r.getMonth(),r.getDate()),e=A.strToDate(C.minDate),r<(e=new Date(e.getFullYear(),e.getMonth(),e.getDate()))||(t=A.strToDate(C.maxDate),r>(t=new Date(t.getFullYear(),t.getMonth(),t.getDate()))||(a.val(A.str()),a.trigger("change"),j.trigger("close.xdsoft")))}),I.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1;!function e(n){t.hasClass(C.next)?A.nextMonth():t.hasClass(C.prev)&&A.prevMonth(),C.monthChangeSpinner&&(r||(a=setTimeout(e,n||100)))}(500),e([C.ownerDocument.body,C.contentWindow]).on("touchend mouseup.xdsoft",function t(){clearTimeout(a),r=!0,e([C.ownerDocument.body,C.contentWindow]).off("touchend mouseup.xdsoft",t)})}),L.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1,n=110;!function e(o){var i=E[0].clientHeight,s=R[0].offsetHeight,u=Math.abs(parseInt(R.css("marginTop"),10));t.hasClass(C.next)&&s-i-C.timeHeightInTimePicker>=u?R.css("marginTop","-"+(u+C.timeHeightInTimePicker)+"px"):t.hasClass(C.prev)&&u-C.timeHeightInTimePicker>=0&&R.css("marginTop","-"+(u-C.timeHeightInTimePicker)+"px"),E.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(R[0].style.marginTop,10)/(s-i))]),n=n>10?10:n-10,r||(a=setTimeout(e,o||n))}(500),e([C.ownerDocument.body,C.contentWindow]).on("touchend mouseup.xdsoft",function t(){clearTimeout(a),r=!0,e([C.ownerDocument.body,C.contentWindow]).off("touchend mouseup.xdsoft",t)})}),u=0,j.on("xchange.xdsoft",function(t){clearTimeout(u),u=setTimeout(function(){void 0!==A.currentTime&&null!==A.currentTime||(A.currentTime=A.now());for(var t,i,s,u,d,l,f,c,m,h,g="",p=new Date(A.currentTime.getFullYear(),A.currentTime.getMonth(),1,12,0,0),D=0,v=A.now(),y=!1,b=!1,k=!1,x=!1,T=[],S=!0,M="";p.getDay()!==C.dayOfWeekStart;)p.setDate(p.getDate()-1);for(g+="",C.weeks&&(g+=""),t=0;t<7;t+=1)g+="";g+="",g+="",!1!==C.maxDate&&(y=A.strToDate(C.maxDate),y=new Date(y.getFullYear(),y.getMonth(),y.getDate(),23,59,59,999)),!1!==C.minDate&&(b=A.strToDate(C.minDate),b=new Date(b.getFullYear(),b.getMonth(),b.getDate())),!1!==C.minDateTime&&(k=A.strToDate(C.minDateTime),k=new Date(k.getFullYear(),k.getMonth(),k.getDate(),k.getHours(),k.getMinutes(),k.getSeconds())),!1!==C.maxDateTime&&(x=A.strToDate(C.maxDateTime),x=new Date(x.getFullYear(),x.getMonth(),x.getDate(),x.getHours(),x.getMinutes(),x.getSeconds()));var w;for(!1!==x&&(w=31*(12*x.getFullYear()+x.getMonth())+x.getDate());D0&&-1===C.allowDates.indexOf(r.formatDate(p,C.formatDate))&&T.push("xdsoft_disabled");var O=31*(12*p.getFullYear()+p.getMonth())+p.getDate();(!1!==y&&p>y||!1!==k&&pw||c&&!1===c[0])&&T.push("xdsoft_disabled"),-1!==C.disabledDates.indexOf(r.formatDate(p,C.formatDate))&&T.push("xdsoft_disabled"),-1!==C.disabledWeekDays.indexOf(s)&&T.push("xdsoft_disabled"),a.is("[disabled]")&&T.push("xdsoft_disabled"),c&&""!==c[1]&&T.push(c[1]),A.currentTime.getMonth()!==l&&T.push("xdsoft_other_month"),(C.defaultSelect||j.data("changed"))&&r.formatDate(A.currentTime,C.formatDate)===r.formatDate(p,C.formatDate)&&T.push("xdsoft_current"),r.formatDate(v,C.formatDate)===r.formatDate(p,C.formatDate)&&T.push("xdsoft_today"),0!==p.getDay()&&6!==p.getDay()&&-1===C.weekends.indexOf(r.formatDate(p,C.formatDate))||T.push("xdsoft_weekend"),void 0!==C.highlightedDates[r.formatDate(p,C.formatDate)]&&(i=C.highlightedDates[r.formatDate(p,C.formatDate)],T.push(void 0===i.style?"xdsoft_highlighted_default":i.style),h=void 0===i.desc?"":i.desc),C.beforeShowDay&&e.isFunction(C.beforeShowDay)&&T.push(C.beforeShowDay(p)),S&&(g+="",S=!1,C.weeks&&(g+="")),g+='",p.getDay()===C.dayOfWeekStartPrev&&(g+="",S=!0),p.setDate(u+1)}g+="
"+C.i18n[o].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+"
"+f+"
'+u+"
",N.html(g),I.find(".xdsoft_label span").eq(0).text(C.i18n[o].months[A.currentTime.getMonth()]),I.find(".xdsoft_label span").eq(1).text(A.currentTime.getFullYear()+C.yearOffset),M="",l="";var W=0;if(!1!==C.minTime){F=A.strtotime(C.minTime);W=60*F.getHours()+F.getMinutes()}var _=1440;if(!1!==C.maxTime){F=A.strtotime(C.maxTime);_=60*F.getHours()+F.getMinutes()}if(!1!==C.minDateTime){F=A.strToDateTime(C.minDateTime);r.formatDate(A.currentTime,C.formatDate)===r.formatDate(F,C.formatDate)&&(l=60*F.getHours()+F.getMinutes())>W&&(W=l)}if(!1!==C.maxDateTime){var F=A.strToDateTime(C.maxDateTime);r.formatDate(A.currentTime,C.formatDate)===r.formatDate(F,C.formatDate)&&(l=60*F.getHours()+F.getMinutes())<_&&(_=l)}if(m=function(t,n){var o,i=A.now(),s=C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length;i.setHours(t),t=parseInt(i.getHours(),10),i.setMinutes(n),n=parseInt(i.getMinutes(),10),T=[];var u=60*t+n;(a.is("[disabled]")||u>=_||u59||o.getMinutes()===parseInt(n,10))&&(C.defaultSelect||j.data("changed")?T.push("xdsoft_current"):C.initTime&&T.push("xdsoft_init_time")),parseInt(v.getHours(),10)===parseInt(t,10)&&parseInt(v.getMinutes(),10)===parseInt(n,10)&&T.push("xdsoft_today"),M+='
'+r.formatDate(i,C.formatTime)+"
"},C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length)for(D=0;D=_||m((D<10?"0":"")+D,l=(t<10?"0":"")+t))}for(R.html(M),n="",D=parseInt(C.yearStart,10);D<=parseInt(C.yearEnd,10);D+=1)n+='
'+(D+C.yearOffset)+"
";for(G.children().eq(0).html(n),D=parseInt(C.monthStart,10),n="";D<=parseInt(C.monthEnd,10);D+=1)n+='
'+C.i18n[o].months[D]+"
";B.children().eq(0).html(n),e(j).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(C.timepicker){var e,t,a,r;R.find(".xdsoft_current").length?e=".xdsoft_current":R.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=E[0].clientHeight,(a=R[0].offsetHeight)-t<(r=R.find(e).index()*C.timeHeightInTimePicker+1)&&(r=a-t),E.trigger("scroll_element.xdsoft_scroller",[parseInt(r,10)/(a-t)])):E.trigger("scroll_element.xdsoft_scroller",[0])}}),d=0,N.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),d+=1;var r=e(this),n=A.currentTime;if(void 0!==n&&null!==n||(A.currentTime=A.now(),n=A.currentTime),r.hasClass("xdsoft_disabled"))return!1;n.setDate(1),n.setFullYear(r.data("year")),n.setMonth(r.data("month")),n.setDate(r.data("date")),j.trigger("select.xdsoft",[n]),a.val(A.str()),C.onSelectDate&&e.isFunction(C.onSelectDate)&&C.onSelectDate.call(j,A.currentTime,j.data("input"),t),j.data("changed",!0),j.trigger("xchange.xdsoft"),j.trigger("changedatetime.xdsoft"),(d>1||!0===C.closeOnDateSelect||!1===C.closeOnDateSelect&&!C.timepicker)&&!C.inline&&j.trigger("close.xdsoft"),setTimeout(function(){d=0},200)}),R.on("touchstart","div",function(e){this.touchMoved=!1}).on("touchmove","div",X).on("touchend click.xdsoft","div",function(t){if(!this.touchMoved){t.stopPropagation();var a=e(this),r=A.currentTime;if(void 0!==r&&null!==r||(A.currentTime=A.now(),r=A.currentTime),a.hasClass("xdsoft_disabled"))return!1;r.setHours(a.data("hour")),r.setMinutes(a.data("minute")),j.trigger("select.xdsoft",[r]),j.data("input").val(A.str()),C.onSelectTime&&e.isFunction(C.onSelectTime)&&C.onSelectTime.call(j,A.currentTime,j.data("input"),t),j.data("changed",!0),j.trigger("xchange.xdsoft"),j.trigger("changedatetime.xdsoft"),!0!==C.inline&&!0===C.closeOnTimeSelect&&j.trigger("close.xdsoft")}}),z.on("mousewheel.xdsoft",function(e){return!C.scrollMonth||(e.deltaY<0?A.nextMonth():A.prevMonth(),!1)}),a.on("mousewheel.xdsoft",function(e){return!C.scrollInput||(!C.datepicker&&C.timepicker?((P=R.find(".xdsoft_current").length?R.find(".xdsoft_current").eq(0).index():0)+e.deltaY>=0&&P+e.deltaYc+m?(l="bottom",r=c+m-t.top):r-=m):r+j[0].offsetHeight>c+m&&(r=t.top-j[0].offsetHeight+1),r<0&&(r=0),n+a.offsetWidth>d&&(n=d-a.offsetWidth)),i=j[0],H(i,function(e){if("relative"===C.contentWindow.getComputedStyle(e).getPropertyValue("position")&&d>=e.offsetWidth)return n-=(d-e.offsetWidth)/2,!1}),(f={position:o,left:n,top:"",bottom:""})[l]=r,j.css(f)},j.on("open.xdsoft",function(t){var a=!0;C.onShow&&e.isFunction(C.onShow)&&(a=C.onShow.call(j,A.currentTime,j.data("input"),t)),!1!==a&&(j.show(),Y(),e(C.contentWindow).off("resize.xdsoft",Y).on("resize.xdsoft",Y),C.closeOnWithoutClick&&e([C.ownerDocument.body,C.contentWindow]).on("touchstart mousedown.xdsoft",function t(){j.trigger("close.xdsoft"),e([C.ownerDocument.body,C.contentWindow]).off("touchstart mousedown.xdsoft",t)}))}).on("close.xdsoft",function(t){var a=!0;I.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),C.onClose&&e.isFunction(C.onClose)&&(a=C.onClose.call(j,A.currentTime,j.data("input"),t)),!1===a||C.opened||C.inline||j.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){j.is(":visible")?j.trigger("close.xdsoft"):j.trigger("open.xdsoft")}).data("input",a),q=0,j.data("xdsoft_datetime",A),j.setOptions(C),A.setCurrentTime(i()),a.data("xdsoft_datetimepicker",j).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&C.closeOnInputClick||C.openOnFocus&&(clearTimeout(q),q=setTimeout(function(){a.is(":disabled")||(U=!0,A.setCurrentTime(i(),!0),C.mask&&s(C),j.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,r=t.which;return-1!==[p].indexOf(r)&&C.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),j.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[T].indexOf(r)?(j.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){j.trigger("close.xdsoft")})},u=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(C.contentWindow).off("resize.xdsoft"),e([C.contentWindow,C.ownerDocument.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(C.ownerDocument).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===h&&(F=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===h&&(F=!1)}),this.each(function(){var t=e(this).data("xdsoft_datetimepicker");if(t){if("string"===e.type(n))switch(n){case"show":e(this).select().focus(),t.trigger("open.xdsoft");break;case"hide":t.trigger("close.xdsoft");break;case"toggle":t.trigger("toggle.xdsoft");break;case"destroy":u(e(this));break;case"reset":this.value=this.defaultValue,this.value&&t.data("xdsoft_datetime").isValidDate(r.parseDate(this.value,C.format))||t.data("changed",!1),t.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t.data("input").trigger("blur.xdsoft");break;default:t[n]&&e.isFunction(t[n])&&(d=t[n](i))}else t.setOptions(n);return 0}"string"!==e.type(n)&&(!C.lazyInit||C.open||C.inline?s(e(this)):Y(e(this)))}),d},e.fn.datetimepicker.defaults=a};!function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(datetimepickerFactory),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var i=t||window.event,s=u.call(arguments,1),d=0,f=0,c=0,m=0,h=0,g=0;if(t=e.event.fix(i),t.type="mousewheel","detail"in i&&(c=-1*i.detail),"wheelDelta"in i&&(c=i.wheelDelta),"wheelDeltaY"in i&&(c=i.wheelDeltaY),"wheelDeltaX"in i&&(f=-1*i.wheelDeltaX),"axis"in i&&i.axis===i.HORIZONTAL_AXIS&&(f=-1*c,c=0),d=0===c?f:c,"deltaY"in i&&(d=c=-1*i.deltaY),"deltaX"in i&&(f=i.deltaX,0===c&&(d=-1*f)),0!==c||0!==f){if(1===i.deltaMode){var p=e.data(this,"mousewheel-line-height");d*=p,c*=p,f*=p}else if(2===i.deltaMode){var D=e.data(this,"mousewheel-page-height");d*=D,c*=D,f*=D}if(m=Math.max(Math.abs(c),Math.abs(f)),(!o||m=1?"floor":"ceil"](d/o),f=Math[f>=1?"floor":"ceil"](f/o),c=Math[c>=1?"floor":"ceil"](c/o),l.settings.normalizeOffset&&this.getBoundingClientRect){var v=this.getBoundingClientRect();h=t.clientX-v.left,g=t.clientY-v.top}return t.deltaX=f,t.deltaY=c,t.deltaFactor=o,t.offsetX=h,t.offsetY=g,t.deltaMode=0,s.unshift(t,d,f,c),n&&clearTimeout(n),n=setTimeout(a,200),(e.event.dispatch||e.event.handle).apply(this,s)}}function a(){o=null}function r(e,t){return l.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120==0}var n,o,i=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],s="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],u=Array.prototype.slice;if(e.event.fixHooks)for(var d=i.length;d;)e.event.fixHooks[i[--d]]=e.event.mouseHooks;var l=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var a=s.length;a;)this.addEventListener(s[--a],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",l.getLineHeight(this)),e.data(this,"mousewheel-page-height",l.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var a=s.length;a;)this.removeEventListener(s[--a],t,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var a=e(t),r=a["offsetParent"in e.fn?"offsetParent":"parent"]();return r.length||(r=e("body")),parseInt(r.css("fontSize"),10)||parseInt(a.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}); \ No newline at end of file diff --git a/resources/datetime-picker/datetimepicker.min.css b/resources/datetime-picker/datetimepicker.min.css new file mode 100644 index 0000000..14a08a1 --- /dev/null +++ b/resources/datetime-picker/datetimepicker.min.css @@ -0,0 +1 @@ +.xdsoft_datetimepicker{box-shadow:0 5px 15px -5px rgba(0,0,0,0.506);background:#fff;border-bottom:1px solid #bbb;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:8px;padding-left:0;padding-top:2px;position:absolute;z-index:9999;-moz-box-sizing:border-box;box-sizing:border-box;display:none}.xdsoft_datetimepicker.xdsoft_rtl{padding:8px 0 8px 8px}.xdsoft_datetimepicker iframe{position:absolute;left:0;top:0;width:75px;height:210px;background:transparent;border:0}.xdsoft_datetimepicker button{border:none !important}.xdsoft_noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.xdsoft_noselect::selection{background:transparent}.xdsoft_noselect::-moz-selection{background:transparent}.xdsoft_datetimepicker.xdsoft_inline{display:inline-block;position:static;box-shadow:none}.xdsoft_datetimepicker *{-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.xdsoft_datetimepicker .xdsoft_datepicker,.xdsoft_datetimepicker .xdsoft_timepicker{display:none}.xdsoft_datetimepicker .xdsoft_datepicker.active,.xdsoft_datetimepicker .xdsoft_timepicker.active{display:block}.xdsoft_datetimepicker .xdsoft_datepicker{width:224px;float:left;margin-left:8px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker{width:256px}.xdsoft_datetimepicker .xdsoft_timepicker{width:58px;float:left;text-align:center;margin-left:8px;margin-top:0}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker{margin-top:8px;margin-bottom:3px}.xdsoft_datetimepicker .xdsoft_monthpicker{position:relative;text-align:center}.xdsoft_datetimepicker .xdsoft_label i,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC)}.xdsoft_datetimepicker .xdsoft_label i{opacity:.5;background-position:-92px -19px;display:inline-block;width:9px;height:20px;vertical-align:middle}.xdsoft_datetimepicker .xdsoft_prev{float:left;background-position:-20px 0}.xdsoft_datetimepicker .xdsoft_today_button{float:left;background-position:-70px 0;margin-left:5px}.xdsoft_datetimepicker .xdsoft_next{float:right;background-position:0 0}.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_today_button{background-color:transparent;background-repeat:no-repeat;border:0 none;cursor:pointer;display:block;height:30px;opacity:.5;-ms-filter:"alpha(opacity=50)";outline:medium none;overflow:hidden;padding:0;position:relative;text-indent:100%;white-space:nowrap;width:20px;min-width:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next{float:none;background-position:-40px -15px;height:15px;width:30px;display:block;margin-left:14px;margin-top:7px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next{float:none;margin-left:0;margin-right:14px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev{background-position:-40px 0;margin-bottom:7px;margin-top:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box{height:151px;overflow:hidden;border-bottom:1px solid #ddd}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div{background:#f5f5f5;border-top:1px solid #ddd;color:#666;font-size:12px;text-align:center;border-collapse:collapse;cursor:pointer;border-bottom-width:0;height:25px;line-height:25px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:first-child{border-top-width:0}.xdsoft_datetimepicker .xdsoft_today_button:hover,.xdsoft_datetimepicker .xdsoft_next:hover,.xdsoft_datetimepicker .xdsoft_prev:hover{opacity:1;-ms-filter:"alpha(opacity=100)"}.xdsoft_datetimepicker .xdsoft_label{display:inline;position:relative;z-index:9999;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff;float:left;width:182px;text-align:center;cursor:pointer}.xdsoft_datetimepicker .xdsoft_label:hover>span{text-decoration:underline}.xdsoft_datetimepicker .xdsoft_label:hover i{opacity:1.0}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select{border:1px solid #ccc;position:absolute;right:0;top:30px;z-index:101;display:none;background:#fff;max-height:160px;overflow-y:hidden}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_monthselect{right:-7px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_yearselect{right:2px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#fff;background:#ff8000}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option{padding:2px 10px 2px 5px;text-decoration:none !important}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_month{width:100px;text-align:right}.xdsoft_datetimepicker .xdsoft_calendar{clear:both}.xdsoft_datetimepicker .xdsoft_year{width:48px;margin-left:5px}.xdsoft_datetimepicker .xdsoft_calendar table{border-collapse:collapse;width:100%}.xdsoft_datetimepicker .xdsoft_calendar td>div{padding-right:5px}.xdsoft_datetimepicker .xdsoft_calendar th{height:25px}.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th{width:14.2857142%;background:#f5f5f5;border:1px solid #ddd;color:#666;font-size:12px;text-align:right;vertical-align:middle;padding:0;border-collapse:collapse;cursor:pointer;height:25px}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th{width:12.5%}.xdsoft_datetimepicker .xdsoft_calendar th{background:#f1f1f1}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today{color:#3af}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default{background:#ffe9d2;box-shadow:#ffb871 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint{background:#c1ffc9;box-shadow:#00dd1c 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,.xdsoft_datetimepicker .xdsoft_time_box>div>div.xdsoft_disabled{opacity:.5;-ms-filter:"alpha(opacity=50)";cursor:default}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled{opacity:.2;-ms-filter:"alpha(opacity=20)"}.xdsoft_datetimepicker .xdsoft_calendar td:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#fff !important;background:#ff8000 !important;box-shadow:none !important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover{background:#3af !important;box-shadow:#178fe5 0 1px 3px 0 inset !important;color:#fff !important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_disabled:hover{color:inherit !important;background:inherit !important;box-shadow:inherit !important}.xdsoft_datetimepicker .xdsoft_calendar th{font-weight:700;text-align:center;color:#999;cursor:default}.xdsoft_datetimepicker .xdsoft_copyright{color:#ccc !important;font-size:10px;clear:both;float:none;margin-left:8px}.xdsoft_datetimepicker .xdsoft_copyright a{color:#eee !important}.xdsoft_datetimepicker .xdsoft_copyright a:hover{color:#aaa !important}.xdsoft_time_box{position:relative;border:1px solid #ccc}.xdsoft_scrollbar>.xdsoft_scroller{background:#ccc !important;height:20px;border-radius:3px}.xdsoft_scrollbar{position:absolute;width:7px;right:0;top:0;bottom:0;cursor:pointer}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar{left:0;right:auto}.xdsoft_scroller_box{position:relative}.xdsoft_datetimepicker.xdsoft_dark{box-shadow:0 5px 15px -5px rgba(255,255,255,0.506);background:#000;border-bottom:1px solid #444;border-left:1px solid #333;border-right:1px solid #333;border-top:1px solid #333;color:#ccc}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box{border-bottom:1px solid #222}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div{background:#0a0a0a;border-top:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label{background-color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select{border:1px solid #333;background:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#000;background:#007fff}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==)}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0a0a0a;border:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0e0e0e}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today{color:#c50}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default{background:#ffe9d2;box-shadow:#ffb871 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint{background:#c1ffc9;box-shadow:#00dd1c 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#000 !important;background:#007fff !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{color:#666}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright{color:#333 !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a{color:#111 !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover{color:#555 !important}.xdsoft_dark .xdsoft_time_box{border:1px solid #333}.xdsoft_dark .xdsoft_scrollbar>.xdsoft_scroller{background:#333 !important}.xdsoft_datetimepicker .xdsoft_save_selected{display:block;border:1px solid #ddd !important;margin-top:5px;width:100%;color:#454551;font-size:13px}.xdsoft_datetimepicker .blue-gradient-button{font-family:"museo-sans","Book Antiqua",sans-serif;font-size:12px;font-weight:300;color:#82878c;height:28px;position:relative;padding:4px 17px 4px 33px;border:1px solid #d7d8da;background:-moz-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(73%,#f4f8fa));background:-webkit-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-o-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-ms-linear-gradient(top,#fff 0,#f4f8fa 73%);background:linear-gradient(to bottom,#fff 0,#f4f8fa 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff',endColorstr='#f4f8fa',GradientType=0)}.xdsoft_datetimepicker .blue-gradient-button:hover,.xdsoft_datetimepicker .blue-gradient-button:focus,.xdsoft_datetimepicker .blue-gradient-button:hover span,.xdsoft_datetimepicker .blue-gradient-button:focus span{color:#454551;background:-moz-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f4f8fa),color-stop(73%,#FFF));background:-webkit-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-o-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-ms-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:linear-gradient(to bottom,#f4f8fa 0,#FFF 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f8fa',endColorstr='#FFF',GradientType=0)} \ No newline at end of file diff --git a/resources/submission.scss b/resources/submission.scss index 8519dc2..ba07515 100644 --- a/resources/submission.scss +++ b/resources/submission.scss @@ -1,3 +1,4 @@ +@import "vars"; .info-float { position: sticky; top: 60px; @@ -20,6 +21,11 @@ &:first-of-type { border-top: #ccc 1px solid; + border-top-left-radius: $widget_border_radius; + border-top-right-radius: $widget_border_radius; + .sub-result { + border-top-left-radius: $widget_border_radius; + } } > div { diff --git a/resources/ticket.scss b/resources/ticket.scss index d7f9143..092c1a1 100644 --- a/resources/ticket.scss +++ b/resources/ticket.scss @@ -150,14 +150,6 @@ padding: 7px; } - .message .content :first-child { - margin-top: 0; - } - - .message .content :last-child { - margin-bottom: 0; - } - .new-message .detail { padding: 8px 10px; } @@ -174,4 +166,10 @@ padding-left: 0.5em; padding-top: 1.65em; } +} + +@media (max-width: 799px) { + .ticket-container { + flex-direction: column-reverse; + } } \ No newline at end of file diff --git a/resources/vars.scss b/resources/vars.scss index 4bcda31..785343d 100644 --- a/resources/vars.scss +++ b/resources/vars.scss @@ -4,9 +4,12 @@ $border_gray: #ccc; $background_gray: #ededed; $background_light_gray: #fafafa; $announcement_red: #ae0000; +$theme_color: #045343; $base_font_size: 14px; $widget_border_radius: 4px; $table_header_rounding: 6px; $monospace-fonts: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; + +$navbar_height: 48px; diff --git a/resources/widgets.scss b/resources/widgets.scss index f33882d..3f2ea95 100644 --- a/resources/widgets.scss +++ b/resources/widgets.scss @@ -30,7 +30,7 @@ .button, button, input[type=submit] { align-items: center; background-clip: padding-box; - background-color: #fa6400; + background-color: $theme_color; border: 1px solid transparent; border-radius: .25rem; box-shadow: rgba(0, 0, 0, 0.02) 0 1px 3px 0; @@ -101,6 +101,10 @@ } } + &.btn-darkGreen { + background: $theme_color; + } + // class = "unselectable button full small" only appear in online-judge/templates/contest/list.html // this attribute center buttons in contest list (including "Join", "Virutal Join", "Spectable") &.unselectable.button.full.small { @@ -113,18 +117,18 @@ } .button:hover, button:hover, input[type=submit]:hover { - background-color: #fb8332; + background-color: $theme_color; box-shadow: rgba(0, 0, 0, 0.1) 0 4px 12px; transform: translateY(-1px); } .button:focus, button:focus, input[type=submit]:focus { - background-color: #fb8332; + background-color: $theme_color; box-shadow: rgba(0, 0, 0, 0.1) 0 4px 12px; } .button:active, button:active, input[type=submit]:hover { - background-color: #c85000; + background-color: $theme_color; box-shadow: rgba(0, 0, 0, .06) 0 2px 4px; transform: translateY(0); } @@ -212,17 +216,19 @@ input { position: relative; } -.md-typeset .copy-clipboard { - margin-top: 1.5em; +.md-typeset .admonition .btn-clipboard, +.md-typeset details .btn-clipboard { + right: -0.6rem; + border-radius: 0 0 0 4px; } // Bootstrap-y tabs .ul_tab_a_active { - color: #045343; + color: $theme_color; cursor: default; font-weight: bold; - border-bottom: 3px solid #045343; + border-bottom: 3px solid $theme_color; background: transparent; } @@ -269,6 +275,15 @@ input { overflow-x: auto; overflow-y: hidden; + &::-webkit-scrollbar { + width: 0.1rem; // Adjust the width as needed + background-color: transparent; + } + + &::-webkit-scrollbar-thumb { + background-color: transparent; + } + > li { position: relative; display: block; @@ -307,11 +322,14 @@ input { // Bootstrap-y pagination ul.pagination a:hover { color: #FFF; - background: rgba(0, 0, 0, 0.55); + background: #0aa082; + border: none; } ul.pagination { - display: inline-block; + align-items: center; + justify-content: center; + display: flex; padding-left: 0; margin: 0; border-radius: $widget_border_radius; @@ -320,33 +338,35 @@ ul.pagination { li { display: inline; - &:first-child > { - a, span { - margin-left: 0; - border-top-left-radius: $widget_border_radius; - border-bottom-left-radius: $widget_border_radius; - } - } + // &:first-child > { + // a, span { + // margin-left: 0; + // border-top-left-radius: $widget_border_radius; + // border-bottom-left-radius: $widget_border_radius; + // } + // } - &:last-child > { - a, span { - margin-left: 0; - border-top-right-radius: $widget_border_radius; - border-bottom-right-radius: $widget_border_radius; - } - } + // &:last-child > { + // a, span { + // margin-left: 0; + // border-top-right-radius: $widget_border_radius; + // border-bottom-right-radius: $widget_border_radius; + // } + // } > { a, span { position: relative; float: left; padding: 4px 12px; + margin-right: 5px; + font-weight: bold; line-height: 1.42857; text-decoration: none; - color: #FFF; - background-color: $widget_black; - border: 1px solid #505050; - margin-left: -1px; + color: $theme_color; + background-color: white; + border: 2px solid $theme_color; + border-radius: 10px; } } } @@ -354,22 +374,22 @@ ul.pagination { .disabled-page > { a { color: #888; - background-color: $widget_black; - border-color: #282828; + background-color: #04534380; + border-color: #04534380; } span { color: #888; - background-color: $widget_black; - border-color: #505050; + background-color: #04534380; + border-color: #04534380; } } .active-page > { a { z-index: 2; - color: black; - background-color: #7dc7ff; + color: white; + background-color: $theme_color; border-color: transparent; cursor: default; } @@ -489,7 +509,7 @@ ul.select2-selection__rendered { display: flex; .fa { - background: #045343; + background: $theme_color; color: white; padding: 4px; margin-right: 8px; @@ -606,6 +626,14 @@ ul.select2-selection__rendered { background: gray; } +ul.errorlist { + margin: 0px; + text-align: right; + list-style: none; + padding: 0px; + color: red; +} + .registration-form { .sortedm2m-container, .sortedm2m-container p.selector-filter { width: 300px; @@ -682,12 +710,6 @@ ul.select2-selection__rendered { width: 450px; } - ul.errorlist { - margin: 0px; - text-align: right; - list-style: none; - } - .full-textfield { padding-top: 0.5em; } diff --git a/templates/base.html b/templates/base.html index 2e5013e..6d39712 100644 --- a/templates/base.html +++ b/templates/base.html @@ -193,6 +193,15 @@ } + {% if request.profile.css_background %} + + {% endif %} @@ -202,7 +211,7 @@ +
{% if request.in_contest %}
diff --git a/templates/chat/chat.html b/templates/chat/chat.html index 9cde791..1991402 100644 --- a/templates/chat/chat.html +++ b/templates/chat/chat.html @@ -7,21 +7,11 @@ - - + {% compress js %} + {% include "chat/chat_js.html" %} + {% endcompress %} + @@ -615,38 +70,36 @@
-
-
+
+
{% include 'chat/user_online_status.html' %}
- - -
-
- +
+
+
+
+ +
- - {{ user.user.username }} - - - {{user.unread_count if user.unread_count}} +
+ + {{ user.user.username }} + + {% if user.last_msg %} + + {{ user.last_msg }} + + {% endif %} +
+ + {{user.unread_count if user.unread_count}} {% endfor %} diff --git a/templates/chat/user_online_status.html b/templates/chat/user_online_status.html index 975477a..51ffa38 100644 --- a/templates/chat/user_online_status.html +++ b/templates/chat/user_online_status.html @@ -1,7 +1,7 @@ {% if other_user %}
- + diff --git a/templates/contest/list.html b/templates/contest/list.html index 06e169e..226b219 100644 --- a/templates/contest/list.html +++ b/templates/contest/list.html @@ -5,6 +5,10 @@ {% block two_col_media %} +
+
{% if not contest.is_visible %} {{ _('hidden') }} @@ -155,12 +160,12 @@ {% endfor %} - +
{% endspaceless %} {% endmacro %} -{% macro time_left(contest) %} -
+{% macro time_left(contest, padding_top = true) %} +
{% if contest.time_limit %} {{ contest.start_time|date(_("M j, Y, G:i")) }} - {{ contest.end_time|date(_("M j, Y, G:i")) }} @@ -186,21 +191,19 @@ {% macro contest_join(contest, request) %} {% if not request.in_contest %} - - {% if request.profile in contest.authors.all() or request.profile in contest.curators.all() or request.profile in contest.testers.all() %} -
- {% csrf_token %} - -
- {% else %} -
- {% csrf_token %} - -
- {% endif %} - + {% if request.profile in contest.authors.all() or request.profile in contest.curators.all() or request.profile in contest.testers.all() %} +
+ {% csrf_token %} + +
+ {% else %} +
+ {% csrf_token %} + +
+ {% endif %} {% endif %} {% endmacro %} @@ -235,88 +238,88 @@ {{ _('Active Contests') }}
- - - - - - {% if not request.in_contest %} - - {% endif %} - - - - {% for participation in active_participations %} - {% with contest=participation.contest %} - - - - {{ contest_join(contest, request) }} - - {% endwith %} - {% endfor %} - -
{{ _('Contest') }}{{ _('Users') }}
-
- {{ contest_head(contest) }} - {% if contest.start_time %} -
- {% if contest.time_limit %} - - {% trans countdown=participation.end_time|as_countdown %}Window ends in {{countdown}}{% endtrans %} - - {% elif contest.time_before_end %} - {% trans countdown=contest.end_time|as_countdown %}Ends in {{countdown}}{% endtrans %} - {% endif %} - {{ time_left(contest) }} - {% endif %} -
-
- {{ user_count(contest, request.user) }} -
+ + {% for participation in active_participations %} + {% with contest=participation.contest %} +
+
+
{{ _('Contests') }}
+ {{ contest_head(contest) }} +
+
+
{{ _('Time') }}
+
+ {% if contest.start_time %} + {% if contest.time_limit %} + + {% trans countdown=participation.end_time|as_countdown %}Window ends in {{countdown}}{% endtrans %} + + {% elif contest.time_before_end %} + {% trans countdown=contest.end_time|as_countdown %}Ends in {{countdown}}{% endtrans %} + {% endif %} + {{ time_left(contest) }} + {% endif %} +
+
+
+
{{ _('Format') }}
+ {{ contest.format.name }} +
+
+
{{ _('Users') }}
+ {{ user_count(contest, request.user) }} +
+
+ {{ contest_join(contest, request) }} +
+
+ {% endwith %} + {% endfor %}

{% endif %} +

+ + {{ _('Ongoing Contests') }} +

{% if current_contests %} -

- - {{ _('Ongoing Contests') }} -

- - - - - - {% if not request.in_contest %} - - {% endif %} - - - - {% for contest in current_contests %} - - - - {{ contest_join(contest, request) }} - - {% endfor %} - -
{{ _('Contest') }}{{ _('Users') }}
-
- {{ contest_head(contest) }} - {% if contest.start_time %} -
- {% if contest.time_before_end %} - {% trans countdown=contest.end_time|as_countdown %}Ends in {{countdown}}{% endtrans %} - {% endif %} - {{ time_left(contest) }} - {% endif %} -
-
- {{ user_count(contest, request.user) }} -
+ {% for contest in current_contests %} +
+
+
{{ _('Contests') }}
+ {{ contest_head(contest) }} +
+
+
{{ _('Time') }}
+
+ {% if contest.start_time %} + {% if contest.time_before_end %} + {% trans countdown=contest.end_time|as_countdown %}Ends in {{countdown}}{% endtrans %} + {% endif %} + {{ time_left(contest) }} + {% endif %} +
+
+
+
{{ _('Format') }}
+ {{ contest.format.name }} +
+
+
{{ _('Users') }}
+ {{ user_count(contest, request.user) }} +
+
+ {{ contest_join(contest, request) }} +
+
+ {% endfor %} +
+
+ {% else %} +
+ {{ _('There is no ongoing contest at this time.') }}
{% endif %} @@ -327,90 +330,89 @@ {% if future_contests %}
- - - - - - - - {% for contest in future_contests %} - - - - {% endfor %} - -
{{ _('Contest') }}
-
- {{ contest_head(contest) }} - {% if contest.start_time %} -
- {% if contest.time_before_start %} - {{ _('Starting in %(countdown)s.', countdown=contest.start_time|as_countdown) }} - {% endif %} - {{ time_left(contest) }} - {% endif %} -
-
+ {% for contest in future_contests %} +
+
+
{{ _('Contests') }}
+ {{ contest_head(contest) }} +
+
+
{{ _('Time') }}
+
+ {% if contest.start_time %} + {% if contest.time_before_start %} + {{ _('Starting in %(countdown)s.', countdown=contest.start_time|as_countdown) }} + {% endif %} + {{ time_left(contest) }} + {% endif %} +
+
+
+
{{ _('Format') }}
+ {{ contest.format.name }} +
+
+ {% endfor %}
{% else %} - {{ _('There are no scheduled contests at this time.') }} -
+
+ {{ _('There is no scheduled contest at this time.') }} +
+
{% endif %}
+

+ {{ _('Past Contests') }} +

{% if past_contests %} -

- {{ _('Past Contests') }} -

{% if page_obj and page_obj.num_pages > 1 %} -
+
{% include "list-pages.html" %}
{% endif %} - - - - - - {% if not request.in_contest %} - - {% endif %} - - - - {% for contest in past_contests %} - - - - {% if not request.in_contest %} - - {% endif %} - - {% endfor %} - -
- {{ _('Contest') }}{{ sort_order.name }} - - {{ _('Users') }}{{ sort_order.user_count }} -
-
- {{ contest_head(contest) }} - {{ time_left(contest) }} -
-
- {{ user_count(contest, request.user) }} -
- {% csrf_token %} - -
-
+ + {% for contest in past_contests %} +
+
+
{{ _('Contests') }}
+ {{ contest_head(contest) }} +
+
+
{{ _('Time') }}
+
+ {{ time_left(contest, false) }} +
+
+
+
{{ _('Format') }}
+ {{ contest.format.name }} +
+
+
{{ _('Users') }}
+ {{ user_count(contest, request.user) }} +
+ {% if not request.in_contest %} +
+
+ {% csrf_token %} + +
+
+ {% endif %} +
+ {% endfor %} {% if page_obj and page_obj.num_pages > 1 %}
{% include "list-pages.html" %}
{% endif %} + {% else %} +
+ {{ _('There is no past contest.') }} +
+
{% endif %}
{% endblock %} diff --git a/templates/contests-countdown.html b/templates/contests-countdown.html index 36879f4..a2772d6 100644 --- a/templates/contests-countdown.html +++ b/templates/contests-countdown.html @@ -1,6 +1,6 @@ {% if current_contests %}