From 7157af3efbd2820d4f219cc2bcc6b62355e97d22 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Wed, 26 Jun 2024 21:00:39 -0400
Subject: [PATCH 01/57] adds a start

---
 resources/navbar.scss                         |   2 +-
 resources/quotes.json                         |  70 ++++++++++++
 resources/ranks.scss                          |  11 ++
 resources/search.scss                         |  35 ++++++
 resources/widgets.scss                        |  12 +-
 robots.txt                                    |   1 +
 templates/base.html                           |   5 +-
 templates/contest/ics3u_report.html           | 108 ++++++++++++++++++
 templates/problem/manage_submission.html      |   4 +-
 .../registration/password_reset_email.html    |   2 +-
 templates/site-logo-fragment.html             |   2 +-
 templates/user/base-users-table.html          |  10 ++
 12 files changed, 248 insertions(+), 14 deletions(-)
 create mode 100644 resources/quotes.json
 create mode 100644 resources/search.scss
 create mode 100644 templates/contest/ics3u_report.html

diff --git a/resources/navbar.scss b/resources/navbar.scss
index 38c76ccfd2..d849674a5b 100644
--- a/resources/navbar.scss
+++ b/resources/navbar.scss
@@ -13,7 +13,7 @@
         min-height: 100%;
         align-items: center;
         white-space: nowrap;
-        color: #5c5954;
+        color: #8484ba;
 
         a {
             color: #FFF;
diff --git a/resources/quotes.json b/resources/quotes.json
new file mode 100644
index 0000000000..d7ea3286de
--- /dev/null
+++ b/resources/quotes.json
@@ -0,0 +1,70 @@
+[
+  {
+	"quote": "<a href=\"https://youtu.be/dQw4w9WgXcQ\">Click Me!</a>",
+	"tooltip": "Did you click yet?"
+  },
+  {
+	"quote": "A leader leads by example not by force.",
+	"tooltip": "Sun Tzu said that!"
+  },
+  {
+	"quote": "All warfare is based on deception.",
+	"tooltip": "Sun Tzu said that!"
+  },
+  {
+	"quote": "An eye for an eye makes the whole world blind.",
+	"tooltip": "Mohandas Gandhi"
+  },
+  {
+	"quote": "Avidly exploring a more thrilling side to coding!",
+	"tooltip": "Nayaab, 2020"
+  },
+  {
+	"quote": "BTW I use arch.",
+	"tooltip": null
+  },
+  {
+	"quote": "Don't fear the OOP!",
+	"tooltip": null
+  },
+  {
+	"quote": ":hudab:",
+	"tooltip": ":hudabbutbetter:"
+  },
+  {
+	"quote": "Introducing weekly TEJ contests!",
+	"tooltip": "ENG2D and ENG3U contests are next!"
+  },
+  {
+	"quote": "Opportunities multiply as they are seized.",
+	"tooltip": "Sun Tzu said that!"
+  },
+  {
+	"quote": "Powered by PHP!",
+	"tooltip": null
+  },
+  {
+	"quote": "Pretend inferiority and encourage his arrogance.",
+	"tooltip": "Sun Tzu said that!"
+  },
+  {
+	"quote": "Real programmers count from zero.",
+	"tooltip": "Unless you use turing."
+  },
+  {
+	"quote": "To know your Enemy, you must become your Enemy.",
+	"tooltip": "Sun Tzu said that!"
+  },
+  {
+	"quote": "Turing > Ruby > C > Java > C++ > Python",
+	"tooltip": "C > Python > Ruby > Java > C++ > Turing"
+  },
+  {
+	"quote": "Your Advertisement Here",
+	"tooltip": "Contact /dev/null"
+  },
+  {
+	"quote": "¯\\_(ツ)_/¯",
+	"tooltip": "🤷"
+  }
+]
diff --git a/resources/ranks.scss b/resources/ranks.scss
index 168fab2f66..29d3e24d67 100644
--- a/resources/ranks.scss
+++ b/resources/ranks.scss
@@ -124,3 +124,14 @@ svg.rate-box {
         vertical-align: middle;
     }
 }
+
+
+.alumnus a, .alumnus {
+    color: #009acd !important;
+    font-weight: bold !important;
+}
+
+.president a, .president {
+    color: #bc0000 !important;
+    font-weight: bold !important;
+}
diff --git a/resources/search.scss b/resources/search.scss
new file mode 100644
index 0000000000..2e111f5194
--- /dev/null
+++ b/resources/search.scss
@@ -0,0 +1,35 @@
+#filter-form {
+  vertical-align: top;
+  margin-bottom: 0.5em;
+  margin-top: 0.75em;
+
+  a {
+    margin-right: 5px;
+    display: inline-block;
+    padding: 3px 10px;
+    vertical-align: middle;
+  }
+
+  input {
+    vertical-align: middle;
+    margin-bottom: 0.5em;
+  }
+
+  label {
+    vertical-align: middle;
+  }
+
+  .filter-form-group {
+    margin-top: 5px;
+  }
+
+  .form-label {
+    margin-top: 0.5em;
+    font-style: italic;
+  }
+}
+
+#search {
+  width: 100%;
+  height: 2.3em;
+}
diff --git a/resources/widgets.scss b/resources/widgets.scss
index 9605b224a2..3963b308af 100644
--- a/resources/widgets.scss
+++ b/resources/widgets.scss
@@ -32,24 +32,24 @@
     font-weight: 400;
     line-height: 1.4;
     background: rgb(51, 122, 183) none repeat scroll 0 (0% / auto) padding-box border-box;
-    background: -webkit-linear-gradient(top, #337ab7 0, #265a88 100%) repeat-x;
-    background: linear-gradient(to bottom, #337ab7 0, #265a88 100%) repeat-x;
+    background: -webkit-linear-gradient(top, #4547c8 0, #293095 100%) repeat-x;
+    background: linear-gradient(to bottom, #4547c8 0, #293095 100%) repeat-x;
     border-radius: $widget_border_radius;
     padding: 6px 12px;
     display: block;
-    border: 1px solid #245580;
+    border: 1px solid #333ba8;
     text-align: center;
 
     // 4k hack
     font-size: $base_font_size;
 
     &:hover {
-        background: #265a88;
+        background: #3038a8;
     }
 
     &:active {
-        border-color: #245580;
-        background: #265a88;
+        border-color: #4547c8;
+        background: #3038a8;
     }
 
     &.full {
diff --git a/robots.txt b/robots.txt
index 5bc2eec150..341d59098f 100644
--- a/robots.txt
+++ b/robots.txt
@@ -11,6 +11,7 @@ Disallow: /contest/*/moss
 Disallow: /contest/*/participation
 Disallow: /contest/*/participations
 Disallow: /contest/*/rank
+Disallow: /contest/*/register
 Disallow: /contests/tag
 Disallow: /contest/*/stats
 Disallow: /contest/*/submissions
diff --git a/templates/base.html b/templates/base.html
index c866ab3568..7937059579 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -25,10 +25,10 @@
     <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
     <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
     <link rel="manifest" href="/manifest.json">
-    <meta name="msapplication-TileColor" content="#FFBB33">
+    <meta name="msapplication-TileColor" content="#3737B4">
     <meta name="msapplication-TileImage" content="/mstile-144x144.png">
     {# Chrome 39 for Android colour #}
-    <meta name="theme-color" content="#FFBB33">
+    <meta name="theme-color" content="#3737B4">
     {% if og_image %}
         <meta property="og:image" content="{{ request.build_absolute_uri(og_image) }}">
     {% endif %}
@@ -290,7 +290,6 @@ <h2 style="display:inline">
     <footer>
         <span id="footer-content">
             <br>
-            <a style="color: #808080" href="https://dmoj.ca">{{ _('proudly powered by **DMOJ**')|markdown('default', strip_paragraphs=True) }}</a> |
             {% if misc_config.footer %}
                 {{ misc_config.footer|safe }} |
             {% endif %}
diff --git a/templates/contest/ics3u_report.html b/templates/contest/ics3u_report.html
new file mode 100644
index 0000000000..ca94053817
--- /dev/null
+++ b/templates/contest/ics3u_report.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="stylesheet" href="style.css">
+    <link rel="stylesheet" href="pygment-github.css" type="text/css">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <style>
+        html {
+            background: white;
+        }
+
+        body {
+            page-break-after: always;
+            background: white;
+        }
+
+        * {
+            font-family: sans-serif;
+        }
+
+        table {
+            border-collapse: collapse;
+            width: 100%;
+        }
+
+        td, th {
+            border: 1px solid #dddddd;
+            text-align: left;
+            padding: 8px;
+        }
+
+        tr:nth-child(even) {
+            background-color: #dddddd;
+        }
+    </style>
+</head>
+
+<body>
+<h2>{{ contest.name }} ({{ contest.key }}) {% if teacher != None %} - {{ teacher.name }}{% endif %}</h2>
+<table>
+    <thead>
+    <tr>
+        <th>Real Name</th>
+        {% for problem in contest_problems %}
+            <th>Problem {{ loop.index }}
+                <div>Out of {{ problem.points }}</div>
+            </th>
+        {% endfor %}
+        <th>Points</th>
+    </tr>
+    </thead>
+    <tbody>
+    {{ scoreboard|safe }}
+    </tbody>
+</table>
+<br><br>
+{% for contest_problem in contest_problems %}
+    {% with problem=contest_problem.problem, problem_name=contest_problem.problem.name, description=contest_problem.problem.description, url="" %}
+        <h2 style="color:#393630; display: inline-block;">{{ problem_name }}</h2>
+        <hr>
+        <div align="center" style="position: relative;">
+            <div class="problem-info-entry">
+                <b>{{ _('Time Limit:') }}</b> {{ problem.time_limit }}s
+                {% for name, limit in problem.language_time_limit %}
+                    <div class="lang-limit">
+                        <span class="lang-name">{{ name }}</span>
+                        <span>{{ limit }}s</span>
+                    </div>
+                {% endfor %}
+            </div>
+            <div class="problem-info-entry">
+                <b>{{ _('Memory Limit:') }}</b> {{ problem.memory_limit|kbsimpleformat }}
+                {% for name, limit in problem.language_memory_limit %}
+                    <div class="lang-limit">
+                        <span class="lang-name">{{ name }}</span>
+                        <span>{{ limit|kbsimpleformat }}</span>
+                    </div>
+                {% endfor %}
+            </div>
+        </div>
+        <hr style="clear: both;">
+        <div class="content-description printing">
+            {{ description|markdown(problem.markdown_style, 'tex' if math_engine == 'jax' else math_engine)|reference|absolutify(url)|str|safe }}
+        </div>
+        <br>
+        {% if problem.solution %}
+            <h3>Editorial for {{ problem_name }}</h3>
+            <div class="content-description printing">
+                {{ problem.solution.content|markdown('solution', MATH_ENGINE)|reference|str|safe }}
+            </div>
+        {% endif %}
+    {% endwith %}
+    <br>
+{% endfor %}
+<script type="text/javascript" src="mathjax_config.js"></script>
+<script type="text/javascript"
+        src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_HTML"></script>
+<script type="text/javascript">
+    MathJax.Hub.Register.StartupHook("End", function () {
+        if (typeof window.callPhantom === 'function')
+            window.callPhantom({
+                'action': 'snapshot'
+            });
+        document.body.classList.add('math-loaded');
+    });
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/templates/problem/manage_submission.html b/templates/problem/manage_submission.html
index 9cd3d7a385..59cf05dd14 100644
--- a/templates/problem/manage_submission.html
+++ b/templates/problem/manage_submission.html
@@ -19,10 +19,10 @@
 
         .pane h3 {
             display: block;
-            background: #3b3b3b;
+            background: #3737B4;
             padding: 5px 10px 10px;
             margin: -10px -10px 10px;
-            border-radius: 5px 5px 0 0;
+            border-radius: 1px 1px 0 0;
             color: white;
         }
 
diff --git a/templates/registration/password_reset_email.html b/templates/registration/password_reset_email.html
index b20e8d9fa0..abc8877d22 100644
--- a/templates/registration/password_reset_email.html
+++ b/templates/registration/password_reset_email.html
@@ -2,7 +2,7 @@
 <a href="{{ protocol }}://{{ domain }}"><img src="{{ protocol }}://{{ domain }}/static/icons/logo.svg" alt="{{ site_name }}" width="160" height="44"></a>
 </div></div>
 
-<div style="border:2px solid #337ab7;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;">
+<div style="border:2px solid #F74D56;margin:4px 0;"><div style="background:#3737B4;border:12px solid #F74D56;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;">
 <strong>{{ _("Forgot your password on the %(site_name)s? Don't worry!", site_name=site_name) }}</strong>
 <br><br>
 {{ _('To reset the password for your account "%(username)s", click the link below.', username=user.get_username()) }}
diff --git a/templates/site-logo-fragment.html b/templates/site-logo-fragment.html
index 9c14046a12..734e5a12ae 100644
--- a/templates/site-logo-fragment.html
+++ b/templates/site-logo-fragment.html
@@ -3,6 +3,6 @@
 {% elif logo_override_image is defined and logo_override_image %}
     <img src="{{ logo_override_image|camo }}" alt="{{ SITE_NAME }}" height="44" style="border: none">
 {% else %}
-    <img src="{{ static('icons/logo.svg') }}" alt="{{ SITE_NAME }}" width="160" height="44"
+    <img src="{{ static('icons/logo.png') }}" alt="{{ SITE_NAME }}" height="44"
          onerror="this.src=&quot;{{ static('icons/logo.png') }}&quot;; this.onerror=null" style="border: none">
 {% endif %}
diff --git a/templates/user/base-users-table.html b/templates/user/base-users-table.html
index e6fdc3e8ee..2cdf4903be 100644
--- a/templates/user/base-users-table.html
+++ b/templates/user/base-users-table.html
@@ -4,6 +4,10 @@
         <th class="header rank">{{ rank_header or _("Rank") }}</th>
         {% block after_rank_head %}{% endblock %}
         <th class="header username">{{ _('Username') }}</th>
+        {% block after_username_head %}{% endblock %}
+        {% if perms.judge.view_name %}
+            <th class="header realname">{{ _('Real Name') }}</th>
+        {% endif %}
         {% block before_point_head %}{% endblock %}
 
         <th class="header points">
@@ -21,6 +25,12 @@
             <td>{{ rank }}</td>
             {% block after_rank scoped %}{% endblock %}
             <td class="user-name">{{ link_user(user) }} {% block user_data scoped %}{% endblock %}</td>
+            {% block after_username scoped %}{% endblock %}
+            {% if perms.judge.view_name %}
+                <td class="real-name">
+                    {{ user.user.get_full_name() }}
+                </td>
+            {% endif %}
             {% block before_point scoped %}{% endblock %}
             {% block point scoped %}
                 <td title="{{ user.performance_points|floatformat(2) }}" class="user-points">

From afac71d6a6d5fb881eadefe7ad27157ac947f53c Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Wed, 26 Jun 2024 23:15:11 -0400
Subject: [PATCH 02/57] moved dmoj dir

---
 {dmoj => wlmoj}/__init__.py      | 0
 {dmoj => wlmoj}/celery.py        | 0
 {dmoj => wlmoj}/settings.py      | 0
 {dmoj => wlmoj}/throttle_mail.py | 0
 {dmoj => wlmoj}/wsgi.py          | 0
 {dmoj => wlmoj}/wsgi_async.py    | 0
 6 files changed, 0 insertions(+), 0 deletions(-)
 rename {dmoj => wlmoj}/__init__.py (100%)
 rename {dmoj => wlmoj}/celery.py (100%)
 rename {dmoj => wlmoj}/settings.py (100%)
 rename {dmoj => wlmoj}/throttle_mail.py (100%)
 rename {dmoj => wlmoj}/wsgi.py (100%)
 rename {dmoj => wlmoj}/wsgi_async.py (100%)

diff --git a/dmoj/__init__.py b/wlmoj/__init__.py
similarity index 100%
rename from dmoj/__init__.py
rename to wlmoj/__init__.py
diff --git a/dmoj/celery.py b/wlmoj/celery.py
similarity index 100%
rename from dmoj/celery.py
rename to wlmoj/celery.py
diff --git a/dmoj/settings.py b/wlmoj/settings.py
similarity index 100%
rename from dmoj/settings.py
rename to wlmoj/settings.py
diff --git a/dmoj/throttle_mail.py b/wlmoj/throttle_mail.py
similarity index 100%
rename from dmoj/throttle_mail.py
rename to wlmoj/throttle_mail.py
diff --git a/dmoj/wsgi.py b/wlmoj/wsgi.py
similarity index 100%
rename from dmoj/wsgi.py
rename to wlmoj/wsgi.py
diff --git a/dmoj/wsgi_async.py b/wlmoj/wsgi_async.py
similarity index 100%
rename from dmoj/wsgi_async.py
rename to wlmoj/wsgi_async.py

From eaac752085008a12387bd35d34ecb1f681597ec1 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Wed, 26 Jun 2024 23:17:21 -0400
Subject: [PATCH 03/57] add urls

---
 {dmoj => wlmoj}/urls.py | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename {dmoj => wlmoj}/urls.py (100%)

diff --git a/dmoj/urls.py b/wlmoj/urls.py
similarity index 100%
rename from dmoj/urls.py
rename to wlmoj/urls.py

From 3e60e93cc311bdc849b066a7d88774c6854fff82 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Wed, 26 Jun 2024 23:18:29 -0400
Subject: [PATCH 04/57] import bugs

---
 dmoj_celery.py    | 2 +-
 wlmoj/__init__.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dmoj_celery.py b/dmoj_celery.py
index 3f9701f17e..3cad542993 100644
--- a/dmoj_celery.py
+++ b/dmoj_celery.py
@@ -9,4 +9,4 @@
 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
 
 # noinspection PyUnresolvedReferences
-from dmoj.celery import app  # noqa: E402, F401, imported for side effect
+from wlmoj.celery import app  # noqa: E402, F401, imported for side effect
diff --git a/wlmoj/__init__.py b/wlmoj/__init__.py
index 2ed8858db3..77f07a154b 100644
--- a/wlmoj/__init__.py
+++ b/wlmoj/__init__.py
@@ -1 +1 @@
-from dmoj.celery import app as celery_app
+from wlmoj.celery import app as celery_app

From 7d5a37793aca860b1a533d1998f4e7dd5f406002 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Wed, 26 Jun 2024 23:47:48 -0400
Subject: [PATCH 05/57] fix settings

---
 dmoj_bridge_async.py | 2 +-
 dmoj_celery.py       | 2 +-
 manage.py            | 2 +-
 wlmoj/wsgi.py        | 2 +-
 wlmoj/wsgi_async.py  | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/dmoj_bridge_async.py b/dmoj_bridge_async.py
index 376f8cf8d0..0a5ddb35c2 100644
--- a/dmoj_bridge_async.py
+++ b/dmoj_bridge_async.py
@@ -2,7 +2,7 @@
 
 import gevent.monkey  # noqa: I100, gevent must be imported here
 
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
 gevent.monkey.patch_all()
 
 # noinspection PyUnresolvedReferences
diff --git a/dmoj_celery.py b/dmoj_celery.py
index 3cad542993..fe82a88bc0 100644
--- a/dmoj_celery.py
+++ b/dmoj_celery.py
@@ -6,7 +6,7 @@
     import dmoj_install_pymysql  # noqa: F401, imported for side effect
 
 # set the default Django settings module for the 'celery' program.
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
 
 # noinspection PyUnresolvedReferences
 from wlmoj.celery import app  # noqa: E402, F401, imported for side effect
diff --git a/manage.py b/manage.py
index adaffbd994..54f584103b 100755
--- a/manage.py
+++ b/manage.py
@@ -8,7 +8,7 @@
     import dmoj_install_pymysql  # noqa: F401, imported for side effect
 
 if __name__ == '__main__':
-    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
+    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
 
     from django.core.management import execute_from_command_line
     execute_from_command_line(sys.argv)
diff --git a/wlmoj/wsgi.py b/wlmoj/wsgi.py
index 6bec753460..25ae16c821 100644
--- a/wlmoj/wsgi.py
+++ b/wlmoj/wsgi.py
@@ -1,5 +1,5 @@
 import os
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
 
 try:
     import MySQLdb  # noqa: F401, imported for side effect
diff --git a/wlmoj/wsgi_async.py b/wlmoj/wsgi_async.py
index ec114d1fd8..407af8a510 100644
--- a/wlmoj/wsgi_async.py
+++ b/wlmoj/wsgi_async.py
@@ -2,7 +2,7 @@
 
 import gevent.monkey  # noqa: I100, gevent must be imported here
 
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
 gevent.monkey.patch_all()
 
 # noinspection PyUnresolvedReferences

From 1d4566cfbf28863f9af3b91480614dbb0e1f9ea9 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Wed, 26 Jun 2024 23:55:21 -0400
Subject: [PATCH 06/57] some small settings

---
 .flake8                                       |  2 +-
 .gitignore                                    |  4 +-
 judge/views/contests.py                       |  2 +-
 judge/widgets/select2.py                      |  2 +-
 locale/ar/LC_MESSAGES/django.po               | 48 +++++++++----------
 make_style.sh                                 |  2 +-
 .../{select2-dmoj.scss => select2-wlmoj.scss} |  0
 resources/style.scss                          |  2 +-
 wlmoj/settings.py                             |  4 +-
 9 files changed, 33 insertions(+), 33 deletions(-)
 rename resources/{select2-dmoj.scss => select2-wlmoj.scss} (100%)

diff --git a/.flake8 b/.flake8
index 55650c87fe..169fef04dd 100644
--- a/.flake8
+++ b/.flake8
@@ -23,6 +23,6 @@ per-file-ignores =
     ./judge/widgets/pagedown.py:E303
 exclude =
     # belongs to the user
-    ./dmoj/local_settings.py,
+    ./wlmoj/local_settings.py,
     # is actually a fragment to be included by settings.py
     ./.ci.settings.py,
diff --git a/.gitignore b/.gitignore
index a755bd0f34..cf46bd9c7a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,10 +6,10 @@
 *.mo
 *~
 *.swp
-dmoj/local_settings.py
+wlmoj/local_settings.py
 resources/dark
 resources/martor-description.css
-resources/select2-dmoj.css
+resources/select2-wlmoj.css
 resources/style.css
 resources/vars.scss
 sass_processed
diff --git a/judge/views/contests.py b/judge/views/contests.py
index 25d357562a..22967b57ac 100644
--- a/judge/views/contests.py
+++ b/judge/views/contests.py
@@ -548,7 +548,7 @@ def get_context_data(self, **kwargs):
 class ContestICal(TitleMixin, ContestListMixin, BaseListView):
     def generate_ical(self):
         cal = ICalendar()
-        cal.add('prodid', '-//DMOJ//NONSGML Contests Calendar//')
+        cal.add('prodid', '-//WLMOJ//NONSGML Contests Calendar//')
         cal.add('version', '2.0')
 
         now = timezone.now().astimezone(timezone.utc)
diff --git a/judge/widgets/select2.py b/judge/widgets/select2.py
index 8ae0659851..aeb27a1b5f 100644
--- a/judge/widgets/select2.py
+++ b/judge/widgets/select2.py
@@ -103,7 +103,7 @@ class AdminSelect2Mixin(Select2Mixin):
     def media(self):
         return forms.Media(
             js=['admin/js/jquery.init.js', settings.SELECT2_JS_URL, 'django_select2.js'],
-            css={'screen': [settings.SELECT2_CSS_URL, 'select2-dmoj.css']},
+            css={'screen': [settings.SELECT2_CSS_URL, 'select2-wlmoj.css']},
         )
 
 
diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po
index 6c0746b335..4f4c07d548 100644
--- a/locale/ar/LC_MESSAGES/django.po
+++ b/locale/ar/LC_MESSAGES/django.po
@@ -17,95 +17,95 @@ msgstr ""
 "X-Crowdin-File: django.po\n"
 "X-Crowdin-File-ID: 10\n"
 
-#: dmoj/settings.py:395
+#: wlmoj/settings.py:395
 msgid "Catalan"
 msgstr "الكاتالونية"
 
-#: dmoj/settings.py:396
+#: wlmoj/settings.py:396
 msgid "German"
 msgstr "الألمانية"
 
-#: dmoj/settings.py:397
+#: wlmoj/settings.py:397
 msgid "Greek"
 msgstr ""
 
-#: dmoj/settings.py:398
+#: wlmoj/settings.py:398
 msgid "English"
 msgstr "الانجليزية"
 
-#: dmoj/settings.py:399
+#: wlmoj/settings.py:399
 msgid "Spanish"
 msgstr "الإسبانية"
 
-#: dmoj/settings.py:400
+#: wlmoj/settings.py:400
 msgid "French"
 msgstr "الفرنسية"
 
-#: dmoj/settings.py:401
+#: wlmoj/settings.py:401
 msgid "Croatian"
 msgstr "الكرواتية"
 
-#: dmoj/settings.py:402
+#: wlmoj/settings.py:402
 msgid "Hungarian"
 msgstr "الهنغارية"
 
-#: dmoj/settings.py:403
+#: wlmoj/settings.py:403
 msgid "Japanese"
 msgstr "يابانية"
 
-#: dmoj/settings.py:404
+#: wlmoj/settings.py:404
 msgid "Kazakh"
 msgstr ""
 
-#: dmoj/settings.py:405
+#: wlmoj/settings.py:405
 msgid "Korean"
 msgstr "الكورية"
 
-#: dmoj/settings.py:406
+#: wlmoj/settings.py:406
 msgid "Brazilian Portuguese"
 msgstr "البرتغالية"
 
-#: dmoj/settings.py:407
+#: wlmoj/settings.py:407
 msgid "Romanian"
 msgstr ""
 
-#: dmoj/settings.py:408
+#: wlmoj/settings.py:408
 msgid "Russian"
 msgstr ""
 
-#: dmoj/settings.py:409
+#: wlmoj/settings.py:409
 msgid "Serbian (Latin)"
 msgstr ""
 
-#: dmoj/settings.py:410
+#: wlmoj/settings.py:410
 msgid "Turkish"
 msgstr ""
 
-#: dmoj/settings.py:411
+#: wlmoj/settings.py:411
 msgid "Vietnamese"
 msgstr ""
 
-#: dmoj/settings.py:412
+#: wlmoj/settings.py:412
 msgid "Simplified Chinese"
 msgstr ""
 
-#: dmoj/settings.py:413
+#: wlmoj/settings.py:413
 msgid "Traditional Chinese"
 msgstr ""
 
-#: dmoj/urls.py:31
+#: wlmoj/urls.py:31
 msgid "Activation Successful!"
 msgstr ""
 
-#: dmoj/urls.py:39
+#: wlmoj/urls.py:39
 msgid "Registration Completed"
 msgstr ""
 
-#: dmoj/urls.py:43
+#: wlmoj/urls.py:43
 msgid "Registration Not Allowed"
 msgstr ""
 
-#: dmoj/urls.py:95 templates/base.html:193
+#: wlmoj/urls.py:95 templates/base.html:193
 msgid "Home"
 msgstr ""
 
@@ -3956,7 +3956,7 @@ msgid "This site works best with JavaScript enabled."
 msgstr ""
 
 #: templates/base.html:293
-msgid "proudly powered by **DMOJ**"
+msgid "proudly powered by **wlmoj**"
 msgstr ""
 
 #: templates/blog/content.html:13 templates/comments/list.html:89
diff --git a/make_style.sh b/make_style.sh
index f926575efc..164c625f48 100755
--- a/make_style.sh
+++ b/make_style.sh
@@ -20,7 +20,7 @@ build_style() {
   echo "Creating $1 style..."
   cp resources/vars-$1.scss resources/vars.scss
   sass resources:sass_processed
-  postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-dmoj.css --verbose --use autoprefixer -d $2
+  postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-wlmoj.css --verbose --use autoprefixer -d $2
 }
 
 build_style 'default' 'resources'
diff --git a/resources/select2-dmoj.scss b/resources/select2-wlmoj.scss
similarity index 100%
rename from resources/select2-dmoj.scss
rename to resources/select2-wlmoj.scss
diff --git a/resources/style.scss b/resources/style.scss
index bd206063d1..5b2fbeac5e 100644
--- a/resources/style.scss
+++ b/resources/style.scss
@@ -19,4 +19,4 @@
 @import "submission";
 @import "contest";
 @import "misc";
-@import "select2-dmoj";
+@import "select2-wlmoj";
diff --git a/wlmoj/settings.py b/wlmoj/settings.py
index 9c8893417a..afcef50d2e 100644
--- a/wlmoj/settings.py
+++ b/wlmoj/settings.py
@@ -325,9 +325,9 @@
 
 SILENCED_SYSTEM_CHECKS = ['urls.W002', 'fields.W342']
 
-ROOT_URLCONF = 'dmoj.urls'
+ROOT_URLCONF = 'wlmoj.urls'
 LOGIN_REDIRECT_URL = '/user'
-WSGI_APPLICATION = 'dmoj.wsgi.application'
+WSGI_APPLICATION = 'wlmoj.wsgi.application'
 DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
 
 TEMPLATES = [

From 8d8ebd8eda873cecc54b01c9f5523398e3364d76 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Wed, 26 Jun 2024 23:59:07 -0400
Subject: [PATCH 07/57] update celery

---
 manage.py                                           | 2 +-
 wlmoj/celery.py                                     | 2 +-
 wlmoj/wsgi_async.py                                 | 2 +-
 dmoj_bridge_async.py => wlmoj_bridge_async.py       | 2 +-
 dmoj_celery.py => wlmoj_celery.py                   | 2 +-
 dmoj_install_pymysql.py => wlmoj_install_pymysql.py | 0
 6 files changed, 5 insertions(+), 5 deletions(-)
 rename dmoj_bridge_async.py => wlmoj_bridge_async.py (83%)
 rename dmoj_celery.py => wlmoj_celery.py (82%)
 rename dmoj_install_pymysql.py => wlmoj_install_pymysql.py (100%)

diff --git a/manage.py b/manage.py
index 54f584103b..cc1640d5f6 100755
--- a/manage.py
+++ b/manage.py
@@ -5,7 +5,7 @@
 try:
     import MySQLdb  # noqa: F401, imported for side effect
 except ImportError:
-    import dmoj_install_pymysql  # noqa: F401, imported for side effect
+    import wlmoj_install_pymysql  # noqa: F401, imported for side effect
 
 if __name__ == '__main__':
     os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
diff --git a/wlmoj/celery.py b/wlmoj/celery.py
index e1da640642..d220ab639c 100644
--- a/wlmoj/celery.py
+++ b/wlmoj/celery.py
@@ -4,7 +4,7 @@
 from celery import Celery
 from celery.signals import task_failure
 
-app = Celery('dmoj')
+app = Celery('wlmoj')
 
 from django.conf import settings  # noqa: E402, I202, django must be imported here
 app.config_from_object(settings, namespace='CELERY')
diff --git a/wlmoj/wsgi_async.py b/wlmoj/wsgi_async.py
index 407af8a510..c7227f7920 100644
--- a/wlmoj/wsgi_async.py
+++ b/wlmoj/wsgi_async.py
@@ -6,7 +6,7 @@
 gevent.monkey.patch_all()
 
 # noinspection PyUnresolvedReferences
-import dmoj_install_pymysql  # noqa: E402, F401, I100, I202, imported for side effect
+import wlmoj_install_pymysql  # noqa: E402, F401, I100, I202, imported for side effect
 
 from django.core.wsgi import get_wsgi_application  # noqa: E402, I100, I202, django must be imported here
 application = get_wsgi_application()
diff --git a/dmoj_bridge_async.py b/wlmoj_bridge_async.py
similarity index 83%
rename from dmoj_bridge_async.py
rename to wlmoj_bridge_async.py
index 0a5ddb35c2..97c6b1f9f9 100644
--- a/dmoj_bridge_async.py
+++ b/wlmoj_bridge_async.py
@@ -6,7 +6,7 @@
 gevent.monkey.patch_all()
 
 # noinspection PyUnresolvedReferences
-import dmoj_install_pymysql  # noqa: E402, F401, I100, I202, imported for side effect
+import wlmoj_install_pymysql  # noqa: E402, F401, I100, I202, imported for side effect
 
 import django  # noqa: E402, F401, I100, I202, django must be imported here
 django.setup()
diff --git a/dmoj_celery.py b/wlmoj_celery.py
similarity index 82%
rename from dmoj_celery.py
rename to wlmoj_celery.py
index fe82a88bc0..ac4e391b1f 100644
--- a/dmoj_celery.py
+++ b/wlmoj_celery.py
@@ -3,7 +3,7 @@
 try:
     import MySQLdb  # noqa: F401, imported for side effect
 except ImportError:
-    import dmoj_install_pymysql  # noqa: F401, imported for side effect
+    import wlmoj_install_pymysql  # noqa: F401, imported for side effect
 
 # set the default Django settings module for the 'celery' program.
 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
diff --git a/dmoj_install_pymysql.py b/wlmoj_install_pymysql.py
similarity index 100%
rename from dmoj_install_pymysql.py
rename to wlmoj_install_pymysql.py

From a62f666268b7b0a8446e3af658d06e8d58c65056 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Thu, 27 Jun 2024 00:42:30 -0400
Subject: [PATCH 08/57] update ci

---
 .github/workflows/build.yml           | 2 +-
 .github/workflows/compilemessages.yml | 2 +-
 .github/workflows/makemessages.yml    | 2 +-
 .github/workflows/updatemessages.yml  | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 56333b47a6..3d4d1e86f2 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -33,7 +33,7 @@ jobs:
         pip install wheel
         pip install -r requirements.txt
         pip install mysqlclient coverage
-        cp .ci.settings.py dmoj/local_settings.py
+        cp .ci.settings.py wlmoj/local_settings.py
     - name: Start MySQL
       run: sudo systemctl start mysql.service
     - name: Run unit tests
diff --git a/.github/workflows/compilemessages.yml b/.github/workflows/compilemessages.yml
index 106b353fbe..11926f335f 100644
--- a/.github/workflows/compilemessages.yml
+++ b/.github/workflows/compilemessages.yml
@@ -36,5 +36,5 @@ jobs:
       shell: bash
     - name: Compile messages
       run: |
-        echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py
+        echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py
         python manage.py compilemessages
diff --git a/.github/workflows/makemessages.yml b/.github/workflows/makemessages.yml
index c5bd6aef41..d02afb5701 100644
--- a/.github/workflows/makemessages.yml
+++ b/.github/workflows/makemessages.yml
@@ -25,7 +25,7 @@ jobs:
          pip install pymysql
     - name: Collect localizable strings
       run: |
-        echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py
+        echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py
         python manage.py makemessages -l en -e py,html,txt
         python manage.py makemessages -l en -d djangojs
     - name: Upload strings to Crowdin
diff --git a/.github/workflows/updatemessages.yml b/.github/workflows/updatemessages.yml
index 1c56045a8c..f767200f11 100644
--- a/.github/workflows/updatemessages.yml
+++ b/.github/workflows/updatemessages.yml
@@ -27,7 +27,7 @@ jobs:
         pip install pymysql
     - name: Update English source strings
       run: |
-        echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py
+        echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py
         python manage.py makemessages -l en -e py,html,txt
         python manage.py makemessages -l en -d djangojs
     - name: Download strings from Crowdin

From d41de10d59e207723ea98a557ab9994370ae645b Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Thu, 27 Jun 2024 23:27:22 -0400
Subject: [PATCH 09/57] Feat: Docker Swarm! undo some bad changed + additional
 renaming

---
 .flake8                                       |  2 +-
 .github/workflows/build.yml                   |  2 +-
 .github/workflows/compilemessages.yml         |  2 +-
 .github/workflows/makemessages.yml            |  2 +-
 .github/workflows/updatemessages.yml          |  2 +-
 .gitignore                                    |  4 +-
 dmoj/__init__.py                              |  1 +
 {wlmoj => dmoj}/celery.py                     |  2 +-
 {wlmoj => dmoj}/settings.py                   |  4 +-
 {wlmoj => dmoj}/throttle_mail.py              |  0
 {wlmoj => dmoj}/urls.py                       |  0
 {wlmoj => dmoj}/wsgi.py                       |  2 +-
 {wlmoj => dmoj}/wsgi_async.py                 |  4 +-
 wlmoj_bridge_async.py => dmoj_bridge_async.py |  4 +-
 dmoj_celery.py                                | 12 +++++
 ...tall_pymysql.py => dmoj_install_pymysql.py |  0
 judge/widgets/select2.py                      |  2 +-
 locale/ar/LC_MESSAGES/django.po               | 46 +++++++++----------
 make_style.sh                                 |  2 +-
 manage.py                                     |  4 +-
 .../{select2-wlmoj.scss => select2-dmoj.scss} |  0
 resources/style.scss                          |  2 +-
 wlmoj/__init__.py                             |  1 -
 wlmoj_celery.py                               | 12 -----
 24 files changed, 56 insertions(+), 56 deletions(-)
 create mode 100644 dmoj/__init__.py
 rename {wlmoj => dmoj}/celery.py (97%)
 rename {wlmoj => dmoj}/settings.py (99%)
 rename {wlmoj => dmoj}/throttle_mail.py (100%)
 rename {wlmoj => dmoj}/urls.py (100%)
 rename {wlmoj => dmoj}/wsgi.py (80%)
 rename {wlmoj => dmoj}/wsgi_async.py (65%)
 rename wlmoj_bridge_async.py => dmoj_bridge_async.py (71%)
 create mode 100644 dmoj_celery.py
 rename wlmoj_install_pymysql.py => dmoj_install_pymysql.py (100%)
 rename resources/{select2-wlmoj.scss => select2-dmoj.scss} (100%)
 delete mode 100644 wlmoj/__init__.py
 delete mode 100644 wlmoj_celery.py

diff --git a/.flake8 b/.flake8
index 169fef04dd..55650c87fe 100644
--- a/.flake8
+++ b/.flake8
@@ -23,6 +23,6 @@ per-file-ignores =
     ./judge/widgets/pagedown.py:E303
 exclude =
     # belongs to the user
-    ./wlmoj/local_settings.py,
+    ./dmoj/local_settings.py,
     # is actually a fragment to be included by settings.py
     ./.ci.settings.py,
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3d4d1e86f2..56333b47a6 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -33,7 +33,7 @@ jobs:
         pip install wheel
         pip install -r requirements.txt
         pip install mysqlclient coverage
-        cp .ci.settings.py wlmoj/local_settings.py
+        cp .ci.settings.py dmoj/local_settings.py
     - name: Start MySQL
       run: sudo systemctl start mysql.service
     - name: Run unit tests
diff --git a/.github/workflows/compilemessages.yml b/.github/workflows/compilemessages.yml
index 11926f335f..106b353fbe 100644
--- a/.github/workflows/compilemessages.yml
+++ b/.github/workflows/compilemessages.yml
@@ -36,5 +36,5 @@ jobs:
       shell: bash
     - name: Compile messages
       run: |
-        echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py
+        echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py
         python manage.py compilemessages
diff --git a/.github/workflows/makemessages.yml b/.github/workflows/makemessages.yml
index d02afb5701..c5bd6aef41 100644
--- a/.github/workflows/makemessages.yml
+++ b/.github/workflows/makemessages.yml
@@ -25,7 +25,7 @@ jobs:
          pip install pymysql
     - name: Collect localizable strings
       run: |
-        echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py
+        echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py
         python manage.py makemessages -l en -e py,html,txt
         python manage.py makemessages -l en -d djangojs
     - name: Upload strings to Crowdin
diff --git a/.github/workflows/updatemessages.yml b/.github/workflows/updatemessages.yml
index f767200f11..1c56045a8c 100644
--- a/.github/workflows/updatemessages.yml
+++ b/.github/workflows/updatemessages.yml
@@ -27,7 +27,7 @@ jobs:
         pip install pymysql
     - name: Update English source strings
       run: |
-        echo "STATIC_ROOT = '/tmp'" > wlmoj/local_settings.py
+        echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py
         python manage.py makemessages -l en -e py,html,txt
         python manage.py makemessages -l en -d djangojs
     - name: Download strings from Crowdin
diff --git a/.gitignore b/.gitignore
index cf46bd9c7a..a755bd0f34 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,10 +6,10 @@
 *.mo
 *~
 *.swp
-wlmoj/local_settings.py
+dmoj/local_settings.py
 resources/dark
 resources/martor-description.css
-resources/select2-wlmoj.css
+resources/select2-dmoj.css
 resources/style.css
 resources/vars.scss
 sass_processed
diff --git a/dmoj/__init__.py b/dmoj/__init__.py
new file mode 100644
index 0000000000..2ed8858db3
--- /dev/null
+++ b/dmoj/__init__.py
@@ -0,0 +1 @@
+from dmoj.celery import app as celery_app
diff --git a/wlmoj/celery.py b/dmoj/celery.py
similarity index 97%
rename from wlmoj/celery.py
rename to dmoj/celery.py
index d220ab639c..e1da640642 100644
--- a/wlmoj/celery.py
+++ b/dmoj/celery.py
@@ -4,7 +4,7 @@
 from celery import Celery
 from celery.signals import task_failure
 
-app = Celery('wlmoj')
+app = Celery('dmoj')
 
 from django.conf import settings  # noqa: E402, I202, django must be imported here
 app.config_from_object(settings, namespace='CELERY')
diff --git a/wlmoj/settings.py b/dmoj/settings.py
similarity index 99%
rename from wlmoj/settings.py
rename to dmoj/settings.py
index afcef50d2e..9c8893417a 100644
--- a/wlmoj/settings.py
+++ b/dmoj/settings.py
@@ -325,9 +325,9 @@
 
 SILENCED_SYSTEM_CHECKS = ['urls.W002', 'fields.W342']
 
-ROOT_URLCONF = 'wlmoj.urls'
+ROOT_URLCONF = 'dmoj.urls'
 LOGIN_REDIRECT_URL = '/user'
-WSGI_APPLICATION = 'wlmoj.wsgi.application'
+WSGI_APPLICATION = 'dmoj.wsgi.application'
 DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
 
 TEMPLATES = [
diff --git a/wlmoj/throttle_mail.py b/dmoj/throttle_mail.py
similarity index 100%
rename from wlmoj/throttle_mail.py
rename to dmoj/throttle_mail.py
diff --git a/wlmoj/urls.py b/dmoj/urls.py
similarity index 100%
rename from wlmoj/urls.py
rename to dmoj/urls.py
diff --git a/wlmoj/wsgi.py b/dmoj/wsgi.py
similarity index 80%
rename from wlmoj/wsgi.py
rename to dmoj/wsgi.py
index 25ae16c821..6bec753460 100644
--- a/wlmoj/wsgi.py
+++ b/dmoj/wsgi.py
@@ -1,5 +1,5 @@
 import os
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
 
 try:
     import MySQLdb  # noqa: F401, imported for side effect
diff --git a/wlmoj/wsgi_async.py b/dmoj/wsgi_async.py
similarity index 65%
rename from wlmoj/wsgi_async.py
rename to dmoj/wsgi_async.py
index c7227f7920..ec114d1fd8 100644
--- a/wlmoj/wsgi_async.py
+++ b/dmoj/wsgi_async.py
@@ -2,11 +2,11 @@
 
 import gevent.monkey  # noqa: I100, gevent must be imported here
 
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
 gevent.monkey.patch_all()
 
 # noinspection PyUnresolvedReferences
-import wlmoj_install_pymysql  # noqa: E402, F401, I100, I202, imported for side effect
+import dmoj_install_pymysql  # noqa: E402, F401, I100, I202, imported for side effect
 
 from django.core.wsgi import get_wsgi_application  # noqa: E402, I100, I202, django must be imported here
 application = get_wsgi_application()
diff --git a/wlmoj_bridge_async.py b/dmoj_bridge_async.py
similarity index 71%
rename from wlmoj_bridge_async.py
rename to dmoj_bridge_async.py
index 97c6b1f9f9..376f8cf8d0 100644
--- a/wlmoj_bridge_async.py
+++ b/dmoj_bridge_async.py
@@ -2,11 +2,11 @@
 
 import gevent.monkey  # noqa: I100, gevent must be imported here
 
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
 gevent.monkey.patch_all()
 
 # noinspection PyUnresolvedReferences
-import wlmoj_install_pymysql  # noqa: E402, F401, I100, I202, imported for side effect
+import dmoj_install_pymysql  # noqa: E402, F401, I100, I202, imported for side effect
 
 import django  # noqa: E402, F401, I100, I202, django must be imported here
 django.setup()
diff --git a/dmoj_celery.py b/dmoj_celery.py
new file mode 100644
index 0000000000..3f9701f17e
--- /dev/null
+++ b/dmoj_celery.py
@@ -0,0 +1,12 @@
+import os
+
+try:
+    import MySQLdb  # noqa: F401, imported for side effect
+except ImportError:
+    import dmoj_install_pymysql  # noqa: F401, imported for side effect
+
+# set the default Django settings module for the 'celery' program.
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
+
+# noinspection PyUnresolvedReferences
+from dmoj.celery import app  # noqa: E402, F401, imported for side effect
diff --git a/wlmoj_install_pymysql.py b/dmoj_install_pymysql.py
similarity index 100%
rename from wlmoj_install_pymysql.py
rename to dmoj_install_pymysql.py
diff --git a/judge/widgets/select2.py b/judge/widgets/select2.py
index aeb27a1b5f..8ae0659851 100644
--- a/judge/widgets/select2.py
+++ b/judge/widgets/select2.py
@@ -103,7 +103,7 @@ class AdminSelect2Mixin(Select2Mixin):
     def media(self):
         return forms.Media(
             js=['admin/js/jquery.init.js', settings.SELECT2_JS_URL, 'django_select2.js'],
-            css={'screen': [settings.SELECT2_CSS_URL, 'select2-wlmoj.css']},
+            css={'screen': [settings.SELECT2_CSS_URL, 'select2-dmoj.css']},
         )
 
 
diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po
index 4f4c07d548..956be3e653 100644
--- a/locale/ar/LC_MESSAGES/django.po
+++ b/locale/ar/LC_MESSAGES/django.po
@@ -17,95 +17,95 @@ msgstr ""
 "X-Crowdin-File: django.po\n"
 "X-Crowdin-File-ID: 10\n"
 
-#: wlmoj/settings.py:395
+#: dmoj/settings.py:395
 msgid "Catalan"
 msgstr "الكاتالونية"
 
-#: wlmoj/settings.py:396
+#: dmoj/settings.py:396
 msgid "German"
 msgstr "الألمانية"
 
-#: wlmoj/settings.py:397
+#: dmoj/settings.py:397
 msgid "Greek"
 msgstr ""
 
-#: wlmoj/settings.py:398
+#: dmoj/settings.py:398
 msgid "English"
 msgstr "الانجليزية"
 
-#: wlmoj/settings.py:399
+#: dmoj/settings.py:399
 msgid "Spanish"
 msgstr "الإسبانية"
 
-#: wlmoj/settings.py:400
+#: dmoj/settings.py:400
 msgid "French"
 msgstr "الفرنسية"
 
-#: wlmoj/settings.py:401
+#: dmoj/settings.py:401
 msgid "Croatian"
 msgstr "الكرواتية"
 
-#: wlmoj/settings.py:402
+#: dmoj/settings.py:402
 msgid "Hungarian"
 msgstr "الهنغارية"
 
-#: wlmoj/settings.py:403
+#: dmoj/settings.py:403
 msgid "Japanese"
 msgstr "يابانية"
 
-#: wlmoj/settings.py:404
+#: dmoj/settings.py:404
 msgid "Kazakh"
 msgstr ""
 
-#: wlmoj/settings.py:405
+#: dmoj/settings.py:405
 msgid "Korean"
 msgstr "الكورية"
 
-#: wlmoj/settings.py:406
+#: dmoj/settings.py:406
 msgid "Brazilian Portuguese"
 msgstr "البرتغالية"
 
-#: wlmoj/settings.py:407
+#: dmoj/settings.py:407
 msgid "Romanian"
 msgstr ""
 
-#: wlmoj/settings.py:408
+#: dmoj/settings.py:408
 msgid "Russian"
 msgstr ""
 
-#: wlmoj/settings.py:409
+#: dmoj/settings.py:409
 msgid "Serbian (Latin)"
 msgstr ""
 
-#: wlmoj/settings.py:410
+#: dmoj/settings.py:410
 msgid "Turkish"
 msgstr ""
 
-#: wlmoj/settings.py:411
+#: dmoj/settings.py:411
 msgid "Vietnamese"
 msgstr ""
 
-#: wlmoj/settings.py:412
+#: dmoj/settings.py:412
 msgid "Simplified Chinese"
 msgstr ""
 
-#: wlmoj/settings.py:413
+#: dmoj/settings.py:413
 msgid "Traditional Chinese"
 msgstr ""
 
-#: wlmoj/urls.py:31
+#: dmoj/urls.py:31
 msgid "Activation Successful!"
 msgstr ""
 
-#: wlmoj/urls.py:39
+#: dmoj/urls.py:39
 msgid "Registration Completed"
 msgstr ""
 
-#: wlmoj/urls.py:43
+#: dmoj/urls.py:43
 msgid "Registration Not Allowed"
 msgstr ""
 
-#: wlmoj/urls.py:95 templates/base.html:193
+#: dmoj/urls.py:95 templates/base.html:193
 msgid "Home"
 msgstr ""
 
diff --git a/make_style.sh b/make_style.sh
index 164c625f48..f926575efc 100755
--- a/make_style.sh
+++ b/make_style.sh
@@ -20,7 +20,7 @@ build_style() {
   echo "Creating $1 style..."
   cp resources/vars-$1.scss resources/vars.scss
   sass resources:sass_processed
-  postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-wlmoj.css --verbose --use autoprefixer -d $2
+  postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-dmoj.css --verbose --use autoprefixer -d $2
 }
 
 build_style 'default' 'resources'
diff --git a/manage.py b/manage.py
index cc1640d5f6..adaffbd994 100755
--- a/manage.py
+++ b/manage.py
@@ -5,10 +5,10 @@
 try:
     import MySQLdb  # noqa: F401, imported for side effect
 except ImportError:
-    import wlmoj_install_pymysql  # noqa: F401, imported for side effect
+    import dmoj_install_pymysql  # noqa: F401, imported for side effect
 
 if __name__ == '__main__':
-    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
+    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dmoj.settings')
 
     from django.core.management import execute_from_command_line
     execute_from_command_line(sys.argv)
diff --git a/resources/select2-wlmoj.scss b/resources/select2-dmoj.scss
similarity index 100%
rename from resources/select2-wlmoj.scss
rename to resources/select2-dmoj.scss
diff --git a/resources/style.scss b/resources/style.scss
index 5b2fbeac5e..bd206063d1 100644
--- a/resources/style.scss
+++ b/resources/style.scss
@@ -19,4 +19,4 @@
 @import "submission";
 @import "contest";
 @import "misc";
-@import "select2-wlmoj";
+@import "select2-dmoj";
diff --git a/wlmoj/__init__.py b/wlmoj/__init__.py
deleted file mode 100644
index 77f07a154b..0000000000
--- a/wlmoj/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from wlmoj.celery import app as celery_app
diff --git a/wlmoj_celery.py b/wlmoj_celery.py
deleted file mode 100644
index ac4e391b1f..0000000000
--- a/wlmoj_celery.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import os
-
-try:
-    import MySQLdb  # noqa: F401, imported for side effect
-except ImportError:
-    import wlmoj_install_pymysql  # noqa: F401, imported for side effect
-
-# set the default Django settings module for the 'celery' program.
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wlmoj.settings')
-
-# noinspection PyUnresolvedReferences
-from wlmoj.celery import app  # noqa: E402, F401, imported for side effect

From 7c0632dfaedc98f8f74d836b17ee8ff155c7d894 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Thu, 27 Jun 2024 23:54:44 -0400
Subject: [PATCH 10/57] Add discord_integration to reqs

---
 requirements.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/requirements.txt b/requirements.txt
index 6aa8548128..61aa80b13b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -40,3 +40,4 @@ django-admin-sortable2<2
 icalendar
 # This is a celery dependency whose latest major version is breaking everything.
 importlib-metadata<5
+django-discord-integration

From 2b715101a62eb2304aeab096cb4a9420784610aa Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Fri, 28 Jun 2024 00:13:29 -0400
Subject: [PATCH 11/57] move where discord int is installed

---
 requirements.txt | 1 -
 1 file changed, 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index 61aa80b13b..6aa8548128 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -40,4 +40,3 @@ django-admin-sortable2<2
 icalendar
 # This is a celery dependency whose latest major version is breaking everything.
 importlib-metadata<5
-django-discord-integration

From 9fd74fbebce84db95f326be0cfd0be33562ea40d Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Fri, 28 Jun 2024 00:13:29 -0400
Subject: [PATCH 12/57] add old icon

---
 requirements.txt        |   1 -
 resources/icons/old.png | Bin 0 -> 19843 bytes
 2 files changed, 1 deletion(-)
 create mode 100644 resources/icons/old.png

diff --git a/requirements.txt b/requirements.txt
index 61aa80b13b..6aa8548128 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -40,4 +40,3 @@ django-admin-sortable2<2
 icalendar
 # This is a celery dependency whose latest major version is breaking everything.
 importlib-metadata<5
-django-discord-integration
diff --git a/resources/icons/old.png b/resources/icons/old.png
new file mode 100644
index 0000000000000000000000000000000000000000..c894f6b5bd1b0c8b4e7e0571a8c949175a52520a
GIT binary patch
literal 19843
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
E1?dhs9{>OV

literal 0
HcmV?d00001


From 35c3900c5ed598bac2cd5788513ab3983f5ad47e Mon Sep 17 00:00:00 2001
From: JojoTheWarrior <blahblahblah123toronto@gmail.com>
Date: Sat, 29 Jun 2024 15:13:41 -0400
Subject: [PATCH 13/57] add venv to gitignore

---
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitignore b/.gitignore
index a755bd0f34..1a0f3ac70f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,5 @@ resources/select2-dmoj.css
 resources/style.css
 resources/vars.scss
 sass_processed
+venv
+dmojsite
\ No newline at end of file

From 4b7bb32c31bf77b5451d0c8393e8a779bb87dc29 Mon Sep 17 00:00:00 2001
From: JojoTheWarrior <blahblahblah123toronto@gmail.com>
Date: Sat, 29 Jun 2024 15:28:02 -0400
Subject: [PATCH 14/57] add venv i

---
 "\357\200\274desired bridge log path\357\200\276" | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "\357\200\274desired bridge log path\357\200\276"

diff --git "a/\357\200\274desired bridge log path\357\200\276" "b/\357\200\274desired bridge log path\357\200\276"
new file mode 100644
index 0000000000..e69de29bb2

From 0158f50e2f9428c8c3c8edc4ae73050f43911447 Mon Sep 17 00:00:00 2001
From: JojoTheWarrior <blahblahblah123toronto@gmail.com>
Date: Sat, 29 Jun 2024 15:30:02 -0400
Subject: [PATCH 15/57] updated ignore

---
 .gitignore                                        | 3 ++-
 "\357\200\274desired bridge log path\357\200\276" | 0
 2 files changed, 2 insertions(+), 1 deletion(-)
 delete mode 100644 "\357\200\274desired bridge log path\357\200\276"

diff --git a/.gitignore b/.gitignore
index 1a0f3ac70f..b3e6b6a24e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,5 @@ resources/style.css
 resources/vars.scss
 sass_processed
 venv
-dmojsite
\ No newline at end of file
+dmojsite
+<desired bridge log path>
\ No newline at end of file
diff --git "a/\357\200\274desired bridge log path\357\200\276" "b/\357\200\274desired bridge log path\357\200\276"
deleted file mode 100644
index e69de29bb2..0000000000

From 48fe13e618da795c5b99d321b5dc77bebc7c7404 Mon Sep 17 00:00:00 2001
From: JojoTheWarrior <blahblahblah123toronto@gmail.com>
Date: Sat, 29 Jun 2024 15:32:04 -0400
Subject: [PATCH 16/57] add bridge.log to ignore

---
 .gitignore | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index b3e6b6a24e..f2ca1efc45 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,4 +15,5 @@ resources/vars.scss
 sass_processed
 venv
 dmojsite
-<desired bridge log path>
\ No newline at end of file
+<desired bridge log path>
+bridge.log
\ No newline at end of file

From c96d6929ab2fa977c4c331d26315523248863622 Mon Sep 17 00:00:00 2001
From: Jason Cameron <jasoncameron.all@gmail.com>
Date: Wed, 3 Jul 2024 21:25:10 -0400
Subject: [PATCH 17/57] Delete .github/workflows/makemessages.yml

---
 .github/workflows/makemessages.yml | 53 ------------------------------
 1 file changed, 53 deletions(-)
 delete mode 100644 .github/workflows/makemessages.yml

diff --git a/.github/workflows/makemessages.yml b/.github/workflows/makemessages.yml
deleted file mode 100644
index c5bd6aef41..0000000000
--- a/.github/workflows/makemessages.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-name: makemessages
-on:
-  push:
-    branches:
-      - master
-jobs:
-  makemessages:
-    runs-on: ubuntu-latest
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set up Python 3.7
-      uses: actions/setup-python@v5
-      with:
-        python-version: '3.7'
-    - name: Checkout submodules
-      run: |
-        git submodule init
-        git submodule update
-    - name: Install requirements
-      run: |
-         sudo apt-get install gettext
-         curl -O https://artifacts.crowdin.com/repo/deb/crowdin3.deb
-         sudo dpkg -i crowdin3.deb
-         pip install -r requirements.txt
-         pip install pymysql
-    - name: Collect localizable strings
-      run: |
-        echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py
-        python manage.py makemessages -l en -e py,html,txt
-        python manage.py makemessages -l en -d djangojs
-    - name: Upload strings to Crowdin
-      env:
-        CROWDIN_API_TOKEN: ${{ secrets.CROWDIN_API_V2_TOKEN }}
-      run: |
-        cat > crowdin.yaml <<EOF
-        project_id: 142963
-
-        files:
-          - source: /locale/en/LC_MESSAGES/django.po
-            translation: /locale/%two_letters_code%/LC_MESSAGES/django.po
-            languages_mapping:
-              two_letters_code:
-                zh-CN: zh_Hans
-                sr-CS: sr_Latn
-          - source: /locale/en/LC_MESSAGES/djangojs.po
-            translation: /locale/%two_letters_code%/LC_MESSAGES/djangojs.po
-            languages_mapping:
-              two_letters_code:
-                zh-CN: zh_Hans
-                sr-CS: sr_Latn
-        EOF
-        echo "api_token: ${CROWDIN_API_TOKEN}" >> crowdin.yaml
-        crowdin upload sources

From 099b29b7c5c457e00409b5c746f4d3364e11912a Mon Sep 17 00:00:00 2001
From: Jason Cameron <jasoncameron.all@gmail.com>
Date: Wed, 3 Jul 2024 21:26:33 -0400
Subject: [PATCH 18/57] Delete .github/workflows/updatemessages.yml

---
 .github/workflows/updatemessages.yml | 100 ---------------------------
 1 file changed, 100 deletions(-)
 delete mode 100644 .github/workflows/updatemessages.yml

diff --git a/.github/workflows/updatemessages.yml b/.github/workflows/updatemessages.yml
deleted file mode 100644
index 1c56045a8c..0000000000
--- a/.github/workflows/updatemessages.yml
+++ /dev/null
@@ -1,100 +0,0 @@
-name: updatemessages
-on:
-  schedule:
-    - cron: '0 0 * * *'
-jobs:
-  updatemessages:
-    if: github.repository == 'DMOJ/online-judge'
-    runs-on: ubuntu-latest
-    steps:
-    - uses: actions/checkout@v4
-      with:
-        fetch-depth: 0
-    - name: Set up Python 3.7
-      uses: actions/setup-python@v5
-      with:
-        python-version: '3.7'
-    - name: Checkout submodules
-      run: |
-        git submodule init
-        git submodule update
-    - name: Install requirements
-      run: |
-        sudo apt-get install gettext
-        wget https://artifacts.crowdin.com/repo/deb/crowdin3.deb -O crowdin.deb
-        sudo dpkg -i crowdin.deb
-        pip install -r requirements.txt
-        pip install pymysql
-    - name: Update English source strings
-      run: |
-        echo "STATIC_ROOT = '/tmp'" > dmoj/local_settings.py
-        python manage.py makemessages -l en -e py,html,txt
-        python manage.py makemessages -l en -d djangojs
-    - name: Download strings from Crowdin
-      env:
-        CROWDIN_API_TOKEN: ${{ secrets.CROWDIN_API_V2_TOKEN }}
-      run: |
-        cat > crowdin.yaml <<EOF
-        project_id: 142963
-
-        files:
-          - source: /locale/en/LC_MESSAGES/django.po
-            translation: /locale/%two_letters_code%/LC_MESSAGES/django.po
-            languages_mapping:
-              two_letters_code:
-                zh-CN: zh_Hans
-                zh-TW: zh_Hant
-                sr-CS: sr_Latn
-          - source: /locale/en/LC_MESSAGES/djangojs.po
-            translation: /locale/%two_letters_code%/LC_MESSAGES/djangojs.po
-            languages_mapping:
-              two_letters_code:
-                zh-CN: zh_Hans
-                zh-TW: zh_Hant
-                sr-CS: sr_Latn
-        EOF
-        echo "api_token: ${CROWDIN_API_TOKEN}" >> crowdin.yaml
-        crowdin download
-        rm crowdin.yaml
-    - name: Cleanup
-      run: |
-        rm -rf src/
-        git add locale
-        git checkout .
-        git clean -fd
-        git reset
-    - name: Remove useless changes
-      run: |
-        set -eu
-        i18n_head=$(git rev-parse --verify -q origin/update-i18n || echo "HEAD")
-        echo "Comparing against: $i18n_head"
-        changed=0
-        while IFS= read -r -d $'\0' file; do
-          if git diff -s --exit-code "$file"; then
-            continue
-          fi
-
-          if git diff "$i18n_head" -- "$file" | tail -n +5 2>/dev/null | grep -qP '^[-+](?!"PO-Revision-Date:|"POT-Creation-Date:)'; then
-            echo "Changed: $file"
-            changed=1
-          else
-            echo "No material change: $file"
-            git checkout "$i18n_head" -- "$file" > /dev/null 2>&1
-          fi
-        done < <(git ls-files -z 'locale/*/LC_MESSAGES/*.po')
-
-        if [ "$changed" = 0 ]; then
-          git reset --hard "$i18n_head"
-        fi
-    - name: Create pull request
-      uses: peter-evans/create-pull-request@v6
-      with:
-        token: ${{ secrets.REPO_SCOPED_TOKEN }}
-        author: dmoj-build <build@dmoj.ca>
-        committer: dmoj-build <build@dmoj.ca>
-        commit-message: 'i18n: update translations from Crowdin'
-        title: Update translations from Crowdin
-        body: This PR has been auto-generated to pull in latest translations from [Crowdin](https://translate.dmoj.ca).
-        labels: i18n, enhancement
-        reviewers: Xyene, quantum5
-        branch: update-i18n

From 56114c296d990b82eff3127ff706943b4dddce01 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Sat, 6 Jul 2024 20:37:28 -0400
Subject: [PATCH 19/57] add exec perms on deamon

---
 websocket/daemon.js | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 websocket/daemon.js

diff --git a/websocket/daemon.js b/websocket/daemon.js
old mode 100644
new mode 100755

From b1025aa62ae77a16463dc5373595051fd165ad94 Mon Sep 17 00:00:00 2001
From: Jason Cameron <jasoncameron.all@gmail.com>
Date: Sat, 6 Jul 2024 22:07:34 -0400
Subject: [PATCH 20/57] Delete .github/workflows/caniuse.yml

---
 .github/workflows/caniuse.yml | 25 -------------------------
 1 file changed, 25 deletions(-)
 delete mode 100644 .github/workflows/caniuse.yml

diff --git a/.github/workflows/caniuse.yml b/.github/workflows/caniuse.yml
deleted file mode 100644
index 409bc2a7e5..0000000000
--- a/.github/workflows/caniuse.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-name: caniuse
-on:
-  schedule:
-    - cron: '0 0 * * 0'
-jobs:
-  caniuse:
-    if: github.repository == 'DMOJ/online-judge'
-    runs-on: ubuntu-latest
-    steps:
-    - uses: actions/checkout@v4
-    - name: Download Can I use... data
-      run: |
-        curl -s https://raw.githubusercontent.com/Fyrd/caniuse/master/data.json | python3 -m json.tool > resources/caniuse.json
-    - name: Create pull request
-      uses: peter-evans/create-pull-request@v6
-      with:
-        token: ${{ secrets.REPO_SCOPED_TOKEN }}
-        author: dmoj-build <build@dmoj.ca>
-        committer: dmoj-build <build@dmoj.ca>
-        title: Import latest Can I use... data
-        commit-message: Import latest Can I use... data
-        body: This PR has been auto-generated to pull in the latest copy of Can I use... `data.json` from [upstream](https://github.com/Fyrd/caniuse/blob/master/data.json).
-        labels: compat
-        reviewers: Xyene, quantum5
-        branch: update-caniuse

From 1855593774a7c0e4d54f7ea52bcd32950b82aeb7 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Fri, 19 Jul 2024 09:51:13 -0400
Subject: [PATCH 21/57] Use abs path of config file

---
 websocket/daemon.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/websocket/daemon.js b/websocket/daemon.js
index 05b9940fa1..f9a45a21d3 100755
--- a/websocket/daemon.js
+++ b/websocket/daemon.js
@@ -1,4 +1,4 @@
-var config = require('./config');
+var config = require('/config');
 var set = require('simplesets').Set;
 var queue = require('qu');
 var WebSocketServer = require('ws').Server;

From 873b03df94bac32a04a8d65ea4fb2a73dcba178a Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Fri, 19 Jul 2024 23:00:36 -0400
Subject: [PATCH 22/57] Use relative file paths but mount config on boot as
 node can't use abs paths

---
 websocket/daemon.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/websocket/daemon.js b/websocket/daemon.js
index f9a45a21d3..05b9940fa1 100755
--- a/websocket/daemon.js
+++ b/websocket/daemon.js
@@ -1,4 +1,4 @@
-var config = require('/config');
+var config = require('./config');
 var set = require('simplesets').Set;
 var queue = require('qu');
 var WebSocketServer = require('ws').Server;

From 82b12437b26e977bba8140f9974d1f3ebc084be0 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Tue, 3 Sep 2024 19:04:50 -0400
Subject: [PATCH 23/57] add static migrations to site

---
 make_style.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/make_style.sh b/make_style.sh
index f926575efc..f9adb385e8 100755
--- a/make_style.sh
+++ b/make_style.sh
@@ -14,7 +14,7 @@ if ! [ -x "$(command -v autoprefixer)" ]; then
   exit 1
 fi
 
-cd "$(dirname "$0")" || exit
+cd "/site" || exit 1
 
 build_style() {
   echo "Creating $1 style..."
@@ -23,5 +23,6 @@ build_style() {
   postcss sass_processed/style.css sass_processed/martor-description.css sass_processed/select2-dmoj.css --verbose --use autoprefixer -d $2
 }
 
+
 build_style 'default' 'resources'
 build_style 'dark' 'resources/dark'

From d3650817a0e4065ddc48ae08a1dbea3f285d5027 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Tue, 3 Sep 2024 19:08:07 -0400
Subject: [PATCH 24/57] add static migrations to site

---
 make_style.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/make_style.sh b/make_style.sh
index f9adb385e8..41bd6c0c5d 100755
--- a/make_style.sh
+++ b/make_style.sh
@@ -14,7 +14,7 @@ if ! [ -x "$(command -v autoprefixer)" ]; then
   exit 1
 fi
 
-cd "/site" || exit 1
+cd "$(dirname "$0")" || exit
 
 build_style() {
   echo "Creating $1 style..."

From 9451e43670e9874e612a57a5674b166adcc1725e Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Sat, 7 Sep 2024 23:15:34 -0400
Subject: [PATCH 25/57] enable martor uploads

Signed-off-by: Jason <git@jasoncameron.dev>
---
 judge/widgets/martor.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/judge/widgets/martor.py b/judge/widgets/martor.py
index 9f8738e0bf..c13a6b653b 100644
--- a/judge/widgets/martor.py
+++ b/judge/widgets/martor.py
@@ -12,6 +12,7 @@ class Media:
 
 
 class AdminMartorWidget(OldAdminMartorWidget):
+    UPLOADS_ENABLED = True
     class Media:
         css = MartorWidget.Media.css
         js = ['admin/js/jquery.init.js', 'martor-mathjax.js']

From 3fc92bc1983b565f7a7faf7b3d8e2d238d289175 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Sat, 7 Sep 2024 23:17:54 -0400
Subject: [PATCH 26/57] fix linting issue in martor.py

Signed-off-by: Jason <git@jasoncameron.dev>
---
 judge/widgets/martor.py | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/judge/widgets/martor.py b/judge/widgets/martor.py
index c13a6b653b..dd11afa241 100644
--- a/judge/widgets/martor.py
+++ b/judge/widgets/martor.py
@@ -4,15 +4,16 @@
 
 
 class MartorWidget(OldMartorWidget):
-    class Media:
-        css = {
-            'all': ['martor-description.css'],
-        }
-        js = ['martor-mathjax.js']
+	class Media:
+		css = {
+			'all': ['martor-description.css'],
+		}
+		js = ['martor-mathjax.js']
 
 
 class AdminMartorWidget(OldAdminMartorWidget):
-    UPLOADS_ENABLED = True
-    class Media:
-        css = MartorWidget.Media.css
-        js = ['admin/js/jquery.init.js', 'martor-mathjax.js']
+	UPLOADS_ENABLED = True
+	
+	class Media:
+		css = MartorWidget.Media.css
+		js = ['admin/js/jquery.init.js', 'martor-mathjax.js']

From 20bb13eb9a38dd978c8bc33401381e5d380de6a6 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Sat, 7 Sep 2024 23:41:03 -0400
Subject: [PATCH 27/57] switch from tabs to spaces

Signed-off-by: Jason <git@jasoncameron.dev>
---
 judge/widgets/martor.py | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/judge/widgets/martor.py b/judge/widgets/martor.py
index dd11afa241..6c37005b84 100644
--- a/judge/widgets/martor.py
+++ b/judge/widgets/martor.py
@@ -4,16 +4,16 @@
 
 
 class MartorWidget(OldMartorWidget):
-	class Media:
-		css = {
-			'all': ['martor-description.css'],
-		}
-		js = ['martor-mathjax.js']
+    class Media:
+        css = {
+            'all': ['martor-description.css'],
+        }
+        js = ['martor-mathjax.js']
 
 
 class AdminMartorWidget(OldAdminMartorWidget):
-	UPLOADS_ENABLED = True
-	
-	class Media:
-		css = MartorWidget.Media.css
-		js = ['admin/js/jquery.init.js', 'martor-mathjax.js']
+    UPLOADS_ENABLED = True
+    
+    class Media:
+        css = MartorWidget.Media.css
+        js = ['admin/js/jquery.init.js', 'martor-mathjax.js']

From 124a334b2295587901227d74db6cb9db64189ef2 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Sat, 7 Sep 2024 23:45:45 -0400
Subject: [PATCH 28/57] remove whitespace from empty line

Signed-off-by: Jason <git@jasoncameron.dev>
---
 judge/widgets/martor.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/judge/widgets/martor.py b/judge/widgets/martor.py
index 6c37005b84..e7911d0d5b 100644
--- a/judge/widgets/martor.py
+++ b/judge/widgets/martor.py
@@ -13,7 +13,7 @@ class Media:
 
 class AdminMartorWidget(OldAdminMartorWidget):
     UPLOADS_ENABLED = True
-    
+
     class Media:
         css = MartorWidget.Media.css
         js = ['admin/js/jquery.init.js', 'martor-mathjax.js']

From 723aaacc15b5c3b91580f9f3166470ead2363410 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Sun, 8 Sep 2024 00:28:19 -0400
Subject: [PATCH 29/57] ignore host errors

Signed-off-by: Jason <git@jasoncameron.dev>
---
 dmoj/filters.py | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 dmoj/filters.py

diff --git a/dmoj/filters.py b/dmoj/filters.py
new file mode 100644
index 0000000000..dfd26234cb
--- /dev/null
+++ b/dmoj/filters.py
@@ -0,0 +1,6 @@
+import logging
+
+
+class SilenceInvalidHttpHostHeader(logging.Filter):
+    def filter(self, record):
+        return 'Invalid HTTP_HOST header' not in record.msg

From d12117140fb054525a6494d5258b4db128ea7c05 Mon Sep 17 00:00:00 2001
From: Jason <git@jasoncameron.dev>
Date: Sun, 8 Sep 2024 01:52:45 -0400
Subject: [PATCH 30/57] switch filter location

Signed-off-by: Jason <git@jasoncameron.dev>
---
 {dmoj => judge}/filters.py | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename {dmoj => judge}/filters.py (100%)

diff --git a/dmoj/filters.py b/judge/filters.py
similarity index 100%
rename from dmoj/filters.py
rename to judge/filters.py

From a20b38681d1bf249043a9543ffbd669139081043 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Tue, 10 Sep 2024 23:42:12 -0400
Subject: [PATCH 31/57] use proper image for judge

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/filters.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/judge/filters.py b/judge/filters.py
index dfd26234cb..c74a72f2da 100644
--- a/judge/filters.py
+++ b/judge/filters.py
@@ -3,4 +3,4 @@
 
 class SilenceInvalidHttpHostHeader(logging.Filter):
     def filter(self, record):
-        return 'Invalid HTTP_HOST header' not in record.msg
+        return 'Invalid HTTP_HOST' not in record.msg

From 3e3f9268b47187e0e8d10f1db962d034261ad197 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Mon, 23 Sep 2024 20:41:18 -0400
Subject: [PATCH 32/57] Add all proper icons  (#78)

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 502.html                                      |   8 +-
 dmoj/urls.py                                  |  13 +-
 judge/contest_format/__init__.py              |   2 +
 judge/contest_format/bonuses.py               | 144 +++++++
 judge/contest_format/ics3u.py                 |  89 +++++
 judge/management/commands/generate_report.py  | 141 +++++++
 judge/pdf.py                                  | 373 ++++++++++++++++++
 logo.png                                      | Bin 27153 -> 20350 bytes
 resources/favicon.ico                         | Bin 15086 -> 22382 bytes
 resources/icons/android-chrome-144x144.png    | Bin 2818 -> 3737 bytes
 resources/icons/android-chrome-192x192.png    | Bin 3673 -> 4625 bytes
 resources/icons/android-chrome-256x256.png    | Bin 0 -> 6035 bytes
 resources/icons/android-chrome-36x36.png      | Bin 960 -> 1434 bytes
 resources/icons/android-chrome-384x384.png    | Bin 0 -> 8694 bytes
 resources/icons/android-chrome-48x48.png      | Bin 1201 -> 1862 bytes
 resources/icons/android-chrome-512x512.png    | Bin 0 -> 11542 bytes
 resources/icons/android-chrome-72x72.png      | Bin 1621 -> 2402 bytes
 resources/icons/android-chrome-96x96.png      | Bin 2051 -> 2869 bytes
 resources/icons/apple-touch-icon-114x114.png  | Bin 2088 -> 0 bytes
 resources/icons/apple-touch-icon-120x120.png  | Bin 2208 -> 0 bytes
 resources/icons/apple-touch-icon-144x144.png  | Bin 2506 -> 0 bytes
 resources/icons/apple-touch-icon-152x152.png  | Bin 2692 -> 0 bytes
 resources/icons/apple-touch-icon-180x180.png  | Bin 3285 -> 0 bytes
 resources/icons/apple-touch-icon-57x57.png    | Bin 1201 -> 0 bytes
 resources/icons/apple-touch-icon-60x60.png    | Bin 1287 -> 0 bytes
 resources/icons/apple-touch-icon-72x72.png    | Bin 1496 -> 0 bytes
 resources/icons/apple-touch-icon-76x76.png    | Bin 1500 -> 0 bytes
 .../icons/apple-touch-icon-precomposed.png    | Bin 3521 -> 0 bytes
 resources/icons/apple-touch-icon.png          | Bin 3285 -> 3843 bytes
 resources/icons/browserconfig.xml             |  15 +-
 resources/icons/favicon-16x16.png             | Bin 830 -> 804 bytes
 resources/icons/favicon-32x32.png             | Bin 1364 -> 1321 bytes
 resources/icons/favicon-96x96.png             | Bin 2051 -> 0 bytes
 resources/icons/favicon.ico                   | Bin 15086 -> 15086 bytes
 resources/icons/icon.svg                      |   1 -
 resources/icons/logo.png                      | Bin 2978 -> 19352 bytes
 resources/icons/logo.svg                      |  26 +-
 resources/icons/manifest.json                 |   2 +-
 resources/icons/mstile-144x144.png            | Bin 2797 -> 3716 bytes
 resources/icons/mstile-150x150.png            | Bin 2410 -> 3502 bytes
 resources/icons/mstile-310x150.png            | Bin 2670 -> 3766 bytes
 resources/icons/mstile-310x310.png            | Bin 5181 -> 6730 bytes
 resources/icons/mstile-70x70.png              | Bin 1881 -> 2801 bytes
 resources/icons/safari-pinned-tab.svg         |  46 +--
 resources/icons/site.webmanifest              |  55 +++
 resources/quotes.json                         |   2 +-
 templates/base.html                           |  24 +-
 47 files changed, 841 insertions(+), 100 deletions(-)
 create mode 100644 judge/contest_format/bonuses.py
 create mode 100644 judge/contest_format/ics3u.py
 create mode 100644 judge/management/commands/generate_report.py
 create mode 100644 judge/pdf.py
 create mode 100644 resources/icons/android-chrome-256x256.png
 create mode 100644 resources/icons/android-chrome-384x384.png
 create mode 100644 resources/icons/android-chrome-512x512.png
 delete mode 100644 resources/icons/apple-touch-icon-114x114.png
 delete mode 100644 resources/icons/apple-touch-icon-120x120.png
 delete mode 100644 resources/icons/apple-touch-icon-144x144.png
 delete mode 100644 resources/icons/apple-touch-icon-152x152.png
 delete mode 100644 resources/icons/apple-touch-icon-180x180.png
 delete mode 100644 resources/icons/apple-touch-icon-57x57.png
 delete mode 100644 resources/icons/apple-touch-icon-60x60.png
 delete mode 100644 resources/icons/apple-touch-icon-72x72.png
 delete mode 100644 resources/icons/apple-touch-icon-76x76.png
 delete mode 100644 resources/icons/apple-touch-icon-precomposed.png
 delete mode 100644 resources/icons/favicon-96x96.png
 delete mode 100644 resources/icons/icon.svg
 create mode 100644 resources/icons/site.webmanifest

diff --git a/502.html b/502.html
index 15294732d3..06c52bfa76 100644
--- a/502.html
+++ b/502.html
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
 <html lang="en">
 <head>
-    <title>502 bad gateway - DMOJ</title>
+    <title>502 bad gateway - WLMOJ</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-    <style type="text/css">
+    <style>
         hr {
             margin: 0 22em;
         }
@@ -49,9 +49,9 @@
         <br>
         <div class="popup">
             <div>
-                <img class="logo" src="/logo.png" alt="DMOJ">
+                <img class="logo" src="/logo.png" alt="WLMOJ">
             </div>
-            <h1 style="width: 100%;">Oops, the DMOJ is down.</h1>
+            <h1 style="width: 100%;">Oops, the WLMOJ is down.</h1>
         </div>
         <br>
         <hr>
diff --git a/dmoj/urls.py b/dmoj/urls.py
index 32976e10dc..5c83076292 100644
--- a/dmoj/urls.py
+++ b/dmoj/urls.py
@@ -1,3 +1,6 @@
+import os
+from os.path import join
+
 from django.conf import settings
 from django.contrib import admin
 from django.contrib.auth import views as auth_views
@@ -368,15 +371,7 @@ def paged_list_view(view, name):
     ])),
 ]
 
-favicon_paths = ['apple-touch-icon-180x180.png', 'apple-touch-icon-114x114.png', 'android-chrome-72x72.png',
-                 'apple-touch-icon-57x57.png', 'apple-touch-icon-72x72.png', 'apple-touch-icon.png', 'mstile-70x70.png',
-                 'android-chrome-36x36.png', 'apple-touch-icon-precomposed.png', 'apple-touch-icon-76x76.png',
-                 'apple-touch-icon-60x60.png', 'android-chrome-96x96.png', 'mstile-144x144.png', 'mstile-150x150.png',
-                 'safari-pinned-tab.svg', 'android-chrome-144x144.png', 'apple-touch-icon-152x152.png',
-                 'favicon-96x96.png',
-                 'favicon-32x32.png', 'favicon-16x16.png', 'android-chrome-192x192.png', 'android-chrome-48x48.png',
-                 'mstile-310x150.png', 'apple-touch-icon-144x144.png', 'browserconfig.xml', 'manifest.json',
-                 'apple-touch-icon-120x120.png', 'mstile-310x310.png']
+favicon_paths = os.listdir(join(settings.DMOJ_RESOURCES, 'icons'))
 
 static_lazy = lazy(static, str)
 for favicon in favicon_paths:
diff --git a/judge/contest_format/__init__.py b/judge/contest_format/__init__.py
index 241d7b27fb..65e7f36483 100644
--- a/judge/contest_format/__init__.py
+++ b/judge/contest_format/__init__.py
@@ -1,7 +1,9 @@
 from judge.contest_format.atcoder import AtCoderContestFormat
+from judge.contest_format.bonuses import BonusesContestFormat
 from judge.contest_format.default import DefaultContestFormat
 from judge.contest_format.ecoo import ECOOContestFormat
 from judge.contest_format.icpc import ICPCContestFormat
+from judge.contest_format.ics3u import ICS3UContestFormat
 from judge.contest_format.ioi import IOIContestFormat
 from judge.contest_format.legacy_ioi import LegacyIOIContestFormat
 from judge.contest_format.registry import choices, formats
diff --git a/judge/contest_format/bonuses.py b/judge/contest_format/bonuses.py
new file mode 100644
index 0000000000..678d599ba6
--- /dev/null
+++ b/judge/contest_format/bonuses.py
@@ -0,0 +1,144 @@
+from datetime import timedelta
+
+from django.core.exceptions import ValidationError
+from django.db.models import (
+    ExpressionWrapper,
+    F,
+    FloatField,
+    Max,
+    Min,
+    OuterRef,
+    Subquery,
+)
+from django.template.defaultfilters import floatformat
+from django.urls import reverse
+from django.utils.html import format_html
+from django.utils.safestring import mark_safe
+from django.utils.translation import gettext_lazy
+
+from judge.contest_format.default import DefaultContestFormat
+from judge.contest_format.registry import register_contest_format
+from judge.utils.timedelta import nice_repr
+
+
+@register_contest_format('bonuses')
+class BonusesContestFormat(DefaultContestFormat):
+    name = gettext_lazy('Bonuses')
+    config_defaults = {
+        'time_bonus': 0,
+        'first_submission_bonus': 0,
+    }
+    """
+        time_bonus: Number of minutes to award an extra point for submitting before the contest end.
+        first_submission_bonus: Bonus points for fully solving on first submission.
+    """
+
+    @classmethod
+    def validate(cls, config):
+        if not isinstance(config, dict):
+            raise ValidationError('bonuses contest expects a dict as config')
+        for key in config.keys():
+            if key not in cls.config_defaults:
+                raise ValidationError('unknown config key "%s"' % key)
+
+    def __init__(self, contest, config):
+        super().__init__(contest, self.config_defaults.copy())
+        self.config.update(config)
+
+    def update_participation(self, participation):
+        cumtime = 0
+        score = 0
+        format_data = {}
+
+        total_wrapper = ExpressionWrapper(
+            F('points') + F('bonus'), output_field=FloatField(),
+        )
+        queryset = (
+            participation.submissions.values('problem_id')
+            .annotate(total=total_wrapper)
+            .filter(
+                total=Subquery(
+                    participation.submissions.filter(problem_id=OuterRef('problem_id'))
+                    .annotate(best=total_wrapper)
+                    .order_by('-best')
+                    .values('best')[:1],
+                ),
+            )
+            .annotate(time=Min('submission__date'), points=Max('points'))
+            .values_list('problem_id', 'time', 'points', 'total')
+        )
+
+        for problem_id, time, points, total in queryset:
+            dt = (time - participation.start).total_seconds()
+            if total:
+                score += total
+                cumtime += dt
+            format_data[str(problem_id)] = {
+                'points': points,
+                'bonus': total - points,
+                'time': dt,
+            }
+
+        queryset = (
+            participation.submissions.values('problem_id', 'problem__points')
+            .filter(
+                submission__date=Subquery(
+                    participation.submissions.filter(problem_id=OuterRef('problem_id'))
+                    .order_by('submission__date')
+                    .values('submission__date')[:1],
+                ),
+            )
+            .annotate(points=Max('points'))
+            .values_list('problem_id', 'points', 'problem__points')
+        )
+
+        for problem_id, points, problem_points in queryset:
+            format_data[str(problem_id)].update(
+                {
+                    'first_solve': points == problem_points,
+                },
+            )
+
+        participation.cumtime = max(cumtime, 0)
+        participation.score = score
+        participation.tiebreaker = 0
+        participation.format_data = format_data
+        participation.save()
+
+    def display_user_problem(self, participation, contest_problem):
+        format_data = (participation.format_data or {}).get(str(contest_problem.id))
+        if format_data:
+            pretest = (
+                'pretest-'
+                if self.contest.run_pretests_only and contest_problem.is_pretested
+                else ''
+            )
+            first_solve = ' first-solve' if format_data['first_solve'] else ''
+            bonus = (
+                format_html(
+                    '<font style="font-size:10px;"> +{bonus}</font>',
+                    bonus=floatformat(format_data['bonus']),
+                )
+                if format_data['bonus']
+                else ''
+            )
+
+            return format_html(
+                '<td class="{state}"><a href="{url}">{points}{bonus}<div class="solving-time">{time}</div></a></td>',
+                state=pretest + self.best_solution_state(
+                    format_data['points'], contest_problem.points,
+                ) + first_solve,
+                url=reverse(
+                    'contest_user_submissions',
+                    args=[
+                        self.contest.key,
+                        participation.user.user.username,
+                        contest_problem.problem.code,
+                    ],
+                ),
+                points=floatformat(format_data['points']),
+                bonus=bonus,
+                time=nice_repr(timedelta(seconds=format_data['time']), 'noday'),
+            )
+        else:
+            return mark_safe('<td></td>')
diff --git a/judge/contest_format/ics3u.py b/judge/contest_format/ics3u.py
new file mode 100644
index 0000000000..6386b60788
--- /dev/null
+++ b/judge/contest_format/ics3u.py
@@ -0,0 +1,89 @@
+from django.core.exceptions import ValidationError
+from django.db.models import Max, OuterRef, Subquery
+from django.template.defaultfilters import floatformat
+from django.urls import reverse
+from django.utils.html import format_html
+from django.utils.safestring import mark_safe
+from django.utils.translation import gettext_lazy
+
+from judge.contest_format.default import DefaultContestFormat
+from judge.contest_format.registry import register_contest_format
+
+
+@register_contest_format('ics3u')
+class ICS3UContestFormat(DefaultContestFormat):
+    name = gettext_lazy('ICS3U')
+
+    @classmethod
+    def validate(cls, config):
+        if config is not None and (not isinstance(config, dict) or config):
+            raise ValidationError(
+                'ICS3U contest expects no config or empty dict as config',
+            )
+
+    def __init__(self, contest, config):
+        super().__init__(contest, config)
+
+    def update_participation(self, participation):
+        score = 0
+        format_data = {}
+
+        queryset = (
+            participation.submissions.values('problem_id')
+            .filter(
+                points=Subquery(
+                    participation.submissions.filter(problem_id=OuterRef('problem_id'))
+                    .order_by('-points')
+                    .values('points')[:1],
+                ),
+            )
+            .annotate(disqualified=Max('is_disqualified'))
+            .values_list('problem_id', 'disqualified', 'points')
+        )
+
+        for problem_id, disqualified, points in queryset:
+            format_data[str(problem_id)] = {
+                'points': points,
+                'disqualified': disqualified,
+            }
+            score += points
+
+        participation.cumtime = 0
+        participation.score = score
+        participation.tiebreaker = 0
+        participation.format_data = format_data
+        participation.save()
+
+    def display_user_problem(self, participation, contest_problem):
+        format_data = (participation.format_data or {}).get(str(contest_problem.id))
+        if format_data:
+            pretest = (
+                'pretest-'
+                if self.contest.run_pretests_only and contest_problem.is_pretested
+                else ''
+            )
+            extra = ' disqualified' if format_data['disqualified'] else ''
+
+            return format_html(
+                '<td class="{state}"><a href="{url}">{points}</a></td>',
+                state=pretest + self.best_solution_state(
+                    format_data['points'], contest_problem.points,
+                ) + extra,
+                url=reverse(
+                    'contest_user_submissions',
+                    args=[
+                        self.contest.key,
+                        participation.user.user.username,
+                        contest_problem.problem.code,
+                    ],
+                ),
+                points=floatformat(format_data['points']),
+            )
+        else:
+            return mark_safe('<td></td>')
+
+    def display_participation_result(self, participation):
+        return format_html(
+            '<td class="user-points">{points}</td>',
+            points=floatformat(participation.score, -self.contest.points_precision),
+        )
diff --git a/judge/management/commands/generate_report.py b/judge/management/commands/generate_report.py
new file mode 100644
index 0000000000..6abc7c2182
--- /dev/null
+++ b/judge/management/commands/generate_report.py
@@ -0,0 +1,141 @@
+import os
+import shutil
+import sys
+
+from django.conf import settings
+from django.core.mail import EmailMessage
+from django.core.management.base import BaseCommand
+from django.template.loader import get_template
+
+from judge.models import Contest, ContestParticipation
+from judge.pdf import (
+    DefaultPdfMaker,
+    PhantomJSPdfMaker,
+    PuppeteerPDFRender,
+    SeleniumPDFRender,
+    SlimerJSPdfMaker,
+)
+
+
+def generate_scoreboard(contest, period):
+    problem_ids = [
+        str(prob.id) for prob in contest.contest_problems.all().order_by('order')
+    ]
+    out = ''
+
+    for registrant in contest.registrants.all().order_by('user__user__last_name'):
+        if period is not None and int(registrant.data['class-period']) != period:
+            continue
+
+        participation = ContestParticipation.objects.filter(
+            contest=contest, user=registrant.user,
+        ).first()
+        if not participation:
+            continue  # joined, but didn't participate
+
+        row = ''
+        for pid in problem_ids:
+            if participation.format_data and pid in participation.format_data:
+                row += '<td>%.0f</td>\n' % participation.format_data[pid]['points']
+            else:
+                row += '<td></td>\n'
+        row += '<td>%.0f</td>\n' % participation.score
+
+        out += '<tr>\n'
+        out += '<th>%s</th>\n' % registrant.user.user.get_full_name()
+        out += row
+        out += '</tr>\n'
+    return out
+
+
+class Command(BaseCommand):
+    help = 'generates a report for an ICS3U contest'
+
+    def add_arguments(self, parser):
+        parser.add_argument('key', help='key of the contest to generate a report for')
+        parser.add_argument(
+            '--period', type=int, help='ics3u class period of the contest',
+        )
+        parser.add_argument(
+            '--dry-run', action='store_true', help="don't actually email the report",
+        )
+        parser.add_argument(
+            '-p',
+            '--phantomjs',
+            action='store_const',
+            const=PhantomJSPdfMaker,
+            default=DefaultPdfMaker,
+            dest='engine',
+        )
+        parser.add_argument(
+            '-s',
+            '--slimerjs',
+            action='store_const',
+            const=SlimerJSPdfMaker,
+            dest='engine',
+        )
+        parser.add_argument(
+            '-c',
+            '--chrome',
+            '--puppeteer',
+            action='store_const',
+            const=PuppeteerPDFRender,
+            dest='engine',
+        )
+        parser.add_argument(
+            '-S',
+            '--selenium',
+            action='store_const',
+            const=SeleniumPDFRender,
+            dest='engine',
+        )
+
+    def handle(self, *args, **options):
+        try:
+            contest = Contest.objects.get(key=options['key'])
+        except Contest.DoesNotExist:
+            print('Bad contest code')
+            return
+
+        scoreboard = generate_scoreboard(contest, options['period'])
+        if options['period'] is not None:
+            teacher = settings.DMOJ_ICS_REPORT_PERIODS[options['period']]
+        else:
+            teacher = None
+        with options['engine'](None, clean_up=None is None) as maker:
+            maker.html = (
+                get_template('contest/ics3u_report.html')
+                .render(
+                    {
+                        'contest': contest,
+                        'contest_problems': contest.contest_problems.all(),
+                        'scoreboard': scoreboard,
+                        'teacher': teacher,
+                        'math_engine': maker.math_engine,
+                    },
+                )
+                .replace('"//', '"https://')
+                .replace("'//", "'https://")
+            )
+            maker.template['footerTemplate'] = '<div></div>'
+            maker.title = contest.name
+            for file in ('style.css', 'pygment-github.css', 'mathjax_config.js'):
+                maker.load(file, os.path.join(settings.DMOJ_RESOURCES, file))
+            maker.make(debug=True)
+            if not maker.success:
+                print(maker.log, file=sys.stderr)
+                return
+            shutil.move(maker.pdffile, contest.key + '.pdf')
+
+            if options['period'] is not None and not options['dry_run']:
+                email = EmailMessage(
+                    f'{contest.name} Report',
+                    f'Dear {teacher["name"]},\n\nAttached are the results, '
+                    f'problems, and editorials for the {contest.name}.\n\n'
+                    'This is an automated email. If there are any issues, '
+                    'please contact us at presidents@mcpt.ca.',
+                    to=[teacher['email']],
+                )
+                email.attach_file(contest.key + '.pdf')
+                email.send()
+                os.remove(contest.key + '.pdf')
diff --git a/judge/pdf.py b/judge/pdf.py
new file mode 100644
index 0000000000..2f67354413
--- /dev/null
+++ b/judge/pdf.py
@@ -0,0 +1,373 @@
+import base64
+import errno
+import io
+import json
+import logging
+import os
+import shutil
+import subprocess
+import uuid
+
+from django.conf import settings
+from django.utils.translation import gettext
+
+logger = logging.getLogger('judge.problem.pdf')
+
+HAS_SELENIUM = False
+if settings.USE_SELENIUM:
+    try:
+        from selenium import webdriver
+        from selenium.common.exceptions import TimeoutException
+        from selenium.webdriver.common.by import By
+        from selenium.webdriver.support import expected_conditions as EC
+        from selenium.webdriver.support.ui import WebDriverWait
+
+        HAS_SELENIUM = True
+    except ImportError:
+        logger.warning('Failed to import Selenium', exc_info=True)
+
+HAS_PHANTOMJS = os.access(settings.PHANTOMJS, os.X_OK)
+HAS_SLIMERJS = os.access(settings.SLIMERJS, os.X_OK)
+
+NODE_PATH = settings.NODEJS
+PUPPETEER_MODULE = settings.PUPPETEER_MODULE
+HAS_PUPPETEER = os.access(NODE_PATH, os.X_OK) and os.path.isdir(PUPPETEER_MODULE)
+
+HAS_PDF = os.path.isdir(settings.DMOJ_PDF_PROBLEM_CACHE) and (
+    HAS_PHANTOMJS or HAS_SLIMERJS or HAS_PUPPETEER or HAS_SELENIUM
+)
+
+EXIFTOOL = settings.EXIFTOOL
+HAS_EXIFTOOL = os.access(EXIFTOOL, os.X_OK)
+
+
+class BasePdfMaker(object):
+    math_engine = 'jax'
+    title = None
+
+    def __init__(self, dir=None, clean_up=True):
+        self.dir = dir or os.path.join(
+            settings.DMOJ_PDF_PROBLEM_TEMP_DIR, str(uuid.uuid1()),
+        )
+        self.proc = None
+        self.log = None
+        self.htmlfile = os.path.join(self.dir, 'input.html')
+        self.pdffile = os.path.join(self.dir, 'output.pdf')
+        self.clean_up = clean_up
+
+    def load(self, file, source):
+        with open(os.path.join(self.dir, file), 'w') as target, open(source) as source:
+            target.write(source.read())
+
+    def make(self, debug=False):
+        self._make(debug)
+
+        if self.title and HAS_EXIFTOOL:
+            try:
+                subprocess.check_output(
+                    [EXIFTOOL, '-Title=%s' % (self.title,), self.pdffile],
+                )
+            except subprocess.CalledProcessError as e:
+                logger.error(
+                    'Failed to run exiftool to set title for: %s\n%s',
+                    self.title,
+                    e.output,
+                )
+
+    def _make(self, debug):
+        raise NotImplementedError()
+
+    @property
+    def html(self):
+        with io.open(self.htmlfile, encoding='utf-8') as f:
+            return f.read()
+
+    @html.setter
+    def html(self, data):
+        with io.open(self.htmlfile, 'w', encoding='utf-8') as f:
+            f.write(data)
+
+    @property
+    def success(self):
+        return self.proc.returncode == 0
+
+    @property
+    def created(self):
+        return os.path.exists(self.pdffile)
+
+    def __enter__(self):
+        try:
+            os.makedirs(self.dir)
+        except OSError as e:
+            if e.errno != errno.EEXIST:
+                raise
+        return self
+
+    def __exit__(self, exc_type, exc_val, exc_tb):
+        if self.clean_up:
+            shutil.rmtree(self.dir, ignore_errors=True)
+
+
+class PhantomJSPdfMaker(BasePdfMaker):
+    template = """\
+"use strict";
+var page = require('webpage').create();
+var param = {params};
+
+page.paperSize = {
+    format: param.paper, orientation: 'portrait', margin: '1cm',
+    footer: {
+        height: '1cm',
+        contents: phantom.callback(function(num, pages) {
+            return ('<center style="margin: 0 auto; font-family: Segoe UI; font-size: 10px">'
+                  + param.footer.replace('[page]', num).replace('[topage]', pages) + '</center>');
+        })
+    }
+};
+
+page.onCallback = function (data) {
+    if (data.action === 'snapshot') {
+        page.render(param.output);
+        phantom.exit();
+    }
+}
+
+page.open(param.input, function (status) {
+    if (status !== 'success') {
+        console.log('Unable to load the address!');
+        phantom.exit(1);
+    } else {
+        page.evaluate(function (zoom) {
+            document.documentElement.style.zoom = zoom;
+        }, param.zoom);
+        window.setTimeout(function () {
+            page.render(param.output);
+            phantom.exit();
+        }, param.timeout);
+    }
+});
+"""
+
+    def get_render_script(self):
+        return self.template.replace(
+            '{params}',
+            json.dumps(
+                {
+                    'zoom': settings.PHANTOMJS_PDF_ZOOM,
+                    'timeout': int(settings.PHANTOMJS_PDF_TIMEOUT * 1000),
+                    'input': 'input.html',
+                    'output': 'output.pdf',
+                    'paper': settings.PHANTOMJS_PAPER_SIZE,
+                    'footer': gettext('Page [page] of [topage]'),
+                },
+            ),
+        )
+
+    def _make(self, debug):
+        with io.open(os.path.join(self.dir, '_render.js'), 'w', encoding='utf-8') as f:
+            f.write(self.get_render_script())
+        cmdline = [settings.PHANTOMJS, '_render.js']
+        self.proc = subprocess.Popen(
+            cmdline, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.dir,
+        )
+        self.log = self.proc.communicate()[0]
+
+
+class SlimerJSPdfMaker(BasePdfMaker):
+    math_engine = 'mml'
+
+    template = """\
+"use strict";
+try {
+    var param = {params};
+
+    var {Cc, Ci} = require('chrome');
+    var prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService);
+    // Changing the serif font so that printed footers show up as Segoe UI.
+    var branch = prefs.getBranch('font.name.serif.');
+    branch.setCharPref('x-western', 'Segoe UI');
+
+    var page = require('webpage').create();
+
+    page.paperSize = {
+        format: param.paper, orientation: 'portrait', margin: '1cm', edge: '0.5cm',
+        footerStr: { left: '', right: '', center: param.footer }
+    };
+
+    page.open(param.input, function (status) {
+        if (status !== 'success') {
+            console.log('Unable to load the address!');
+            slimer.exit(1);
+        } else {
+            page.render(param.output, { ratio: param.zoom });
+            slimer.exit();
+        }
+    });
+} catch (e) {
+    console.error(e);
+    slimer.exit(1);
+}
+"""
+
+    def get_render_script(self):
+        return self.template.replace(
+            '{params}',
+            json.dumps(
+                {
+                    'zoom': settings.SLIMERJS_PDF_ZOOM,
+                    'input': 'input.html',
+                    'output': 'output.pdf',
+                    'paper': settings.SLIMERJS_PAPER_SIZE,
+                    'footer': gettext('Page [page] of [topage]')
+                    .replace('[page]', '&P')
+                    .replace('[topage]', '&L'),
+                },
+            ),
+        )
+
+    def _make(self, debug):
+        with io.open(os.path.join(self.dir, '_render.js'), 'w', encoding='utf-8') as f:
+            f.write(self.get_render_script())
+
+        env = None
+        firefox = settings.SLIMERJS_FIREFOX_PATH
+        if firefox:
+            env = os.environ.copy()
+            env['SLIMERJSLAUNCHER'] = firefox
+
+        cmdline = [settings.SLIMERJS, '--headless', '_render.js']
+        self.proc = subprocess.Popen(
+            cmdline,
+            stdout=subprocess.PIPE,
+            stderr=subprocess.STDOUT,
+            cwd=self.dir,
+            env=env,
+        )
+        self.log = self.proc.communicate()[0]
+
+
+class PuppeteerPDFRender(BasePdfMaker):
+    template = """\
+"use strict";
+const param = {params};
+const puppeteer = require('puppeteer');
+
+puppeteer.launch().then(browser => Promise.resolve()
+    .then(async () => {
+        const page = await browser.newPage();
+        await page.goto(param.input, { waitUntil: 'load' });
+        await page.waitForSelector('.math-loaded', { timeout: 15000 });
+        await page.pdf({
+            path: param.output,
+            format: param.paper,
+            margin: {
+                top: '1cm',
+                bottom: '1cm',
+                left: '1cm',
+                right: '1cm',
+            },
+            printBackground: true,
+            displayHeaderFooter: true,
+            headerTemplate: '<div></div>',
+            footerTemplate: '<center style="margin: 0 auto; font-family: Segoe UI; font-size: 10px">' +
+                param.footer.replace('[page]', '<span class="pageNumber"></span>')
+                            .replace('[topage]', '<span class="totalPages"></span>')
+                + '</center>',
+        });
+        await browser.close();
+    })
+    .catch(e => browser.close().then(() => {throw e}))
+).catch(e => {
+    console.error(e);
+    process.exit(1);
+});
+"""
+
+    def get_render_script(self):
+        return self.template.replace(
+            '{params}',
+            json.dumps(
+                {
+                    'input': 'file://%s' % self.htmlfile,
+                    'output': self.pdffile,
+                    'paper': settings.PUPPETEER_PAPER_SIZE,
+                    'footer': gettext('Page [page] of [topage]'),
+                },
+            ),
+        )
+
+    def _make(self, debug):
+        with io.open(os.path.join(self.dir, '_render.js'), 'w', encoding='utf-8') as f:
+            f.write(self.get_render_script())
+
+        env = os.environ.copy()
+        env['NODE_PATH'] = os.path.dirname(PUPPETEER_MODULE)
+
+        cmdline = [NODE_PATH, '_render.js']
+        self.proc = subprocess.Popen(
+            cmdline,
+            stdout=subprocess.PIPE,
+            stderr=subprocess.STDOUT,
+            cwd=self.dir,
+            env=env,
+        )
+        self.log = self.proc.communicate()[0]
+
+
+class SeleniumPDFRender(BasePdfMaker):
+    success = False
+    template = {
+        'printBackground': True,
+        'displayHeaderFooter': True,
+        'headerTemplate': '<div></div>',
+        'footerTemplate': '<center style="margin: 0 auto; font-family: Segoe UI; font-size: 10px">' +
+                          gettext('Page %s of %s') %
+                          ('<span class="pageNumber"></span>', '<span class="totalPages"></span>') +
+                          '</center>',
+    }
+
+    def get_log(self, driver):
+        return '\n'.join(map(str, driver.get_log('driver') + driver.get_log('browser')))
+
+    def _make(self, debug):
+        options = webdriver.ChromeOptions()
+        options.add_argument('--headless')
+        options.add_argument('--no-sandbox')  # for root
+        options.binary_location = settings.SELENIUM_CUSTOM_CHROME_PATH
+
+        browser = webdriver.Chrome(settings.SELENIUM_CHROMEDRIVER_PATH, options=options)
+        browser.get('file://%s' % self.htmlfile)
+        self.log = self.get_log(browser)
+
+        try:
+            WebDriverWait(browser, 15).until(
+                EC.presence_of_element_located((By.CLASS_NAME, 'math-loaded')),
+            )
+        except TimeoutException:
+            logger.error('PDF math rendering timed out')
+            self.log = self.get_log(browser) + '\nPDF math rendering timed out'
+            browser.quit()
+            return
+        response = browser.execute_cdp_cmd('Page.printToPDF', self.template)
+        self.log = self.get_log(browser)
+        if not response:
+            browser.quit()
+            return
+
+        with open(self.pdffile, 'wb') as f:
+            f.write(base64.b64decode(response['data']))
+
+        self.success = True
+        browser.quit()
+
+
+if HAS_PUPPETEER:
+    DefaultPdfMaker = PuppeteerPDFRender
+elif HAS_SELENIUM:
+    DefaultPdfMaker = SeleniumPDFRender
+elif HAS_SLIMERJS:
+    DefaultPdfMaker = SlimerJSPdfMaker
+elif HAS_PHANTOMJS:
+    DefaultPdfMaker = PhantomJSPdfMaker
+else:
+    DefaultPdfMaker = None
diff --git a/logo.png b/logo.png
index fa6fb912393e7cbbd315401e842ad2e59dfe56e5..68b62605386c8787fa6bf5da9f041c9bb78471ea 100644
GIT binary patch
literal 20350
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

literal 27153
zcmeFYhd<lj_Xqw$?OA)2+JaiKH&H8A#NI{hy=w2-+60Xqd(_sVXpLGiYwuE}sOq4U
zmj2TB=llEp6~8<l$s@V<b<eryo^zk)o^x)V!1OiANtj6h03g@adI$#qyn%mjB0Ox%
zG|^5y0N{Rx=^CqR`s!j^{{Pqiw*r5+06aY4b`!wC0SNE`QWD_LI&iZA=t6+(C;%51
z_&N)G8V76*f!+!r#s~O31$>zXI*I_FN5Fj+;M*K<y#`Q_0iyf>DiQd-4&dJbD$;<d
zHb7Gm;9>(t8UPMf;GsNlz5qCz15ETl%46Wy3LwY>5D@}U6@ZusP>=wAE&>g?fC&`X
zcn#d81P;c4%{RbeH!$`bxLgLVR)LjQ01rDrLJZJR1HmqUlnC(d1)w4gP*VZl-vL5=
zK&&so&kZm$0DPQ)k`y2Z28^_TizOh?30Up{$Vq|zDqyG%_%RQJx&mIdz}5ip3JolD
z0aO$~W(4rE6qxM<tPFr?FW?9RnCk*EVnBK*P!I<&&;l@Z0G$Rf(gAHKV4@k=83J~P
zfk#F_VgL~D4@7tX`VRqQ3{aZ|1R#Kt6d*MO5Ptv^Cj$^!z|S5iOa#{Y09Q+Z_AU_a
z4h+-+)tLY*6HuQ6JkJA6b%5b|z|j=g9snj=f%2z-q9icg4%oqgrhMRaHLy1VfCYi>
zG9WJ&c<c<kC;^<zftF{0yER~`4@d|B9yY*-x4@HNpt%5WFaeT-0E8Lfsq7etRkLLv
zT;B-z_2=s*F#*mk?pZd)Z`A3-z4yTi&W$k_ohd$~CLH3QSKllP98Ae7t5O~HO1<Ny
zAF=(e-7Fdy=1$8}F)`z)N4CgTi)0$gh=y~ewh2|~bd_2}B!<LW8^}oZ7yy8Cxb{O;
zV@9Tv!Qe+r`)kTOd?Xw(C)F@oS_a|GmgU5ah9)nsFTbyfb6K?^)I=P2h}15!Tvw@I
z>XMqPN)S=B3R{=gF*a6Ia9*!B*t}7WhBvfN+(e9p&d6Q{G0}Zuwu}0#EhKLjX;DPM
z>f^e7`=Mi2xyd7*fZVccwUX)e%JUJnCKd_Txu2b9v#+}&&sgLhy9TT+l~|Pqe%?<{
zhYKL;m6eY&NY^(bM!rawY%~xnxXmAL7J0w<a3IBC9XLO0gnbB9-&J~*EbrqQZL~s9
zq?Ot%{o>8;jB>G`M}r~sYHxHw-fsQ;!-Bqgihlo(4>bjkm2NaDk?o5&Ritt+m79ni
zK-Gh5)ABDA+S&}EODp>>oxN8H&HTO^82+yJo2O}$>F{H%S6yB!=O+Zd#;IpTT|Ea6
zE0J=r;RO+oC?kfqvBG@PKEe8GmB{PNz4gbhK6KK)&2wZfp4%;C)2Odn-pjBO_D=6!
zy8a;l_0S#(h174Y+xS75KfJH!>vY?g1LY}r_torO@oTY9>$^p%c4=tTKP(8Fspbn*
zg~)xr(3#bigz_{j=B^j}KA^VD?U3*EbVWiX$Twcf{tn?z+?)Nn+Kx69FqBaGG?QzT
zWenH9Eel{~ss6D2<jZ=O3f$fQaV<?c{ClIzWJWDVy`<}QPp_c>g^mBGyfKyCXJ^rW
zbt;V&+*aG&1ncg<@ZRpJH53rGj#B;23nP@dJ<(T|hRUAiP}EkdvclKhy8g_A_MdyR
zzJjnCey;IiVX7`(==K^Tfc>0naGNx)M5-}&d4&lW_XqWSD8&AxVJ=(iBSpdr4qPOp
zpd*%D6iw*oo$l+)AUd^`pjRZAcq6%D7v$3?lN%*v1p7<;UfvSW#0M|VS~6pQjEM0C
z>PtcsYpuqFVM=l@ue3GlVSzrubjYvzZUH@p0*}(IZ2c6B+2Q(!#qLOwnV{ej61sBJ
zU>g@C$-}+;FGZ^O55AntV67?Y^Sc@xV~}MKRtG;8w5KzZN%Ww<^V8Gdw=$>gM&*#l
zUz`-v;oBvvZTQAy5^hnYhM1z4SOOzj>%>A>F+Hmvzor(bX?9<k136V{7Ma4tf=$QD
zSgNa{Le)u-H1Mc}X%LU!Je?bCMoWG-u+lj4g(40{?33NXI4CGEy+xKBqx#7<%N;4#
zzDUZfBHIvDo1{@cEPpy945N_$e2L|ryxgHj`W8KfUpcz3@Y4OD@9s^P?y5OV@!RX<
z``d<{n*49fEIY?KD3v4L4;;s()4V*tFXnU5FgE&t`2{<TU!6|!sYZSLPtOJ1@0{)B
zp0HcN&t*}83oqB<mV!-NFOS~U+J*B(!`2k<zD=cPeZ^9Jv4Z6&<8xJ~YB&44`;mnZ
z9<2BI&R*zWpSeG}GA-I;SbAmmRu0T%JVVz$<lUs+KbnMX-e`SKLZwcEcUyT`d$B~0
zqgE1q7phkHW=`zB`6An3623zzyJ}x!i!#3W78_!oEk1S`RLr%Vy>IwOloe*Y_6BjN
z=xb0QMV=0QT>nKs(aLlsqHFhTJ5cw_C%e}s3zXh&OTtTah~>HfJQ>7%cg|BM!&i+B
z-J&i;_vT;OI9BGEPB!j5RiY_-zm@8TUa6cFImI)x-dL;qxOl-U!x3OTkzku9-v5*|
zfOn9Xugu%{hir@DJyCAu;79a(#>?$bb5_o%!udAcjs1_d#qh<X9=*e8eiA*M<}bZ^
z3%oV&I4EGrQ-E&-sp_iRmRW2T5IaWfr=T708VRjeG3RkNyTveKR<DQdYl3%mx0PCW
z@x&I7<1{pQVgtM(CuB@Y_7pVBzv56WwOr243R`s#gSURVrDQYF{Ql}N)L0_gM<JGT
z(OAZkHx8GVRMmaxzN|cixLfkmQtytKUqo_}2G4U3W_EgKgXbWJ9R5PlKiY30@$zX<
z-LBFYMn*UshN(hIwtfqGJFvEu22~)JuVVMiF5FB;EuLDPX|oM2KX)^zq@I#&qG})S
z-V_j^H~C1WGOpiWo^43{u|S%`nn^9dqyDzBj*|~>SFWeX@JWSzGHrs}`G<l}urIY=
zdkxYxo)t>opbUw3r<#cjx4SpDjg#lPIQinJB)iA!ey!}0B)Bf72s8`}94ia6?z+7n
zuKTro7$;1mSBBcC%lNQ%m-KF-qr9Y)K*r6Fhy<sLhFIgD?MJ=ZM3YxrX;00_<)zeQ
zek7Tu)i!ix)A(}|X<}^ZHAbozdO7a}i3h`oP0|_Dd?jSCWEWcZ#E6DhpWqt`u;3-T
zaFV%AM>`uAyKT_fo6A(BVAh}BIuWVGi>E*3BbTq?2w|cjty5r@iI9scSnjJe^xI1#
zAllx!`@&eMyZ3Lzot7Y-$`8YS(+gCc<3_z5^$|J!zw3$O@*k@QSAI~LG$pcpljBk!
zVPYb~qUsS;W7zDmDn^dOQY@c_3C<PN;CSRV&BDCjX;+#WlP;J6$LF-n%FTFG;-6!9
z>b}W~AB!1}P7qMpfP(MVIkPge?AOuwK+2u_U=Qh9D?)v^U}mK*$XsF9IQE|ttOj&(
z*>nq3ReSQ1V2rF{R66@~6R4I%`|<bBMDt$?SoWXg*K(@tJ*_mhZ<tbznRzu1DyVv_
zrS@n(prIaOhRV$tsFKu^#4xRtWbTk{J*1=Q;H}{jHQRPaa>?CKEwB0%@sLjZUmJ+w
zb{WJV;rSHXMppH--hyV~E>bYc*?20bmmWuZc1@cuAoJrV4t5(6F@aHG9aYi!vakdU
zafd%u7V@#i2z>VQ-K;|Q(exkNmr=%|yVKFnt>ykKJaJ5lvXVk*ZB;39{@RYw4nJoC
zSDkF29eI_cBaY--`eo5OmEqw9;@-x~?Cfu@QHEjx+b@VlyP_-h+QX->jYbNq%QE;I
zCljitUbTyrMZKu`V9*ifwBXnKMn&}1?R*{Ml^V?*hus8_jY;S8^61@fXf@7nD_F3}
zPkRQt@|9wxD-k7+b^T#g>A>-VAJ_2Goqo$G?Ca^YPnv}cGY(6?=%@7Q-mgNn;h6W&
z)z}Mbndx4AZhlB*`bH|pyZ$C(I5?g_ld1tHp0H{CTd2?$IP{_No!w5FbdohzA*vXh
zVUMGX3d}8!+E-OFy)eb-hu?<{<tkmB32^83IV*=2e+9b{4a{jCrZjvQDt6gPS=xgN
z<U1{pZ}4&gZdm=(6_$2!0WHz`govidpr!78-<cl<rjZJQsT3h~WH>VDUPBJque85>
zRR2C0wKVawpK+IY5MZr6LNRI?2)X~O#Y4Ih;`grY+t%t3Pg;HU{pWVp$=$Ha+iOgA
zTK#vCjHIuHe_9L&Jr;S%Ur(+LGBVrAIvkq6&BJM#eNZ~gcpa`3QLv0X-r#&*V|!h6
z0djOUSKXZ>ds{vJnTO^nqd0!$PVYvhxB#rnmh{a}D?7~Uv-X=3Le3PAY(CpRj{J^}
z7-jHoSAc<pfQpdSfXflh-<fA2-GARkX%Q_XXD~84Juu#{9d@y?WTt!eczUO!9XdL&
zC8FE~5Lchtef{Y~_Qy{+V)+DI8TYQ6D?+N@mqhK-_ir&7clmht-ATq*KQ?uLJr8X#
z#5oL=kC1XERLeJ!4N#(9&DtF?Vr*x1-085p?}Gdq6-D>w#UtEd$*7@MOIjg~Z>}ao
zl0NUd?6d^5h+|x8%kb^?$;*aC(?w=xALcL?8NDm8KenQdZP8a81K9;BvAr&|nx>*N
z`G{bzN03c_8KL?T!TK6{)ns_<hF!ZT=9>svHSte-s&~23<K?wxq7v0-;GNn|iuAM}
z+Q)R?mS`p!^Rq{;P+FFi0ld2Q=BLrX>ubFR!`Fvb9>3g9QXV96^|pWX;_g|x8rdh)
zeEe7U*U`yd+K<6>vq6J0Pe+-2AsgUl|0|RcQ$~I2PHjN6H_~Oxa#+(*6Cq9(Adpm}
zcC+(ylQW59U71G7J+jo0tz;WtsUh?k$9U9XTN~^*s`PItlB2tYK*{~xGRWZeGUS)b
zNg*iy@^VNCmMn_c7A6o0zj6J=SKVRAW}Q#)cdBG$z==UOO@&osdyd$GY_nZtr_51U
z9AjFU@y!5nKuhrDbdv+7DG~BeDBjeTF*f?t9f8ano!%|uh(^p2P~0aCGRER5W9PBk
zw^_P+4GS$V%J)@oB+~{9`<#T074!P#P=l7=|L&Bf8l_Wv{POs9fYM}o-oW6ZLOd1H
z#t{F)k02u8u|Z|Rt1`;>WK9m`k16hx^B~3A3S%2s@!ng9_84+1&LrA_mo=Hne-NjZ
zKacoP@PGjH`#s)HfrpO-bmuL>H=Qzf0$0R{1js|pzd%%_h+tTx$w#tb`_+p$JKpW-
zov8^MV1FWQh?Br&#_`)^{Tqpf(iu0LvIk#hcg_W@$@eXsCxi)VIcb!RurU48A5Qw~
zW2zU~)FP#Lc|`X2pHc+Q?o1K>yGI&JY8$-Yv~Q^ioGha5V5CE7YQdmfot<1>7v>;i
z7l~NqQEz)#{=Q~;M4q%CQ#@RZ_11NMzOGWHgZPh_7d@VTG<H~UsH_K5mebj8=AIRE
z&_jmmf%^tOokZCtGF9+7MO^se+df48;@W4f%-G4G{ly868(bArz@>Y3{^SzOcq6`(
ziu@~i+}f-iD{|bxlw!lf1dC-B?Ry%#x=8ri^@6mLqB21ImxG570owJ*ylz0x&f+cm
zq7spv#AnY%j++Xm2(dmS4x^NVq%kOe)_M>?&L)Ut9AW#ck+{lf&5r<#v;r|*q06<4
z7|`N8KsntkcFZnhw3Ccq#26FT14CQN#Nw=45Gq$~+Arc*)(lXlhP{iP992p5{%m>O
z@{%A*t7p9Krqc^onXC-*-h@0;Wkkg`iY`)m-{aTrFY)yCu_L{m_%!LGUi(ZJ$cWZK
z-}m#aB%E)9-(47gRxT6`5Oyfnetr5|Wn?an<huD0b%gJ(tj5iXEW;3CeC@oC5uxgc
z`83!0MnCCpyrTj5Sou{@Eam9Wn%UD*6b@ZLcFyZ_3q$gVx#}Xr_r1+@5#Q|jZ|Isr
zsImSkpyQ~8e|C_tNnZkUen|3_^Yc+hETxL<-jkB^wKr!wHt{Ta^YW(xAq73zx6I1o
zxcgasyMl);vo*uL0lh`sE8loSx*iGL{G62ojV*dry&+J-``Y{mrR`q-CMo#rudbbm
zP?A4vrtGMZm2`J&t)BOZq&MZ)(nCGvyidZ({`2Q|EzXVJ$%F*^Ip%gUOC|@W@+}z1
zPnH+|{9<|SHlg$FR61R^{g~*hsnddHH5a)29z9AnM+tLHvAyM#V=Nz%Z>yzjGMntb
zS*Ley<jtn=8IdzDIX2Lk7JO7WA<hMxNkyjBW(t6Jmc-tOY9AKw?V32_M4k^y)OEME
z7Amcm5VvF~Z*iA+3+*hO=$+5z<S5k1+zoXC-x$df+Xl(ba-&$Rh8ta+-zgW-Lq@W%
z@Q%uyNOw#=v*^K(Lh1UL{Y4^;lsNGOnjbpn&r8b_3^y)>6>{f<N%a-JNqrp}a?f}(
z^bt$sf`@RQoa_>Jx`x?6qfhvP$h%t<%+J-+8yUqPhHHCMldVn9y0bKAe?Hl)3iET<
z6}fgAF%1c-)ut|4*m-BfbySe<qc+mSlsPYw8?a-z?xP2nISL8s>_#dvS>#aAjm_(5
z%<~!14_6`=^r*W}AB3Do$wq=-kO|C0wxugggpsk8gq3KAD9$Eoe#RW-KGm)3?&?#H
z%=yW$@ajS)cZc~sMW)hJjq-s4K^_(Fwq7(snJ_bIYnA(D&9}oQ&`nzak#XF!m-)Bj
zx6Eu?p4970|1}$mu?pCyMdjY6G{<QcpzbWUGxdcg-ZGX^=E0P#A$AXScJw;(dF@M9
z@wcB>D8HOego-*{&NICGx}%qBr5AS`D%5u+3bpgJCeQP|)+-mO@EI%$h<2uiS6+NO
z7zW+IEOGNv<_q!{DA#5Oi&9xo4+Ba2t|W@04sG!A%9W1Pl@ZDWK2bi@bCPb~5Dv08
ztsRucLk+)EqQ)%=4dzcpi9hv`?oNF0zuw(Hf)RV3FPy6_|Ni!I$eVZYTmipS!326A
z`35I%b^Z;eg0kl0KyLFGDq;TDosjk*?nsyft-vn10JeiHj;~8v>dD98Zy%r7pASCg
zfN4Mac5^=X)Ms}>h&OgKn?U4%{vBcOZ&jYeDTnKFSEW9!-f`}<&#wkj2TjgZ{}LJJ
zq@<NoHY5$C((@JG$qr-gGjEOG&TEN-at`YpZAD%VqzW48Ik-}Yn6^|03y!Mr<e`HX
zdM!G3)s1qgqDVz*%;tNOKdJGc4CN1Pf_VFW#cKmwg#+<vxM7!r8!&Ab4axouMSxA>
z$oYfqtkI5Y7=HinPv&*p$nR|Z;j*l3fnVG{Y|(xDAQ@IrM3{%<EIQgc`}QG>=96$d
zgU`DTR}SNOfr%QI#vOHenw2ONE~PD|!p!J(EY#tu`dq+6OhK#X?c27pphUtl-5RrD
z0#%+DO#z2XIqKhbkV(8zHaL_A4DT8ndSKek&l&oU70KBor2QJj70kaq=wBCO6gVR9
zDX{$#LcsQC`E5OoNJ9VAi*xs7aTp2dX{}jN&G2>`Utu>gjOS$EtIDj%S*`x7UPFyp
z+5X^mUOg|{76Ik*LSu5iTK(VgO}&=VWWr#S%p#cl;#R%oR*o5ZV>Wsx?5E^O^$Q8V
z+Ohi9%N^RV^T0dM8_*A4MS-T+{*JI`G7E<*t<v4nitAYv)fd^Xli29=;`=xBihIZ|
zoP8=aTU6`u6bv$J^yB&)^{i#vh@X>(q_CyOzzI>BnJ--iEOXCv?`ii_Uu;)tW~$Yz
zJ=4s5ozQ>AQuND@@8l+(O_8FS!i`t)n)xEi=ffxuf9p$ElKxOaDC;OZ%;=i<xupEW
z+b4@2_D#(U{h@eJ)@7FS8h4!MCG&G{lWSU~!f5&}h^sSp$is|Ea6GzD-E&~_W!q}$
zuPXIimQbJ4q!*pydiP|S>7Mti`miO#HN`TwBM3d3GR04SlRx(os^$BPUNlrRFo1eI
zYU=UZM!B_`tQ3{@5mX=BlPlKS09I~7>3dPjz)J$-`CMy|$^E0EBkdpp&ljg|o6Gl>
z{f{P!j$jS8^LEvIpY5CK{noJ*ekv(mx!i#+86j}{Q-qV6I>pn5nWbWy+yV~ORSA#{
zU1?kA4kM7&<Mp}jMt)DHZ3B@8aWrz^92zF(A?LZ}TpV;Q*7{ST|CuBU^vQEu9g*$C
zrp}k6hV``r%U0(fUWb<>=i*q;KdAjjqMpk$QY?qfm^>El5Fh?7p2w**sK9Stq-YR+
zU>qh|O9r)gwo$<5X+@#Kzm*oxTt;a{cU~R{Lbk)j6WRKRt)wNvr*4E+Ul-zCm5}Y{
zdPueiJS#JnPv@>UI`N<8;;Uhpb@}u1uT<vl?}ob%!pxardX!Qs{FMGjgEeI4uZCm}
zI9DwVD5W&Yk%ZZ^hl6LWOY<_-_IT#ZG}Zme8A<R`-IkjE6LjlhIofaH>!YJm%k|!`
zUZDMVX{?=Ql6d)YjLCr>1oB6JHNyimRQYEQ-s^?4*z;Ex`Ds)ZJv#E~G*hC5UOj@z
zeu*T~;bU?6gOg7{S=rxJjubI{x83U2y0|7&;Uc*D#CTzw8ML1}-D$=YTVkp#?tMt4
zlew^6c^BKLCHAE$p}IGX##=A8WJSl#YuO*PUlcXz>IG#wsVa7{_QgF(i%M92N}$Gn
z|L2jO$K>eH%$HG|zoa@no%xbP&?|RW`lhDj>QvpSYN?o#CPT|`Jm}Slpygz9YzaX<
z@3MDn$<%MxCS2&1(2bMjMmDkh8)>n}HZ-eix*qbiTujv~A1NL<>^vnnSgzt?N@vyb
z@Obp;*JoW%8%p`qcDF_|)|_`blZ=H<A{<OV>#Lhi{8|GNpVSA;KXN*eS{JyvqYXN<
zNjl!r<wiH{cS;6HJg+KobU2DwwJ`8#%u2X65l1ZDWF_R!uM@4xzR7-4GShmdLhsd|
z%uTyCJ@+Mp{i-Tj!^-0Q(2R)gRFzarUfORr4=ZJEbah&6wH9Quc7D12UF$si(pyY*
z>zU8GB|M2+!jaMO(JC1?x@XVLgY6^`EH>Yd{~VdOV5*d3$l+K)HF2o6F2IT}C?qW1
z_Kw!{M}u3Va?ZT*=vyi7YBRS+IZ9J+DKS4=adQiGD~~ZwrX?|r<E%7|uT@REtvUXs
zPZBrmod)k&7K-1|b|Z5{kmbyG+IJeCb3gBt7Mr7g%saR2sHI;9*7%WK{KM_D&8qBH
z!dHYjlbTfvr*<TU@rqWvA@1eq07j2DFn9oS&e|FH)t|e*fRRgtL)%Hex|$W$>Yq()
zvDf%$U(%A<A_?(R&haBDcjHR!-27Rqzqcbz^ZOypCfw38vFaz8<40}ors_^(TLQrn
zy*fC{fX4M>%P<L6Z9yLr#|jBbZNdI$`AS;J>CN@Lx&?z!B_WgkbnXk6(YGC14h9z$
z)j_TPFNh6?O<UXgo<6Q{%$gElqRG>8j<4wK5Tuc^l$6+Y!xQ}M<|dxAerNP;xR(2k
z+fk_b5dsomO}hHb4k~}?#97~DulrmTKDntOZ&Wj=QLv|Lej1mz)oFAK<ZQr4-wJAZ
z8zA1zc$@c(Bvk!wYi)a$Pm=v{S&VmEGbg+>e{^6paZ69;G%meO-qqz3z};iONVAvq
zk+aD4)9ZJwezn9Seq%$U3hNf_R1@Arjt)dQTYn}x&nP_aZEPi=@jMrW&?VH|{b?Xa
z_QKezOOh{Sy@XPy5*#wk_@2gd`ayRZq#euY1-{~~ui>%?g%$2>;j%cbb%OnsXqUkR
z%MklrgyqC7uGH<=ozrgmRznqe9dwMtsEQbEYtCb~xO8Dfy}8qb^jg<iIb8g67qatY
zT<qLj$UOgS-#Nh!5Pihbly(pQXa5)zo(Lq;=akkG#T=W69oC8+X42U~?Vd@=g!eaY
zea~+_lvHZ{nTq5IE@@-<0%jct7Eb0sMi#fu)t+nW{(Er9f?O|4ZgAA26K+fJ^L`~G
zUS;|1-o^vVP&O%HaU7@@IcX4=o0H<AZ7w5TBl-eUoyQZ@Iw!Yu=M(N~NS^6!De+Ic
zVa8YXu)i-N7@E$L)87{kNW7w_r_W!&=)ja$N9VlauLm70CoG9bKS_aAdkCbID)VN`
zqt0d3E~yqXrRFh{t$x|Wn5))rUPvj^Mb(?SICNvowc(cNdP@G_&;&1g?XU(;)AP9N
z38JLa_b_D(sNhJe-z(x#;?~wYQ>CXWHwZelE|O!u>=&J23VLCw*u#7R(xuMq8(>kX
z)Zwr+Zhfo*<P`ysx^3xFHOC~@x;l|AzGi!L_&Raj48JKYHt~QLP=vD=ToQS0D&o1@
zkutu*hy8x#Lg96yn`{lG+<QaODw=I-s``ZwK9iNFS$@%hG_{ROlu!Q(pN+G=ez4vh
z4J_V17DM!wUoeCwNIkAmJAH1v*VSlmFV?iE!dhO)(U>GRU}`xLo2bnAri8TT{6*(?
z@M5fz<M=IZQ2DH@ql?_fX0Vbx4Si`vx_uCg5aTrNkEU33A@=$>0I}L@+2ANp%93JB
zmK)biIuWdk?^9vHTi{sP{&oD;k^Pd^%h(CR`cW+DgrzPXVft>Aahx@v;=7TN`L7hI
z(s(&@ay3)Dpw<>Q$47D>y~UM|LpeVByE=NYEe_U*A>z>#^w?PwsGbh(rA5mPLU_E$
z66F%w$kxp3)K;M^8}_^4y)q9DGc}eGShDe37@aEXy!X2KogSk!pP86MO*ak?+C`3O
zhdO6$#~**oRU%Tabi3x{%}tO{1aXjSFH?gin&OL|WlBceCfz7sL9NQEjV0p+_afTM
zzHU1~t}}deVQ4H%r)Trm-endGT%S|~n>gW6Ga(9M<Z?xKQur4z+evtn_lUTmU8xuC
zBc@?D%5}r$HV;WX*jLKiz7MNs6}2VM=R;U$7?a$|7I*v9NQbwRtabL1Y1l7ug^cx*
z<%+>c?!t?^h>MEEF^=H2?}I^ODxP6?g~*cSp0ANDdDabEs*}E`<XArWG}_zCen~In
z$pQq0=rC6Bz>=kRlq`Qy`FAnSGIzz9UxO_}?jIAKI;NZ^%Ed)khH$ewG%>TZoW^Xj
zTRzJp47#(yRPhC-NoAoyYQ?cKAF{;e-|J>CwwT>FMb%Fl#QlB_BKEOan$4yZx6REE
zBQzN=m$SlH5v{_ijS$$cAmzxP-wIhE_GfY3jjZDmuum~nWqs$^*~;W!z~s{$w_0V7
zw8|$8dYH;oF#^-1ML~PMcW^we{{E4Bys0Yj5}k2EoODQB$2D1-Se^B|`uhih6!lyE
z9;Z;4rs){fk}9hOf@QxnUFF1iPt~0vMW`k*2&Q>=!ojtj3#R#<U#Ra+TL(P7e<o`~
zuc!WQU1hz4YeRVkumAo1$7-k1>HT(Up1xB1xA;NE_r)ZN$}^6IFzSSACyyPQG{sYz
zYB!t7>MGaA=l;+g*MS>A(zp)OVT@KK?D>W|J!a(@-r{N<Ovi_&@aABGx5DBtn-k2H
z_OCDE<zD5HO+)J{Kd%({e`bH2+ZO1-{8oVf64zMqqqxKs?B_R1j90Sx`jgQaA*v#s
zo{3qNrD4+~XF+2{1zD7TCHwN|sw}<(3#f~!L5UtLu~2@zr-#{xoLD>VbEh~pmzytB
z)m@JxT*2sLM@#yVYyIR^k@WNp_6reAKcR_oBvVc=`uI}|ax!`KYg*!H6Z-|uKE3MF
zEI8?7RNZwwdh-*N$JY3G2{Be_PstM+YL&&fu_KPSp8k_QkZa|h!>rM%SY23H9!Dr$
zLuqNHHOE_TQHOdP_PopBrzTD+OADlA6AE=<m_zk8moxStQ%9~PYKM5xC8u#@|40^D
zazhIQ<CVC|q|qSzcDr(QoDY30n9MN|+t9+4%YPyKwvZV;S_^T%(0bZWY~tfYrp;vB
zAF10m(a5pXkew}y=g<g}W@y-U7UdQ%KW<9%_ff^pYk}4QkKdHoB>ISp>1p;6?5CMt
zn|sQZ^F!traf=X)A^}fpJbD#}C(EG6Ez5mtT&ozbEtK}NA~Uo+2mK3xJ_@`$Vw<qa
zqwzs1#jA2vxtx335oDW`V{Xt^Pt`lAB@wfTN1Li2pJP4?d!C%bSgh9u)(VouEl}|!
zA9<|yq;Ck;hr<I`X<K1mo?f&g)Y>;OJmCRlUot(tL_efAdM<!lFRyoFgI}*oyFnLA
zZSfZNAddRUNrgFiRkOs;$BxWZN;T#jNZtEM6_m&+Qrd7DxSMq0wL4+`yGVXIR$QLk
z>}e{5i^>Gq6L<p%4{la;{fZTy%6~zHG!{~uBZa!lkJ!c;hZ`A?XC^OB(uR{k-TBm7
zX`silPZi1QdFyMUPGgKm??I<g6g)4oIaY~y@_ORn!7eHd)%9fuSs1i=G^mZ7Y>)ud
zX2vf?1lQBM=}cN2qYcM}o~S47u!7nQKo`7K%+JDl?!fV$f+Xpnr?N>qvY?)N<S}ck
zv9!_sV2C@_NIqnO+=(a&GSO7EYO3`@?5Cen)wPj8I1X|%BI%J5(%MF<T1xF0VMMu=
z84I%&fhyi{Lf==Lqr?o|=U)<}giL3MYhIFSEx}IIKrDic-E=Ui?TS@Stu6bEX4xu#
zeo24HP07f)`RSWa`zwR0MoiuHzA&5HzT2V#ib9IuY2oU{FfB<*%@qJH5Bg~!<FPxo
z*JJjxmdRHS2hR*xK}1+i_m4*RQOyX{EJkL@joe#$lEtjvHsZS&b9eub_7Y~zcXEMj
zbHR7=B+ulJ_Eidw@1iuV6;b`?sdt_6i%{q^6RGsijhP$r4FyKw(9+m&HeqZQhw-wj
z|Nf>#BxAL0?Bdda>$=)89yF3nI=%Towf(Og#p$n%*xwYVjF&5(Y*k?ro9DvSO38~q
z4?xUaF>@ympyY8y*JoK${r6+JY#nxN<G47#`h4K{nOrmqYY3D~cqJjF`Iw^W2fqnz
zY%aZeDC6wwca-|S@?(F~>mOc@b||DBa>}@=+^ybDUgS9#KTTK+N3P>a)17@Y{df_J
zcWS>=iv8q&@L|_0p-2E^f>SSbFzy`(`{)f#kIhX&oM~a~Zt2Ae%rG%|2OI~lBYTQ9
za}@9BhdqI--z6&X%BZs^NpJ@(N#p5<C2JbVip4ShmdCqrd27Bs=fE}%m2o@22NjBg
zLDd4dT_Em?)!T_hkAEDV3Qj!KH4%T5mr|eh$4TK;tnWfNGK>xGHJu$8v&e-EBhf#m
zaf&>jwuxaZ9Ej0VA)5xBOouVy^66DA>T7MeWqd>sDbiHW{nC{=qFY`VH`C;BUKV}i
zK_y;k%Q_JjhOb|!R0>%WXAgWS8@IT}fi$Qm_BE3H+ydrfZEHi~SUqKAGP~#0Z!)YG
zUA-trB&jW#yh0DBLs}B@38lattR~Fg4#^RCvN~{ZMbq<C1o_T8BE#t5pPmi((m;+(
zXa#J@`I;(VUb~(NUsVZCXcAiNCWJ|v;&OTOj9eM2gt2K@se}XgF-NzX{K#muEV(_)
zR1CSsYE7hUsl&!@%@?F45t?SozFI1FP7oP}T|RIseS2y$r*&l|nQ@@R(9bY+dLhJn
zJibWvdK0Qwt!=W!0qie|;0rrdU9N5}w?IODO6+mE=>ER(!o07Hn^LtD<d`}@rT_wR
zWK66X(!=jGHIX6SwU|_CQV+>5P|)#+jw?E?o_mTzb&R0+^q9!2deOso{=`45m9vX-
z=tne}vDlEmf&E=YP&A7^rg~9^$i|bR(vX2j(V(7L=E&}xxAzxu!k!*MgYuA}sUbF#
z5}%s{KlURkai`cb)rwR>zsB3C`djIOcg96DxJS0QN2F@2kE1A<lnXY69dc;dxKMnd
zq+*uOfrt!i-)PJeZfqB33`CBrM5YYrMSHMBiniY`K4(fCby2D7knLn)H&&}R*sU5n
z%zWJwM6}9I;7)}rRoN<i^PRC+q8Oga9*BKPkmFpY`go`6&Af<_zyT*LfT_-qXt8sX
z=X_Fmw@L|VNsK<5=BTbwIpiP_iqEad#AdPs=I<73lP$X6akchC-df}k^KI#%x2T|4
zBk-3?0FN5Ek{6#V-MnZ*JirxC!(q-GKzy97c*8rS%>t5mfQt^8LI=jpasJyP+m-Lb
z`o&pr)<yv@H5KPK3#n1zl=@*$;qM`Jxw6R59Gy83Bk*p;JHf*@*>q=jQ)ZdUXYZyA
z_6#4sv3K09SlXuz!-u>9C(koOdigt9u|s3Wg~wHaZKoIksu(|-cE*%~oho+{uLKxg
z0Ffd)ElLf|uv<k!;Doh-UtV|c&V7CfiPRRV*2m<M@Eap3&};{ff>m6FtJz{w324P+
zOcHZ<T1?311b%shPIQpXY%%%1lYt5)%&8wd>QXuMAenwLpzg?6N7oa%Q#(R7XY_4B
zF;Sgtk-ZxPPJ_&<9_k0QZg6xaLNbT6tr%NRKB#}2#Uq=;`!>r!w@<cO<O|11lv1hd
zmo*n8+A=_+d=0De2U(uok2RndRUzHU?JLG5XaV6e^lPDCP`N*%m{%kRPj>L1-?8q@
zLx*&8)4WbWh>2R<{l&=@&7{^wC)|LBnerm$UlrlKNSK3>q|e5rN{Mnu27KO0wjrAm
z{<S+X#F_L_ryJx5PIPAvOp=|erV2}j;QJcd(y56%4Rw9<rol5J|9Ws?H#B$tbU=NB
zUxEfwG8G$zk4~ozyDNO1fNq%5PS*U3c%&3>hP~`Swjk4eh);4u12KDsSAvVSrEQ2!
zT^2=bKu3pitqFJ;N)aEGhq9VtQ<LCzB#=*qcoGT(U^S40zr;P{txHn#%WqyGqPekG
zBy8t`Ya?@Cpvm!I9sWf^@HBJbO$i113GFo?92V0i+U}tATyb<jfxsg^U`(7It0E~w
zSFr?r@b6wS$lsbd58rnlY3V0%_skpYAGtqr+e~;cI;y-=AxRsC1Nky_Td3wLok%~d
zekta>d_WnK?nXBCXmxzD-g)XICUx1cjuE0aeT&6!5t5}rRj0IS+r(UU>5^C!MbAD@
zwDW_!K~*)7F+MtX`u3HIGfrZ|P6Y#_)$p}Jy!l-`_?<Q-u2W~vet_X;#hiGS?9xds
zVS+#CoXNT~tu5cCj|h?}%HF|#uC6ZY=p|s?nGK0&5A0c6K~aTeL+l1sD-YvhukLD{
zIIBEX;}ofl5q?HV*sq4pqjLAS2x3aO)kYKUmX94JCF_6<qpcXTqz$7h&uZt%MTS(Z
z_$B_y_u4yVjsk;l8dB{zd@9=$RM!$prp0mm8LRPE4np@j6;i>Mkh=P{m5D4AZS~Xx
z8CPaju+tD;UD+<#_)1+_&kf%K2kCCP1@g&7{M4GWoejH@8ai{gJTFkkNnh^Ro(vC6
z@KdZ=23k9n5U*4-$M;XlJ%6I6ia7z9L#|iOSm3{B!h{EA(9FyJOJvhQOc53j@lmbo
zy_#U6T311<`x@9FPwQFzC^J5I5g?>8K72v-9+tY^@2*XP^k5~8@@GnTX~Y{YyLm=Z
zB7xO+1}GAYCnn3PDIpWAP;ySNxgY{X;S#+NSMFhgyg;rI5Sq*zzKgqeZ(^A2ZKO;N
zcFP~uL1hl@F~+KgQfIj|>}OJmwn^co6E(e9oe$XGWXG;%3}YtiYkJ!m1{9;wbDrbY
zo>B93U`g6*l2Z%y+Mfc&>BAwY*bt`Vw!V+Ef$PD(v+}gegeZ^cOy*jZ10PyulFJDF
zG4jvK<jLpEc;A^R>St4WkGf}fOT}oJDNuVXsQbl4=xN$QoKJl=`k$N_M20x}233$d
zRIlqmwP)?l1G1MeSMr1?@2ELyNSRR$$tlxJx2ULc9G)J6oqkUxR2Dyt)NWX@pZ|=H
zsKh>Mjshzye@yseas88LYm~pO-l{0X-Z)W|VPx7^PS^BN0z@`mQNAn)UPBPWjD=#N
zpQFAv>xIdf%A&oU0X@B#H*zK^KnhlO9}(pe<tv6@E1$FSoe4<eGvZZ<DI*(q2HFXC
z_yT?#I4fMy&RD3UMc5a%|Lj<gN2p=VuGnD|g((jFQ_g?~OT3T0Mg@NDnGo<2ei%7!
z?R48{NHeaWkM7zn+|OkSewmjxVvENVli6yfam$q^&-Hsyau(*wgAkVZ8^o1RTB9pe
z+>!CU?(tjPleTP})f7eNsm+m)PKp`+iYa=cpQ7Q|9S_AsP<;B6_}vXL5&_tOfg&8T
z8P?ff5;!wgG2ji3z>KxeT~rO#Q_kJa*P^41uB!Ui@?-<hw4$t$5J@GP<|6}?4b^qx
z+GqIqgW5TPZfCK*wV6xCn9IlDQlTUdD2S$n0;TWVQj^7BImh08;M8#EOxRjH2~x=(
z(6RQ}VO+Or?vV_yBZWzvg&1>&g%-LNyB;S&%m`C>O$2Z+S1r%if9F}+1I&ZOsXXVF
z4)%pI@WxJIW<B-HnC~<N#xrTE{y-VNz}`^=&KwfMds;{R&voeHI7vZxg_chI1QSkc
zb%pPVrwHJX$2m&DoP`qfCBln|(XvSXSjX)usLIXmvuY%N+#Hj0CMkPIF~o5vUrWdY
z7aJE?l~%xb5x0*ne%&8WtC)jyS0@Q@EDZ=%f;y?dZ=}OF0hB88Nk)>Dlo3zWw66|t
zViKgLeyvgwkz`cEu$g0~o|hH2KPaS*ykbB!W1qi+VgQ}p-E2=0P!)=^T87t9f%%FQ
zUqKEWF@I>hE!6VLmxqN|_|F6o`eNbML?~R$#~~s4I_kxYK$(3V%pYQ~(A4EWVbj1m
zyGWmU>g6t93>2e)i|RCXoC=~6sF?cgiy>-A_~|3FFNRr!9BMdDX=goo$lpPvkAmj4
zz8vH)gYnAaqIA;4g8xD5@lH;UF|ntx^?WkK0CK?TIJJaTm9FU>VU%Xxz`-C7UOT@y
z1DJu)F^Uo^>=AzLra|7oX|j<!zc?+pfZ5SINmt2fd5DL!o_Zb9{qZhFfdI9UCT6DM
z%<uGgnCB~ur!#mbCmD1`fM^yS-K0RRfQ)boPO6};^1C?&{NlJ^1{O!}I9+_F<zWuB
zI_ga-83ehLZQ|6#=ra!vtXAy?Idtl&H{mh}9;c@q0nK7HbO@yiU8Q^NPXq={hB^LL
z=t?3iSsV*h4s0=Gaq`C%#>B#wgu!X(DdTZ#S6z2zM3_+x*(nGO4dL+}>%z)_>Kr}r
zC(47@P@Jyn=Y4xQ%o+(2XM$`^hh|Mw%>~Nrp*$NB3U0`X-(^A^IRYwV3Bf@~6mGDB
zX5O9Bc=7oTPyi)DA1uTnUI2dKJ4VpJ-HLMxs+fuxFLsktJD|aM#><n`<*49neiwBr
zjhPa`F6sn&inqJ6P=MHYm{p!%oB+)5Oh0R)cFMbZFQ9?@8`Y+v3d)B)0Of{<GC`t%
zU<ExauO#_f2<naM0ek@mEXcob|I}PP?~dsps}-n&7Too0gIzom%(aujVc3wsz=|9E
zymo3Y>&VqRX37H@dY6K~92ycGr^Z%0rOdvt_=f;&2S1>bL0BUN2Gz%~tID5CiaIz5
z8;{UMb?xNb8WT4wTmN8ndZ}_?cJO$-PZJf<jR=%9fi$v_7bs|=f;j@(WLdy0{Ni`@
zkGe_(V!gf+);_PCvg0`O2v9<hfW!&BnM5m!1yu7g8G)|8hp4Tro(XGwlsjf|K$29M
z%^)x4U+CJ*1VvG@2NWKWpk5$Dfzye55<bCqO>p_w6@6g5n;j`&JdS{;ZUD*)i6Ye$
z8s~q&Xh3%fB|JFDgeDhZK;m>@8$FNllk%xYG7rE4%3b~>CdC*_Q$w&Y9)*<_>Noqs
zKxf=k8NU(Xic^MQy*YjLQxTJqMA_V(S4zlGdT`TpeO7(N6z<!^C^gblk9zC{Ma<?C
z15V*ZLuUqrB?=2NsbFy`W%`e_^l7#J=0^jYe+-XOST12TB;eXY;VdkGdcG|fuluu!
z;WwU{_#f-<P6STw90B>V^x$A4XUPw+ga7Vl3z!+xF&yYZ?iK2xILA9h_1HV&z>{}d
zuE~WSG*>@ulg;a)DSOy=tciM^)iZaG67?O4%IJQ{UfcRe!9*8HF*SWZFC!#h8)cv6
z<^X3G&jB-~gl8LG_2e1VL69$=S0JnjK5V;Ubdz+Sx)GrKF%PpC!DD&G4^rXyE&r~D
zQ&SHE7$l?yr5&$}1RrU!-z3q~ufXx0^_@=N@@1?10OgXSBytH*AgB3k*Z;}<!{UE3
zYl(&;Cz5mv|BrAAXXTFo!CKfAr-z05L^m0C1rCxwQCB<{7nO~iP#MD9GlRE1fbOgR
zyROO2{rnvgMTVjcP(X|tIm=ORq!owurq(^6{Zd*Wj`u_;7d*_q@Kz#riUjjOlbW&5
zTW_DbA<PQi<Gl5VJ2nb=M2aGvZp-Q^0yk!Jb2<%oO<^kJo<6s*N-9v#;&wKwAp#5O
zGK`<sOnGwWP7&IL`VcPJpM-qPBNWfpb%xc@gI)elm05w#AE&}QQ{0u+GiN4Iu~h+-
zP7Uk<4YG7#6Qo7V$Iky&d+GmdOcUNvIVC*a32tIPbHOZfgsN-oe=^m#r=I+uq9+<D
zok|mRJr<b3@*r_WZQ-*)v+a#R?#{h_Gq$ORIsa#Z5;0T8n5jhE|FPDtJbV`_D_$N0
z#^@&Mnk~?QJ^0Un#pwUcd-jf*oTzlPvD~6<DoC6PT>Gq%-AEh7To?HeljMWS8%aP)
zdQ5(6Ct6fWf*;_G7dy`+V?Erc3M=S;yc630<DDQkr-NK0M-@%2WvywUp1_h9eO&GR
zglGo-GjIs&yd35a9r%q@m)e0M=A#<x_D+z8K!K>YP`!1Bx9H-o;{SGe4;#1zejrrG
zm5L;P4;D=I<Mmk1-*viM$Mrh{Y{h;ic*Zgwp^Y*tKgRy0KzpPew5Rr;#_Ph&p(yKd
z32AAS14&FDk%^tS|AC_A!&*8;IT05E<48q)RJ2M>eGfVK40Ohf9RH8~oT`q%%5xSn
zp7v63rdmzq5rE1=hSESEz@;K4pFfb}`XBRuslESDPb$ko9YqX#Y${U8mEV-qe#Yc<
zOMueR;~Q7dKq;$QXh-MGgh*3jFltB(Le%8{VJ}Fq<sC<hs>PZ%N;RuzATVi41`E^e
z-&sq3kRa1pk)gQYH=<ZXe+qs9qksKmp8uUs`2$)*XAZ=S1fQxijuUhN{q|)>l_Qi;
z^+~mh;Q`aQwS#w}E^i_jUG<t(<5OBRF0|o(qK4YR!vNU?C>DKqB)S<`7sEM_u>08U
z2@773AqT%eUg1KWN2TQ4#uQ;-%72LBmY(j0iv>F-Jf3+UK2}K&Nu(BqQ@-kfxudS&
zxM#&wEsUBex}rk~dqMO&hf@Q`!a8GsFygV%fgmWhk2r93ln6Nh#n7r92slpZWrY@k
zKcnv~&$+Rb-&uwon2Z;DruDFbTMQ3u>aN4HGr|cQZf$F(&a!$|83XVU`S2Q`VOuF}
z-tQeH`uIx#rVj`8p7DQf-C1?XOkcLdtQ610?$XGa72z#D+8H~=jyaEOs8!ctB+P$+
z{j!Z*BSGn;i!rFwq=7B&)`g+$-gd(z?l;&HAdH-avFE3>9wP81td62V>G*a==KG~w
z-8CZw&6MTlmL^LK&i2G$$s|X0FiPi7Cp9E9V-V`>0Z+sZK2aU(p|F(?>6bZvRsIha
z-zjRKY^h$oW6UiiKsh0=NRI0`%fy;#HOn*Hd7PY8vFE*r7JRHD$|VhwII?1N5tv73
z9Oz(9l5`n5G|m3`xpbK3nZn)-DNNHy7bT5#Gi!Ui<5QJW`gN5dseXs#b(PQ5QDYnd
z?f(vOxA&dgv9+4|2czf{Y|-X<3V2raAgp7IJd5ce>d?H7tDb41Tfzynn2mtDf)Is;
zinoN|GyYDhW1@rYX&K2+q;*`+bkJ^DSN&^ylvx(~=zDd;Ec2;;jgOhJdrcjEly%j#
zwx>(9rH7I(r}+G(KF#q`kvPa)hkt<u;x*0I1#zW!l2T)xId>m@k(sZ?svnIxNtg?A
z&Rmoj|8w8zu^Q`W%vKr}&9L>je<$99XU1puT~uq7ov@X!&ht#BOWT=vxlUH(8X3ye
zxdnT0%mMG?l~cGW(hNA)sbR(|rUbKk=1+pe5cEc_qKoK=k%U&-V;DXBkY~J8I$SbQ
zmno4zm32tkkT>Bl0DG7Ezmt2>zw<s;X1c|}Bz^lh5G%HNNsW0}t5%b{)+nA3W_X}e
z7at*?M(p^9vo8L;c1oD&X6PhHE<u3*Om;DrU<DjYD})6rLgdvw2p_87J7I1NS)V93
z5XY(u>OC%}fIUPBQ61Y~xG&xTi@*=P>Tb@hChwe$bJyK$Vk32|qx=^#J+GXLhyBKY
z9u2K2F}vGggY&y!Gt_-+GL#ShIsKy24_;9muQZh}j&zBb|Dr6ZaovhJ=eo#`U~Fo7
zeT;zQXZ+OHDav)#ItC|_@~9s&G>dyM<tr|y$Et_!XYu(|VJYDL@+gU7Vh_5-%rK(^
z11h=UKRa?nUNv*Mu)ldmGYNSw7?0o3|GzP&3_jS$(3NV@)*#IVx9AV?qOC0LH8Xfj
z8mxRwf?_6VO1RE6RM&NloWvIL)k%cnrg{$e_*4$ONcst1Xl}hn?KE7geEDubGMzLv
za=<68R+kUnD1R*-E}(WXrVK_Hxu`|@5Mq5-V9}MfJW-@R%2gSZ)`S>ue<L*MJTBz~
zu@6Fm@u}QhqWlRGURTY@)Q#IQy%ZW~B-{9_UhWP;lA>Q8@D->X%9Auf=5?a;?5+GL
zMJq*yFTCY)wpp-2HTu-~p9LjB?sFZbW2^8(m(Jk8zZ&!5g^)e0%lwzquwcdJG`M@;
zhy_x*?1VFIFusz`I$=ZWUigm}dtC(KC9u`#n)2psyz)#s<^MBgL}nv#f5I!2-sz?4
zzodv0)ir6Nd)A`61~`y%_swJR!0Py{#U%KlA~xIbTaE_u6&uCotZlv~vst$Ov+~D3
z$$R9pma_=ll{aC%F!E>293#mMowlczNRkg;RA=mNV@VRXsV-WT>e%~Y0UvCDO@2*y
zj7lYaJ?;8lxu#C`et4EWbP0Z_Jzng75ln-%&pL_;_bdI;0hZM<mb6%l#_Z<=*mQWp
zjMVR597rZM+~%&w>1D#ZbbfRnuLew@G^>&mmIfK2a(BO2p@7U9xhm!uh2cBelU;}>
zwSBW?%P|s8Jiyva$D085&S#K3EqxD0Qhb>K@6jOw?pi%sOEPrs)Gf1AyzYIH^n0m@
z&YU)w5((imJB+#c69m!%ik2If@NlK@CHXfw0`0>#kRt~J;e^wJhsqDBnIEDBh)O&t
z&IO6Qs^<2zlpHZkr0N}hS=#+fq!tDoSA8nzS@v_5fO4IGd0c!gIZ84|-9O~X-&h?T
zCOElEl;MYhL_uIe?Al^Ci4vZ+v!#%ugT<X>D%8j`P+=ywco;a5En$x7KxGSy5eli0
z)GTXyg~?UM1hsX{>Z(cdN4OgLhwgY4s|y7-1Ka`Xq}Hx}Z#g=uac@*(bo8bp+nB9(
zPM=6pl(3f(;sZZ4<j!r2MtJI?l7<--a@q__o*>{VXc3O{zZ>zhzXTcseFg-dop3MC
z6{#G~(^1i?J~1~eW}<XaIC~R3v8}Bob_cGdr6raK#A-o6yn#5XzA!2xA~IDssRvq5
zxHzQ{&!=R>qatofE|K50CM;*ej%`<#p4_Y(`(8hj@e1Gy>3+kW+n4SUmZ%HfO5fQn
zGALFetd(DFxuGwHK3NebVr$9OJ{I@Yv!b5h{>l}ipwpKhx8Qo=(G_Pjr28T8p6VVW
zYTwFQ^DfGXJZ_Zv1M(QZEXD6cU_Ew0`mLK_oI19nfMq3Hv}o#w=ABf559h2hiS3O&
zl*Oi0wH8c76nuXW`Eu4P3X~{rSnN*gutD)QUhVf2_gC=?N+0Nw%VB1E&R62zJEY*r
z9NasJ>2E)C%WO?FJG09;F;Lfr+=-tz2J2|Ed9%MMoN5=K8DvkDY4VRZ5_v4yOyvvZ
z)i1hxhxxBYjqFnvIcQD&lqS`xe(`IZS}KO#2I8H-;t<K9@A@lQZq(wwYHfLl!dl9K
z?>|yjNPNSxY-~t<8@OyWcLFCH#udsci8Hc7m7XLnM5^>%#4c2x9N&@`V;Y_;B>Q%s
z6ig_T@stx&Q{;x`MEZ7rO<DNk>3clb+{_nJ!lU09;Vbb~9h~{eNMb^X67?zlj!a=o
zmdyVXO((M0C4<)_b`3+oX$|pu7moG{ndl8P(Hmr<x8Z2H#OpXX^=H>I1)S=L*G@Ru
zAIU_UW}t~03&})p!pUAIUK_xv6T6nN;N&YLPEW(Z_6EpADQL1aWFpTIIM@Z^v@IK)
zy0dE;23{`{uk~=OcT31bmtxUm<*$*6(sSWhtBF?wc#UD#;%W{~?-8%(;8a%%$xJ_h
z!)`Lu{C#k$7l_wi!D&<^yQbfPQz`NK5)PG@NM@??f`j)wnd!;(aH#XdYbiKQVb^vC
zIC(3HlYb=~Y56HKljj+5IT;``U3dzPv~m`4dKJ9JvTN%AUVkE9yWvC`pOL99g43VK
zRJDuXL`lT!9q<~)uFcg2oOTnhFW^AF7s*tG>%i&2Dl*mCGB{8J@%jjyn!DI_^Z};>
z9^y1V7LJp!fXsCU+|H1>8r*Q4*iFPKupFFz$F8R{c-0cGjc}ZuWUjw01GlmZWUl>i
zoV~>B6Y#o&UC$u!dYgE?0jD`mCff)B6=bsGaGC|g>nM12VAm5C0#0?rYg-wdCCNkP
zn&X9tvt%yMPjHs<LgKX#oVvK!b@c%!cPjCUgQLXFB69_<KuD&a%;nz*M>$Bm>Jz|e
zD7(I?;B}68U4)Z7Q%ELzAA;T?lWqDGPI8WTT?DVO?D~d**AK*NS~i?xZ7P{;+fxv<
zd?uM}W+t4&mrA@Uz-tV<zQ{J<v~m{l%7tUBdyUNY9E5#MX1g>4juA(^(lfv*I+EQ$
zC-6E;ye`5iGHS_e+kFt`J4I&Oyb@0F2JuP;uivm6=?Gq56R&N{;0)#G$#f^6!9g<J
z;aE6BY$5S_54=XQ8|evNYl+)Oa0K_?$#l;{lgnhf>25f}ZsN8Sye6?53I(r)#Opga
zf%hFUoqshnSv!kNm*a&Kd_%lyz^gC2vHQVmC-GXc2o7+R%=Z^)w4cm(6b^7Yop`+h
zUM<*-O$M)LiQ7-GzYoZKsi&dQ%2YDnd$7OniQ7K#`YpS$!L7h4p^|ug3ETT9K;}z>
zX77>tJV~&<^Tg{?0yu@luqL<-y!I2XKqG9fu7u22lMT(>i^+UTa$$3g9^w@bUVT_o
z+yPz%#O-U?+v;g#0dpb2T(W>|U%}pv6Sq3>8q1pEG4OIfNxV*ZVQ2Y?WC6*L;$^ac
z`lYZl??U4Bq#L|OuqJ5-UT+b%eXz09HDm#^N+HGibh3b_55UHrC2m>Z70R0Ce(;)0
z+}?+MZJAA0uoIHRlNHovz`iaLw*v5bh&9b<@XAglUaOYDuCgza6{N0&B#WLTEBMj}
zyNWF&UekQw6~&sy)f~Le5w|4Rl=n|$3ExASzmg@qkpP?e2XVUyUZY&BiKc+pLE`o$
zZ0Z%Vgw1Y9<E|x3_zP_6JaLNyuTHF~?g1~~G~(sSgDtHfYsiH}?~*lq4O?33AzrCI
z@EXaQ>VXLGdWX2JfgSDkkR>!gss^$I&k@+sQR0>bUJ<vlCK~`=1;ni~8}>6doh)I=
zQb?6oLYCk^2>WqY61Qi;>o(SO4}(|2CE|7vwsWPBtl@1)_BL6=rVX&23gY&+1n`>5
zn(i@h+ezFm!*25G$r|c2Ala5gvWC?4u$$+J+mGPZk8$V?URQ{lXDRGu-379UpCH}0
zWD%DdVJ~?e;+6?seHo8#;C70*y$xH**hLnx%MIxgW|KuMUIbg&N!)6{?Fq)C7r3Pm
zx70G&NZDDkiaO|^j;!Kr8Em9HmAD-Tw=s-MJMhXQe!F2G?!S{&EPyT+kX8KM4g2_<
z_$>vmP{!vWa63%g=D<GQCab8<hc5D~$tvE4eN+**Dsbz@_;dib?}=X~?4r&?R&fkE
zIZ9UHDS%yM62BsF8^-uV_6M&Wn~2+6u!)4tWEGXM&`E41S;giA*u+KRwrK}=wGC&S
z?gzIIiCf75*h3sy#^=z@=VTdiu!rT<#4QKh9%8%(fm<%|+XH*}kgVdf1n9<ln5^Or
z*uxs)_b#|~V7y$>;Fa(iajW;i781!KJoBKVeIBxidf0+5k+@w*0I&X$j9Y7PJ4XDH
zU<U`tD&Byu-XN<u06X{x@!JD#Ef~LBz%AcH+&+UHl#)ekngLxk7LrAj!VY#3H%~se
z4P^Yn+kx9z;`b?Rpp-0P4|JA77O@sK@GkLt9^691nSgHKc7*u-88&c$tl@9VptEIv
zBWpMS8)zVYyTR=VCSnY@#jYZ5{yf+~B3Z&-=<WxygnHP(`T%j8whY|*F(LPY+h2&^
ze%QbpWCc}T=+1kdtl$mUz+1#G9^CF`Vy1%ITH;so6s#|fEFf?N2DlO+3y6dDty@C;
zO2Mr?6Vo#S+~yF!qp-e&&1AldFvLYN-{u5Z-z&uLEVxDVWP&Du+iv2wDg)M6=OMEd
zu7e>CtRk~{3SfPUwh_O*;MRwU>JDzcdgAvrY~V*S+Zh<-44Lgm*uZh(SMLM2j!e|J
zR^awF@k=a&^(9;+b6qHdLCP+Wxh^Ka`pOcC-%)UDHI51E3U2uU;`c3Vz<Vq}X4(kD
zY$P)Uj(K4Ne<gl_d~my+iR%G=mx<pgH|(IUlFT#53*($6^VH|U4%`=r-^<`Pk%@Cf
zgWEw8up72;dODdUa1sW}^pja$JOo=fLIUEzZHS9$&;s1tuMxi*H*CS1Rzl`@ABK9L
z%#ogw09$ZBP5dsn!R=9|#be<290~XVHc|Q#nPJ-@7;5=UGDA%!Y~lzBcoX~{W18Fz
zZaWHz-zhh2qCB2V@Ei>G9GM^|7B=BNMf|p9fZGJ7O?UA73klc@+t`>&Mtj-^gZWO8
z(N^t-ZG27w;=!*Y(`Il8xGfD3zs(7-jTv*uU?*U>6J)T%d9V$44e|4=2e&SRnMR$!
z?;8^E5$waA;wK|L4-;G_BYEO|u#Y4X&;WkFVOos_zg!ZqH~}_NcZrPSUkwwiokhl}
z&xMV+Ye>Mm;1|WTifjvhwIpCS?Bw)xGR*5R#b3xUFCK!O93cTOdBLq+B-88(@GBw#
z7ksc2Z_y?)M(SypVr42Bqhv(_?8JA01RMdssZ6`Ont|K0R1)w#?4|T2GQ=NYk~A_z
zO(yImjRe$}fm^G)m;_V6Zw(2kjD@|F$CCkSvSAYUVlqHZEbJvVkp!FpzfMes(crhT
zkOaH{yV;mZx|<8r6p-##?S|bPCjo^k!7qx*5FQGC@g!i{O4v=~9Mai0Fwx7Tv%`6?
zn?<Q4;1%!-jbu`^2fxO25^xl@<4*CDo@SN8MC;Q@Po8)mZ0BtfklqM>W0@S|LclMF
z1Z-Ld`>DG`I@$?S?Iax~=E8o~%_jkGfnUftCdqx^w>CfmvS34}8%Q^)D`BcdPm*q4
zJOmqhiv)Pqg5P*1%PkNvodozxVME@cO{9|#V6yK?CnYNqU_+UH67Y8j7|5i#7yLdY
z5ii4*N?#&fY<9zB?po4CO(tyVMG~<O{Dw1m?u39jBqA5KR31-y$c5?NB|YTC!j|Gl
z#Fr3oCzB^;6!^uFh*~%7X=5r$_Z=*tfuvit8}{VhOd@i@@1__g(L)e$m_+;pn`%5y
zk}X*Z3&<}a$qwhiroJZ;RS@tflc{Gj@H;^w>N8+d?i4>s^&>3dZIa3ppADPZl1L(Q
z!LM0QCe`f_aF|4_fo;`YB8loVU<q3)NutDD*j6!#nC%6>PE4*_Am9XvnBNH7I^96>
zd<={DiR8I_2)319O(Nz(KnEt-0PypELLwHxzPv^ANs?V|SVY1nBuUAN1lU&tiJ0vL
zzX43Pkq~f@gyh1;N^41uI#|XA4@psz2^%XQA#)+%-<WK!{@~}`MItt5!^X<vNrnZm
zkOd?|PAqK9S3@FZd%>^2i%It|1Z*TB@4?nSnn{{f&wz!@s3y&3egs=vK|<z2z#UA!
zaUtO6ttAmN55d+N&y!ZiU@6B)tHXJ)wRMFg;uA0Ubs5KW@Hhm-k&uh9H+PDkG)de7
zONp%{O+4}0u(xw0Bo_i&Gd+xmfPgt9!t*I?uI>_PkpzoLA}tbgVRIWiBw{NBG#kNm
zF$DtZNXTby*xcy`5;r>m7UMlk;w~S8&1Kh;kPQ&fiRoh)L|i5zZ^HJH=93`LJXp>?
z4+$zs^TO_4AR!G9(TnM%4+LZeNW}aZu)We+5_1j~bdJQ-WWx4l6q1NQCIk#+dKnE7
zACi!7V1MQDBw|w|ENERJiO7kC{Y@t!=O7}A>E><-SUQV@9E1aWG?V!4fhFxBeltIU
z1AIh6((@qT?r^4?e}jnkNl0Y|9H8+$@wyZXODcbrcpc7z17utxA^Rbs2h&evC<HWC
zlaP2gfjh-deD=bk_7WdYd^Vh5KM9$?4gx|WnU3y+h+-1rzXC_7yF@&yys#+mR^pME
z3rE-&AR)&fq9fB&SbqrEl1M^oeQ<=+4b*gjXJA=h1*qvRAA%$JULqm&84xfejOpt4
z5b-^U*#n12nomvj7A)){HC0KP7tU~u#C!`8W0}5Uq9MS&n1n1@4To4;OHEVw6fEq(
zDr%aVOgKblItkhAhJff8rn9LK5l3P^%Z5Xg$5WHM084v;nj|L{4&k0nVsas3EYn*|
zG(@~eVqSn_Y)qvayHEy8^DU$sTeTOCah$|lhKT4Grn{*Skr^N%C8cnT8FT1{Hp1dI
z(hbd-0moQhO+x&uA)-CgU&}TSagoGSx#1Y@6hB?xm$1BKx;{^QHXI{i4vEQvi0Bw*
zfQKPsT_K5i4-QgyiLNJb5|)?gr|U_~g@ZgtVzwQEh~G0Kv}^+r$4ShlwQ!If3+Ots
zU<2>dbu_GmgOpa2m=zEa9m5RqFhuxHk(keXaFV3?bS>Ks!3LJkq-&{8^TI)VyGYDJ
zA4J^2jM1_UM4TW&$KWVyYv~%^ge^Qr*HDuQM=2&jb0MNl3^T~X5b`pK2|No&DT}A8
zdfEqD@SUQo%87-eZ19tq1_-%>86{>2MC6r_nC)BOEC*BR*F3qfi8>Gc+N!;9me_?P
zrerBZM8`10jD?UNNl+FXX2u-)l^<anKhm$vnE{7+iv%5mknYSlVQnEI_7Vw-gTuIw
z`RSJ~CcrilF48agkGbJ6CrHqxScqunVg|YgLVh4YiOb<Mb+6LD@bB@$M!b9c^e<km
zgVQ`!Pl75SWF#|EWM7Ezo+Uw-y>OakYv$8``|=8G=E|4!-{!Ab2B%4Qkpw*tA-!G9
zP(2`|G@S&!3FpZu`t!mil(_ZSYS_@~V_Oqx$-+MuWx#n}AVEvkLdaxhtnj-bq?iPy
zKLbTE$dz;wv<5;3gfoMUhLG~@B<Sf3D2gF6E|8#wWe^g@4A%!ja!J&OP!vO)BT)qq
z@*p$bK#2K}L?uB{4Dd0D%7KuGVax=#L&%|NBxu`GD2ndZ7LuUU<q&coGegf12>F0S
z)h>gg=qz?IiTW5qLLOnJcnCrg=8&j!P!yg0i9~JnLdc`c9D}1FWOX`;`Uez6S09k5
zC2Jw1&0uDd?hvzvL{)zUMbXif5)ySBV(w&SafL#Nua-nD+yO<=&7un=YF9Rd^mZ}R
zOoo`ubQ0Czg`()h+d!gborIW)%tQ}D%#S4OIVg%wj+3xs5Yva5X-ou!l+}=^S#?kp
zUF7;n)Mg)qMD${&`VGYF^OLC5d?<<zW;{uv0vjOaab~W&nnTP^61FQAiXvTXEeU%Y
zVwyj|Om+vvEL%vzzVJd(B=deq!cLV#%vfeNS8s@^3y`qqpeT}^Az^`e5EJTRri+50
zS4dc3E)+$oTt5jbhM>{R0=hzsua<<R=0Q;;S~`t{EiQwY+nE(S5&|)qOGwz_3@C~;
zJ8DQ+$!dt{(vw-jzeCUqB<`{siXusNGKqT=f*xkp5Y`T263&vicqob_`$^nZH^j6J
zV;0c^g7UYKxIaQsq<E9W&71*2lbL1ofuNsAoIehVBEeigiA#c@q0Bl)gh0?2ByQVk
zD2isKt4Q2;5EL?kS;!L*v^<f-U04o9(denak+@4MA?RUdC9d8OR1hF>Rpn3=O=3SG
zasE08>K(=`Wl#hJ6_W<j-B1(_+zq6`8VHIQ#4Kh!1i7n7gDfbD2Kz~a^KJ-woLSAd
zXb8%mNgAAiq6k|<8cdr3LDA!w<=g{N6{LaZ2oy!o$E3wxh#JYPC%g|ty+s<N=R#40
z%$-FV?1!j6;mm?Ygg{X2X3}8WS5OoIR|-jk&C4Jtq#v`SCm<?w6KRl`2Swqww4OAW
zUkXtVGi!3)3sE1F7JqAmqHt=wKw2DusNpVVQNx-+)LW#*;+0SoE~ht>7FiJ0Y8bPu
zM<J^0Gt%Pl7AOjbjM=2cu5yU##;hx>FGS_dBrTpVgQ7H9`B~CpT0TVe4r3NJFan}Z
zcu0!|Hx#9b++UCuo`Vn-(Scdo{SfvFY4VmAiqa$rIiyK3ggwNpEi4qG+*?VL_q|Y*
zCh+bjP0qR@s$C4TxIqyRwXU8t*$G9tG4Jc7N#!Akiil#C*BZh$EFn!^fuh_{F=>+i
zDTLk6tgmG|2>UB(vj&QC1II|4A_!|2!)%~KGYEU1v^fq%xvmt_W<P{Q3}UwM5QJrK
zC2d}SqFl$Dq|F>3gmq)~;2I8L>ncf`_n;`(^c-n(=@5k78^&y6ObCSSD<N%;Ls72b
zYtp9r83+q`jM>KTA?|b1Xb%+Ss#cIjA4A+&W*?D#AZ|Ztv<8ZD6-P;<c!+y2lG#Yl
z<`9;hOd7onMfsJZq|s$JgpHcSY~>z^%UDbr?e{`ae!;twG}^oa;zlx?nF4Wnsie{C
zUMR}HNXR0M>hmG)c4jx@`a|5j64EHg4Mq7M?zc#zC3O(jb{w;vTbe=K=cH9b85HHe
z_`V>GJi8$-Vi2>Te}@Leq}7)hP?Y}^n@n1*fd-wK9l36UIPZs~)hDN+C_h_SMOrQJ
zLfnHcW=oUWKwRu>(rWQKC<+>DNUN%Hh`VVLv#B1?VEHN1>eZ!Cf?oc1((360(4Ysi
zt;eCk`c%>?@hd1n?n*srRi6h9?q~KD))yK)Q%G7B&V>@x3bv6}^Y=l6d&8KGJ=O&p
z#LXhDW_=4Kh#g5Mt^6mTLC9mw);dCqBGSy00wrjzAnm?~7WXil8xJjxl6G&op#&v&
z7HPK!TKtCD-Ocwx1MfxBu3;IJAQU^Dw0j3y3=d<rH)0et$i7V4RV{}Sbe{Tzw43gR
z2F*t>2j~GUmTe{NE@eUqGOJ%D?W$s-K|~Mc2=_yajL%5B!Z;{FC3h8RSGx#WJj$HG
zbsMx;UPIdXS3n6OX@1gf;UQ=-!NnY6QZ%$^e2pZ?%7zjo+^>@amu5hVA$Kvyh-wBc
zme!L5FYbU66t;Xr5<IyUT0}%K2k8t=u52R-Hs?VJ0!wR1f>kG>$sNo|!aG5ex@wYO
z)d?t$H+LFIu&EB3+#b#xCFWje61RjT@PF-v;%MG80g|9(E;Q-ek~z$Xo1n?Tbdur2
zSSSt_yMSa!KLJhJJi;6&su?udIE!Sc&4=Pxd9@^ie=jtN7|k5$4ro&`i)2VGfZ|Yf
z^(2FTH?$ecoGAQ0Xmcb$GR%6;3&nxFXZ$2XAPL(1hB;H%-O%PA0g|F&5fsPC_=2SH
zd;o2RhcSnm6b)^D@{km-J_E&JzS>Swc)o`=(LI@CMYV!9X&#cI`eP`L@<9nn;rS!9
zX*GyB*gepwC_r-L#6oe5@^?rM&mW;tN9Je`L8EU2BuDL1C=RiHG07457#ekB&K5ZZ
z8vQVf<k*x3#SxMUNe=(#(5P!9bGVq{(CDLCB*}suP;4*b97*C&f<|}W%pC85w$Nx}
zI!SV20~DLP@-#`3z7ZPrpTvSduP)GNZV5>;D<uJnjd|0SkR(eELZdFjSWuW80gd9S
zNtVk8pxD;BWRhjmTxb+AnFWcd(5h}5$&wfc#ikBENwTbZ7FxAu!6N)|Xmzrlq{)ee
zVnbW9NSf4VpjB%YJR+w+tF@O%nhVcDv7LPjNt()1Xw}ulf=Ji|Xf@*$NfU_oL9vzW
z6hBF`Js(<4xS0i&aiP%az%G)fHWP}Cto@ASdFd%=6?!WRGLH;_R*UA4Jk@Wyq1c4`
zxoVPUYX-E69>Idnu;$Pz_A*ISwH}HslpZFDrk6vjE(2K*`fV#{<$j+eN-xfaVtMWr
zB_z?sY-rW&4=gBkgl66pl4;jhP%LisCnQs`7n<G4g47ex?jN&AqV!@P6bs8<v4kY@
ze*o<|vtSk88rq$hPcqeBfnr(vULu(a=R&*tS@4Ry586FbPcj9vGN4#eM!cV7O5FhM
zeiO-pn5!$a%Rfa@RVG2PptwsU)%K;(uB(d$wXg@F-GRd-*Yp`sEGGYDlB;Stw7czQ
z7UWvq4eiR#kzDgrd{8XJomNP4EhvX}!w0jVH?B9d^ByJ1c5Q%S8K2gYT%I*vXcu}b
zQ`n?-kYH~$$>mwl2*nbf%JGm~B}tH=?IfoBY{U>qu%VtLD@^f0F<o}rDv~VqSx68)
zf+_#0*G-The>2H;YAzI$y}OxYTbvIG+Kge!f9cf*5^VW~q??`(#YBxcB;AWUAi=0%
zO!*%Jn?r)^zmRmBj&6Zsl8k>=lXUTJNYK0kQ~pJV=8$3cCX(*SG&d9zBqSx0bS3|Q
z3|$5><rkv5K!&egBl&77pct;8mgKwi3}omsh$;U^R0w2PS4BEV&V*v9wbMxla}Gg<
zkl!-pS4M|G2H!iR1ONN$pcrP|I|0(cejj8AnaGr@nA{3d6fGeg%#U9V#SkltH<1pO
zd<!X>^<c_X^=Jhto=qe@Ogj?`MR&2sXObQ&_d$wQJ(zM0zYT#D>*kOyo?KA|MOVI}
zMAF6CryxbhWTsrx=nzQZF7}WvUMq4#(M>|dcG86>J{wYm{DCRgF}e%nI5Ca%vAxI*
zMHdMbHKdPK8zD!RD5hN3EzKcE-Y(L~_98bF=@KexNGG4=L5?m_Ou2y$%^^qG`=pl(
zMQ$ikB~+Xuz2q!|9L)zY<%R~1f+R`vNiP?Q+)$)Rs5nJ>ss0I)j2g(4Cg{}$l4RD9
zZl3<242l%x-(MizEG~s4Hw|M-lk|#)B<1m>pZb(VP&CU(t0ev8#6prGW0=xJBicfi
zjj5!c!uUognjA=(M*5k#7qYY+!IUPO)Elxi&LJHw$yp0USYCWJ>F97iWa&MLDI9LS
z8?t2oGe9~Dd{+lWNL@pKbmTwghAemA$`mexAA~e@m87d(MdeU9`6>>Rt`c)0&4VqO
z!YS-`kY;%U=__&10Vo^}rPPzYzBmnOx`r`@o9jNv^YJ#)SINapC{2`kv4r%s>T}3*
zpNlC1!dpO|8D~jvvx}BNxglRgGU=@<5Axg}$rK^sPe7i8v=Y+W%&bx<*R{0xNzz+-
ziW~BDW{R+TT0x%DU8KJ`71>a(!5x?EA>A#`ggnhUGDU-lT_8`{D*@79<*_^{SF!YH
zCFw8lwh!_&|1DEA88!qGJ^M5nz_ay8ER<h}J+jq91~~O8B#Iu$6pea@LZb3wKN(@u
zf&wp;|8_EK8yO*x6$^<%M=(XRTL(a<eKll^Q)e2X{A|XVg=CD)&p@ULw=zY7o4Z1$
zvXpc($n3P`2y%;(l09UMS;aocG&F`OQn((6RGFWVQT)kCTM)F$;}$F-qtsr3RIOc1
zk)?YCWb&;^C&Lt;o9jam^2NO|pA55PPc~$V=*$#}CU=2UOTQ!oO<Rx@i=a{#mot+L
zbiNc)HJ{8Bsm8R0RNkaiGSa5$Nf`(d<#9RN$Vk)D5+GIoUQChft^ttiz#C+&P2cTa
z3CCNR)KE>v%2^J%hEHOObTLyPSzQeo%s)HjBpfV1EjgVG_H-^J`&|rEbP(Pdl9i{F
zkl`+5#rfbs?s>&EWVrO=GDy}Uk}3MQrxheCJxeCo_C--X93{W#yFxO-^J^hlt2>#Z
zo2Y2W7WXQdVtZD_A~-^9LGflX#ib-KB#R!z6dg?(0NG;ySwiNRRkdbbHf$~X(=}Co
zGDr2XWsq%nPp0T9Y&@jPn@*;gKc~2$9Jb^>xnlZEGEMS&NOxZtQ*;*Iz8Rz|*i0sx
zHM=-21GW-7Z$)x7nP}l$NY|`=I8*dDx(%fBohc+!rB}u8&4(@I?T$Y@i%hj`g%8rT
ziDHT&9=R9tJ(cArv&~FSiCY8<i=CIYpq|VY$T<Z0dXHd=L1J!)4l<L;0{pcX)9Nx{
zIT>~D{plq?S-|B|=wM1qrWhvt;RxuUpq4D6a(YT!J}hF<ytJIn0kVdgIOw3+9pOwd
z(x4&GK|)d@Sx4&ZoE35TFwvrUMe)g%WF1eYxuJvTD5e<fuG^r8jDKz-Yf0Ujl{R;&
z4~FuspPQC-K9#Ix{;@64!-PppF`TO#bg?cgovg=yA$k9s2TPYhXR)gfK9`kz!B5tc
zzJDEb(b~lnGyGu`bTK2#PgYgEJvl3-sGxKiq{?1*vLdZ`!R$&8S(InNQs|<252l!8
z#Bk^%^Bb}_PvT3@pWFGuk+>@}G9V~p#xrq8&g?w*<>Gn|SzN<v=%a5xrkEz|ap+{;
zd9sZ_>h{^me}3nc<130jt~gP!?_^$n{_;gX^WkT{ML%1fpPzSfU%`orkBe3uf90J&
zC(quV>LJ@Wy8${Ge=}3e)G-7)nfn<jmhed~bkgM>rkJeXaOkDrFe#?1t?)u8eIH|r
z>B3q-HwA}DG1aaLFZ41#j44(yxeatvaF`U+?5glWFQa-e#Uds>2>ldPkz$IfI4^WF
zp(j%;!_~PN^fUJ?DTezp7y5~4;bMxF3~CD<eU;-U#Xz3v`=Fz?w=l(G#!Z2q^5UyW
zF-UsOTIlKaaZItEk<Fo}Ln$*!F+gE_BlI+?BU3D?XCLTl<(_&{bXI?S5p;FiBTTWV
z$nGJ~l`pB56dl#1l|xspI!7|ax*oe5I-9q^Pl_%A$#Guj>)tU;u{2k=X3$w)@ibDT
zE6iF8okg^8F~#ZzhC*){X%|S5sxoCI^ww?=Q*5ARiwNk=ed2O}6iEUvpKwEO5v^mG
zVh<fcp}%!0^`uBpUz`v9wTohkZG?4e2L1Uel0BqoGrOo9`ip2C!xTFi*c(PzUz|#c
zuvJ;BVT90Im|`<w-I~D&WfjRDQUnC%6ve^_ty+XJ#eT-z4P!K}*iH(kOT~FG#=XOs
zVoR<kLST%9d0B;|G+Fh6I5&(D^0133b~R!sjI!f{DpH!Hswe|Sd9WW-Y%F|aGz`<Y
zqK1?k*qpKyhH29=oGJD;xOD`KQ<`#tlxw;aKM%%<7(b3F_IFEP7${+0d_5^wF)b&~
z4FiQnF~t#F?L%NB--$m>Bjp!TFUI*`q*mQrOmT`4ePAs2y!b>?{!403oDaqtI)W)q
zGO-;D=AIW{NeVrg6PFExwH?V6hY9N(0;46&+qsZ}+NoDIB*180y2UWXc^>Hm6XX|7
zUqV62KWD{Sn4oJ<rZ`hnUzi~_E~}D)OzMK99WX=aXr?%pt9x^p!oA_>X8{TlflrR^
zOMoewcXlzw$?h5-0h64r$a<9=FL6Q9Q!q)y;}0;!>3a2ndGd=EOe4oCOkQyk=IJwr
zDZwD>UYIER(>-5qBFCAZyk~<OChFaTDM7;3F&d_FpG;ejN{&&OoKoO}soJ!6F(r5m
z?iK=*xv#w0kV>|f+VJKTH%!*5#bBlcmr3IzV7_$~@pG1tP5C$H6qP2xd|e-5O7I!j
z2bK^!FD>T+*-Yj1l(-$Rgg(QV5}cw2z$zLy9-CfCws2|sv5k$eiU|{$612i64u^&8
zn3tBbIY8D`IXxxr5G<s3k8q|0v&bIpU@cqb6~!l4lEqXe#}{qb0&8j8(Z!Tt=ju2F
z*0bYeQt|Zd9x`9*oUF8h1F)Xx_F+s>7>jxMCRkHhX~l}H<m~}6L+b1W#YrbKU`=hN
z#xO<s|6<y=frXW?KKR`04ZBjw5Kr!Ec>T?TrRA`&=+1+gqWrIz_HAH!%hneh+4I)r
zml6XcT_EwL%Wv&DQn0=pmKWW*B~z4Nis?QCc9C#sb;0iUiZ4#Ds!6OSVbzH>Rnss2
z^S#{#s}Ci>E}}cPWQy`@G2Q#ahRUB>yKn9f->=wH{Cd`czbBuceQNvm?e(cYE1{p2
zr2eda`}XZMv(G30{ll!+i}$Sfe(&6UYo98E4Mlfu$rR=4V%iUZVqyKq-pmx`+FT=h
zL$RoK-NTroTwmnG2~aF(_(&I1lqTrV6^g~&HZhzjN)wG4-wcXnM06d<6oto#)*(<V
zp-bx#Oi_4^Yu^@%>4tP3#}q|`tH*6nOm%n1Fs3NNdW~-d#Uv43qnM&-)3aL}C?*)y
zq9;=n?PBg64#i-@?~GxJB1x~-U7#2yq*D}A6qyEh><h&Zq3y>pMUgE$s#7Z{I%_s`
zVmMP2UEK9>TPQkeH}wIgDEf))(7Fp0U4(R+7|9exXDvJ421U97-N!LSF+{&^L!e01
zru7)6D8_O9VM;3~QnZ>f(Zv+SV1q{vjew%nfbO?4MKQ%)-EV`ULEp|jnWC7eU*}LL
zLfW<%!xY7A;REj<0)<om76ZeXqF6#?hi;)znyhV$C>K){E9uv{H<Tu5*P=r>Qxxmz
z*SRm0>k4hrA)G0SRrQ-XAp*)(MNGJ(A5#>I8`op}C@B9&m#!TjV2WZ3ksZ4Ah4Mez
zwVvo=iee}I#`b9i1tERLj$n#nLt#<f21Fp3g|_a|k|~OP-P)sdTLh)(P8}yPMX|le
zUhRi=K~U*3bnKXLrYKI~>easMO$Z9jhjxw%V~XN5k-fTiY6C}WKD2!Y7gH3ciX7AZ
z_Wp3B{++syiDZi6cn?hMJhTfOq}6~HBl|H$2_CL~9mn^Lfc^FF+P*^=Q<NYyZuHbn
zp|Gon&`wiFk7J4w)LM4v-uku>*h;Iu<J(Uh#}q~RPhq_}-rr{kY@q+p79D%Jn4&2E
z*Wg|wyLAnXfHk$bt#$XP2biKL*E6_7$495!8v@Jda_{YrcI+^iDT>l$gM0O8KYqX{
zm?$K)YqyS3JtLW-C}M6MHo5ylohI~;fMFu~Pw4be_sPS?F-1}2aP{o)AHQ#LU!T6w
z&`EUPKKHfw{eN`m>0*ka=*9KGn9(E0KJ@sMKEvCMf+nNd-QDN*#~&Iya`c!7Tuf0E
zgM|<7*=x|`dpfqC+O0+F`#KHnGoWwi&!XG>ECfFbY4fuop+D<8pwG}w_qA@(ZEE|D
k_e>tttLNZwrr6v614Q;m93Y*Iod5s;07*qoM6N<$f-Hi`u>b%7

diff --git a/resources/favicon.ico b/resources/favicon.ico
index 2ad9b3cbb3bd6d524471ce000e6c7244e6109bd6..cf6652ade0e1e9c190c2eded92e3f945c36adfb6 100644
GIT binary patch
literal 22382
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
Gr2Q{@^i75U

literal 15086
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
Uw&`21M#1hDW6`(<7aC~)2U`xa;Q#;t

diff --git a/resources/icons/android-chrome-144x144.png b/resources/icons/android-chrome-144x144.png
index 51435d6b4c7fa9bdb4477d3f539acba7b396780d..77b7a4960b66b8901fe3b6a33682206b3f1e769f 100644
GIT binary patch
literal 3737
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
LOwpCP4&na;Dq^c3

delta 2665
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
Obvf1U5lB8I5%E8}0_ubS

diff --git a/resources/icons/android-chrome-192x192.png b/resources/icons/android-chrome-192x192.png
index 43887cc4e1e3067a76de66ceb9b90c27661491b4..2c111297b3f50d5ce5ed6822494291c40371d105 100644
GIT binary patch
literal 4625
zcmYjU2{=^k`#!T6WZz{S%UB}&l6?u;#xj;6`&v>WimWq|vZrLMWef3@5+U2z6GmD-
zYxXFlL1d8mANhXQ^}nw7yyrg8dEWcJpJ&dT>pe*}R_B;b@SOkvfXU3%2m_vpM+Y4Y
zoc*8$s^AHJ!2oRl053Bb4!mf<Ye*>OoFVX>B=8-)pbs{64g~<3>Z1dKYl~Y302p9n
zX>V*95TdSLM+E?I{yXXw6l(s5k0KfxjZ{EiP3;vG(4Ybidr<8?sMhhk57*iQbU?fd
zXj1?%{@<Vi%Ks0a1u^x1cPZdn*nep|fX*&(L<KVc%|D_#9ux=|G~0t{@Bh`>0d)6|
zZ-H_!FsMy|==?9DNr4_k_KzfVz$JePWk5{%D@1|m?83AUV4z7YDxd`>@BKA%v>XPi
zsDb(W5U`NrqI7<PT5yn43oPn40MZ`00{e5EKmjz5%Rl1zyAW&+D0IyBm++WJdmsL{
z7O({P5yOA^P|(A1u}4mh$d9`L&LGKO^I-BGL~H-p&vE1kAN6hjs3@Id|9dd4vntO(
zOo1IKf^jMU_T&ifLUq7#lneoNb-*9-NCl>?tzEZ5du|nBG{RuN1vgkhnCK}#H&?7!
zMHo*pSZ}}$_aQo4Fx{Vsvs*B|GiP4)vAXE1)+7lg6$phNKN8?$0P=%)2c~DKSkcYu
zc1HbG6NlexPX9T23q6$@P}fl9*?pnt4Y&bL><-8rBz1p?#i^Io)m*Xivh)Khh4QDo
zLA@+4>ojLSFgZ+}u&(C0GRkNR`kXm|_K?jFJoWGyPv8%PQMTaCT!9D!mFND_gilO%
zp^_OROb#hX{2LA*ZPk|<!m$;+SBv>VO_Zy@)1JeN-61h!yV%?#Q7M7aSs3|J2l--S
z<?0AjN|sR6I~M18dW&tCUMXKlKg)S-wU^-%X{9GaTG+is7F2b>KS*;J#>x)phx|Ek
zV^z+}^=79d(ZlwFDKkcjyQ0zu8;2)W$3HOqVVj;vb}!iCm%PNDJ2`wMyOFj%=A&Tf
zPr06``nVE>geslNR~d*k+caymg*a29`qCm1zVbr#eG$?GCn2Qw8+zuV%>CJA@-vq6
z5#3!JS(&C~&4yF)+xk4;9^ch^Tj)Aa{iD29W2fa`6_V$5r;}rykCYwfZMedo?vLDf
zJv}(+!`3?WYH^d~w`GHSNf^&|DLvpz!W)bYza8xbUk<@$Mh5l~6Kihau3T8|Hm_Ix
z*$pb+kx&fk6coyxY+8@xwt+Kn+p8pV8K>#IIdw^P<f7X6b@lPAp&ebZQ=&V3J=tR=
z{Af!{>#6J*7NOms{HCtv@abI_(qrY{gV8gCg;B#g%Onlpz3;u>uU{@mriVb7xd@6J
zeHmYt1k2DeL@~YC%1`3!s~<{Z1Yoh=mV27vGO5MYTRH_NHHIH;`Os&+<Gk8BvYb|B
zWGkCvS28VJ+of(HzA-FNEO}68?;)C+9wgz{GiAo^@Q!0UUa!0$y~Hh!re|3Rg>s%<
zDx;0AD5FVMP<mV%K+2bW`gZE}{03IMx>%|J{jcSTY<s`^WJv#oX3b<z^$#ggCf=Dl
zw|eG<3%cM7CtH;7m|dP<mS&F|7D`pvv>hsBueRhqgIeTL>e7!KS@ZNqON;1p#x66j
zNyY12R^_qERx!O`3(pQPu)V02Ct;E2Tf}?tr@r`YU2a@`fcb;?gs`G?J}<_LFXK#i
zZjHWpL7(6GAp7=x`{op+!sD=t_jk+4=n=237P{qA4FBZmNjeEAik!aTkf3!V@-y;q
zw_;wbGHUtJ(1o+!6LV7PPCu6AzR{1akH01ewbIzd<murnUgmc%k3Y(==wSTxUSc&;
zZ6_w<9D#03_Dg27vpVx?A7$a5gvCTD+MF*#FJ)eGOsm!Qb6X3&y<&^6a8^e_@3xqC
z%bVvSZhBDLAHDhd7qa{P=|7}!J7ud2S&CT#wZzrVd_XBN@jef+l=X$fk`Kl7XSz?m
zUoW}GV^9s7cTfIF2E|D`S}O6imEl^}GKGB%?$HXna_=sF@|mhI--%%lkvbP~`oaMW
z=M{ARcAm_qASvM1!Q4wio4qI_aNx@vy*=_NkzBAS4Bzw|QrJ5`$r5!_fM)%z-8ZKF
zj)+#gWV9#LtzPC+u(StMrYPlSxq1PxfQH4)!9ISg>MBai2Q>%BGCNel4BcSDbQRS*
z@qP4daQ32<;Ue`ZU_p>YqLcRix2hLI>V@)<-S6-Z{6PsDR`4V;-Y<-xs+}geg<@sM
zR}N$O=FNMRGZ;@eQEZRyUd-ty=&Mf|c`9m{4{@(*I@L>-)^l|caQq7k1_<;3A%|Hw
zx#(gd@gq(pLmsmDXAkWc>gt=rVk|ar=AHQ6e*%PB`U%9xzbhlA|5?Jx=w1<#h*wGF
zr5R7W82e{8{N{Yz{L2OMwuhyds!R?Z_rq6_?Y#|289u}lo2>FiY|EG2?XxMeh^TR>
zoMiiVPL0NGaJzQ{D~4u%l%=7hus{f87H!xSBo%3mw=SenjK%JKy(hVM@T9eNFauB1
zF8kB?=LX-06ezdP;mCZsa)eP;ZTnEXsQ4gPV6gd8UlDzKG-Gpr3Pml2qr!D6q@k7q
zLq)V|imOs23UoC0=Pq3BS5ikf9@Ivsv!;IYXJX!8vqTzMxwwy*Uy~}8YQyqetJ_K*
zOfz7JrEqRIwiUO|YZ<Xy`_;LMpTgv0>m9RiD(?0S3%RcfPuLil*h*gG(ul+?^~}y~
zsap&+=Xs9tDO+`^O1Vc{XKN_p$OD^EJoO2*$Ufs9@f$-dzPTJQc)Ki>AZXlIah~6O
zvfX;A8|ae%IXRqM5+f<AzuH&c^m|50B7@p7{j<S&TCXF~`-Io38J}IzRqDQy!TBv_
z^771ET!0jxp=*6aHLZqx><jB`iUM*${dY-RRb0Pu59jcAS+1T2s@O*(85m#efK!+~
zjmaq;8y)iXp7l@+=*xz9^$`oF-q%sCTP-d%7|91NSYP9jPJOm^XWdrgLZg}>hnCIX
zUsvxiv;JaU*Fja&Yr#|xxF^GY8bDKFcb*T-*ok-^rUt3F#*emB--KfPSsf9KyF=GD
zNuw-CUIJ<A1*6CcT=v@DKy|$&sjxlx;4pU*yW(r&<wH!I5xtHLdfXIu&`AlEyi^nG
z?4$G6r08L1Cr(h$If32N(^EdS18#qEEX_j&!iCsb;IY!rgwP)Bu<oX}GDgfc+#!1W
z@Fk{Ff5y{+dw^zMg$3%!j1e2Kqu|*`?UKCB_Tm;EaiEWc3^5j<CpH*R#KBqXxZKC?
zb?>nEqp@61hT~S5n09;EJ-vhfyd9@CHCpb@)O0+Er>|5#6Z2ak;PkcKASV9U5x6~X
z^w^6#uL~mIlW7=Y=ir<tqstn_+rtwe?Gey0#CH89xy-Ap4jZfbxZc?<ixsP<7LT9K
zjot!sJHAHA2GvIq9LTGNxbE3aFSWj<xq)}P+afsS-8G@mgvC(f15Gyllb?h=!`D5k
zu$?tLkOYHg+2r@JsDn3bINs>8(}v+jkoH*kW!~rzYkqvG@Q006(^-*Q2=;d$+{Iqi
zn#i3-6*gP+)kxy~5fvf(eR?->*H3#+Y}D!n@qD(~ST!fUo0UV59i);~=OweS`kgiM
zcoW3vOX)QNO>p(vjL%1BL8f*RT$VAt=-c64^?g+@r0BwEJ}$Sz`4{Cu-XHGCP@|3-
zEeKhnHa5B*_vsWrg;}V@prb|)&+dCrEUwR+(GuT)v!z4ou}Qr8A)jq>G7+ftO3phY
zLU`@fKLVd+jgwZrZ3?tlH&=Vn5!*v{N<3nvTNb(%;InRNV&4hYx5G8~Z{w7w>R){$
z49C0VP0-a{FP3or{3hc}Ur|>j&#J=tE4<LR)<`X(rX)s1l)JwQ3d4Aocxx!<>|s+W
zHL+9+4~U0!tzX7eH;N{WEWR%Ua#FM>l`vw9SVd`W-aACZcDoa~n{I%~2uWwL>X7)W
zq%n7Foq~k10e(57Wqj|RzbvN<RAAsuBJyfelR5JPzZCJ^<F_!?<?xe&j`2+RuF0Z@
z-kH0tSZQJrsm91MoBYsl+q)ffv#`usSy~e@oP?uIwi_`5UVg)?Px#DR99(}|bP4WP
zif5z8ZKt-EK9yhy<Al6;6d-lJEN|_-7hK=HQuA==Cb1DtEV}TSOt7XgkpT1?z12^-
zlCCk`VFyH%zXXuK3>e}z=z)7qCYE{p8ZyZn&~yn;cVXEK<7*7ry>cwxj^Wynl=cxH
zdz0(w)#6P{_7}<ql><gp;gISa%V#!9?082re!Lp=3LNY!+eI-l)oS*a<mjd0Y3;bV
zg?*+5y=S4E_&0XpeCu)1a|c5l^`p8PLzbR1Y2mZz#;A1Rs*%U~L)gB#!UWoBuRW1B
zht*f_wwDQiBmfk`udB?Tt69e)e_WZkwlXFChfbi`?Ci$6YEK#PC+<mIQ4Gpl_#ml9
zs@#uPzv0VgcAs6H8rs9dOMbE#>A>ce>s7jf)Y#5Ii>5(L_-Pbt^~DIKCN*qtQjai}
z6z{Fn(bSjs=)!XwM0r!{y2C$tsn*QZfj1k8?u)hexr~|b&mG?Wu}1n6J5M+0eQxA=
zr{jpU-Py1nJuK%T<dDx(d{Tnm;sfW*ipWJ>)3svyM0DhqQCiaGjU*A9=S)5E-dsaM
zZdhxUFw~<>R(zb=hU0VmM{IbZq4vXRb|(>3N?2gBPi~bzd+#WhDBYTbxN^Sp=f&~W
zMH5qC>8Du?q!@Ok?cP&LV|$BH2G8v0J_+7=6(A!%+XYQ0>vidZuMCEdTO;|aHIUy4
z&2+s?Vsq;JB=G?HEYP4*4}))W_gIJ7ith1Z?LDtVa@hUrZFXymo=~GdGh;Fhf3K;D
z=SncS__?81`|HJtrQHxCI~EFa;)aBR;CE`bYpk3LT|j<jt$=%$l+^t*lPRGN^~goY
zwut&xNFT=qv1Z4B&mVrF-E?nrr=}5qlSBu2FKzAy{fe#@D0|qyzyaj7>D}8tsc|Ys
zPkS-zO%V;JXk{J=ak_|nm+*po^H<7U?M**dMrYHCylDl#-hBToj7jxe0B)L9#*cGx
z_@d~y^OjW{rTufl-R`8oij~8#sIrG&TVDIfXSmxi^*{bu6o2V$st%7Q>c@nw_Ejxb
zEt_C7tz?FYI>81CBgUS!RhL5LtUGwxvq*fWDJK$;o|TYi7~y=b1pSfc=`w2oxQ)U@
z-QoOKV1UfSutY>((RPjZ%RV<_069-Ju3B`T_(U%w#Ge?MxxaMpkDXl3aECfgEh5I>
zlR1sB8-*gz*SZvq6L0D|vWUMo&$O8i$5>j#K!^Pr!>wvI+t^OyQ%|VJQ>V^P^Y}K1
zHU0AcmGbEI+>@S%;uY>!k@^_Z@G94qkgmFKvC5`$q-^NG`4k_EhZ1aX6++|de$mI{
zm(b7WAXlUkCoAOyN{sECa(~mI+u6pmZ_+xnt>w{^It`<Zk9O3YY2q{|F|u+d+3L9`
zO;VGWpKVh!#!x!WrIwA$q@*;1IXa|0qTxb(rgbfRD*iK<RyrcS=T5Oiro7(>=7}b^
zpDs;;#qE_GchfYM(+6oK-oB|E?+ps3vTl`k@thh$J^Z!1BUkvE0mAywDkB10HCRG3
zm*3wNv=muX`pXh!ZTT>0B?|3oj(O?f32o+q6+UUy^8b3SJTld%fNgo(dGc~=B+A#4
zmq|cWcjP4f5Q+LDa2Xpg^^IfkPkWLkt$B{5BBPY4k~LEpHy4)p6aW-@1U*?h#F@ZP
zNNl9NQy9i892tD=s(-*`KV;a=U_WF)aF`DOL=-G+GSY=ON=d!59vC$HiUD9^401jU
z9AX?64>(~QNF$s|moH50l|6D`?9<!s!ES+W+5wztk+~eO!owD}X{h=TlmN_(t&E-<
HddB}BG2>M1

delta 3527
zcmV;&4LI_VB-tF0Nq^@600rj(r0BKz0001oP)t-sOlffd00000000000000000000
z00000000000000000000000000000000000|J?uu1OVK>0L7~S_}2i@wE#Oa02vhk
zM?L^lNC5oW01piSAsqlTEdXU#0Bl_Ver*7Zc>v|c0CQvj^MBI-DkK2x%>cKb0Hu!r
zTu%U#e*m0^0Irt+W20L}0000FbW%=J04-#&7mL;P>I#`sLc@LtgT|5o01VwpL_t(|
z+T9)5f~q=9Q8pb1SwuitRTT06zwgd+=GY}IZK*ov=5@x>wAqs;lZke4r%S_J%vP4=
zIJW26j$>J?*?+<`mQ#1~yTP3r=F0In;H*sJm!dIWnk(BA0^eE~^WSyyZ>Hr*g0)!w
zlACaine8coJu}>YclSRyy!0NXrsItUdog|0;ai?2uwFn)^LNM72#)z&u{2){QvPnA
zCu!OhMVF>YzTXW~((_Q5o1E?Yr>^S5AX^iV1?Rp>Pk;XFQQ&O<RP>u@&4p;w7bhkP
z&mbg&LHqmi+^z+oJ(qh1FBlKr{u?ZL;%l&$gy0&(66x)sybJHXSt~&U<1l*|9W4Rs
z*%h1h2nY__r_s@T1|0q+T91V25<lk>fa6cXwHDZPlyG&Hy6py&+I|<TwL#EP%P+KA
z7gI|3q<>t}Z#TDVRi;T2=XsnYX<1!w8?Kbyq?9<)XyYwO)fF>|Ckn4c%&;4Fad8cq
zOcRp4U~3~Il6>|TcnindA@&FT$@p+S!oR<e63Ns<{)F`L58(HMI`KtqPd}+a209*y
zC1x5JVNQ^Lz5#ci%No#m4XMA7u#>FO@^p$zPk+Cn%*=ImOVpfz<OVEO;g{e{weEjU
zGjCgM)%}=lMT@2oxAUA)w$U3dehP~EgTf!@iunb_4M$ul*l)V_@Aulb|E*Fe6fV9V
z4DkK$N$zd5Z2$9QN|KPmtqu(E{l~;dqI&0PgI!Iqa~qGxV2bU(BQ)rF?`ee-As!;k
zw12RtW93hYpHN$P+My$^xEd!-=h*(Q#PM&v2f+4>f8{zxqq!@#_=!sIK|qLUOc+^m
zRt0MR__*!1Ie8C*(}s<~Ox6A*_J7%V4}{$f``8V|;9bK0N7uyYCp&l#h65%pdh}0A
zB>{@@?=kTn4k^Y6wSq8pQ3JZdbZ_oG0e^DL&OXR9G8(<=Fw<x6Jq7ltag?DNZ6V75
zF{*!qt@k9@qQWSO<=6n#V0%<KZl1P(0)rO$urrs@0DkzA^QSNfeF<$~Fa+px_y2)G
zz!0WOaRMq(`Lp+)40}`-b;3l15YQfx$H&}zI^^j0_kxn>4Q7BW^<Dr;2D1UryMM7@
z4R-Ke0teVTu!K1HgrI+szI`zAyOE|t#Innf9~%N3>?2zUr0q{e;60GGO*bGBG5Od8
zZ|^8=|L<4<Xz7zUMIaqBg1&Pblt2pp7bAoo$*)u*2YJ^-_I${QLwuOC0{7`6p$|BN
ztY{8gKnxoq!oWy>gen>tF~@TL6@M(i4JgG=7zvPz%31|@01NH~q~i$4^J*A@T4^za
zh*I7ayh9>1+K<*iqxB)8kv1F;-*q4_Ozq6jD?~xjAgQ4h9G9tt{ksfl6hkO6j6kdy
zYH6V>Fql?QI+BAw)d-A$s!3i#SFj=?DUb*XROA1C2JJsnUM_$H(Uc)WV}H<%kOZ*)
zrcsZXLS%?ZQr8A#c%Ytufvr*X6ixu>659n?co&W40Nf5n0-fsX-MJvzg5L2A5aI2J
z4A>Py;Hti!-vY{H22xM}XGkQWf)LQNU;xpO0kCj3CXUiU2y`PB+-3k98vq4ebx`bw
zKMo-<Dzbe8tb-XqL5-fzoqr$%PI``{p=sz1prByP*I=h|RBFd>02+FueBrC88CP6t
zu3-R_6dk$7M|~+oO}Z=Pm|1`f$_G_rc8jGn8Ap%BUv)Qp403=t{zQo80O<xonl?=R
zVJ~FJH}ca^NK*%ZQ8*_u8l@lwA&8bRW%o1!J<Kg-Ajsu45GPp@EPrqoltHMTYU{0-
zCWG|Ywr+(rT>?n>Zzi}W<^QgB^d)Sy=#ukHcy@d#CkmJOH01vk3@z>yxIRr8H%Whm
zVuo~Bk0obGkLOI&+LtDn0%rF?+Gh_+AC?)gT=Tn)wAX(C?BpqC2=#*AD;&4Nm|;u*
z9sTQ}QHXrSfIKiT9)JFOC=r(hw(Ls!6FWSb-6`;TWUat8ApMAD78B*+`#*%DJ~l1v
z6P8mMU`mStrP$5i5BQUd9h!%)Dv{5h)A=q13_<evtF+cC(bFr<#m<Ki0*v@V&@^W}
zjj48kQ+fGRT0@U*_)bU(L|0ry2vuS{TnxWwIQAzhJX-H-fq!ROg%}rCh!|P|LTD!#
zY~>s!b=FNL^1HK`k=`Q~wL#N%%UwliBdU;b&#tBMG!Q8o2&wd9{ZJ@`Oqc+XqxYCx
zCS*vQAB(_Q$T5zP_}q-9FrF0MMUO=w+6l?g-QBTY(I#3Y8!*ucosb#7ziTp!w!aGb
z^p`%k2q}X6?tfJ}w8N0fMm=@HO(^s8W3l+o9f4HH9ZRyu?mtU}oU-(8OV~7ZbN$J@
z4v&x8{W0Xfh7v_!D3|4*I?jtc#gpG$%E4E3G0p1s#HTfsP+5$BDlQv6n{UnnF8~>G
z##ct*TPq~hxf!?jDiIGkf(R&(5b5KmN^J2#@Tp|p5`QEiSte!@RKLl@3BE5*3JD;P
zi6zA-7mN6C8GI!jTm%VT8UZmyCcqXPayllXV(h>fJCG?+j>-*OR1F20WF=xsNE&m4
zQ1dD1I%aLqn3FW8hu|>817m7XL34UR$D&5$_XMo%5y?u>p^<ed`C=j)X|4(7RdAQm
zpq<55^?w7okUmqdBtJq<y>wWGqml*t^R$WyS2(O99oS-r?1Wo=G-_1<a9~S1w8%Uk
z3EOnD8>a@)(4u^BmtjZ1VcUk02~e>ndN8;vA6}PomODlu?52PLBfKu1;26*`WZsSu
zQ19jM7&u^4Da9m~R{dFsQG+ROu&`20@<~4NfPd+QXWhx#jI1OdlxCGInPw^A@5<#Z
zL%qp9En=lv6%yU#-5&W=!lJK8ic*=0ZiP|<98N3+{8PE?H#&?8cBz4Uu?Mbzn?bvi
zX`{+K5WF&rJ?20Sfq20dTLFgxiA{+on(T5Lg@UI+1xzfFGtKO9CoM#&f+v-dv%mYl
ziGR7jY)APlC@*SYYbK}YPq0$EXIuRkacqwx{d{iGpL*FP$AhoLRJG`3bIUH33tu@^
z6AeKbelX6@=N7)ImL8`Z4>)B9rBqZhQs0mhLX@DPjfAn)NL6ic$~=Y{t^(@P&<6xy
z`TdZ9^Vt`W0a7^U{QHn38Y;g>lrfSAE`QZUP_N<NVP<1IfIwc6NjyREYatOjC`#+W
z4-Gy+LE>|{VBNyEaBF153LJK9hXr;4srQAJXINXPbb|FeP?QR^yF!#0^BETW5KhEr
zDx+Z$$`++rC8ur@!W97f0R-ZL=!@n8@q!cbz5)@KM(io#h{vEl9+Aj6fx{CnN`J-L
zU0tEOr5=MK&v6lD7KueMyQ63d1I6_y7HAiIj>~uuEg0fL+IaHG4k3q7&>IUO4uIaI
zk9v}RR|yBf*hnqt2bADxn);gp{80%*qW6y|ZA7C6i1y0{ngWb%%kZrd1~--n3V&K|
z_52IKu3)Rw7~{~k2VMU~EAQdP7=Mh`B+&y~6AtQ_2s}trpuH2q$HDGZ`)4(WaV6XH
z++Kyi4W<L*Uulq3!7&2s|J<UA)g&y6U%<dBO~Nof?i8c2dH_p0i??ZGHp+W823XP=
zwGWs7_f~}%5p91(v&crSStQo36RY0%N7{Ab4O1~M_8)1OinpxALLu!_q<`t?mbG}(
zU@Ulbe1b+xBUbEPynp#C+csAk+BOq|Tk!PI?U{|UvFwdR<LuY9F2`d`>aEN1=J7-+
zO7t)?BAUlz^s|y2NrR7{siotYD$@VV$(_j$q~Q)wIF|bNuX%t1i9t%la6`?UpnrtL
z&=8SK>kyGEk$-A53=ttQ*ng5)y0-k~V_c{~I#gX;qXPw>9xc~v8l*#wGV172Mq^Px
zd#k`vYkSl%re82jYV0^Hd>k2LoR`uy_|Q17h#2QJelp*D#g}*A%uq`k+Og0;wUvee
zl@A$d2Twz#^y5s=Y{z$!a#=$K&w@h*;dhu>Pjb`yL=#X`L37?%$A6MN*0JP`btLO6
zY>m@F)dp*JKZ7;9ufdw!=N%g=Gh%5So(_yQO*Oq`{n|e5sxEX7PJaW2%W7)T05nU}
zK3tYD-Z$4V-WRAXdeDsJe|*3)d&G6EI^r6BK|g!ssC3ql@mhY!c>RJQ<6rT2=9u@J
z_?Y+G%f`HaNmQHZ7k?K0W`L`s&&S-X-`l1;c?QhcD11InPpkeMP<TYaxvx^*Lv(vF
zpF9iZ3wzL0+2=``c16*pX_D^;9cbHp-uAx;iNy<Q;JiO~``;+6bZviSxRaN_)YNbd
z_F_7D9k|PxJ!<!}r8{{sxP~eYzhU=33fi<}cW;?*zh(D-Bs}Z#eI<AkzGW`wlivvL
z)G$|EzIIloF?A=u8{FyAFc-6xWjW5ro!E|JS*zK?G?tIp`hVzs7tFAyZoreG5pT3s
Bb!h+q

diff --git a/resources/icons/android-chrome-256x256.png b/resources/icons/android-chrome-256x256.png
new file mode 100644
index 0000000000000000000000000000000000000000..6758ac5c6be9e643642a409aa0cc025f1090ea76
GIT binary patch
literal 6035
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

literal 0
HcmV?d00001

diff --git a/resources/icons/android-chrome-36x36.png b/resources/icons/android-chrome-36x36.png
index fae7332cd8a046a5e9c988b840dd68a5f09ec0c6..04f3b6cad4ae76f45d4fe64124bb88694041f307 100644
GIT binary patch
delta 1290
zcmX9+2~bm46n#Gn0cjMa0TQ-qt(}Z44P%y)gf(F?hyp=CHo=M_l!8H!sAQ%UVU&zg
z5CK^<prvS78WqqgXn|HOYXzkO#i9j7BFGZ*6G&g;%>8%HJNMo5&%OV*6Ut04cu0_?
zJpn>~Kw=t-;h<O!lX*)AJRn{IY!*wwW;f{ofQ%uyD3+@OU&AWA#$YHkI4+8CG=@gC
zfrLDhsZe9sI^d%hgaNo}3>N|o?&HxF#j@d14cyeg6_r4Q7zzf!U_jm5boy;5gu=33
zLf@=3;=RXvqd?yYnIU432Ir~+`jQ%Ez(EnV#&8qPpus?_*MynHf`)DxvI5S-V%>%~
z(y<bfI<OtZNH`BS#zZ+*%n*2}-nG9Du;D0y&Oa>!Hx<+c93|dciT7H-d30|G6VR?h
z-N(eRJ<c@{L~O5Gz`5VFNSw!ep}<Y=2E%@3BGA7Z$DSeZUz-Tv-1E>n)?f%>Pe2Cl
z4B`B1BG6*l5*=Vn80)E5#sav^kD*53s^RBg!`<jNf#IxRxeC(ZYDyZ1(Ntxf&ZRd(
z)8#f9ZuG`Qta}YP4bF6hBC4W@7I7X+IQOd*k&JS5=#$_<Vn{VPt=#%pltaY|hMP<+
ztgt?oL@i387Jf@D%#+xpcLD(N(t`s-z+n5D@fu|p1^Lv9yx&BlP4@lu&7=P`sPL?*
zDxYyq>NoaP?5Lvy+VXtpPUt?j1^Vo}s~VIgJD=%88gX*IFMbi9b^KXo;$m>p(q7)$
zvQc-7wz!8tJRNUq$1EzmAQ!D{i_-cPIIYrFb5iH|C8<2gYTVq-&Kva|{^nisu6uXe
zT4NqI|DNP{0-7>O^@|VzfSBnY1lMtB761&>pXVuLJ(WIFg;6}s2y+N^fJn!DZ-ggB
z?l>ar+C;yu8awg+zUpXfdy2S0awy^a0#`YHveZ81(s1wW0aZqE-iSBi{lilqew=l7
zoWwZ4h0knVx8-DpeA>E*KndY&xGZiXx5)V_p!nyvC%e4cMT8}1q`p>a8D6?Iccaxc
z@Yc4x4yhYFjPH9Y{R{g!dEAm}+87`$#s>BqHI-5J+l?!~*nf{=ix;=}m-O?TuGDuO
zowaefY)LA6VoM&GYT}H$M+zABA84B;7fH3!&C_z1x%}q7Y~Mu}^NAmYcM`^S<ZeyW
zM*HNCTw?a23rQKMbZdNe{gciQy+2PUE1N@m!rye9!CWg@r;f-Ql6T)YFgp4rN%6q=
zV)LDO(KZ!QvbuvBAjqQ0c16~d_NwuxN{hU@h3kTnBG*rGPS%*Ng!g-0+gMR4;ZH`$
z%%hLDonP$p9KY~KIa2&qW@TnsT9?yTIWhHOcls6E{ye8mA?d=<W^CMm@AYW4<BNoS
zpnz(Jm&FZFZISsoSOncgYd;fC^+qkf6jB#g!!nc&`KaCF+?2_^^5IiUxmH<^a(fuH
z<pYftofnZR>6uoe`|F<{EZ<ox=~kPzgwD(jAx=TT{(+;o<+^@;&^8`cR<m}4)%s_J
z_@I*X-8mO~BtLLxDlsOkI;Q^b>|f?`Xg*4xcJtT#k->T;Etc!~Ks=x=2u{qpy4(Ip
z0XO#Lbdfg5H<nx$Q+#)QbOW)ARyk>3t=(kSta*1D{##*UVR(9QTxMYu_M86!z<5M5

delta 802
zcmbQmeSm#}Lp{Ul0G|+7pUgrAa>4(*Af112GngANe7MNqYQymMECW9;!|$669PA9A
zFEebN%kcdggPat@{7#0Ws~L3E7?_zD`l=aJ6&TLfZ(-QClwre6hPwwC?9CXi>|i*%
ziNVK-A;gm*J(8gyfgvZB;rR)M_#lSXVumGs424My2SwuDffkCC1o;IsaEQ)Siex@}
z<Jg;@E=#h~m;Lg1yN+4$6i}YCz$3Dlfq_vPgc*Ck`#oh~V3PK9aSX9I-5c_<YOw*2
zN_b=aowr#B8g_EJdz`qqW%v94DcNTNXFa*S_FuxxiK_kXK~oxiuSb8q{`z&y-F3@P
z1y|2}$xxO!sl|HZg>?P?8RonOm*-42h+C?*K=-}EV$On7N8dlT>-y%-cvd&TNGj==
z)}|(&|8E>-6@TN^GFtJN(e3cTWj`7kXR_WD+ahNg^zmT*PwRJY=6>d15qpeN=bVns
zjH5poC$nvKN&BoW(fFvW&HQA4Thp(Yv;z?dW%s6XWther&pEPb^BFavhjT?!64e~6
ziWc*?9`2a&xzt^`UGE;Z+FSP03YU8azMec15~;kj`0cKbM@8pLUtIf5ukh_dA5F7U
zVwTg7&)?fnYqg?7%c6e%w&y1U+QTC>U-ik~Zti6IX06txEXHws`t9Qh%e6jl&^)>J
zduPusHD^8Mnfd+?V<J^VJOe_iwuy9!bibWCk;Qe2PE|m!@%nx01$RELUv@jsD`5J%
zr>zqc1%5wT>v>)L-p8{y%+IAh)DGE`Y_UgDWJ#vOG2J(D4nY?tYnpi#*6ZFbJW}X(
zlg%vU+WAWcO%Wnz^$xhIJo)$`l8wJ6k!|Xtxn)ZqtP<?kd~tngh)&kwNk$W_>{(JT
z$=&lx)v)@0rN%!`-D<z!-ThCclYV}7%ZPqe)&Dbi`xLuh@x^j%XMb)v+d9wa#pB<N
ziJ^xZ18sSFe)Sc72?+{3`1#`J!-{I+#~-FGJtyA1bJwjJ>Gpa?LA4aV!(~<KleJm%
E0b?svbpQYW

diff --git a/resources/icons/android-chrome-384x384.png b/resources/icons/android-chrome-384x384.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b514550cf6fe6f273a7071d0200e5d0da20de83
GIT binary patch
literal 8694
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
B3xfav

literal 0
HcmV?d00001

diff --git a/resources/icons/android-chrome-48x48.png b/resources/icons/android-chrome-48x48.png
index a2dda7b48e0c7683892401ff937983ba1b6adac3..d341facb26a5d0ff8b1a664e2c77384c56e44196 100644
GIT binary patch
delta 1711
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
HAs_f3yuBck

delta 1045
zcmbu3`8(SO9DqNLxJr45bDGCobHvg{TXj`BI`ok^LP?)hh(38R8bM3*sIOKXF>P5?
zOja|hHu6jvLc1PuMDd8TaUU~dZQN~;y4L*-d!Ofhp7+OBbhKW*fPjE{f)6DLK;g!J
zD*Oa*3jv@$z%Tf`Ukvk8{vQsfK|ThGif}Lmsw!ZC0dWKDO~R}YOblW4DNvChVA5b)
z0%3l@L7<EcT1Vh-5nLbu*$2*@fvhCpX2P%lCSL$67FNaJf``WiP*(!<Fu>bG$FJ~y
z2;TKVVLF`F@GAcFtDhW1B15z;>b<OB*C?@nr8{i0CD8H<HYwhE=o)|$%Gc{$uus?B
zi#Z5u{<vngfg0}~$JCXlsTOH?iM4hZv2^~OWs&EsD)UPB;Eq-6n;J4Q#3OnapDGoz
zIO$T44=0U0vqUS^uJilhp=!?Zw1<zSH!!(^t80ROH*J@+!<LPDOC$+xx7IIMn9T;P
zMpeWzLy(T;Ms`3pgD5vlPy4(>n=+4#wHZwMHe?3af(!1NycreOo-(cPc$3cV{oyl}
zi_fgJb=Dmal-4B&`H89hJkfWkqua751*hl@p?~5lJfF2fn5%Tkp+=Jiwadw@12^Tx
z3PWKXIxyK-vu^MhBp^!(Ig3+C8Mnj?LyfC1TX7X^RZjc9O?hSFjFLeGLfzOlM}Mi`
z&o!DD;G{~wx)XMHiDa{E$5%dadzG_k<|T;T<Ob~2Y<{B|f)^$55y0p9IR1jnt3|Cg
z^m!%^r0%%YER`zZ!fRz4<jRE%+p&F#@~bX><Md_qxreQz+}~lY$KhsoM{HZvf|+$*
zXJ`?2`^al`^X^FImOA1jwvE?F{gGb4<v+*XIzvj@z)B2dFL3vJBPFGqSWz=A>*)Z^
z?jVLw^=$gK%T#Mvq9*yro|J)R=yVcRc3ZLodvBu!A9ItMD`z@K%rP<#@kEBh0jf8+
zK*wgQnqe7a^wNK~Eh9hZxSySL=z&C!8zS$q9FB<}_kBb}_DCUT3rW1lkVbZ(t=V`<
z+A#@6TYQRXXY3^kU%a#2*Fa|15<JV>^a}UFpH$@*Q<h9j^w$*@%06%_Q>;S6*?-yZ
zp#P{l?Tjxk!)D>Cq$6_<tTBIudQPK{`A70ZGEJsf^B@|nS8=(Art96O8$yhr&_~p9
zCayxOWF+7ENz<Rt;~Yn#9r;CxC4=<naXKdMO3e7{<l0B~1sA6C-?sPd2(KS5i3k*H
zqTEXh{cPHlV%uNDJLzpe<XP0>(UsDG{Dpw2yq|Zfoxi5a$C_kgR<vbZ_v@`&>oReK
ve~O2D1b4=G*&{S(PFS01YOum=y0=CpVOkF~_LSVu{`ST~@;!kws>1je?tRW}

diff --git a/resources/icons/android-chrome-512x512.png b/resources/icons/android-chrome-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..726ff9980c3013caaec592f7fb918c9d6d8fda71
GIT binary patch
literal 11542
zcmb_?g<n+98}95b9WF?xv@}Q~wGv8~fCxy6ASDe-?1BggBA|4Glypc-3(}w<U4npg
z3M{pE_4~W`FSz?Td(O-|@B2K@J2NL{&%V~xzDG(#PXquURZ~^g2LOsKLID8`d+5yP
z=)oRv?CxmY0iZIP_`(VoTZee)-%|u-LyYU#3Zbj&Lk|Gp%zwX-v#kJS0AN5@(?CV@
zshgzaCky~GGL_QOH4+k^L`AEymjAb5o6exJ|8K(pX*7_<069s?Y7CIU7S5p9y)@PV
z4P>zUQ*iq~=X0p+IgmXDau|R(gJBV5uzL(J{M!nVMZ>Ux|6n11qp+>#I5KE#;UCC<
zO=zqUBKsfCe;`;uY!mt~8W!p=;3@bQ1^Le|gO!c-|BH`h|LY_D7ZXeUkNq6yA1Ul_
zAQs^S$erW-5A8ojtlQ~d!D<)(a{LSRPtQN7|LOe8{x|XerHO??|4m2c49HzzoBj#L
z06whp|5&idSe7%W-0443tR6Iw!^-|^|0nx@)YwEI{}BEP{_FoQ{6Esa>HKB+zhbZs
zC)lolVKM*b@Gr-|foQ0lmT*3{A2#ssZsRKN<0$UpDn{Nw?cgcDXZG91Q_5!WID{!|
z;NCrg$uAM8VaHKS?30W{rPIy#7JRALDs~Q_Ve(jn|Aa|PR3F0>WF)FG={=Q1OQj^M
z5n|<cMT@QZQa(}IIq|$d#6i4c_IJA(vxa|9UcBNJYsk>G2m82pRtVHu$t`1U1T<3E
z*zzWoQ#+i%<hSvZeL3G43uGlR`eLQ(3FTtd{v^~~CQwgd^g(ijf1q>Ar*oYn((Z<v
z?cyrEVL?6Rjeo?Su70b~<7RX)Tc|(h>k=BLbOtXA{?yOct>c+qjFK7{3TCT`eB8uS
zxi6H{4}bWL)M$!Wcam7|8Fy?i+@ufw(2_5;h{idRB`AR7buHzSaT5JbvPa%rZ}|sj
z&afv)wWq%Jeb53S71$sWO-cR&J-@p6bDf9mCDFAHI0Jk?*>?_Cq!~$UpP9q9nsm`;
z%`*#kQIfI8krBlK3Ix4!<M)$EExAJ5P7Q<os#kpo!|kGM6qh=_Y}`;a{XL&G%!*G(
z<s~$_Op}-TP>f>zy>;ya5%remcxByF1<FsgzP%LWh^ZVabP=!7+@Hw(>bRG`*1(_O
zp2pm#ot}Z3jCaZInCd@0KKwbmIJ@7tKd{a(me@NY_f`6fG9LgeKu!6Mf$#Lzqo=wC
zQ&dk>mu@sN<YwW19~?)BYVt+0S83R*D}Nz{hO=Fx4O3Aeb9?2M9Gk2+n?9JLfQ~Q9
z<y9CGV7hY?IcBVF?ckuFXH?Xkt3T!V<XzE)YTi487?p=9J03etyYlsyL%Tk^awloK
z%|1I*E~?>bT*;5GE7Wj$8m0SI^LLB>dTeyh%&Nr?ldzLB>74&q`FrhT&W^zO+ykOz
zMx#~6gD-K0X@wh__M&kgM{LSYUW_I^t9tJJAn}=`ctN^Jf3c6BlSjC8>51G#r7rvA
zbc$279pqzny=;d8s{$ueNkk=HoV$t2iup$t0@GUD?2BHV_V`(o`|o89QW<QNBBie`
zUs}C8HA$Ol3#VLm5dEX};WuSnJon1!R`c0m%^X#yFLyyX-@q7ef_{_sFW1-7-Ff9x
zUeYpYZuejI%hF}ptM#$8#x-}nKAQ@dGS7d#Wag;#2QMdsGFpPiZc@X`ihtb2D&?b`
z=(ItlMfCzz`J=vZqWx~f<Jx$_?Cdz*`-2|(&zos^Ot-C_gGS=$x!y>0r9>QS<+-@&
zd)MR8&&j+<R_*H%ycI8(nj>OC&AXa(KbV$pz2a6oWunW59~V_kctVvei(2@?n$&2}
zmR^2efxdYyv%Y+Vl8hbCPfZ$LF@d0uNDTX#>eS}<Gqghg5u085#}l<8j}5L>s+6HQ
zKRL~NB1qVaz$=vtyzkAL5BemPls}Boe<+XhC_8Yk?d$O58urn;oCqwei*xSvPxCTO
z-l0UwPyRv5n<IHlo1Uj3`;$rBDRJtqs=w!kH@w`U-jeSBMTWVdj@y{Rt~OwoNVb3x
z(4@BY#4W#)^v!$S5PeKaYk9ye%WC`w*~g<da6?b3-&Taj+0AvMwe?X^5@CX6gdwk8
z$%?!1hQclFvbfUC$~2~0;a*Q!w$q~<0m`*;&MK;y@<g?pJ`NS@3SOE1JZp@dt_fm2
zBw6raQgAOSrV5{e?!^qjP|_dE7$)Ex8je=B92&o6Q`o{&2t_!OT=zgI?fJjGlU5mU
z=P_PLL)5z}pD^T*`ZeKBZb@IT7v!eTe3W@}(u&b;po-m|4Mh#>GLw5IZIk*k_c6z(
z300n%i_dmeq3+$2MT?;Ag-zbpnw*A2f@lIYC66_^xKl=p9r;r{kGqk^0tUQK4*$qC
z<%*Y?F87R_B40cTxU_rv=F>w)aT5)3!2v6XyGQLe^M{lS(h_Pqj*52isWZvC`SL)*
zqt#-kXeeZSpNk=OEwXW&p<%A9WqH?M&9c^`_p&;Fy7s^xcH>!J0YTZX_Zpqwf-@d^
z{JELAe8@c$;5I%inpp5$5bk2%&Y7{>=JEs5whSBK5lrfL*Ku0?I9KUJWdmVU+fQ|<
zmm9s4c^Ef+rl67-E;{opiDOIno|Rf9oI5shRFWFkb5?nTum7Z&6eZasw263(_^L16
zP&J!cI7R5x?)9AIB%y-$5$|;k@lS4#n145O;yvlQ`C4HMZ>!)of8r^*uc<8{BX#a~
za1!wu*I$aY&KFu_bG~4RJ=H4DrBZm#{^JLdLtv&XBZiYAAUMDMy=b@OySsMpYUh+S
zkeWs`;FD8ow~>DM>x9SDq5((N-@jqV+!oYwtB1L~APAB0zQR(bc}_aoQRh<Lh^vzr
z$&9*GYdjZ2L(C;5so@C2=D6N!dCHTIHTI`|mi7W&kRm4sGEQ=C1@$!x&5JS0&$f-1
zn42F<V;0Q~#BOoKEi$k1$7fGM81mn+k3q{9FE7%&%VYDn!1cZBQk_$`IXx8uqcrY!
z|AafZk$;{Mf}bG~T;|YOrZKjCi{vO-I}{0N*$aQRFY@A$3N^<z<`wde0<V_vC1%Cw
z=Z2kE8Y2sI<?kkll(U-=j-QT>i&tIiOWLkI{Wj+BO_LaqL-JE#`+$sR_u+y^KdTmz
z9V=_O<%Dz*8)yleYc`#^?N_n+NhhP$J8Kz3KWz7K^3@AN9E8003BBoRNRHg@`ym94
zcN=r52zTe*_IG2W$WJOm_$(Z`*NTT7DPZ&W<dFyuG}oDAp{2QQf*6dODwWgwHEoXl
zxFD|6_S1+Lz?gFwZt~j9;qc3$D#J($_b^RP7FBpu9pPRuC!2?>1J~@4>d+8jjG};u
zd5xkRU`hX^Xq`Q|=ZDj)BEX>sOZGiTc>xf2JFS&Vyuv-_+o+3=BP~g%f~Skknqmxc
zZ&av%vCdPCf1CKaMg1+4eU>1HV;|?MBX-HF0M_Cf-I4Jyze&N6>g&1W75d`936TP<
zWm#n0inkg4>Y*pDd9-&}&Ofx|(StI!(e191TKZ&fiDO|Ab)Mg4_i}?8HN*kSoJX(&
zdt}V>0?JM^U5(vqukXD@EBAOdLv9tP7cff4yj8k$(jvKR)Ko|hV$NNtt4%n*Hz*wM
zkqzA@_Y_uQ))O^^0TFiJ^em;DB8QK+tjs!NT^leR4nF`&bBx?8owsak6utFLc(%R7
zoXl=r>JDWw9?JS-zPGB}PPM#|Uqs}6863CJPdf3NG~ST9UA8;@KTSN035K5#ERoPr
zmFkm%9?Psk^JKb^I{GQ6qI)EEH{FU$jj(3F`gy8q6XvQun=PxyNkxVvj;fBQxefra
zI!9Ra`l%vyR+QWuO(ROrrp!k>1+MdCBCCxm0}i<LKjyQg>~KH+iZHXWpVyUE;jCJe
z$XKqnD0&#W#aO3_?Uv=m;A^HmWEkHiDiNMZfe=wAW3z@&mQMN=Ny-F|35R@5TqSpY
z?m4qbb=C@p>yiTUo~Uw~N@He`%ffd{Ddg`z1Z~;=V9sG=^(cSk*{k#<Q}dL`hBM!x
zfK5n4w?dDyN^K}6Jc~gBH$e8w!pi|R3*IabVhPSY{0#^&MRK-XbRFkZYD%3{XmR3v
za{ubx=VSy2lkQBAhQ!H)BYdt5<a=ZFZk=zFO@h~o@xf!-xL1j)=aUASveDZ-v7@}3
z0+xALsJXCvhZE(5GZBxa2i5ZCXyU?}Z%GPh%7GB88P_pK=a`o+*G1P|=H5CBuaEiO
zz9-3csuvy{va^_fi)}LWa@Zu(hvZ&e-0zW9;yV^eC!Npu2vClbb9IiJiGh$N?d3yO
z*d(iw7PE<eW_@|f2WBYsC1rDf*1E3Ww-Zr*r2HyxN{v6Mg5AZd=RP1#sVyh*?vCY2
z`O4WBg9}ncp`!Af{lpi0H~Be8b7;_X++ipcA;<;30DvRO@mg4GZ2Q<AjC?4;e=c49
zVZss#evs{HVqD=uK@_v{EEi3(HB>VWvW|`^r&8>mBA6c&S+vmZBX}!D+#D}0&+WC+
zDQCXX`S^7gdf%x2yW1Ug6}E6Nrr1`01-S}K42mj7u%x&i4j(1x*q#QJ@JA0#@$?0J
z&3tJ>kTj-n5z7+7__jv_zT%LvPAH!q66++17Ky~^qsr0Q4b~^{Eko9OWwPMmOA|{*
zxZfIn!#HgJJ?a<QS!`&YZSaZ=!HM&EM4?S7g0Z71Jh0aM`<AG+c0gQvNz9nAL;5Q*
zw9p++9L*mJ7jHQTh<mT|GjV9Oc;v_4r61H@p215bd)DtS1|?#(Ou71bW|P9db^7*B
zQ`)DGcB|>RfvOC{5wR^1C9p5A6=1sfkkLQzJvu$wm#PbXp10hVIvxtn8GfOgOrcbc
zFn%oY=WOqpOVDkCq>sq@Kcsq$Ml#*=w>4Yj{k=t3IW<0dR0ITR^Xip}9poZmx_FT4
zBlsTfLze9c=n6h%T<lF}V-dd;r8nBP{TKeYIeatgqVi05wq%P+7~zXJ!S`oR6dqb<
z_e;2O4<$Zt5Xi7$qkgb*jv(_M+4+^cONinn*vmtrQf2k`%cMSkS))(nlaoEHIpsfS
z=&A3SHl7oQWncCNZ2P~TYb7mWX{)>Xxq0sY?&+>ZhFkJuwFh1w;-85ube-ray-6(5
z81^zKE7lO&l}&bRbr1Dp_NG9P;|ydYQ44z-Ut^yQ%S}DZFs~~+VE0Lj_sckyHf!)2
zux}J4iD0qRzU<s%>g<wTTX|MaJ2<rl99S$}E=Ls=8%Jin<|9SltZZojak9PA=u78c
z8a8<sRhjv%hN14>%Y3>p$kjYX@9dmZscWmeN7CVAY?>TI7Yc!3yULC|k8w>hDbt0;
zE_x^UIsri;wwHSlxA3`}_$7Am_jpi51Oz2W6q4?Qg22EdX2PD*t`%1o0-?Pe{Se&o
zTeYpD^J=u)_1F@}00Fcy!Uqp*a<}+NKfiKUlJfIsKtOO<{=kKu-q4{o?pnxNkfPAh
z;L{bU2+UO_%<*u=!yAruA;T(phSm?nPaav2;7+Z+35Zxw*zx=fVfGA5{36wmc1ifx
z?GKzCzM?MOLfx8Z9Hu$M><`8I6(LcZ`q5Ckw|d_1sRW~|GZ&!7rvzD>Hx_pkeyJs!
zICvYHSnjoU0^%Fk)%6WIlB@eB1Tp?JyLbh;Cm4ynZ_&sq%ca&pGM04)vLQDf^rpD}
z6~-qharK)dYWEU(H}gU<G>*w^qB%}oidgpZwTeCRwsMRfj;a)~Slq#O@p|}t+8iSU
zOFEK+`8K*p^Fjmd%eFhjHrFWPz07Q%`#cCZpCMN%#wPf-#z(w`KYh=?VH2%@s|z40
z*tt)`#I97U=}bdb@@8W2qKPyMKyiK}kA$;Qc_z!yXF=N-yWRPhMfE#UsLX8aGt_l;
z_4?DIQ>ewuC%X4*jJQS<J{H;s*E)z8cCY7((lasDOzSEJ_=x0v9Mlwj|73dIaa!T_
z_SVoVzFoiAFcf*cF0L|yY?+wCpG*6`>-SGlL~C1DL()w<CnpN$GtCR|bEzi3<28Mw
zt!B$?D_K0K>cI_J^51bDv`K1v4Z}U?55FI5W$rQ<<QW3JtCxmsKZS*tXT++@3iLCH
zSL<l#x|dl{g2+y(dF5sb<M?|u>E!nV?=@K0(UX4v&V>@eWS`((si65V-ugH{^IJxl
z^Gzxvj9xa15wZ*+D-^{ITHWi9n7%t-=ImcNzoRO?Mu|maMag5@`-2eTgW9z-zVB#J
zR%4kJ%`}BBtxr^WNTH8^DHwNY6>Ke7Zql2P$$`$_f;B2xt?Nmw#c{+jahMT5rF5!V
z@2i_TvleeiK<GDP6PM?U<+VLA#u2zZ{m5{{_S524_vh=#p^6niE301PZ9GYu#wT#d
z;I8ozd_=?L1dJBupRr!?rDK@P<8du3OoHvYyw#aXRYEWHxe?x1Ctq<Dy{uud0@xtt
z{Ny@>B+68LZb_EfAnw>)bSzE;!h3L|$gw#utpK)CC%Ax~z0r>=e8i#TQ(=RXb9pm(
z?p0``J_o|^>ZG`#$|dCGom2I!E!JT}HGEf$(~9<HS0e-5Y6R2XJ3Zpnnq419pqqlZ
zqzK-WtGTJ*OYri7!HdRpS9WQy2&b)pZ*rE(p|C`5blgYM75!m8wCbI;(tRGXELqI(
zT>|w!`WFg~jP)}U-ubmvtYbf9w-k~Tfi~|t^wWxv2{SH>Da!HSgda3OXWzH_Kzb+_
zb1vja5E(#nW!Dx|;nedYbzm{<ZI94?3@8$aVE@80_>EgHfGme)Q7<-L$iY!YsPhAS
zpbilnxB&=o>u(`J7R6%U1q7vuk~zc&yb!^`g<g>1`5x4*?mh-O{{3>$xK)f#Ij}4v
z&l1B3U3Q9sSvG|8m4$DI447p_xLplsfLRuV*VR09(I3)xctQ&bh;=htCxDbGD)d4Q
zzpWSQ`D<4W3{hoqBH>WiA|QwMBS(qi+V?HI2S?aTxwfCj)oj<ZUmRUuZ>~6*q{(9j
zpMI2|L;F#ntRb-sMgxOW=n*07!O3J%pRQ2V0JI+^N)a*`@5LTS=5{flz?1gl7v|uE
z7l=b6<ONqU0?Tub6l1a6#E2Gv49HxhELri&hW<eN(V!kf9;EUQc3F(hmr5Yvuo#}K
zf$loGXNeyN7W%<sLT-`(`@_!K(m-3ZA3cf^ay3GAE?T}|FQ6OOS_e@jb3H6k)3@s%
z`?c!^#-Kxq*8`WzR8+3a@e#aPS=G}VB^&urG}@0DoD)5aJcDfLROm6|Gsh|bT|#bq
zqSRkhE<!PB3V@8z{^Pqtx^Z~w$|@X)L0_C{sd?>Cd_=>*D^xIIGR_DmEXWEwR8UBl
zVg6VVZ$hF1n51#N3gv0QGs#_ngIZj%@ucs?t3@RjkhU_E%w>M?Z9^d*B&guYDw#IW
z|H0}wbD2txh46zaqVse5T6vZ+H^3Gl_eY6%!{^O!uwide-GTS5(jDVsu;64P?$ZV)
z;sQr#7|ILM1<PN$?H47B#pBP)>N7Am#2v#n*g~B1Ly2_P;J^qsq~kUS@e9XJn@Fh1
znU;W8(JKk8I~U?BVOxPtIAshrvvHhH$<w@u6a`>>eS~TppT$fk8CxdT6}EIJ34(TD
zMMR*oKGrx8Vqu7(CPjash4MPsT#d<Gd&kVYJh7bhD3SYqa~%CQKnU(>X)8vCOTbqD
zpygX~@`n>n9d$L+r<bxLI`ImCfVkdLpnAW_s04Fy@Kw7ns<!qMUeN^vVSvbv*Jvxu
z6|aQv3cIQ6$Hl8D6TQZEjUFV^I2>s{;3{|bYt(g%C*j;kKt{zP3(*|=`G;Mcu1Vt}
z0edk8EZm6G>y}0$I*Du4uLbMgaADmjT}}5E6ar){61RDR3!ruOSiD=1C~KZeTRvp!
z+ya%UH@g}(l#7KW?%NFt<!Qz_?oWG>9N3IvK<h|k)@}>i`0Bc$BK-9^4>pz+qF8`J
zKH{BzvK|<_;-mKq4iurv`4E3eqtAo-u>oyr5!h6e5wUFniwg?Qd4r;xIObG*Y&|!C
zGLHX1=1?X@NsXE+c47vxVC9jwA#uW|ZE6OMuJ%#-!Prm)!V1?%VtssOV5RjM3pNaA
z<Js)DE&tvZiQ8fIGiG&}*e)C!u7BTKG5SQ(Csko`80+J}{7g7?>rd~>wrDg2r3hj_
z-~6p(JL4#paDqmCQ3bjLmatugCuwuqslGDJcz_5}ve=9>P(8yFdZO=22)J=#I+E4j
zT^fn5SU5vbu6b_xRo#KboN1-r01GFBR(zdd-)gw!+hQIG5KLf!q(#?T&q-#DYR&To
z;D(WPHkg{<sod_DO0|WdM8K$&=tG^#?WwfEYXDn)FTH^IFm=k`;-Y{HY(d~4jT-%6
z_p{Yai5nmevdD<1nmu)zSx8R+z`V%-O)p1E)S4{u1uho3O&XD@S-s!uKX>gfa2hPg
z!(Ji~YEj1sbnzCSx2Rg%OUOr;&uC(+EEz)YK8P`7_D*a+!2S#kP)YzSa*zR6Isy>=
z4KWfeOcs)DNrJolgv<r6VaIz<JtYdm>w+&s+Gd(IZ2u;2^4LI@Y)J}yPL4^#b<cn;
z#R}ugQ>JKCZu@e_JwL15d+p0V8wA{?eERQi)pbO&YU8xYc;TCq`e{NIS9GIci-B^p
z*q1aXTl>CpW}GMjTMA{_uBqQ$1lSQkAtRE^e2yTXeJPW}p(a?S{bdaah=Ydz)P9l>
z^>oSnMQW24FW|;)^9$>q*ZR3Kt5rn{3UOVNkVTVEjr<5SshX$(CCs=}A=V?OtKg;R
z*Zq@8D2RaU4b6%elq09q!|aX^e57cJv9^jD=z@o_<;qKPAp)^eP8j$BM3m*%t1M36
z->OViNx(1yZhSJHqxN0goEuTs(HP0E%21R$;D5xy=3x^&g3g?rP(ls>gdB=C`^|uI
z5d7W_-Obu9S}+1oC#3De-7tNruQ;u>W_zQRGqm70h;bqs=Px^l(skU39s)oBOhUiq
z4$PA8UMm=)F#k=C2VMY8ilM$Y>V97JoU2{fQ+d@0jNq_Xmp=_ce2=>)%XbmQIg`WB
z@A?P_*hAZDlM;Au`%J;Yg2!wRb4mraH%WjeB<Za7X-(C!kVS&*O(9XyXG0sd{gQSM
z%||w4K^7_M^c4uO6$T^tsKL>63<EX-s!CffiP<LvSybS>#T>k+!`^QfXNpBJQSxAf
z1SRn1dm?g75f3y%T#-t;ig}`71m1QMTy_zC3fdsRSTQH#;;XF)aD{@{wG$p4FmDYO
zNx%zj*mpW0g^PMSiZYZ3t|TBkQOdq=x}OWM5CRR_4-%M?4<sNB2W5-VwY_?M3tPrT
zZQu7b<$eK$fdYu7sa;_ovfBX<48hvG`KIxepV@*%W#E+gj<wy5f)+?ofXIhD3Yc4e
zLy1t$`~k9-df3o4sAah-Glkh7F&MZBvuv5VzDuGaw`l_woxmHW7;oOBdc&O*82DCE
zk=xl8tceF)0Lz*%%kvXB$gOc@_qy_<>9cSIEVG1~@~XE_CH-VzKoVlPwIbDcG5VJG
zp)JTN{iURAqd*s7L<_?C+;wEz+mU?+cwh%d*fVS|y!mt@KvZ$A4~mL|wI7ZzFC=7p
z8bT1?<vOMos*ffYsu?KDxq+$-opHVKUeTWAY{tjF2NZzAXbZkn-zxIH#=BpiX_ElF
zbG*!rCI6gsoc@4atn>!xDG#4W$la9^yR`bIWATYSK+Qa)J01oMSNi8gp9h{TbxN!4
z@2g3N(G(14`m@Xw1k`}G<-c!e|9^k7ps3b{;x$FvJx$Yvxwe&|`Os9(E`We%)&F{;
zWV^P~HrG-s+TKSj_h>M18@!GGWd2z!2D8|7d}(;|rQCx{fPl0iYi{~h6=B*fq>+o?
zyT;$KX@R#B_%a7!na&>?*(V<nfLb8-VEhjp!xvVLqxh8)#?Ak<F@0EaLA$GY{t#G_
zwxRp{sQg>queS5wDcS<;bMvbwvqTRJsUawC)H3PKd5W`SN9cqhkQ$#Rr_S^!|19_m
z9|VG{vla*9`wZsm{0Ssk`{pe_9!feoL;@5Xp;ytpQJ!Wo%}tK*c{DlnxoHjB1%yRV
zHtm5jt?sAFy{$7%wfXr~{QkV<4G4WRXs8AO!50=~oDR<55E08bS3N=AU?!(_VwxIL
zWxc!I45gMc5^tvs<ql!1&I(>X2F46@3{NzF$Z9EQ`TUR_5K5|ho^~Clle5>vZ?{_K
zN#>zkX7$N!$5M}>>CK{d(2L7w1L<|hi<N~?D8~bo!o{-1fYa4aKPt+_Xa(2xX3X;N
z0v%C|F{I@jJ#034k%@6PLOlyazjp1gxI+6WjS*5Vp0^$>9q1s>LfNhIzc1`FwjDZW
zux>Vw91G|OV#aM&RVF93hA8SkU$KYQ`>++?{*pX6#3>jOf7#uEBv{amV%^{7?pqtS
z)sPE|MmVX&^Q0v>RI?t{XO<M`Q%TfCSLjo38#t0ZlNyaV=i=&caBIM@%&fIe=g)KR
zWUwh6Fc{P8NB55tbpCoj;GM(uxj%Gkq0>e$eh{DWQ%KYRMf^`mx+O`&;=z?w>)U->
zXl1XGm5oPN4V@bv(ydV&U&nNCSp3Zv4ip~T4DJ^s^58Q;gk-rX4j=d&Mf`N{7E7p#
zP-i1JyvEdzG^b4Dd&YjLPp3>vUwy=jSq@mL_b((=nktGUP&O_|u$&@|HM_DV(SGO#
zCy!u!l!2$^Xx(7uOSF~buY|*%a}T$WYS7k#<kZgn`p=PUoe}no{-_Gk6OH{i^2nVf
zsJJ=lBx8uKca(h)b9w`e(J-arIg7Y0akN<Wn-DKsf|MP{&K0O1Zy(ey{O+l~4v}yX
zRpQ$HWXPRTZgz8~WQaz5N+nvwz0V}voA!Iuy^-{C)>OWCdI@=)w!aF^DHkge%y!%g
z-aoVUYwIY3qi32^s-#~}2<VvhsW!=LLq$2X7DV57$C0~h!4HIfr1Uqxp0744<zXML
zUP(lH7pyv6i3K^|R&CDlvR|3E??tHG+jPHlWmn>FFbc%2zc<V@G5YgtW&CYK&^tX$
zUrhXq^dbI?A;RLry>+J0m8l&!b=y8Ep{5I)Fm8pnI%R2d`yJX7w|U|%bqY+gVxD}w
z=xLG59G#`iRp*Vn;#T#-A^9;kFY`3NzW?4ILV~Tzagi=X{2VprKRv%aE+V2ihRFtU
zeFbi}Y8q)W<=vXo*)qRLvkT)bSEDjE?#2*qtQY}*s-D9J51w&;-miX-e2}_jmJ{6k
zuaxC3Czlix$4X(d=atk(*EqBT87_}^uA5KUO=bl%9QPzvplv_grQBmrDX`pRZpYha
z-Ypr*?4HA@5Sy)g#5~FS5(OLRahkF6_1~fwiMFxJ>nYdu5!&gL^(HJk6Xz|5D!V}r
z_>yX9QuHDfW`1TUrfXNOnAPd#@1}evLh<5sC3r~d+H!@}$~<b)n=<{~7C_!DeX2VB
z8O1*kxma{Z2ua1>HST<3?LavLJH2Po5tkCcTMQ+!oJU6BeB4YrT-3ZsFCY_CX|x_P
z4d*B<uHpqb3kg0cPhL7H-z^Yt(Jf?lyNLcK=TGQQtf8rmj%M*^d%#_X2%)!I-g!9z
zoho!bvigxJKNsYSANusf9>q5`Ds}$tZk~iH1#X~bZ|r@DJih3n=nEh23mX@-@3lgd
zBk9Y;CxlM+l<GW43Mpah)SQK`Spw?S&eGHiHtzdzG?w3U2d)jm6s~L&ob%f<58s=f
zpcvw3ZI*y6orCsWTwnZvvpcmhr>4K<?Id=?@3an<w7+oeyOaKg$W<xkOb0QiHLevV
zh?a_O0D!>l?|%X6nUiXwmB1O{q>vS&ha?I|!EQSZziemn&F}P(#^~hXwMBdTRDU8%
zJN3y<7Ca`|isayP$HhN1$;mOKe+ZBQnNUQu3EdXmt&vrwpYRDKKSRk%4=c0Qhpdkr
z&QVLB@3fWrGbCohG8l@aC|%O2k1N$=KI6%s30z~wU*vP1>X9(R)%OmA(e!ay`TglF
z0FpsGZL(VnAGnbkk@eVRA=9)_CKSLSX0wYU10SNyA=QZGUyShYS&&%Gsb31LB4pHn
z%h$^)P<zGfv;y7}#yLfqg?GAW*RX{*K=S<czOLKGDxu~z8SYdl7%h9`?=ACYzaCnX
z7Y~10?yAlEbR_87_v$Q$Lqq&-xU~3wA9<0>IxI^y6umVbq9<vYgI6FcVA;_Do1z4h
z^hx)h{vxPovAMLitm*TT&y_=MduvMI0$%xovMGoq6?F%H@vkr8M%i3;XDn>T6Kg6-
zY1FZ+JY(BOMiRKbtmCJzntvpmB&Jxcv%E~>hT(MuSMh)f|GMB&?}`hh&Bg^f>YTwv
zWx9&ntGP}@K(mo{@e|Vkl`%>$K}0@ou$@*<AQd_rBzHn6-?Rc{*V&|j&5*b`{KVHJ
zdRO*bcCSI2Q&9@_2On$S?3K!MfO!~cJid>jU^^(QbET<G^|)Lz&t4@Q+2?=sN_gb>
zrvWXor)*uh1&Jo%){+u^Mfx`-Y@)trbW7DUw>0%xgzqgA()3jYi4%}wg$m#6+*qxe
z5uJ2droCYZr|DxRB8@B{&w5QZYUT~|4w(DhPqa-|&$1`Q$opOk(ue9j3w!Q_S9)jC
zRh9-)zUr=w%PhT0wO$c^YoJTYR6gW1d&+@NRz3tlf#_I5ST4oKe;tNT^KpADyIZyt
z)g+~h*cZ>r9Pj`!!&Ifah+7rkZ4NsBw7v1VX3k6TsR51hCj#kTmu$*ggQ!{m1lBW~
zsIS`84qSu!yc6P~&7dAIr;j5J7?jv7Z+khAY<K(44Ec+>1D-Z=`_5UqJKFaY=YKMO
z4G|Mf5V$kU@GGB<wQbOkcJ!GRO%_9`%ltQ?-xMR-M~<+LQpEUm#yxyX_x|a^m-F9~
z1wurm8A4x@vecez5%?aDuGzOjW{m5cgl)5zMR*a^pWN_gPL)rM8>3lIB=+PI=wI{+
z2KyxI<>H*ed)|>h#JMq4fqKjI8BVA*qCXCqR~m2E3lGv83naToWftdF*BtuZ`{j3?
zZ=t{ATR94#l<m@c;UWi58sQ7<EyVo-r_OQIXJ2eiugR;0g{P7!F$Z|Y``#lDexuWX
zAQe3rp+!i(-ob$S?4T&ImI~=Fcr#%hDr7z;`wE5NNz&^-B_%`^aM6tu-az4g@Z@q^
z>BTk<JFC-BElf1_37;}6tFBG@bY)n(?HKnu)5Ce~f#zS=HiYCvqD?-Vn&V0ZS%0}8
z=<AS*FuC~gc1EtSsrOP-%9b>}Fi+`vbhLMfZb_1|SYK~hr`q1!+w)=euhVNva*DP;
zde+;eBfijn-S04hleYd~DZsbeI#@I77C`U^jtDty@VGzPEE*uPtYe${iPLQVket|k
zZmz4YE53(Q^=D1ohBWyXdEtg^)u?mhz{&aiqvjO++m*$k5f9D&m>TmBYTY$1IU^4o
z)Nto(qdbdZp}ShjUD~zp_CR-;hZztDGA%J^DW^63^a{6bFOK+SoNcLYU&`~XvKV^<
ztjzM!dC*Ux2y;Z6&A5Ek5qqaoLtp;Hb3Kylc8dX1)Q&gF)LLJuLGkw78^LIo%9HW7
zQ>Xq%UmM@yS!>OO!9(mHr0C_|6B2l)h|e~sRp})zEVEO~$RL#asCT?p^68z9&^LjJ
zubgpfD?KqcjH{~ldzLnaEh!Chu9+oYD%+SDd7`q$%`!B9J8X_8Row|=rfkdp<7bpI
zneH$8i03`ggHJ2&7Vi*4MV#0gVZOIOgA<*`-5EIno~Gj8IK}3qQ)#l5GnaQ|`rh(1
z-f8wWa~V?4PNOr?lenLM16MfFv1?_-n0H!TEXPSW|2ILUcGM(El3M%+LaXt@96qs0
zF{{Hh@O?JACac8!8(mS&VijC0(RVAxx36#T#eGy2Y^fm)qFMW#dzQhqJ^S~yDLZA4
zDZHIy8A~dSsgdv;r8fqI64hi%YId*mYg@IxaZ=;Gs-pX`yqSyWAj+pqU(ydkNG!9J
z=37~XJcsi(s)%vC8C+HsmGLo)vpv)OcFQI5w%f|D93`U~MFJ0Tp2oX_fvir)qm0#d
zxM{fZz4txe{!skW;FPzuZ&LJPtP0Jiaw3)Y0*v2%<Z@oqhb%0h2)&?M@wYiMd3da1
zNcx^%>1>yLuef(bQuDdQ&dnlnBiBK)OD+?$jb_^t=R^&|J~B5!TK8xVq9RIKg6ES@
zt1Wa@ZbdWbM}L(z41`5D<UVZNb&I~Xx*(z4LP3T8+~6eL+uzeT^EF<$e8IWLPqL~A
zeLM7As&-m9Ui*N(WX^>^CWy15Bf4J@zQC9|z;d${`=aFHW;-Z&tT$tN#UpVZ%%~aE
zF1Wmvd7-d~4tcp*r=1?X#iOvSQ`AQxtei$Pp%LI@RyLrw8^RPR?2GHq*%0c>nzeCO
zy>hBGuNO{70Z;SvjLMW?$iXdcJCb@tyZQqL`AOyXhwM0W?7=%{RjROMCM&0H)oi3@
zT<~3sj`M!gj3H`<gWUE9)lsfZO>5RKCv~=_zO%HMGZA@9k*J9<61k|PeH>o6^kUY!
z?x<A^7d+<L@Uh;1<!JiGR{>sKoF}oRam4d`xA|01XQrDzS-dpX?k8PAc{OU%%rG))
z#mn&#)$wNNuX^Td+f<Jny;h<k4Fwr^ejiEObquqWiYMdQk<bdap)ipC(UxoC6Za~x
z3)%-S42(VXt$bKq-Jd;q>SW8}`P|i(<*BQu4FJAr%LgO`ZbsbPeLDREYAgBx#!f6~
zLrlR=q4Ay)M!}+t66<^nW3M(~>7N|y`7-c@@e6)GN;OMe5Nyzpdmbo?$Nyb3tEp%!
Jmnm8X{~vp38hro&

literal 0
HcmV?d00001

diff --git a/resources/icons/android-chrome-72x72.png b/resources/icons/android-chrome-72x72.png
index 61011b6eaba1e61fb75598081453d3592cc09239..2400c0fdd873273068d511c9d43570d8e6b10395 100644
GIT binary patch
delta 2255
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
MhNl79!_vq81y=MEivR!s

delta 1468
zcmbu3`#%$U06@Q!P?u2dB`%dmPb#f6vTQW0nJ~mqqN|&E)x7f9CbZQG(-fjIOvOC6
zLTf3NVJmrEr6rWdDD%je<aYmtdp@7@`J5lm(E1+rECd;>iE{QO0-$8|pAa)7dn*8d
z>*nH#ayfhMSN?xiB;cn6EWHCTOCak2`*s24RbZVuP*Vk7<f8y(3%ct8p9Po{5Pkv}
z=z{qkFe(Izp+H;%3aH?)71(74OgDi*9B5*LPtO6?0Z<}A)G5#}0Hv8A#23)xK}{Zb
zSq|d$XV(2%){XXX#ev06yfR|>+nT80A!?OzdxJidQR|+=fQy^}P%c3qL3)yXnmIn>
zK@V)S90_!SoX9|FGrd0Wb|<gM8=<Bt2&K;3P`jP^(YcEwx6Is`q2qixwRj#8&g(`d
z?w@=b$2=+Yo5J-RWs&ATlGvq7GDQjc%lP-Aet&Fa)^c%p<LlUo`VEI35&B%b%A5l7
zD>LYS7ofSYO17t06$GD24zGO&rv@XR*I~T-Gv$269?8L3`S99zOLfuhP8{-^J@=1o
z8)5KdNi7E;+Xno6L@hY!U_0@e-wvB{>qY8?FxN#2R-DVJ@F>|SS?aQ{vW25e@`Nlq
zw8!UY&1C{y_<fFHbIUAZe`SjImXtG}GQOywdv3l@O%UnOBzST;Lu{O`DM`%ko1>8o
zJ7hAJgn?=NO8K}31~+-F%2g0JlAKmuMP`1t$7G{k+=i1}b*@SfxfnYp!7z>qn>B{&
zs(Fq<Q(D`O{3r%muMCHIVfR!Y7GsI0A*wjl*>;B{{RxQCW>=$;fZNaDpP{n7I_NRI
zG|?p!a}I>;VR%aVm$SnQwvdGW5PYMerhcTDn1u?x2^~vAVE*jehw^JRRwA`wrS|Xw
zq`+XG5+|3HbNZYH$%!JT<jx^D{G+oeJKhVuEfI&4vRy8uZ@U*<#Jmh;JL|szF7KO1
z3Gd@J`v&yo35#9Y^UO|SX<f%6b)?XwJHkh`c(OMmx?3r2X~U!@{m?M(oABcHHj~gh
zLqmz?flX>Yoa~OMa)OU&r=Pu!WlQR=g~r`8BITVi%(#VE(}8+aa#+FTDks*Mv#qs3
z^^2$7C06`h$w7jbJ&R@<-H%q;oe)B^KRy{W*vo6k2-JSG)TZ^*akY2k%+~psTFuYn
zd;7_+X9ui3Qna;`)U^q>*ypUD$d-HaYzr-du4cs>4fZ*oy{@NN>^wN&6EnCarZKmH
z65_W}%f{&ZL+S8i)~N5NrsH~QDp&I1#5`D~`z4G&srYxda?euK(bc-i{nsMhd91NN
z9>-e#bPK|-N4-FfHf|WnkBW<FyI;6tz5nn8Sv-G(&=6j#v4<F*1#iz^*HYNPw>%w4
z9~`~%Hlqo1cR+kP(bfEi@fM<D;EI-nJ!5>oEKLVj;>PQ^yS<ZcM!9K@GDTy)2>ZBV
ze5*Ux27^a$EUNpht4>tws9Pjzr<GKfp5J@VD2%-|vDfffn0KF6IJe4^d3;NIcAX=c
zp75YGDm~j3!{IMfS%j<__keVj`(3X+Q?Y>Qe|z5lxjc8dx+2u6Q{_UD15Hq7Uhwrk
z`c>%zWQfJ%rq%=4b<|_4%>~z`H!L<8PbxRB1Z*!*z-kDWXkiuaayqr!_P6Z5OZh?z
zzV-%-_e$*zao2OJq>BrY<q>n`1`pH8Z!--XQ%4dmK7m~w8J^}(`w+^yqR-lTGc~QM
zr+!8Ru1sqiBNFYej$_JZ+`7PYt3c|8gM}>0=N1mMn8(WKq*&P!acaAC`K3EI9%l8K
z8Vt1*4#wk&Fag=$&dRp(pMcE;{4gEbkH@-dO=X#{j_Vh)Z<=2=3$4laYPQ7Oc+Sh*
zs9Tl1Poy8P#N5N$`cyzuP>%=C)kc_}=)Fct@RidinpYreZF3AerBd<rS+&T20f;cL
At^fc4

diff --git a/resources/icons/android-chrome-96x96.png b/resources/icons/android-chrome-96x96.png
index 8c04515a78c5c5a0c638af42b184f06490fbb1e8..ec37f0869a92fc53b8abacb752dc4ee709b0c5ab 100644
GIT binary patch
delta 2717
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
B_jv#S

delta 1892
zcmbu(`9Bl>1HkcjTW&@X?UQ3P$4ca?t%x!#e6&w)V#H{UM5tVIKZI${T!n;2STc7$
zwKT*cS5l)|e9W0+eB}Cm{)g}Dr{|9^hHQcq^)h)40La>bA)e?706-ny+Rn_H6#O6m
z&-OXsAQbF=0d9C81q0%uVDb%+KMKN#V5S>5S^@qD(AEII$O8a-9voK$TjSta7Dx;M
zk5a%;6JXVVm_U#d2hcj8HV?2HKwB9YZwIo{;0hK{qrgo9@O1_+i@;V$|CRq{Wkavp
z*n+CzE|(4S9VsYB->W}!$tH1L2_u-_VbK79pz~$yMY|i5Y!_a5^*NdFYL_a90Sp;;
zlsKqTD$9T^?_YP+r5-#i_@ypvQ=6ECjQqWUt+7u_=1z8S7SksM6Po|3`to>_^>*ya
zN4jwdEJuan^GXTrjpn7E>DHgM=?r7dM{b+ZN*{*r^LdL^t!%q!?!9AfY@?<1$Cw{s
zy4N@8#evioE9;ww0~FHiyPvKc@*+n>x{0wXV*ByKC^>QwE!<qcrq1*Zs^UR=c5e;G
zgtHv<bG3c6A>QFUll9|O-TFWOQr5<Nn;||?;>^=%mYPS&_7}Yv&yD&Idt~~$ebG(H
zC$G40J6iHT3&$f;$?xI|_h@At0hh>>2F~(?^Unjmi}{ZZDGa`BwshOf^d-|GSL;Y6
z)9yZ>yE<PB=&TIY<FzNIQhV9@3}*HtY4^easfhLW8_UY`JIo;h#!_O4Ua>{URrlEX
z3T7toewi=cX@4CQxr(BE+;a^r%dQ%!ggU%~@h(2$8TZ6&+z9m0kihL@gWRZnBDH+N
z!&c*#6B50G;*z$R-E8U(`49_j=@oL}Tg|MGUR<2YcHHKzPw%B0lb;DwPaU~M5?%>}
zF0OHDyGrUNiczzYX@*TrW&3KsU>U1O40RuSM3|@TW#TwZYM`Mc(5}&oCjQBC!rnns
zs7q5s|564dB}(B;s!eGuBBroyfv6@7XvQWF(n_gn;?VMRV+47Vpw?3R^MZsf>Vbxs
zk?^usn3=NbdMvhc4suE)HSUSK`t9$zT4Y8BOtD7@&Ixgey-;Z?r}1*o$jF0`JV_Nu
z@s1u73YWUr7jVl$lHNCF_Br)T_z#&1`<{YIJ2#2H_-*!nIBiqEa>5|iipwoj#HXsx
zp<LrNk1#{=z2w%0GNFL#UHET*IZF-7+X%n%Z`TyzyaUs3dMu;g{J9u>8hPfaNcyt8
zkkHb_yp*kuAc5c|pYDFd)a6nUfoiK-weX`1>cJ#~Go$xkqFFT<WWMODei@u_Mfl9<
zH?6!Oo$QGtX4^Q#@w;g}Q-NRiJ?txO_v8I3R6~&$;&;fM*m<g>7|OGFrBTlFyy!<9
z+;vq664xyYYkJKqJIoTEZGz<ET67WiEXvM3q|^NQhfH;d>Vniawx0I4xCm%SE{iuu
zEy<9bo|kercb^fteGtow@aRG2jK(A>>B8Z$w?@rliaR}5ud({fW#kgF)1okptBjT|
z2pa~-4l5Bfu`m}>qv359MVCr64N2`Rj(_)zZ*IMp{a`X~$~)3{FzvJ1`;jLG2un$^
zd_LoR+h`;iDOXEHC3a~NEMc*DE{BP$hDjxzy>iqvABt4@k$y8!D9I-tKJJh4(^Ij`
zeJ+=KE!|gMsZ_<-Cr49fIQ~+IQBtmbTQOP3wxE3aD$~{-tNtorH#M=MPUghjQ^Gsv
zv|I;FlEfF#uD@kI54t^0pnIq%&3AnKK2-ANBi+z|dCTZS?8QRKn+5*$1q;Fgiln^z
z&<uTVpHQ!+oi4SE%MRi%lx-E)b)t1(zgALC9uvHPoGxZ~$9EbAdRkdHs6FrM5<p3i
zSM;*(Vsr@`PIxzXBLs1Ju6Ji#S;Wv<L8AGnzK8dWywk}O#MTMiRf~kD8N}Y@Eu^(V
zOCmS44j0ombVqA70ZQQYRv#MeuUJ+U=t(vsRmQ@czE0X5K@e4QY??y~D4KrNC2fNu
z<A<w9wNF9}9Dg=-*>U_Isn9#p`6^@<cI$c={9cxBc=uUpyz-KjXt0+yUUF5{6k@t{
zNuF`Iu7gIu@m-GVW<8M~<|5Jp&%zZc=LL@5%`q^|iqd<^KUYyTl^Y~A{GlMkG;;;v
z?`<dZa=_pz&PpQLz0|1vZ$UGuG#9^G<%Rbye}9tM;Wzoz>1-$FG^VmNNvFu=l@d3e
z^XA5MNf`uhghSyLr>2PO9I15nasS)l#ogd{v6tSiCDYZUe^<=JK0#lnRm=+>&-+2`
z>DXPM&MK?w6YaD^`-!_h^V8rXL>d(B$JEpG!9Vm!b4vG5|Dzp^Y0<@eBGs>yn+Fbf
z>r>1rJbEZXK2M8B&#BLBc8)0bBvsD|w9?#+mKc;u?&R0k=QL0(j>qoE>q4d0V;}aA
z6T6Lfp1D-A&6naI2!`)iK--sN^nY!a7$KT#_}^Lk{|-yb-;d#Q3xdddYf91n<@OZz
KKtMK2H0XbD8f^Ih

diff --git a/resources/icons/apple-touch-icon-114x114.png b/resources/icons/apple-touch-icon-114x114.png
deleted file mode 100644
index f82aacb80fb651b0132fe741078f7810fb726f76..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2088
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
SLN%2D0000<MNUMnLSTa2kj=3G

diff --git a/resources/icons/apple-touch-icon-120x120.png b/resources/icons/apple-touch-icon-120x120.png
deleted file mode 100644
index 940cfeab0c179353a2c69b6dcdd8144a6b9636af..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2208
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

diff --git a/resources/icons/apple-touch-icon-144x144.png b/resources/icons/apple-touch-icon-144x144.png
deleted file mode 100644
index 0783d5aca838ca202adfb44a1761c52d539c7061..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2506
zcmV;*2{rbKP)<h;3K|Lk000e1NJLTq0058x0058(0{{R3(3ld600004XF*Lt006O%
z3;baP00001b5ch_0Itp)=>Px#rBF;%MF0Q*{o4RdLjc^r0EKe^5)c6S*Z}|C0RR90
z2nPXGN&xZk@f{felz;%bp#aCM0PfBJV^#p6i~tM_3_?OedTIcVd;l*g07E(e^wR)s
zUjR8V04E^;85tR}ngH3^+2-cv=EwjO6BE_B0DypidwY92Iy#z#0Q&m+;llvV&d!{i
zoY1rYBO@bpbaXB*E{TbWtd#({xw*5mvshSIyu7@ss;VVNmm>fG2w+J>K~#9!?OfM(
z>N*g0h2w6T=>bzh4GAgd|3B>}Si+L6GA<-JcQJ1)jM<iE_Kc=j`SZ&}xdXZbx&yic
zx&x{c(ERmqdhb3@7ac|EET+%h_tW8Z{xg7_w{>@+FlEtQzdGLwXuo<?B=Wf0e;1(r
z`bh!F(|UG$K+fS&DIkvr=ca(1m#I=v7AxmwfSgrci_JmH@Y-iT2>f%~Gg<>PcS+|o
zzX>4c)S>^#wKqZ7%t;t*Y%>eVsUOfAwON+tEt>*adYVOEKRwh8Xx1ff-;ctkRKoUv
z{7rXOBcSb?cwDomH-Vz}h`qB`+qwYF2}?JPVY7e?BbVTSSv`Q>Qrntr8ri>8b^p`4
zdZSVA)7pGp&3@n5q>ws)YXG!erHgLRaMZxC`xb3bR^K)P8dbwcuQ_e20&>#r(stzE
z>>|zNk)f$Y)U~>n>b6r2(ERzzIuE33&=$m!L7P;zhwHvQ&#M5MUEQcg7`ooFAWp+-
z5#|_P7wKtM9?<@(&PJ*h%NE>`X~$IIBK#DKeOW+z>?_=Wr4Asm(^U%awsrR90L`$o
z=*KLB0SaN7aUZYItPG$z)}O&uJN=1LLMHyz7O*Ky=fwdz*uFIUglbPIDI<J~hK+5_
zDGF$d`KN`|SsyE<WsGS_#TL=s76f#{N{R72m`VjPF^j2qjZVb?y<z>qi|r{D#lyRX
z_2{h#pgAI-KGtVLsVqIL*~r!wb2uQZKyIAb`AUMdF-Cm!xCH}RBMQNMI8thn7G_99
zW-BP58TvtlZqQR|61-~>df*ul5Q?8QwI+Q|1wEpQ{7)AK=r2+r<li5Z8U<N@h}7sW
z1dubOe!G+Kk4?qcLtDZ}I`x!O2LK3BqK0Tg#?JvALI*O=M#P3TZ7m1nBr%7j0}bqf
z1|;3!5nA}fa5{4-AY}3e^6yfu*wBDB(jWK~)vjcKoP?t%$;vh+U{eND1ip2m*BwU!
z=!JT21I~6x0Gw`6Z1N%ogcit6o<ax2hXWeWK>iD)o@j}tTOptWMPQKlxlaS?L*i_T
zuMa{%iB~lfZdrmN9U2fQYDzLW!{pjW5uiP#s5XdvX<~#OMJNN92>>CRPc~VHc>^jr
zQ|LE3iyUb{$w6ZbHW-3epu9zzX5s~&_<;7L%@2V`ur>*(4Lqz3Nz31J0VSCiD=czv
zOe@7g-Q+1kD^EpA-o`X8qgY1I<T)pv>oa?-)9!%el`apEL!J*}_F^<P6Sm2)4fB$6
zV=Y@uP?6<u0KJhc5i#y^Iqs=Gy>?>~5FM-x{7cZe<DQC+$%j`Cpv34+mB-RoQa+Li
zB9{c@lIfwNfW8yGP|cjnS8}nmO<u}V-<VJ)BBQ7hsuK%U9X+<4Qz8=3f-w4k%lP;N
z+MZDA&?Gm<jfOJ142bY)!3H!ZuQa4?w5dJ}vO#R}82xrOIo#(hH+t?l6VPk&Wytem
zMm{fo{9^NS`uY5&9YOv&gXhn}<iiIO(1G;ceaVhpH>qcO>8FTFbP}}~?s}Wq5Jbry
zHxkNH^JF&R6<LnNit&mv`B2zW37%Lp0lgD`PnQPI#iYj}HRQqHnSi>4rZBwru?nCg
zFG?`7c259$CMY!TS>0wOaXJ1qaR|>$KvUv6PwYdB%ZTGV5+a&10VPM)GsjM~YJfBj
zi=4B}NC2{ktz{_T!0^LzU_##*@Qfr;)(#U8Nz|Mpy=zB7p^BoqY_}$&Lq4MFvVblG
zG9I;;DhSJHY{{|?B0!QY%k&TQ&M_ZMeC`coCp7t%iItkQftumxmP+*v&4tI}BBd6a
zy)fG&HgHiUy)7_%F)^}_pbTA7VFz9SF-lwqEA!D{DNtho`mx+~NSrGpg5dB{2uXne
zoa>1=M5usctIIXB7*OZ~gdeg1Eo=FL_848Bl>r23vJf`&gmk2;(~)8zU12~7D+}^z
zJbuP`W}L4tLlnt_eCaWWoAbC>Wd@;)IF1D0O-mjW^Hr29_k60{B*RH!ZUr3_Wk+d#
zeC;t(=wiyYAxG&~S+apg(Bb92W`>r8bx11N@KH7$!z1Vs+p#qSs|-rVNE23>%J9|X
zkwsZqW*Uwq>2^uN3YOBF#N2o}7k7t~YAHQP($meIm3>Y|_Of_xrKBe$Eu8yLl~{#|
zDnMHzEeuJV=RBCl>R%A08M1${5&)XXOAF(eW%5_P%b0#V7Az2;v;Zl-m}e3F(WcMo
zV1XB3GUX|b%Wn+@TSDX{8l&pvDY}5S<GAd}kzcS&3wq0b4Fx=4iPPHfi_o}Cy|L;j
zab}i?Uj(*8-uFq7H?(0z;DxLR3@(#jS_vawXcD+}mB|Y<5*Upm(}>Jt!;nTU$p7W4
z<os5PfxOkiD*Q#6R*Ry|D8<CwHHjlVtQqCkwd>>>nl|;}@k%u`<yyXsy6_nE4Z$s6
ze^!~^pr3AvyHVTVsC?UC+E^L>j>bwx>uI|xo=v6J)8E&e`)7-Xfv)Y#yPs`eW;J-1
zR-`%_yl>J1A7cG^D$xSZ9ukOta7chNMqwAjWAEx4qo`rf#9r1qX!83;aem*h(x>&O
z!-*P|W{5q}IF}dSXq>Cez*}^@<-psge53=VE@LEcM~(#U@*{y>dH`9x{Xd5$zqajn
zjg{sGZ^s^F@YbWeajk>5mk5a(vbVIX>e7mJjBY%d{6zrk%<#5pd+gzDFE_lszQOSJ
zW!j!G-ac*_-X<Au-$X`h%o=YmGI9S;zX0H3a7AB{ur2rpC0-&i1HVLK^$jnPKyk@S
zSK{!k?#s8mW&^3y>x%axl4*DK@y#zHxjL1P!<v3o%lh!~L$7MNmD~Z{0o?)J0o?&*
z<Uery-aE9==U)H-09SfcSaechcOY<bZ)Rz1Wgv8UaAhEAaCBn;0C=3^@(c)ZRwyXS
zPs_|n<x&6xBMUBL3lk#~OOq4>6Cgx@G{a;ABePT>%h=S&#LUDT#0SfONT5nC0O}VJ
Ubn-$ql>h($07*qoM6N<$f?~Fm1poj5

diff --git a/resources/icons/apple-touch-icon-152x152.png b/resources/icons/apple-touch-icon-152x152.png
deleted file mode 100644
index ab93b214831d02246e9756c39bceaebef926cced..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2692
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

diff --git a/resources/icons/apple-touch-icon-180x180.png b/resources/icons/apple-touch-icon-180x180.png
deleted file mode 100644
index 0d1fbd55b89033b459916cc2ebe5fd10a7b3fe8a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3285
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
T@<KJ000000NkvXXu0mjfP?toS

diff --git a/resources/icons/apple-touch-icon-57x57.png b/resources/icons/apple-touch-icon-57x57.png
deleted file mode 100644
index 388a27377b95c8b2b924fa63bf5aede01c8d32ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1201
zcmV;i1Wx;jP)<h;3K|Lk000e1NJLTq0021v0021%0{{R3yT)_300004XF*Lt006O%
z3;baP00001b5ch_0Itp)=>Px#u24)=MF0Q*QAPkLA^=H00QlDc{MrBz4FLb$0RR90
z{@eik{QM0K4FduI1q1-}(*PM68CzRhWmo_o8vyIe0Fr(HG%WzKngE@M05UQ%8WsSV
zgaCkU04yvl#l^+WvjD}b0C8df-@yQ&ivYo=0IHJ!@z4OFp`p^!(%;|T`uh6Vy8wlS
zg^70ngmM5UCnx8~0BUM#ySux%xVXW=!T0y~d1(M=XJ@*h09H!?HZcx2^oU*n00TZr
zL_t(Y$K96Mda5uGfCosJMi3MzShOncxLZBv^!=agBw>*tE?+M@H%iFQOlHf#+fN04
z0hyjRot|rf<@P$8bNVXT`s!Fv6|3{rdVx$Ad$HTrwQ+yjA8WcT9`}p%8F?P?eP%bD
zV<GdfYYO)Cki7imd-RCp%sl5wr1SOT<vzLM3eA}Ez3V{J+kAIh*Mc>FrZLysTiqj<
zE`Z?+74M3N-Xs1o-vDrz&E%4MbjuKD9@NE~A+jC!^0J9sxnNJSZ#RgrWnzQ7x+O0?
z01gg6pjkeK90eF$Zb<Ic9pco4dty!zxxvRedFBQ&9Nq^xIz*-coK-R%fa#-OHT8QW
z<hyDx-(kWaRmcTEjHozgC*n$XiklE)fJK#T?LntFQ;h36oOHU%+6<`<`&Nbg0*H{P
zanwW(5;aC1#R%Y3Av<6av8H5>Oj$LXc-)8yohzAI(7kSI=l+o7hq5L<*99vrNgk3A
z*X8-P(rjCLNLHt}Ezi5g5a6>UH(<{($lr~S(3#MG;N(H*nNfnH{B3}98#X1`0Uc4x
zjg+d`@Z09;hC?v^F|opOvo%CLJE$ak*+OP)R@Rgz3I9nFO0(k5&6O&8CF#N#Y3_t6
zE7}NQ$Vl<Prn##aj=?QS3;H;Rf~4j4QV1<baIg<nN!qYQzf5f7Pv|3Y3W%T|{xQl@
z@No-vqt4t<T7bfAhJmJ5tg5qm&LSN~nayNWTUXCn^=&40NQ6SJmV|coMa{R>cxDm{
zjWm+6jg>l3<EiA3kiJBwFqOak%9~maDS0chK}MgwgD!(h$JbZ2yj5!jGzpTpuo|fb
zcWR|ppNS+L5kgajl_uBvbd>tcdIBwaf;Z%vNM_<#{9WtUo)D`&f%hS=(udjsV@Vdr
zcEVUthBOp?XwZ7p`;3Ee^G}8(sP(?4etRpPkB6InD|<YB+T*El)8pUXj<4J+{f2wx
z>0RdW<`OmDWl!!;jo+V9^Zl9K*}MC9wn*RRJNr5(&`E7hnDC@JJeU)>!M(e)N$_ws
z;chxs=OJgFHzOzZp3Fm!X0XBeXLH}+`P?Vc|8z5Jo?0)@x1W{y_A~vpbNnmv9|~J(
z0APebbpQYWS9(-fbW&k=AaHVTW@&6?Aar?fWguyAbYlPjc%0+%3<z;nC@9KL%gjmT
zQUC)Z3oc^|6C)E#lN19JAVh#P!(;;^vs56<*wo0x%)}hT2g`s+ph_+P>K74o@<KJ0
P00000NkvXXu0mjf+UPHY

diff --git a/resources/icons/apple-touch-icon-60x60.png b/resources/icons/apple-touch-icon-60x60.png
deleted file mode 100644
index a09734c0165e9c03bf2811080732da3da11dd49b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1287
zcmV+i1^D`jP)<h;3K|Lk000e1NJLTq002Ay002A)0{{R34I(K(00004XF*Lt006O%
z3;baP00001b5ch_0Itp)=>Px#u~1A@MF0Q*^wa?S+W_y+00aX8{@eguPyqkk0RR90
z``G{-7y$Cp05~xKCLsWQYyc7x5>-k7VN?JgA0L8o0QuJd5)S}BHvq@104^v1adB}u
zIXU3M0JXKX2?zk4hyc*g(2#uqxSs%LSpWzK2t+#ovzq{FYHF;N0LseB_xJaQbpYGj
z+jL|Aq>cdCy8xM)nL<KB!KVNs9RM;iGT7MI=g9#6{{F<o#4au_&awd9+}suyeFp#l
z1CdEYK~zY`<yYC3nm`aO)*3)i5OKv_$6d!!XD0vuVX1Bw=~f(*oV+CUBGP?NSKV6r
z0xy4H@Na=n`}rZL>UuRe%=f2X0T0>%2o|&l&w($!PJ*zbn(x;lJNeh?UA_k|-q}{y
z8#$PoGupTuzW4^boa+F(-$copK6~F@J_4UU=>)&awrjJxIjvNtW__ly|6P-oKG)^o
zMU@<8r#k&eztW{geHOzTIbZ!K1NSBXCT(-P21wSZv-dTCN$)=RgRpfv;njvaX1~&s
zN9d1x;1l^gL{xkzv9W?UB+u8k;N?3%SF1p&RnGkE&*cqxPVo}91rMx6yi?q58NATJ
zbx^6mL#u@7xS%gY@P(XyLloj|SuDSn;LDgYMzwYkz&)xB;#qVuDK0S(;+(3bCxAPk
zchM1Z)JVW$&TR*~I&_NQ0YBK2A`BTelwQ_(aDxK44bVhKt}9;SUAfjAY-WTf-~e32
zzRWG}t)~38kLW^h1)l&s#3)_$c7Dtswg#fH<&Uwy%Yup!HvsD#yayPemi5sYRgJgC
zih>ST%vDdbjC0mw4vql!Ihd-;!C6)aJiFG`g$)C5;5ZDeV$Nph0L*jn0c^y2y0+pZ
zV`z+qDxx|Z8R?5vwgJ(GLk<pL%5#6^n4d2ETzNMcJwXnxLJe`6EFG`AMYHgj?3l9d
zsOI1aE0L@xYQwJ(!?1``EwsLdwJRw;Ozwjjp{;R$rzS2~sP6jXR$-(`;G)~PxlRIB
zTxmgaTOcee!(GTSMlA27vXuxEQk7WTWKkOi%TY5HmZVe(MUwU{^Vxb$er9@cNh%Vt
zJejfjpfis)XWc6Hj9i}77@KQju%<OQh9aqR)>Kd6OK1$aCC40VoGI4$oIH<9TT&hd
z8h6^@{F@xCYIznEc^D*PDCfJiBWJCzbR@8Jbz6loWQt=*9)R)IFpRY1Dh5r2_`v{V
zqt_Hhuc>Ua$E{)(^K?6UFC9Mg$At>Z4~rW&L;ts~n<zx>2>L+2=!o#z6BnIv@1o;Z
zER9etdT`BYWmoLWI=S4#ap~nACYSq<d$M9N;b)i03gX!)l@*DgsWIVFzawar$ATu6
zQg63XYT8$rlsZ0=QWQ7SjwT<z&TPd+oWGhmxrlrJ@lZatnM^cq<)it%d}OY3&FgLi
z;mRj=XYhpHE|biEU96|n@y~?GgnuTi|Bp|jr|c&ntaWf(;Bk-u0038dR9JLUVRs;K
za&Km7Y-J#Hd2nSQX>fF7004NL<MIp$aaJfO%1_J8N##-i10xGAV+#`_6HAj60}~)b
xfHcEo10%CkAj{a)$i&RV9K;99fJmT9E&%Em5p?oGHI)DW002ovPDHLkV1hg6M@Rqw

diff --git a/resources/icons/apple-touch-icon-72x72.png b/resources/icons/apple-touch-icon-72x72.png
deleted file mode 100644
index 34b31aff47aae62de233ef2f3fedac1b8e4120bd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1496
zcmV;}1t<E6P)<h;3K|Lk000e1NJLTq002k;002k`0{{R3VlzW^00004XF*Lt006O%
z3;baP00001b5ch_0Itp)=>Px#x=>71MF0Q*3=04q835Y70RG(o1OovT5&-}I|Nq?p
z{o4T5xB&b6`#3l_I57ZNOaORj0O7*`fp7q3SO7FF0FiwFsF48l(*QCuGThwU2L}fc
z5fS>?0Lrfb#;gFgod8}^03jhEigy69v9Yd~0O`p9b7KI`vH+lp07X0iD<uGJZEc*K
zoV=m{rKP3t@bH3yg2BPTPDB8ig#gFL$E~fcJ~jX(BqV)(eT9XEUS3{XTU*V|&C1Hk
z5f2D4`G=(d00db{L_t(o!|hmWccL&5MMTR}KoC$+RD89ywf5ca{{P>#lL=r*pkmvP
zJLhy|NpdrDGc%b%y80!N{sa9C=ze+l4Cj;acrp(^56k=S0Yz_NPpU{Se2XpxGVV;N
zR?Iu&0wCjdPM668cQn-<N1u+|flS}M-WqLz{)D)~^1Et9y1s`4;ZrLh;|BQ{awt^v
zA>pleW1I(yOoVZ8ouY5;!OpUF1AD70_{tfgQqeh}hY3vcHe`u58}wP8`{_(0?-OF+
z<l$?e<rpT}F-#8@vUq0lB7mWI4UgmJuYjI`fzFI*^VqLH{{AD;YSsbspPPXmK%YJ_
ztLsUPVv$owV4v|r6Ho;F^vSeQNBTlKBeE4BO`>`r1Kg)W^jSz}#Dz&4*eo<^fr$SQ
ze%8`iSreY%_ofc$FA#0R1XpSy3z%pF;ZGtEG0cN=A8|{LHp-EE4LrpjYg`F*3!@2;
z$n#8HTy=QHb)X4sxaEP2S4kRz{|M(k#mG>mf){{4LA1OY9MByY44Xd+Y>Y50w2?6I
z2x@{#cN~z33I(D+`&1**CHeuXWLAM980pq}(3)~o;}bq)75IrNKyP3)7*G?Z0}3>#
ziC{1qC_PkwLfl|>np8r*P@oraMB1yWU)n~2?t5t2Y1^)n<x6D>lrMkDlx{gG1#f{f
zx@UlvxIihXz6LYZ%>dIXB^w_H8+ff=mvk$*!IA+wAQyTiDq+pa1?UxdUV#g)9Ti>S
z6hk^1@y-B!;@a)WGF$=c0$;|oyOG_1!ayD`r)?4Sg8>RLcx=Y9LKH24_3)3Pl<!L0
zYz$440fPH*%5ZJ7H;|^$zmwREYe4AC8K4Q;yDKJSs;a3C0s~nwZ-=~27@#pmxmAYt
zaj_4GSyc>TU9evq%LHLzRv0$}QKC{miA&YsCr<qIx|#t5AkMT?A>&O8b*5fV7#2<A
z$Ue!iJS=5c8;2a(-0`3Ctfu7L0AWXASUi5-Aqx&-!jKZj1WAi6eq3}&K16c51Io1P
zQoe(0Zh{yhe9+RkcW9PfbvngUHDAeM(B^3*t=<#)$)}hw5UE?)Dn%nIX+%hDfJ3hj
zRojsNC3(Om>}^$(*hs4Ns;M?BjvXns3NOgcq}qs5x2SA~IQcy^%8~YGlD~Kz^;{D2
zN}MYx2Y{q0e(%h6RCht{Rtl32!3C7nuIfZ}7i4i|vrgBasZL35$5ChOnGx3Nu52tK
zrhE~RGPqXNIlx;Isiuf%ENdDhYb<NZLTk~s&|23QS{IjoSySmpi&2uu{5HjC(p-$T
zE{}=R>tB?|S65G@U{6RDZT+ZVZ`DF<Nvvd~g;=(1YW%vU#&6lw6m3?531pvE)RNP^
zM(>jrZC2j+NqOU^vW=g5QR7EiQLKfA`VU)C(j3!P-Q$~M{j%m5+x6F9Y1e=60|I6J
zVDg_d%tQ2zZzK4T<^98?A6d+g_wRmW`Ts@h*Ma^4Df5u3r;rd|00012dQ@0+Qek%>
zaB^>EX>4U6ba`-PAZc)PV*mhnoa6Eg2ys>@D9TUE%t_@^00ScnE@KN5BNI!L6ay0=
yM1VBIWCJ6!R3OXP)X2ol#2my2%YaCrN-hBE7ZG&wLN%2D0000<MNUMnLSTZu6`Lmj

diff --git a/resources/icons/apple-touch-icon-76x76.png b/resources/icons/apple-touch-icon-76x76.png
deleted file mode 100644
index c27a9c97a66ddde9b6cb113bbb0eb9e12188c7ed..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1500
zcmV<21ta>2P)<h;3K|Lk000e1NJLTq002w?002w~0{{R3@JXQ=00004XF*Lt006O%
z3;baP00001b5ch_0Itp)=>Px#u~1A@MF0Q*v6=u%KmZU90RG$n1OxyI2>}29|Nq?p
z{o4Qy4Grte04yc|yP^OZ7XY4#0F#rGnS}uE&HzzH0F;0LsF465901n20D^G<aBy%k
zGBUBTv3hC%jClaXs{jQB1x7|j&9VSbPfs~90C8df@zDV1$N>4+0J*ujhI9bm!2sLa
z+sDVpbYuYd`1nIQ0H2?qJ3Bk=?d|*f`z9tP85tSU($d4J0LQEVWmo`SQ2<)F0cijL
z1ZGJ@K~z}7?O17>nlKO!XTb|a1QcBFYgbp@i*En_59>_AohWGc+4e){i;=*a%*;DS
zLVkRqkpE!+G}!CDJDk3~H%R0CZ944kU+)Hc=}sG@D2-|N<sPu@d_qJrnQw0e3r6v`
zu6%F?Qd=502ic9Eje=XiKF;(by>C4ld3m(@8iU){1$!P+1zSDa;KlB>sItT7T3}C9
z!<J;SuQ#658}G(F$=k38=77SDo@#&v=t0GyP-+w|wAA$4B8*fD=P2mepc3qaD#~m8
zrs=z!FI~ThQ)?N)PZeNYd})X4H<!AQ8u}7VY3^{x-K$_Hd|N^VErnbX#lpoTT<dfN
zEP&;d2)8AZYa*kr5iB<eE`mLQ?RCVOb;xz;%n%Ls)_A%A_6(fRP{+1Tszh(2rl82^
zSqwIWmv)Gyk!sNpZ3ly)5bOg;Ap^Z;I;kT%XljCKCm$j(h(`tZ)hydfZZj$Sqyt`9
zgA>jIumI*A-~{K#v0<VZW6r0*5C?t(9t^DC0wsH#KFc`7m)wj6ib9-@IIt~Df+uaB
ztNj?P&$Aa49l-Cl3^r#Q<CiCk7;M2$9oW|9C9oH8We=<`@T41qxdM+isnsSgMKB0(
z9Rk=FF^VNNQ^Y<W45Ot1pMXuNZPaY_PPRvybc|-UpNu@NN^LnWfW0=TZ=&o2do@nJ
znPHMpXUQt#m7OgFk!(SPzUIO9@EmGKSa4ySp9xLirbNfBfoZ5Y$A(a4;Afu)>oPlM
z4x=ecH6E}UIaE!g=TS1~bF1KLH!&JXV_b&Xk=j^W#l^#TT<RemhT1QWLV>KZ7op0?
zNwkyH{=gY8i<GpqsfHcVL1Y_d`ZS9<k8*RG2YaK+Nclj?!4-c|GCd_~fVVu@J0XL7
zTsDpClJTTRBkDa5)}Tvdd12?7#jO-JYI?g|PC<nlc`z_&yU2h2co;lV7i5Ct_26*S
zi!sm!KU~{cLQvUnXAOtl_T>(r?YNzlZI%-!1#?8x0-Ke+N%9m=B^1mHyg8)_)#Km&
zR9PsXxm5L&e?h>ras;FyYBC4>WDYR7Y%7WYE;i%H+fXdi(>*rWECgw|9GhI$U@5{j
zlju3d<XE*hlX6*u%V(4rYeriY9V4-^xh`h!2g-qBKI1bj)E+O!!kR(cP5jTx*DqnF
zMWbn@8W1In7$@vx5>?g!L3NtNW{OLxk{EDSS)BxRQ+HTkCgl2L;c4lWbyHZ;`!=xE
zOUS1IJyg42r=lmlhE=G)V7FuX59krOwR(-T3o4LY3-d1VL#<{Pbg@6X*w<d^&$7-@
zsfDFr=Xku-Io{FJ`WJiJo4ReKs@wk3a{zdBa_b3Y`%P!3<Wz@YWFIb^>JIc&=U1QV
zYM(bTE+(hjPQnkRlkm^{NqAf5jDAkKx<5aoXSWBA@b<vD>Gl9OH)VQp_Zq$UUgP|6
z=Z(uUzHwQmH!kPkFWv>QTdFyCOEtgmmg<Y|&;DOvegoKVqC26cq)@`j00012dQ@0+
zQek%>aB^>EX>4U6ba`-PAZc)PV*mhnoa6Eg2ys>@D9TUE%t_@^00ScnE@KN5BNI!L
z6ay0=M1VBIWCJ6!R3OXP)X2ol#2my2%YaCrN-hBE7ZG&wLN%2D0000<MNUMnLSTZv
CFsd5>

diff --git a/resources/icons/apple-touch-icon-precomposed.png b/resources/icons/apple-touch-icon-precomposed.png
deleted file mode 100644
index 05630ac0114236c93a3f0dda5b5dabe293dd5616..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3521
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

diff --git a/resources/icons/apple-touch-icon.png b/resources/icons/apple-touch-icon.png
index 0d1fbd55b89033b459916cc2ebe5fd10a7b3fe8a..5f75530acb8b46ef53b703d14f378f47c9c26d7b 100644
GIT binary patch
delta 3722
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

delta 3145
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

diff --git a/resources/icons/browserconfig.xml b/resources/icons/browserconfig.xml
index 81ec113f55..a47e5a5b85 100644
--- a/resources/icons/browserconfig.xml
+++ b/resources/icons/browserconfig.xml
@@ -1,12 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <browserconfig>
-  <msapplication>
-    <tile>
-      <square70x70logo src="/mstile-70x70.png"/>
-      <square150x150logo src="/mstile-150x150.png"/>
-      <square310x310logo src="/mstile-310x310.png"/>
-      <wide310x150logo src="/mstile-310x150.png"/>
-      <TileColor>#00aba9</TileColor>
-    </tile>
-  </msapplication>
+    <msapplication>
+        <tile>
+            <square150x150logo src="/mstile-150x150.png"/>
+            <TileColor>#2d89ef</TileColor>
+        </tile>
+    </msapplication>
 </browserconfig>
diff --git a/resources/icons/favicon-16x16.png b/resources/icons/favicon-16x16.png
index 67dac1b47973234b9f20e67d01f1886966a5543b..d509cb4ba5ebd54e85eb30d1912c48b825fbeb42 100644
GIT binary patch
delta 657
zcmdnTwuEhhNj+n6kh>GZx^prw85kI41AIbUeKHHp&A0qwviZ$q17v(-u>8qv^Pj;I
z$cBnD0J#ibnC*e2sp;0Aj5fc4h{@&`ll4zVTcAcD`p#_ki^=vEqcxEIliAwL45arr
zgY{~$TyyiSbEHbQ2&b%&$hWLF-~5Heafx`2rP*c+i>;RCo0muw{bsTSGJY|G%mr#|
zQ)+(7?g_VkzDx<wCZN<3se(4;mY+=4AK4sF@J9g^yk~U+a(^+}JY{!3C>ZyV&1s2L
z(KiN%PNnAO?Cv0=6q|nnJqC0oqs>Pa=Xb32PCy4PmMUBzU2=>+`X{sPe!=)h99}>_
zEtD$y$l?UlvsWn5!hG`q!T9}x344T+j{PjS%D})7SrX(I%rNWQ<C)T-oM+BHvSIqm
zXt#M&{p_tX=X}1scUGA9H`{dAGR>?He|3MDf6A`=oVM=W@57(h-Z_-9{@L%YXFI<B
zYur7n{^0YcGCvM&`P;d1-?M+Wo*mv1a(K>`XV2MO$`1l<;VkfoEC$jQAk6scQ`R>i
z<AkS+V~E7%<O0z|v9xps<}$-)24QT1>}H&b9SwWyH!M+LHkNK)tmtyUc8cSyZpRxp
zPo8sNJMz5zGk2#zYC?JErk-h`44--z**-p0-*~LhMe4QtDs8Q7w_8;%MMe!Q5hfu?
zA(hFcKO_^Gcs}jP^4b%{!@+2&78a(Kr@|=5sHWy9r^3i4mzQV9*1@pbb&96^k;IzD
zK*l#bN!QFC?Gj)#{-_YIIpOl!FA7Z0;uMy1du*DS;mp#aa-)VtGJ<u7OX9uhk3OZb
TGTi&cCOJ<qe~Iqo^Gx{w6S@-c

delta 683
zcmb7<TS$`u7>3_}y3M7tT-k3@HYiQpl;7o+{py9bsY|z|t+0zi-DWO|&AGxPSb~r&
zsK`!i(oH&$4!R`E@)&kBR2n6g6YT&p+CU6ptF`_vyXc}1J|4dB<+*q}Im4VwIX0oL
zv{D5$rvYbMfe;uj0VgTIR}IiN0Mgv?xFVkkR`-=_6%7A(wvuSjLbn&OG1!%X?*o|X
zKms3|1h5rkfyc$RWGvmo@CC$hus$9InJ|=N<stgpVAkTxZ9Hp7!vVay4rw|*+`>vf
zf=>`0!jC}&?qkvcMGn}}AQO-$#&|m-PZ1fz%~KEwA>bp51p?5Q;l(w0U7$r!%HZ#V
z&*sK%5ss=59)&OoIXiH^9s~hFJRaH6*^Dh4!C!+&B*Hn?)W{THXRTE42dB7eF+^VU
z_xxg)eCrH$XSv6jjHoRukyl(Xp2=Vip1Jf8Bk*VbEK!v1Y+{~Vt5T)lF0j`oZk8_4
z?-yYM+)8<&Hpyeqyc4hr<3zpYm&BOY>(8C@1|vN!S^0%W9Ca>Zkz7wXT4%-O#Zk(t
z4WjLL?23RaZ@Bm4ynRoNZ#nccKatz5PHU-7f8*)C9NQ+>Ez2cWC&xkZgw6@l-epOx
zU`G!Srn~d?{mFhcY3`f$ghICJ++>YQJgA|ZGvvfq`(d`Tc4#)RdTu)5_-m6U6toO^
zrNM(7&)d<@LEb7E9+}gG$+p=<Rh;Ab6w@fxs;IK+Ype!ZXE88<gvyp>Qqs(9saBFr
kOLA%HP7x)cDathB`dc_*(i??!r~hrFd`f9-f50;R27T+@Gynhq

diff --git a/resources/icons/favicon-32x32.png b/resources/icons/favicon-32x32.png
index 589913ee3eabccb035de9fcd22877e70e5f9ee44..7e01bbad38a7bda52e9fbc30542c41e581954ac7 100644
GIT binary patch
delta 1178
zcmcb@wUTRsNj+n6kh>GZx^prw85kI^1o(uw`eYWGn{P2T-u#Qn=0Af2ko?7D4HSVO
zAlJfTJ5U6OzB5<>x!)N;3Sf$DA<ArQw)|%Z1?gq5`oUoNi^&#<elXa9L_lntpNuxY
z7;S#ngZMy2AkI%lpoH~*25q1bAQjBE{~0|0GZ^dX?fk_IRrZm^*~WbHe+J8MK(m-_
z?sEA-4EoOiae>=!CZG#8o0@JmGXuJKtEuS*YwL~v2Frdhfc)^2!7@;P$rZkkpUgHt
znQWeL*L(e9u>HwweT&PlL#gQltMffB-_OhrH@E};GcbH-aQMRF_>;-@HkaQ^Huujg
zjzG7!DmHg2HtrKjIK>xbWwz-Pt5c6cJ<uu785~{!-30U&(5=iicewqm%{Bww_nXP)
z2ZIfm1cnyKl_0+X8DJOJ16={+e`9d?4HB{gx(3LF1i*J@I~&uDKbUNN4VSkoH3Qw$
zuGn0m+6}aImQ1;|*~XbN<vxbXXUmk&ktr)z>#b1h3DsMepglW5XZ8)AKtID}VR{R1
zat9=7&rH;w^-a*7oq>U&p(MyJnBjuR9gg4UjAzZPf2)u&N&b)A{9il^&O8ug&No#l
z%vHVjX6}yN^>>YT?VQcF|6&X~D|hTA^JlX-WskntzK3@Xcb$#%otv_}kJS%rT*?Y<
zPB06b`*8Nd8PAy%p0v$f_~iDR`?Ds@o^}0zg5tg-$6w5TS)^91T#)y#(d2wXwoI*|
z(b?&N-axl7a2C{iL>2=XA3>PWl85IBFcrS{ba4!^INdrqJzO|YpiTYcyQYaPCQFu!
zJFz=zGA+8n&GqeG_4~WE!n<zl{uh~UHg7}Zjl(rN%G2&Wzqi@CyshI^(s`ki3XwUN
zKRfDv3)$nYbwlav(qDT!Qm(q$tyg;0&s=Mow)dHu9RH8I^&Cqy+g^AtVoSKgvxYsZ
zvnG#cBAdOsS;(S8JRu8$9_q663UzEQ=ed#0_Ki8bGTW(bl0)+&+m<`uwt826eJ9fw
z6a0=@S;U7i_|L)jUrJpMy}V$5$YXa~=b^uEp5N1d@oU<~MeFqIP8I&T#@t!G|7^{_
z1>K_WR;)8>dZ}-GUtg-8{hCKasLH?B(W#p8OlI3p%(Ab3b!q3GioQVZfNi<U*ZrS0
z_1C$&)Vq;stSdIF{+E7X$@}Mo^_(p-3(lQBP`QZvK+EJXrWXcPDt3LIQIa1X^c>Nv
z$Z61PxW8X4V>9Ee-8;AGE!cXKZ9(kaPqWurpWs{YO|O6X+L><{C(mrSXJ1_Z`SR(;
z`JapH^Sj0ODW9+1usGzsh35IY^3VSDi%6x#YZffJV6alb_Tj(KJ>d)TOkT%{Ua#f)
zUNwo$P=PaHy`%-hkDg_|Yp#9E&*TW)_eU=vU2;zQu?H!dvJKW(SngOv8CBIf*c@5>
yy=}!siMZ*h6|aLQ@$M0@pL^A4ecRerF8;ohEpM_H)yrQ$ameMRO6TOKEcpQKVi7a|

literal 1364
zcmb_aSx{346g^3V07;Y`!Jx5VL=+4W5HrL=OoTu{j0{UlY#<N|E(Con(n15c;zqSn
zkO0b3OB5^AamEOO7?gq*hqBa#8Kj^XN84eFyQI(0e)O+*=H4@RIdebGIT#Zi#<Fp<
z0l<=mi{&J8KBg6otm1~!n<UKH5*if>v>ao+Pqz5DRE5i<fP5~X-2=QON7^YMn+KSb
zfS>|!(dY~tg8|BDj4W0{9{lfNWeNMauw%lO2?_-%Qv6nfUr%A68qLK}MZ$a?W+S>!
zf@zJg0K7K9+yQeJ^xuF+1(gE7C3w*ab0@yfLd8z3<HLrI#jY4{!d?~J9I-V9Maejv
z0dqH|FXPgF#D~J31!r3f)gnI$-iuJM86P?@brCBT!*L$^D)8niddg9t!2NpYvQe(V
z#5v4%A|nRU)p*s0*$&KJ!~1r$?1SYTEOp0`bQlidVI%&&jCXA?{e;_<X#5%q3Fgqi
zc7o6sTcS{ti@Q1$ZiZY4DiuUL-WYJ_6g(H;b20wBgvs-Gc?B2uz{wU8e@vXmvlhtK
zpy4Z25n$P16&J&2a5Mwsdc14L{xr}nFy9`=6BwyO;TL#y6^ZL$$HL4NY?q^7hrwE`
z^+ieq9-l|ow|I30O@-jH5#)_%0nBEz{OC4EQr!iFJbDvoOVnqFUcBQUfB4pA&y#Dj
z!r}StlvR(p4+f{RACUe4B_%RUTvOXx&mbFXO?cui(s&~ulOpn}$|Hw#LK-EZk6Fxf
zVh4-~h98lfA*nbtHmFaf)Kb=S)y{E&IXQuG&T8&@OQN&q`Y+u+EQ^OpI`)?ld3kRd
zHe%7rd9A_p4z0hN?bwr$9)^unMG+NiJ|s*Qd7oBW9qQbhnmU;}=`@yPmt5B7wNiAf
z?s#jdKDfAlxlJsGd(<{&Q~b!?LD65`-C9e{C-?Nt_2<rJYCSub^>P+ltC!6$4);(w
z2sc?Rstb`97rELO-d8_%9vCQ(<K_>C)EsH9w(yiyx+ZWUp1ZTFb&90X!J*McVerYe
zwgS%h3Z`6ne`Ld`xc^fQFI=%Y$kSh@h+oaF3n?vP$-=~@rm87@nB<x1CS19uxh+{r
z>p;sKo_lRs#dqw+vka=qw5%!pscWUuI_F2KlA}(0GQq8yGM$>3ba~z5B-(rLOq@0}
zd1H(3-J0X_2CcG0V9)IBjgonLXAhmz+oi~PnbgpzW`k5wP-57TpmInmvv7_X7`WqO
zGMJhN)^Fz;p1W6HG~Qw|GM--8AymvPJU!DMlKXNd@<xf9bE1Q6ss5IX%5UX9YuZp*
zdSFE!ksDpL_J)hGr*h5KKsn)If4EDhK9IQUk<?PBEIYw=(|WGyI#{l0U8>8n+9K?#
zbjf{5NBzA5&C1XAZzVNfLP!#b)MO$}pxT*60{A??Kp$R!k6%D6-%r2~5(KPT&f^Ps
zyv&Xt`u|1Po|&4i-u>T%h2slJiy=NgHi3{Q=W;YVGu7$a(m2F!O&TX%L#Ti}-5=9T
ztE@OLuig!Px22PE&^#EvDu#oHL*xlZngd6y^}mry^Y}TI)A##ekMXvVZKU^U!%s)}
X!sKE{Op5|ek}n{YM2jzol*Ru5uRY9p

diff --git a/resources/icons/favicon-96x96.png b/resources/icons/favicon-96x96.png
deleted file mode 100644
index 8c04515a78c5c5a0c638af42b184f06490fbb1e8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2051
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
DgmIUq

diff --git a/resources/icons/favicon.ico b/resources/icons/favicon.ico
index 2ad9b3cbb3bd6d524471ce000e6c7244e6109bd6..c4226aff16b821f57b3fa880f2498ce9f43e46b6 100644
GIT binary patch
literal 15086
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
Ezsow7c>n+a

literal 15086
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
Uw&`21M#1hDW6`(<7aC~)2U`xa;Q#;t

diff --git a/resources/icons/icon.svg b/resources/icons/icon.svg
deleted file mode 100644
index a727445579..0000000000
--- a/resources/icons/icon.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="480" width="480"><circle cx="240" cy="240" r="240"/><g stroke="#fd0"><path d="M240 36a204 204 0 1 1 0 408 204 204 0 1 1 0-408" fill="none" stroke-width="24"/><path d="M215.8 126h48.4l-10.1 94.6 86.8-38.9 15 46.1-93.1 19.6 63.8 70.6-39.2 28.5L240 264l-47.4 82.5-39.2-28.5 63.8-70.6-93.1-19.6 15-46.1 86.8 38.9z" fill="#fd0" stroke-linejoin="round" stroke-width="12"/></g></svg>
diff --git a/resources/icons/logo.png b/resources/icons/logo.png
index 793a8812345446d06e7409dd39ae88535b028ecc..9f18a54eb4a9d9a718c39618cb22322add8307d9 100644
GIT binary patch
literal 19352
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
Dan~9m

literal 2978
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
YU-w(4z}E3mzW@LL07*qoM6N<$f-l^P5dZ)H

diff --git a/resources/icons/logo.svg b/resources/icons/logo.svg
index a857e75a03..7de6ef9eb7 100644
--- a/resources/icons/logo.svg
+++ b/resources/icons/logo.svg
@@ -1,16 +1,12 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="160" height="44">
-  <g stroke="#fd0" transform="matrix(.0875 0 0 .0875 0 1)">
-    <path d="M240 36a204 204 0 1 1 0 408 204 204 0 1 1 0-408" fill="none" stroke-width="24"/>
-    <path d="M215.8 126h48.4l-10.1 94.6 86.8-38.9 15 46.1-93.1 19.6 63.8 70.6-39.2 28.5L240 264l-47.4 82.5-39.2-28.5 63.8-70.6-93.1-19.6 15-46.1 86.8 38.9z" fill="#fd0" stroke-linejoin="round" stroke-width="12"/>
+<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500">
+  <g transform="translate(485.46123 96.905893)">
+    <path fill="#3737b4" d="m-410.09922789 30.23921644 53.03310051-53.03310052 123.74390591 123.74390591-53.0331005 53.03310052z"/>
+    <path fill="#3737b4" d="m-59.57323003 30.23920409-53.03310042-53.03310118-123.7439057 123.74390745 53.03310042 53.03310118zM-447.96124 15.594107h75v275h-75z"/>
+    <circle cx="-235.46123" cy="153.0941" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/>
+    <circle cx="-410.46136" cy="328.09424" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/>
+    <circle cx="-410.46136" cy="-21.905895" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/>
+    <path fill="#3737b4" d="M-97.961227 15.594107h75v275h-75z"/>
+    <circle cx="-60.461227" cy="-21.905895" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/>
+    <circle cx="-60.461227" cy="328.09424" r="54.065445" fill="none" stroke="#fa023c" stroke-width="38" stroke-linejoin="round"/>
   </g>
-  <g transform="matrix(.53656 0 0 .52273 46.09 -512.12)">
-    <g fill="#fd0">
-      <path d="M1.8 1045v-46.4h16.4q24.7 0 24.7 22.6 0 10.8-6.8 17.3-6.7 6.5-18 6.5H1.7zm10.4-37.9v29.4h5.2q6.8 0 10.6-4.1 3.9-4.1 3.9-11.1 0-6.6-3.8-10.4-3.8-3.8-10.7-3.8h-5.1z"/>
-      <path d="M101.5 1045H91.2v-27.8q0-4.5.4-9.9h-.3q-.8 4.3-1.5 6.1l-10.9 31.5h-8.5l-11.1-31.2q-.5-1.3-1.5-6.5h-.3q.4 6.9.4 12v25.7h-9.4v-46.4h15.3l9.5 27.5q1.1 3.3 1.6 6.6h.2q.9-3.8 1.8-6.7l9.5-27.4h14.9v46.4z"/>
-      <path d="M113.6 1018.2q-2.5 0-4.2-1.5-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.8-1.7 1.5-4.4 1.5zm0 23.7q-2.5 0-4.2-1.6-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.9t-4.4 1.5z"/>
-      <path d="M129.6 1018.2q-2.5 0-4.2-1.5-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.8-1.7 1.5-4.4 1.5zm0 23.7q-2.5 0-4.2-1.6-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.9t-4.4 1.5z"/>
-    </g>
-    <path fill="#aaa" d="M161.7 1045.8q-10 0-16.2-6.5-6.3-6.5-6.3-16.9 0-11 6.4-17.8 6.4-6.8 16.9-6.8 9.9 0 16 6.5t6.1 17.1q0 10.9-6.4 17.6-6.3 6.7-16.6 6.7zm.5-39q-5.5 0-8.7 4.1-3.2 4.1-3.2 10.9 0 6.9 3.2 10.9t8.5 4q5.4 0 8.6-3.9 3.2-3.9 3.2-10.8 0-7.2-3.1-11.2-3.1-4-8.4-4z"/>
-    <path fill="#aaa" d="M209.6 1026.6q0 9.3-4.3 14.3-4.3 4.9-12.5 4.9-3.7 0-6.8-1.3v-9.8q2.7 2 6 2 7.1 0 7.1-10.6v-27.6h10.5v28z"/>
-  </g>
-</svg>
+</svg>
\ No newline at end of file
diff --git a/resources/icons/manifest.json b/resources/icons/manifest.json
index e836e9fe70..bc1e53a0a5 100644
--- a/resources/icons/manifest.json
+++ b/resources/icons/manifest.json
@@ -1,5 +1,5 @@
 {
-	"name": "DMOJ",
+	"name": "WLMOJ",
 	"icons": [
 		{
 			"src": "\/android-chrome-36x36.png",
diff --git a/resources/icons/mstile-144x144.png b/resources/icons/mstile-144x144.png
index 8a3a249c5b397b43e13ffd506ff2df8ef7aef0d8..951dde260828ee1a1397129505513834365128b5 100644
GIT binary patch
literal 3716
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

delta 2653
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
DT>t2y

diff --git a/resources/icons/mstile-150x150.png b/resources/icons/mstile-150x150.png
index 03258dc7259a12a2599570b4d2c8aacffc3eca2c..1a1318e6087e54ca8c9959736583f41869e45776 100644
GIT binary patch
delta 3283
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
TT)|@u(aNdtpQ@Q0p}_wEiE(4V

delta 2157
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

diff --git a/resources/icons/mstile-310x150.png b/resources/icons/mstile-310x150.png
index 25e12f5a094606f168d0dded6f98013417b4d8af..3ecf9e01e300e0c26529a27b40f340db2ad3fac6 100644
GIT binary patch
literal 3766
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

delta 2419
zcmV-(35@o(9qts6Kz{&BP)t-sOlffd0000000000000000000001FBL0000000000
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

diff --git a/resources/icons/mstile-310x310.png b/resources/icons/mstile-310x310.png
index 808882565bcee821e91153cae21190c0fb6dc4bd..7aa7dd563500aec4804bb9be7319607f61404761 100644
GIT binary patch
literal 6730
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
Q@mGy&sOmm0QGOZpKitcrX#fBK

delta 4818
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

diff --git a/resources/icons/mstile-70x70.png b/resources/icons/mstile-70x70.png
index a893eeaa0bae0fb690f5bbb781fb3a6ccccb17f0..be6b2d9e3149a60ac48e591b6bead2e288a031e6 100644
GIT binary patch
literal 2801
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
TVWN8rlmM{ic4mzxUP=E0Z9EGW

delta 1730
zcmV;z20i)l71<7uKz{&=P)t-sOlffd00000000000000000000000000000000000
z0000000000000000000000030-2fsT02UJfE+_yC3IP7x00spBjd}poxB&Ur0Jfa~
zpo##+s{ny;07X0i?act$ya1Vn05~uJ;KBfUY5-qS0QA%VaDQO{y`%t8MF6Uk0L-xf
zJ~jYFTDs`~000nlQchC<1oY$<aUju=?@2O+YNWhqV$(PP00r(zL_t(|+U;7`mYXmT
z&8`c!*M(}T0n^<7|MwD0s8A#%%-VTio^lcejc4xMDVjfjMj2(4QAQbMlu>%gd^KC_
z6lJnhmlH+VEq^wv`5Q0aY?o?Nmb=-{8*cwuOjNc^7Qd^*bf&0XqRghhcKy0$dCSnv
zhp8J@^{>AdzoNo)@l9PF<-sA=ki>@|kE~x+;cG^IeHtD-tts9iOo<BXuVJBweXr+7
zjV+m@V=Sx&{P_#?)rY^=__FsO=<s4FBg}W@7o$Vvs(+(@OB}~ZZhlr#>k=U&3`0(<
z()+qknK~&<n*zRV7D-0_*)JWj9KsE=689kno_p3?89+a~7?5G9-t6W3*YHCo`nH#t
z92PPYq^4UQTf7LrE&NPzf}cG(Mh6iZVM!0(8UDrgB`CuC?VyBRV5r?<1SKQ`=!Wgf
z_P0v(xqqoDCXdoz7f6ol-uG|dFM`3hcWhNu><}8^ZoGuV6}%rZUwl<%<O-2+gc|gV
z#yN<8>khx9t8$`4z3;#a%RY?s1^CbQX<N!j>A4GVoYEr{ApZw6n&iZ~z*y)>2R|_W
zDLcw*0Bun8g25NazvhWTlDt6tp3FW@02#mn@qZk%@MlIySnRBWSa5CmSe%0LD+KY+
zioYwBfthCjAA}$hrqT%1L1J-O20l{?oLPq)-~?S3htL2%v0q;cs5bDT56Z-;qyZw}
z05<=plmhHi58#AIE+;?(fFMdZ7^f8A#0g-Mi<}8S2t0uIco9fybB`B`Cu}0&Ku|CO
z9DiPzlOizV9dj@W6d4lKpT6_B6hvy|gW6?+JqUy!2?&NA2>2&AtiX+XE_oiwC142p
zZ@{9a+G$&@(^IMm_#AZa;vN7o=GMPtGnlB#Lv~$n7sGHaT!@7&{1$52na+y^R-mAB
z;5mcbOC-m9yb-R10l@So>QAKmgn<g=L4VSZb81F~j)5vvAwMfI%R_E!FyH=`(%;o+
zP1D=Hl^LI^dr#vnMM^<T!wCy>_X2>yMlI<cV&i&Yp)$a9JQu8m^SWm%yrY$1KqHd)
zsZBx84Qf6pa3HP(c{peWp;?^+Ji&na#XD)pkhJ{YKoEt1hVI0$BnIjunE)x^27ir_
zO*IaHvkrnq0jS2~CI*k1j2xTpdpb(piDe=S=MR<#I;H9Z08dLSA1Nr+-<o71A$c=x
z7-9-cP=qG~Dv%(y5Xc7K$lkSBjzT{cygc^9sD(qGUit1;z(yn+w$%Ao=WycQeL6VT
zmOdgxgl+e?0D)tX+*>E5_oOg+nSWc*0t^h)+P?H$nHg$_b82<fB!U=VL_xzFS#?IM
zcNb5Fco??uK)uj&YYuR^<)aJ_U?$AEJMW4Utd0U&lnEE89@*O>^(Zx;WuKSI1*~k?
z$nRy$lRpOhvQ#u1GV6iX#2D)_D+Ttg2S`N}2=(P6UAk07L~6o}H*_emZ-18!cv+iW
z*%$;h;pC;NxU7X~7L1U!5F19VoFP{gGy4LFCpsfRs_^Mt(1u*ezF^MmjPTeA{a$Dy
zowiBaNK3La;`N3`r7&|E1$*mIFO}>KAr<AV`KUrbG2%X}QYiQ@cgLLhKtkVCv~-Cr
zS{t71e1JD03HNjeV!4w@Y=1l}$WKVPGom!3L$J}OW{)9eL~u%WX=g*jZ<~sg;P4I3
zluTk)x+ZhNM++5uBm{AIdelSN%X7l6N$K+u(P?_xH3yrNcFl?{C#aVnR^V8}&5DJl
z<w9>)d&~iH({dOHHvhdq;N^;XFW5-k|M?e_LEen+6k*D*_YC!FmVfkpMF04^;m2Q2
zKmT@Idp*|@iPv*ykk|A2{=hMM_x`|(8x+aw8x*~ENYK$@h#iuTZ_!{Rs&<HnLvGI4
zBg%1;bjk<YBVue)1&vLr;I}rZ=v}f)WtS{_(=HjkO_vI6)1`xN(@E?T9tk{@Vb@z_
zH!7F2VK*v2zf<}jY&X>c6+XLH4B@!uZdR|~vE4o2Y}=GrZr`$7j+9t!KDS*z$|$3Z
YGRi2Uj54hJ1vS&_a!*-O6_bJrZwr+ZU;qFB

diff --git a/resources/icons/safari-pinned-tab.svg b/resources/icons/safari-pinned-tab.svg
index 02b4f2a932..2c8ca8c504 100644
--- a/resources/icons/safari-pinned-tab.svg
+++ b/resources/icons/safari-pinned-tab.svg
@@ -1,43 +1,3 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
- width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
- preserveAspectRatio="xMidYMid meet">
-<metadata>
-Created by potrace 1.14, written by Peter Selinger 2001-2017
-</metadata>
-<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
-fill="#000000" stroke="none">
-<path d="M3280 6994 c-19 -2 -84 -9 -145 -14 -639 -62 -1264 -315 -1795 -726
--149 -115 -481 -446 -595 -594 -410 -532 -653 -1132 -727 -1795 -17 -155 -17
--575 0 -730 75 -673 332 -1300 748 -1820 114 -143 339 -372 484 -494 537 -451
-1163 -717 1885 -803 142 -17 586 -17 730 0 682 79 1268 318 1802 734 138 107
-389 351 512 498 451 538 717 1162 803 1885 16 139 16 595 0 730 -77 629 -275
-1158 -620 1649 -234 333 -577 668 -917 896 -460 308 -968 495 -1535 566 -117
-15 -552 27 -630 18z m605 -369 c827 -108 1546 -508 2062 -1145 372 -459 596
--986 679 -1595 25 -182 25 -588 0 -770 -68 -503 -231 -944 -497 -1345 -325
--490 -740 -854 -1264 -1106 -314 -151 -617 -241 -980 -290 -182 -25 -589 -25
--770 0 -722 98 -1341 401 -1840 901 -255 254 -441 515 -600 840 -162 331 -249
-621 -302 1005 -24 174 -24 586 0 760 84 614 302 1129 676 1595 391 489 928
-850 1546 1041 188 58 471 110 700 128 105 8 475 -3 590 -19z"/>
-<path d="M3280 6294 c-110 -10 -334 -46 -430 -69 -1025 -247 -1828 -1051
--2075 -2075 -54 -226 -69 -363 -69 -650 0 -287 15 -423 69 -650 190 -789 719
--1464 1438 -1835 294 -152 577 -242 912 -292 184 -27 592 -24 780 5 304 47
-555 127 830 262 564 277 996 710 1275 1275 135 274 215 525 262 830 18 118 22
-182 22 405 0 293 -15 427 -73 665 -95 387 -291 782 -545 1097 -280 348 -681
-649 -1096 823 -195 82 -444 151 -670 186 -131 20 -511 34 -630 23z m623 -1064
-c14 -11 29 -29 32 -40 3 -10 -24 -296 -60 -636 -36 -339 -64 -619 -61 -621 2
--3 256 108 563 245 307 138 569 253 583 256 16 4 36 0 55 -12 28 -17 39 -45
-144 -368 63 -192 114 -363 115 -381 0 -18 -8 -41 -18 -52 -21 -23 -21 -23
--725 -171 -288 -60 -525 -111 -527 -112 -1 -2 186 -212 416 -467 231 -255 422
--472 426 -483 3 -10 3 -32 -1 -48 -7 -30 -71 -80 -554 -427 -82 -60 -118 -67
--154 -30 -12 12 -160 262 -327 554 -168 293 -307 533 -310 533 -3 0 -142 -240
--310 -533 -167 -292 -315 -542 -327 -555 -45 -45 -59 -38 -392 203 -281 205
--311 229 -317 259 -3 19 -1 42 4 53 6 10 197 226 426 478 228 253 413 461 412
-462 -1 2 -279 61 -616 133 -665 140 -654 137 -654 202 1 18 52 190 115 382
-105 323 116 351 144 368 45 27 -38 60 814 -321 210 -95 385 -170 388 -168 2 3
--26 282 -62 621 -36 340 -63 626 -60 636 3 11 18 29 32 40 25 19 39 20 403 20
-364 0 378 -1 403 -20z"/>
-</g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="933.3" height="933.3" version="1.0" viewBox="0 0 700 700">
+    <path d="M590.5 2.8a103.8 103.8 0 0 0-96.2 83.4c-1.3 5.6-1.4 29.5 0 36.5l1.4 7.3-60.4 60.3-60.4 60.4-6.7-1.3c-6.2-1.3-24.5-1.9-30.2-1l-7.2 1.1-4.6.7-60.7-60.7-60.7-60.7.7-4.1 1-6.7c.7-3.9.6-22.1 0-26.5A104.4 104.4 0 0 0 153 14.7a96.4 96.4 0 0 0-47.4-11.5 98 98 0 0 0-56.7 16.3c-6.9 4.5-20.3 17-25.6 24-13 17-20.5 39.7-20.3 61.4.1 10.4.2 12.3 1.4 18.9 2.4 13 7.6 25.6 15.4 37.7a126 126 0 0 0 32.3 31.4c.4 1.6.5 312.8.1 313.8-.2.7-2.4 2.4-4.9 3.9a134 134 0 0 0-26.8 26.9A98 98 0 0 0 3 594.4c.1 11.6.1 11.3 1.7 19.9a102.5 102.5 0 0 0 86.8 82.2c4.3.7 21.7.7 25 .1 3.4-.6 11-1.7 11.5-1.6.3.1 4.6-1.3 9.5-3a102.5 102.5 0 0 0 56.8-147 114.9 114.9 0 0 0-31.8-34.6l-5-3.4V369c0-75.9.2-138 .5-138s21.4 20.9 46.9 46.4c36.3 36.3 46.2 46.7 45.7 48.2-.5 1.9-.8 3.5-2.2 12.4A101.9 101.9 0 0 0 351 452.1c36.5-.3 69.8-19.9 88.4-52.2a119 119 0 0 0 12.1-37.4c1.3-10.2.2-30-2-35.7-.4-.9 17.5-19.5 46-47.8l46.8-46.7c.4-.3.2 274.6-.3 275l-6.5 4.7a102.4 102.4 0 0 0-40.5 61.8 84 84 0 0 0-1.6 23.2c.3 16.4.6 18 4.7 30.5a100.9 100.9 0 0 0 27.2 42.1 101.4 101.4 0 0 0 51.2 26c5.9 1.3 33.4 1.3 38 .1l8-2.2c35.4-9.4 66.1-42.1 72.4-77.1l1.6-8.4c.7-3.2.7-22.7 0-26l-1.6-8.4a100.4 100.4 0 0 0-17.2-38.6c-5.4-7.5-18-19.9-24.7-24.3l-5.5-3.7V350.1c0-86.3.2-157.1.5-157.3l7.7-5.7a102.5 102.5 0 0 0 37.2-111.6c-8.9-30.4-34.5-57-64.8-67.1a76.3 76.3 0 0 0-23.6-5l-8-.7c-.5-.1-3.2-.1-6 .1zM122.9 59.4a49 49 0 0 1-5.2 93 59.4 59.4 0 0 1-29.6-1.3 47.8 47.8 0 0 1-31.7-47.3 48 48 0 0 1 35.1-46 55.1 55.1 0 0 1 31.4 1.6zm484.5-1.8a50.8 50.8 0 0 1 35.5 36.5c1.5 6.3.7 20.3-1.4 26.4a50.9 50.9 0 0 1-36.4 32.5 50 50 0 0 1-40.6-9.8 48.8 48.8 0 0 1-4.2-72.6 53 53 0 0 1 23.4-13.5c5.3-1.3 17.8-1 23.7.5zM365.3 303.5a48.7 48.7 0 0 1 19.3 80.9 48.9 48.9 0 0 1-47.5 12.9 50.3 50.3 0 0 1-34.7-35.6 60.8 60.8 0 0 1 1.3-28.2c6-15.4 21.1-28.9 34.9-31.1 2.1-.3 4.1-.8 4.4-1 1.3-1.4 16.2.1 22.3 2.1zM116 547.1a51.5 51.5 0 0 1 36 33.3 59.6 59.6 0 0 1 1 24.1c-3.8 19-18.6 34-37.9 38.5a48.8 48.8 0 0 1-58.8-50.6c.7-9.2 1.2-11.4 4.9-19.1 5.6-12 18-22.1 31.7-25.8a59.8 59.8 0 0 1 23.1-.4zm491.4.5a48.9 48.9 0 0 1 21.1 82.9 49 49 0 0 1-76.7-58.9 54.7 54.7 0 0 1 31.8-24.5c5.4-1.3 17.9-1 23.8.5z"/>
+</svg>
\ No newline at end of file
diff --git a/resources/icons/site.webmanifest b/resources/icons/site.webmanifest
new file mode 100644
index 0000000000..c6f5eef15e
--- /dev/null
+++ b/resources/icons/site.webmanifest
@@ -0,0 +1,55 @@
+{
+    "name": "WLMOJ",
+    "short_name": "WLMOJ",
+    "icons": [
+        {
+            "src": "/android-chrome-36x36.png",
+            "sizes": "36x36",
+            "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-48x48.png",
+            "sizes": "48x48",
+            "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-72x72.png",
+            "sizes": "72x72",
+            "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-96x96.png",
+            "sizes": "96x96",
+            "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-144x144.png",
+            "sizes": "144x144",
+            "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-192x192.png",
+            "sizes": "192x192",
+            "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-256x256.png",
+            "sizes": "256x256",
+            "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-384x384.png",
+            "sizes": "384x384",
+            "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-512x512.png",
+            "sizes": "512x512",
+            "type": "image/png"
+        }
+    ],
+    "theme_color": "#2d89ef",
+    "background_color": "#2d89ef",
+    "start_url": "https://mcpt.ca/",
+    "display": "standalone"
+}
diff --git a/resources/quotes.json b/resources/quotes.json
index d7ea3286de..aac4915352 100644
--- a/resources/quotes.json
+++ b/resources/quotes.json
@@ -67,4 +67,4 @@
 	"quote": "¯\\_(ツ)_/¯",
 	"tooltip": "🤷"
   }
-]
+]
\ No newline at end of file
diff --git a/templates/base.html b/templates/base.html
index 7937059579..41c57bd38f 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -11,24 +11,14 @@
     {% endif %}
     <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1">
     <!-- Favicons-->
-    <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png">
-    <link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png">
-    <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png">
-    <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png">
-    <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png">
-    <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png">
-    <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png">
-    <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png">
-    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png">
-    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
-    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
-    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
-    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
-    <link rel="manifest" href="/manifest.json">
-    <meta name="msapplication-TileColor" content="#3737B4">
-    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
+    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+    <link rel="manifest" href="/site.webmanifest">
+    <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#fa013c">
+    <meta name="msapplication-TileColor" content="#2d89ef">
     {# Chrome 39 for Android colour #}
-    <meta name="theme-color" content="#3737B4">
+    <meta name="theme-color" content="#2d89ef">
     {% if og_image %}
         <meta property="og:image" content="{{ request.build_absolute_uri(og_image) }}">
     {% endif %}

From 871ee1539eee037f02de4b6363765a3fab0585d5 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Mon, 23 Sep 2024 23:18:29 -0400
Subject: [PATCH 33/57] Update resource check path

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 dmoj/urls.py | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/dmoj/urls.py b/dmoj/urls.py
index 5c83076292..811a650ec7 100644
--- a/dmoj/urls.py
+++ b/dmoj/urls.py
@@ -371,13 +371,13 @@ def paged_list_view(view, name):
     ])),
 ]
 
-favicon_paths = os.listdir(join(settings.DMOJ_RESOURCES, 'icons'))
-
-static_lazy = lazy(static, str)
-for favicon in favicon_paths:
-    urlpatterns.append(path(favicon, RedirectView.as_view(
-        url=static_lazy('icons/' + favicon),
-    )))
+if os.path.exists(join(settings.DMOJ_RESOURCES, 'icons')): # if it doesn't exist, we're probably running on bridged
+    favicon_paths = os.listdir(join(settings.DMOJ_RESOURCES, 'icons'))
+    static_lazy = lazy(static, str)
+    for favicon in favicon_paths:
+        urlpatterns.append(path(favicon, RedirectView.as_view(
+            url=static_lazy('icons/' + favicon),
+        )))
 
 handler404 = 'judge.views.error.error404'
 handler403 = 'judge.views.error.error403'

From 8338fef42c620af79014beadaaa4f1a613b4af03 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Mon, 23 Sep 2024 23:21:21 -0400
Subject: [PATCH 34/57] Satisfy flake8

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 dmoj/urls.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dmoj/urls.py b/dmoj/urls.py
index 811a650ec7..c87abdc42e 100644
--- a/dmoj/urls.py
+++ b/dmoj/urls.py
@@ -371,7 +371,7 @@ def paged_list_view(view, name):
     ])),
 ]
 
-if os.path.exists(join(settings.DMOJ_RESOURCES, 'icons')): # if it doesn't exist, we're probably running on bridged
+if os.path.exists(join(settings.DMOJ_RESOURCES, 'icons')):  # if it doesn't exist, we're probably running on bridged
     favicon_paths = os.listdir(join(settings.DMOJ_RESOURCES, 'icons'))
     static_lazy = lazy(static, str)
     for favicon in favicon_paths:

From 2e2972c42d42bcd9e166b6ae60458445c905164e Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Tue, 24 Sep 2024 23:02:08 -0400
Subject: [PATCH 35/57] Ansible: Simplify update steps * remove "dark mode
 support "

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/template_context.py                               | 6 +-----
 resources/navbar.scss                                   | 8 ++++----
 resources/vars-default.scss                             | 4 ++--
 templates/base.html                                     | 4 ----
 templates/contest/list.html                             | 2 +-
 templates/registration/activation_email.html            | 2 +-
 templates/registration/email_change_activate_email.html | 2 +-
 templates/registration/email_change_notify_email.html   | 2 +-
 8 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/judge/template_context.py b/judge/template_context.py
index 196416377d..7d3d21795c 100644
--- a/judge/template_context.py
+++ b/judge/template_context.py
@@ -82,14 +82,10 @@ def site_name(request):
 
 def site_theme(request):
     # Middleware populating `profile` may not have loaded at this point if we're called from an error context.
-    if hasattr(request.user, 'profile'):
-        preferred_css = settings.DMOJ_THEME_CSS.get(request.profile.site_theme)
-    else:
-        preferred_css = None
     return {
         'DARK_STYLE_CSS': settings.DMOJ_THEME_CSS['dark'],
         'LIGHT_STYLE_CSS': settings.DMOJ_THEME_CSS['light'],
-        'PREFERRED_STYLE_CSS': preferred_css,
+        'PREFERRED_STYLE_CSS': settings.DMOJ_THEME_CSS['dark'],
     }
 
 
diff --git a/resources/navbar.scss b/resources/navbar.scss
index d849674a5b..e6e165b134 100644
--- a/resources/navbar.scss
+++ b/resources/navbar.scss
@@ -66,7 +66,7 @@
 }
 
 #nav-container {
-    background: #3b3b3b;
+    background: #3737b4;
 
     // opacity: 0.77
     // filter: alpha(opacity=77)
@@ -136,14 +136,14 @@ nav {
                 left: 5px;
                 display: none;
                 color: #fff;
-                background: #3b3b3b;
+                background: #3737b4;
                 margin: 0 !important;
                 box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4);
 
                 li {
                     &:first-child {
                         a.active {
-                            border-top: 1px solid #3b3b3b;
+                            border-top: 1px solid #3737b4;
                         }
                     }
                 }
@@ -228,7 +228,7 @@ nav {
         margin: 0;
         position: fixed;
         top: 36px;
-        background: #3b3b3b;
+        background: #3737b4;
         bottom: 0;
         width: 8em;
         left: 0;
diff --git a/resources/vars-default.scss b/resources/vars-default.scss
index 6a41dfd603..f58b0c4408 100644
--- a/resources/vars-default.scss
+++ b/resources/vars-default.scss
@@ -5,11 +5,11 @@ $is_light_theme: true;
 $color_primary0: #fff;
 $color_primary5: #f8f8f8;   // light background
 $color_primary10: #eee;     // background
-$color_primary25: #ccc;     // border
+$color_primary25: #4242da;     // border
 $color_primary33: #aaa;     // widget
 $color_primary50: #808080;
 $color_primary66: #555;     // tabs
-$color_primary75: #3b3b3b;  // widget
+$color_primary75: #3737b4;  // widget
 $color_primary90: #111;
 $color_primary100: #000;
 
diff --git a/templates/base.html b/templates/base.html
index 41c57bd38f..9d93bb25ba 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -36,12 +36,8 @@
     {% compress css %}
         {# TODO: once dark mode support is better, enable for all users by deleting the else branch #}
         {% if perms.judge.test_site %}
-            {% if PREFERRED_STYLE_CSS is not none %}
-                <link rel="stylesheet" href="{{ static(PREFERRED_STYLE_CSS) }}">
-            {% else %}
                 <link rel="stylesheet" href="{{ static(LIGHT_STYLE_CSS) }}" media="(prefers-color-scheme: light)">
                 <link rel="stylesheet" href="{{ static(DARK_STYLE_CSS) }}" media="(prefers-color-scheme: dark)">
-            {% endif %}
         {% else %}
             <link rel="stylesheet" href="{{ static(LIGHT_STYLE_CSS) }}">
         {% endif %}
diff --git a/templates/contest/list.html b/templates/contest/list.html
index c3deb113c4..c9ae466848 100644
--- a/templates/contest/list.html
+++ b/templates/contest/list.html
@@ -52,7 +52,7 @@
             {% endif %}
             {% if contest.is_organization_private %}
                 {% for org in contest.organizations.all() %}
-                    <span style="background-color: #cccccc" class="contest-tag">
+                    <span style="background-color: #4242da" class="contest-tag">
                         <a href="{{ org.get_absolute_url() }}" style="color: #000000">
                             <i class="fa fa-lock"></i> {{ org.name }}
                         </a>
diff --git a/templates/registration/activation_email.html b/templates/registration/activation_email.html
index e49673f0e3..5d7137a764 100644
--- a/templates/registration/activation_email.html
+++ b/templates/registration/activation_email.html
@@ -2,7 +2,7 @@
 <a href="{{ request.scheme }}://{{ site.domain }}"><img src="{{ request.scheme }}://{{ site.domain }}/static/icons/logo.svg" alt="{{ SITE_NAME }}" width="160" height="44"></a>
 </div></div>
 
-<div style="border:2px solid #337ab7;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;">
+<div style="border:2px solid #4547c8;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;">
 <strong>{{ _("Thanks for registering on the %(site_name)s! We're glad to have you.", site_name=SITE_NAME) }}</strong>
 <br><br>
 {% trans trimmed count=expiration_days, site_name=SITE_NAME %}
diff --git a/templates/registration/email_change_activate_email.html b/templates/registration/email_change_activate_email.html
index c09b5d9f36..005adcfd79 100644
--- a/templates/registration/email_change_activate_email.html
+++ b/templates/registration/email_change_activate_email.html
@@ -2,7 +2,7 @@
 <a href="{{ protocol }}://{{ domain }}"><img src="{{ protocol }}://{{ domain }}/static/icons/logo.svg" alt="{{ site_name }}" width="160" height="44"></a>
 </div></div>
 
-<div style="border:2px solid #337ab7;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;">
+<div style="border:2px solid #4547c8;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;">
 <br><br>
 {{ user.get_username() }},
 <br>
diff --git a/templates/registration/email_change_notify_email.html b/templates/registration/email_change_notify_email.html
index 5efeb5f23b..279a397a8b 100644
--- a/templates/registration/email_change_notify_email.html
+++ b/templates/registration/email_change_notify_email.html
@@ -2,7 +2,7 @@
 <a href="{{ protocol }}://{{ domain }}"><img src="{{ protocol }}://{{ domain }}/static/icons/logo.svg" alt="{{ site_name }}" width="160" height="44"></a>
 </div></div>
 
-<div style="border:2px solid #337ab7;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;">
+<div style="border:2px solid #4547c8;margin:4px 0;"><div style="background:#fafafa;border:12px solid #fafafa;font-family:segoe ui,lucida grande,Arial,sans-serif;font-size:14px;">
 <br><br>
 {{ user.get_username() }},
 <br>

From 2b6beb1af855c60faf7f1f1bb9b2be3bcd5ecec5 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Tue, 24 Sep 2024 23:19:34 -0400
Subject: [PATCH 36/57] Default theme to light

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/template_context.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/judge/template_context.py b/judge/template_context.py
index 7d3d21795c..e845d61d32 100644
--- a/judge/template_context.py
+++ b/judge/template_context.py
@@ -82,16 +82,20 @@ def site_name(request):
 
 def site_theme(request):
     # Middleware populating `profile` may not have loaded at this point if we're called from an error context.
+    if hasattr(request.user, 'profile'):
+        preferred_css = settings.DMOJ_THEME_CSS.get(request.profile.site_theme, settings.DMOJ_THEME_CSS['light'])
+    else:
+        preferred_css = None
     return {
         'DARK_STYLE_CSS': settings.DMOJ_THEME_CSS['dark'],
         'LIGHT_STYLE_CSS': settings.DMOJ_THEME_CSS['light'],
-        'PREFERRED_STYLE_CSS': settings.DMOJ_THEME_CSS['dark'],
+        'PREFERRED_STYLE_CSS': preferred_css,
     }
 
 
 def math_setting(request):
     caniuse = CanIUse(request.META.get('HTTP_USER_AGENT', ''))
-
+    
     # Middleware populating `profile` may not have loaded at this point if we're called from an error context.
     if hasattr(request.user, 'profile'):
         engine = request.profile.math_engine

From 458610f56cbd08ad28775f5ea7afb483ac0a7cd1 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Tue, 24 Sep 2024 23:27:36 -0400
Subject: [PATCH 37/57] Change default behavior so that styling isn't up to the
 browser

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 resources/vars-common.scss | 2 +-
 templates/base.html        | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/resources/vars-common.scss b/resources/vars-common.scss
index 004861d2c6..19a38fb693 100644
--- a/resources/vars-common.scss
+++ b/resources/vars-common.scss
@@ -1,4 +1,4 @@
-$highlight_blue: #2980B9;
+$highlight_blue: #7070f4;
 $announcement_red: #ae0000;
 
 $base_font_size: 14px;
diff --git a/templates/base.html b/templates/base.html
index 9d93bb25ba..804b085aa4 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -36,8 +36,9 @@
     {% compress css %}
         {# TODO: once dark mode support is better, enable for all users by deleting the else branch #}
         {% if perms.judge.test_site %}
-                <link rel="stylesheet" href="{{ static(LIGHT_STYLE_CSS) }}" media="(prefers-color-scheme: light)">
-                <link rel="stylesheet" href="{{ static(DARK_STYLE_CSS) }}" media="(prefers-color-scheme: dark)">
+            {% if PREFERRED_STYLE_CSS is not none %}
+                <link rel="stylesheet" href="{{ static(PREFERRED_STYLE_CSS) }}">
+            {% endif %}
         {% else %}
             <link rel="stylesheet" href="{{ static(LIGHT_STYLE_CSS) }}">
         {% endif %}

From e3edd06e60695b5614ddafc578665db9fe841fe3 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Tue, 24 Sep 2024 23:31:04 -0400
Subject: [PATCH 38/57] chore: fix linting

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/template_context.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/judge/template_context.py b/judge/template_context.py
index e845d61d32..2a59f34757 100644
--- a/judge/template_context.py
+++ b/judge/template_context.py
@@ -95,7 +95,7 @@ def site_theme(request):
 
 def math_setting(request):
     caniuse = CanIUse(request.META.get('HTTP_USER_AGENT', ''))
-    
+
     # Middleware populating `profile` may not have loaded at this point if we're called from an error context.
     if hasattr(request.user, 'profile'):
         engine = request.profile.math_engine

From 027ed50d4257c86287f40232dc72f559120b6965 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 25 Sep 2024 19:22:15 -0400
Subject: [PATCH 39/57] Update color themes

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 resources/vars-default.scss | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/resources/vars-default.scss b/resources/vars-default.scss
index f58b0c4408..e0278ecd6c 100644
--- a/resources/vars-default.scss
+++ b/resources/vars-default.scss
@@ -5,18 +5,18 @@ $is_light_theme: true;
 $color_primary0: #fff;
 $color_primary5: #f8f8f8;   // light background
 $color_primary10: #eee;     // background
-$color_primary25: #4242da;     // border
+$color_primary25: #8d8db7;     // border
 $color_primary33: #aaa;     // widget
 $color_primary50: #808080;
 $color_primary66: #555;     // tabs
 $color_primary75: #3737b4;  // widget
-$color_primary90: #111;
-$color_primary100: #000;
+$color_primary90: #1F3EB1;
+$color_primary100: #0645ad;
 
 $color_link50: #5b80b9;     // default (title)
 $color_link75: #1958c1;     // default
 $color_link100: #0645ad;    // hover
-$color_link200: #faa700;    // active
+$color_link200: #053281;    // active
 
 $color_pageBg: #fff;
 

From 46dc6bb6da7d979dc2d82d95187ac0fa4da55a50 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 25 Sep 2024 19:54:21 -0400
Subject: [PATCH 40/57] Update styles a little

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 resources/vars-default.scss | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/resources/vars-default.scss b/resources/vars-default.scss
index e0278ecd6c..9394f3ace2 100644
--- a/resources/vars-default.scss
+++ b/resources/vars-default.scss
@@ -5,7 +5,7 @@ $is_light_theme: true;
 $color_primary0: #fff;
 $color_primary5: #f8f8f8;   // light background
 $color_primary10: #eee;     // background
-$color_primary25: #8d8db7;     // border
+$color_primary25: #babae5;     // border
 $color_primary33: #aaa;     // widget
 $color_primary50: #808080;
 $color_primary66: #555;     // tabs
@@ -16,7 +16,7 @@ $color_primary100: #0645ad;
 $color_link50: #5b80b9;     // default (title)
 $color_link75: #1958c1;     // default
 $color_link100: #0645ad;    // hover
-$color_link200: #053281;    // active
+$color_link200: #0838c9;    // active
 
 $color_pageBg: #fff;
 

From d9f706f1a38aee1172554d2984c45c1f20a6cac4 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 25 Sep 2024 20:32:55 -0400
Subject: [PATCH 41/57] Set default text to black

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 resources/vars-default.scss | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/resources/vars-default.scss b/resources/vars-default.scss
index 9394f3ace2..7682208098 100644
--- a/resources/vars-default.scss
+++ b/resources/vars-default.scss
@@ -11,7 +11,7 @@ $color_primary50: #808080;
 $color_primary66: #555;     // tabs
 $color_primary75: #3737b4;  // widget
 $color_primary90: #1F3EB1;
-$color_primary100: #0645ad;
+$color_primary100: #000;
 
 $color_link50: #5b80b9;     // default (title)
 $color_link75: #1958c1;     // default

From 6cbc3f35e18e15a9f44bb3fb5de3a9eed05a3dd5 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 2 Oct 2024 17:57:04 -0400
Subject: [PATCH 42/57] fix: raise error when profile creation breaks

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/apps.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/judge/apps.py b/judge/apps.py
index 5df2bdea8c..722d82a9a4 100644
--- a/judge/apps.py
+++ b/judge/apps.py
@@ -23,5 +23,5 @@ def ready(self):
                 # These poor profileless users
                 profile = Profile(user=user, language=lang)
                 profile.save()
-        except DatabaseError:
-            pass
+        except DatabaseError as e:
+            raise e from SystemError

From c201122a1450539d6f4a37a20aac51cb8d998f62 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 2 Oct 2024 18:01:03 -0400
Subject: [PATCH 43/57] redo error system for apps

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/apps.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/judge/apps.py b/judge/apps.py
index 722d82a9a4..a54acd506b 100644
--- a/judge/apps.py
+++ b/judge/apps.py
@@ -1,7 +1,9 @@
 from django.apps import AppConfig
 from django.db import DatabaseError
 from django.utils.translation import gettext_lazy
+import logging
 
+logger = logging.getLogger("judge.apps")
 
 class JudgeAppConfig(AppConfig):
     name = 'judge'
@@ -23,5 +25,7 @@ def ready(self):
                 # These poor profileless users
                 profile = Profile(user=user, language=lang)
                 profile.save()
+                logger.info('Created profile for user %s', user)
         except DatabaseError as e:
-            raise e from SystemError
+            logger.error('Failed to create profiles for users: %s', e)
+            

From bbb116c1fb2625bbcddc70647db775ee7b7ac94e Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 2 Oct 2024 18:03:45 -0400
Subject: [PATCH 44/57] Chore: fix linter issues with apps

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/apps.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/judge/apps.py b/judge/apps.py
index a54acd506b..1268e37b64 100644
--- a/judge/apps.py
+++ b/judge/apps.py
@@ -1,9 +1,11 @@
+import logging
+
 from django.apps import AppConfig
 from django.db import DatabaseError
 from django.utils.translation import gettext_lazy
-import logging
 
-logger = logging.getLogger("judge.apps")
+logger = logging.getLogger('judge.apps')
+
 
 class JudgeAppConfig(AppConfig):
     name = 'judge'
@@ -27,5 +29,4 @@ def ready(self):
                 profile.save()
                 logger.info('Created profile for user %s', user)
         except DatabaseError as e:
-            logger.error('Failed to create profiles for users: %s', e)
-            
+            logger.error('Failed to create profiles for users: %s', e.__traceback__)

From c2d96e0cf4eedaa6cd5f36d0c40c37cc05306440 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 2 Oct 2024 21:30:36 -0400
Subject: [PATCH 45/57] Properly warn on miss config for local_settings

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 dmoj/settings.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dmoj/settings.py b/dmoj/settings.py
index 9c8893417a..c2a30d77e1 100644
--- a/dmoj/settings.py
+++ b/dmoj/settings.py
@@ -605,8 +605,8 @@
 try:
     with open(os.path.join(os.path.dirname(__file__), 'local_settings.py')) as f:
         exec(f.read(), globals())
-except IOError:
-    pass
+except IOError as e:
+    raise ImportError('Could not import local_settings.py: %s' % e) from IOError
 
 
 # Check settings are consistent

From 7f0762a7ce01c5be1dfd2c02aeef30b1022666e9 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Thu, 3 Oct 2024 00:28:08 -0400
Subject: [PATCH 46/57] Update local setting's location in prod

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 dmoj/settings.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/dmoj/settings.py b/dmoj/settings.py
index c2a30d77e1..75c8809973 100644
--- a/dmoj/settings.py
+++ b/dmoj/settings.py
@@ -602,8 +602,9 @@
 
 WEBAUTHN_RP_ID = None
 
+LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py') if os.environ.get('DEBUG', '0') == '1' else '/local_settings.py'
 try:
-    with open(os.path.join(os.path.dirname(__file__), 'local_settings.py')) as f:
+    with open(LOCAL_SETTINGS_PATH) as f:
         exec(f.read(), globals())
 except IOError as e:
     raise ImportError('Could not import local_settings.py: %s' % e) from IOError

From e2a15e8fce335f06fcf36141e48131a57707ced9 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Thu, 3 Oct 2024 00:29:45 -0400
Subject: [PATCH 47/57] Lint

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 dmoj/settings.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/dmoj/settings.py b/dmoj/settings.py
index 75c8809973..075e359b86 100644
--- a/dmoj/settings.py
+++ b/dmoj/settings.py
@@ -602,7 +602,10 @@
 
 WEBAUTHN_RP_ID = None
 
-LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py') if os.environ.get('DEBUG', '0') == '1' else '/local_settings.py'
+if os.environ.get('DEBUG', '0') == '1':
+    LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py')
+else:
+    LOCAL_SETTINGS_PATH = '/local_settings.py'
 try:
     with open(LOCAL_SETTINGS_PATH) as f:
         exec(f.read(), globals())

From 47d6cb03058e6d29d9463e3ea17e4cccf8d4c6a0 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Thu, 3 Oct 2024 00:47:51 -0400
Subject: [PATCH 48/57] Fix settings

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 dmoj/settings.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/dmoj/settings.py b/dmoj/settings.py
index 075e359b86..643ff8f679 100644
--- a/dmoj/settings.py
+++ b/dmoj/settings.py
@@ -602,10 +602,10 @@
 
 WEBAUTHN_RP_ID = None
 
-if os.environ.get('DEBUG', '0') == '1':
-    LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py')
-else:
+if os.environ.get('DEBUG', '0') == '0' and os.path.exists('/local_settings.py'):
     LOCAL_SETTINGS_PATH = '/local_settings.py'
+else:
+    LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py')
 try:
     with open(LOCAL_SETTINGS_PATH) as f:
         exec(f.read(), globals())

From 201e58926675ea6e83703464a00c4749a4a6317e Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Thu, 3 Oct 2024 01:04:18 -0400
Subject: [PATCH 49/57] Revert: all settings changes

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 dmoj/settings.py | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/dmoj/settings.py b/dmoj/settings.py
index 643ff8f679..c2a30d77e1 100644
--- a/dmoj/settings.py
+++ b/dmoj/settings.py
@@ -602,12 +602,8 @@
 
 WEBAUTHN_RP_ID = None
 
-if os.environ.get('DEBUG', '0') == '0' and os.path.exists('/local_settings.py'):
-    LOCAL_SETTINGS_PATH = '/local_settings.py'
-else:
-    LOCAL_SETTINGS_PATH = os.path.join(os.path.dirname(__file__), 'local_settings.py')
 try:
-    with open(LOCAL_SETTINGS_PATH) as f:
+    with open(os.path.join(os.path.dirname(__file__), 'local_settings.py')) as f:
         exec(f.read(), globals())
 except IOError as e:
     raise ImportError('Could not import local_settings.py: %s' % e) from IOError

From c0c924eb4faa9292f1838cb4c421b5fbabdd2076 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 9 Oct 2024 01:59:55 -0400
Subject: [PATCH 50/57] Update menu on hover styles

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 resources/vars-default.scss | 2 +-
 resources/widgets.scss      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/resources/vars-default.scss b/resources/vars-default.scss
index 7682208098..fa678a4946 100644
--- a/resources/vars-default.scss
+++ b/resources/vars-default.scss
@@ -7,7 +7,7 @@ $color_primary5: #f8f8f8;   // light background
 $color_primary10: #eee;     // background
 $color_primary25: #babae5;     // border
 $color_primary33: #aaa;     // widget
-$color_primary50: #808080;
+$color_primary50: #babae5;
 $color_primary66: #555;     // tabs
 $color_primary75: #3737b4;  // widget
 $color_primary90: #1F3EB1;
diff --git a/resources/widgets.scss b/resources/widgets.scss
index 3963b308af..d6d563ccb1 100644
--- a/resources/widgets.scss
+++ b/resources/widgets.scss
@@ -246,7 +246,7 @@ textarea:focus {
 
 // Bootstrap-y pagination
 ul.pagination a:hover {
-    background: rgba($color_primary100, 0.55);
+    background: rgba($color_primary75, 0.55);
 }
 
 ul.pagination {

From 95a8fff648f95e483853211fcec00a48bbe81a50 Mon Sep 17 00:00:00 2001
From: "blacksmith-sh[bot]"
 <157653362+blacksmith-sh[bot]@users.noreply.github.com>
Date: Tue, 15 Oct 2024 00:30:17 -0400
Subject: [PATCH 51/57] blacksmith.sh: Migrate workflows to Blacksmith (#79)

This PR migrates some selected workflows to Blacksmith.

Co-authored-by: blacksmith-sh[bot] <157653362+blacksmith-sh[bot]@users.noreply.github.com>
---
 .github/workflows/build.yml           | 14 +++++++-------
 .github/workflows/compilemessages.yml |  4 ++--
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 56333b47a6..915c94b14d 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -2,11 +2,11 @@ name: build
 on: [push, pull_request]
 jobs:
   lint:
-    runs-on: ubuntu-latest
+    runs-on: blacksmith-4vcpu-ubuntu-2204
     steps:
     - uses: actions/checkout@v4
     - name: Set up Python 3.7
-      uses: actions/setup-python@v5
+      uses: useblacksmith/setup-python@v6
       with:
         python-version: '3.7'
     - name: Install flake8
@@ -16,15 +16,15 @@ jobs:
         flake8 --version
         flake8
   unit:
-    runs-on: ubuntu-latest
+    runs-on: blacksmith-4vcpu-ubuntu-2204
     steps:
     - uses: actions/checkout@v4
     - name: Set up Python 3.7
-      uses: actions/setup-python@v5
+      uses: useblacksmith/setup-python@v6
       with:
         python-version: '3.7'
     - name: Cache pip
-      uses: actions/cache@v4
+      uses: useblacksmith/cache@v5
       with:
         path: ~/.cache/pip
         key: pip-${{ runner.os }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('requirements.txt') }}
@@ -42,11 +42,11 @@ jobs:
       run: coverage xml
     - uses: codecov/codecov-action@v4
   styles:
-    runs-on: ubuntu-latest
+    runs-on: blacksmith-4vcpu-ubuntu-2204
     steps:
       - uses: actions/checkout@v4
       - name: Set up Node 20
-        uses: actions/setup-node@v4
+        uses: useblacksmith/setup-node@v5
         with:
           node-version: 20
       - name: Install npm packages
diff --git a/.github/workflows/compilemessages.yml b/.github/workflows/compilemessages.yml
index 106b353fbe..a635cafc3d 100644
--- a/.github/workflows/compilemessages.yml
+++ b/.github/workflows/compilemessages.yml
@@ -8,11 +8,11 @@ on:
       - 'locale/**'
 jobs:
   compilemessages:
-    runs-on: ubuntu-latest
+    runs-on: blacksmith-4vcpu-ubuntu-2204
     steps:
     - uses: actions/checkout@v4
     - name: Set up Python 3.7
-      uses: actions/setup-python@v5
+      uses: useblacksmith/setup-python@v6
       with:
         python-version: '3.7'
     - name: Checkout submodules

From 05464c6919a4fc43f487366dc9d9e3dd3fec88a2 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Wed, 16 Oct 2024 20:18:25 -0400
Subject: [PATCH 52/57] Switch to 2 core workers

---
 .github/workflows/build.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 915c94b14d..f6190110f6 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -2,7 +2,7 @@ name: build
 on: [push, pull_request]
 jobs:
   lint:
-    runs-on: blacksmith-4vcpu-ubuntu-2204
+    runs-on: blacksmith-2vcpu-ubuntu-2204
     steps:
     - uses: actions/checkout@v4
     - name: Set up Python 3.7
@@ -16,7 +16,7 @@ jobs:
         flake8 --version
         flake8
   unit:
-    runs-on: blacksmith-4vcpu-ubuntu-2204
+    runs-on: blacksmith-2vcpu-ubuntu-2204
     steps:
     - uses: actions/checkout@v4
     - name: Set up Python 3.7
@@ -42,7 +42,7 @@ jobs:
       run: coverage xml
     - uses: codecov/codecov-action@v4
   styles:
-    runs-on: blacksmith-4vcpu-ubuntu-2204
+    runs-on: blacksmith-2vcpu-ubuntu-2204
     steps:
       - uses: actions/checkout@v4
       - name: Set up Node 20

From 234bff5f88e5415f4e28c68e99f0797b2dddd125 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Tue, 29 Oct 2024 17:45:05 -0400
Subject: [PATCH 53/57] Delete judge/contest_format/bonuses.py

---
 judge/contest_format/bonuses.py | 144 --------------------------------
 1 file changed, 144 deletions(-)
 delete mode 100644 judge/contest_format/bonuses.py

diff --git a/judge/contest_format/bonuses.py b/judge/contest_format/bonuses.py
deleted file mode 100644
index 678d599ba6..0000000000
--- a/judge/contest_format/bonuses.py
+++ /dev/null
@@ -1,144 +0,0 @@
-from datetime import timedelta
-
-from django.core.exceptions import ValidationError
-from django.db.models import (
-    ExpressionWrapper,
-    F,
-    FloatField,
-    Max,
-    Min,
-    OuterRef,
-    Subquery,
-)
-from django.template.defaultfilters import floatformat
-from django.urls import reverse
-from django.utils.html import format_html
-from django.utils.safestring import mark_safe
-from django.utils.translation import gettext_lazy
-
-from judge.contest_format.default import DefaultContestFormat
-from judge.contest_format.registry import register_contest_format
-from judge.utils.timedelta import nice_repr
-
-
-@register_contest_format('bonuses')
-class BonusesContestFormat(DefaultContestFormat):
-    name = gettext_lazy('Bonuses')
-    config_defaults = {
-        'time_bonus': 0,
-        'first_submission_bonus': 0,
-    }
-    """
-        time_bonus: Number of minutes to award an extra point for submitting before the contest end.
-        first_submission_bonus: Bonus points for fully solving on first submission.
-    """
-
-    @classmethod
-    def validate(cls, config):
-        if not isinstance(config, dict):
-            raise ValidationError('bonuses contest expects a dict as config')
-        for key in config.keys():
-            if key not in cls.config_defaults:
-                raise ValidationError('unknown config key "%s"' % key)
-
-    def __init__(self, contest, config):
-        super().__init__(contest, self.config_defaults.copy())
-        self.config.update(config)
-
-    def update_participation(self, participation):
-        cumtime = 0
-        score = 0
-        format_data = {}
-
-        total_wrapper = ExpressionWrapper(
-            F('points') + F('bonus'), output_field=FloatField(),
-        )
-        queryset = (
-            participation.submissions.values('problem_id')
-            .annotate(total=total_wrapper)
-            .filter(
-                total=Subquery(
-                    participation.submissions.filter(problem_id=OuterRef('problem_id'))
-                    .annotate(best=total_wrapper)
-                    .order_by('-best')
-                    .values('best')[:1],
-                ),
-            )
-            .annotate(time=Min('submission__date'), points=Max('points'))
-            .values_list('problem_id', 'time', 'points', 'total')
-        )
-
-        for problem_id, time, points, total in queryset:
-            dt = (time - participation.start).total_seconds()
-            if total:
-                score += total
-                cumtime += dt
-            format_data[str(problem_id)] = {
-                'points': points,
-                'bonus': total - points,
-                'time': dt,
-            }
-
-        queryset = (
-            participation.submissions.values('problem_id', 'problem__points')
-            .filter(
-                submission__date=Subquery(
-                    participation.submissions.filter(problem_id=OuterRef('problem_id'))
-                    .order_by('submission__date')
-                    .values('submission__date')[:1],
-                ),
-            )
-            .annotate(points=Max('points'))
-            .values_list('problem_id', 'points', 'problem__points')
-        )
-
-        for problem_id, points, problem_points in queryset:
-            format_data[str(problem_id)].update(
-                {
-                    'first_solve': points == problem_points,
-                },
-            )
-
-        participation.cumtime = max(cumtime, 0)
-        participation.score = score
-        participation.tiebreaker = 0
-        participation.format_data = format_data
-        participation.save()
-
-    def display_user_problem(self, participation, contest_problem):
-        format_data = (participation.format_data or {}).get(str(contest_problem.id))
-        if format_data:
-            pretest = (
-                'pretest-'
-                if self.contest.run_pretests_only and contest_problem.is_pretested
-                else ''
-            )
-            first_solve = ' first-solve' if format_data['first_solve'] else ''
-            bonus = (
-                format_html(
-                    '<font style="font-size:10px;"> +{bonus}</font>',
-                    bonus=floatformat(format_data['bonus']),
-                )
-                if format_data['bonus']
-                else ''
-            )
-
-            return format_html(
-                '<td class="{state}"><a href="{url}">{points}{bonus}<div class="solving-time">{time}</div></a></td>',
-                state=pretest + self.best_solution_state(
-                    format_data['points'], contest_problem.points,
-                ) + first_solve,
-                url=reverse(
-                    'contest_user_submissions',
-                    args=[
-                        self.contest.key,
-                        participation.user.user.username,
-                        contest_problem.problem.code,
-                    ],
-                ),
-                points=floatformat(format_data['points']),
-                bonus=bonus,
-                time=nice_repr(timedelta(seconds=format_data['time']), 'noday'),
-            )
-        else:
-            return mark_safe('<td></td>')

From db0b0891b916e5c60ee027fe7865a7cd27025e8e Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Tue, 29 Oct 2024 18:34:56 -0400
Subject: [PATCH 54/57] Remove BonusesContestFormat

---
 judge/contest_format/__init__.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/judge/contest_format/__init__.py b/judge/contest_format/__init__.py
index 65e7f36483..acefe4c9fa 100644
--- a/judge/contest_format/__init__.py
+++ b/judge/contest_format/__init__.py
@@ -1,5 +1,4 @@
 from judge.contest_format.atcoder import AtCoderContestFormat
-from judge.contest_format.bonuses import BonusesContestFormat
 from judge.contest_format.default import DefaultContestFormat
 from judge.contest_format.ecoo import ECOOContestFormat
 from judge.contest_format.icpc import ICPCContestFormat

From e262508af327892c6277abd0225876e29bfde9a6 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Tue, 29 Oct 2024 21:02:26 -0400
Subject: [PATCH 55/57] Update tasks to use icon.svg

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 templates/task_status.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/templates/task_status.html b/templates/task_status.html
index 6a019d5437..ec0d897143 100644
--- a/templates/task_status.html
+++ b/templates/task_status.html
@@ -77,7 +77,7 @@
 <div class="container">
     <div class="jumbotron" data-task-id="{{ task_id }}" data-task-status="{{ task_status }}"
          data-redirect="{{ redirect }}">
-        <img src="{{ static('icons/icon.svg') }}" class="icon" alt="DMOJ Icon">
+        <img src="{{ static('icons/logo.svg') }}" class="icon" alt="WLMOJ Icon">
         <p class="action">{{ message }}</p>
         <p class="stage"></p>
 

From fda07dd892aef996ec7aed242c7d3ba8bf909cec Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Sat, 2 Nov 2024 22:29:53 -0400
Subject: [PATCH 56/57] Add in a new (custom) bonuses fmt

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/contest_format/__init__.py |  1 +
 judge/contest_format/bonuses.py  | 97 ++++++++++++++++++++++++++++++++
 2 files changed, 98 insertions(+)
 create mode 100644 judge/contest_format/bonuses.py

diff --git a/judge/contest_format/__init__.py b/judge/contest_format/__init__.py
index acefe4c9fa..65e7f36483 100644
--- a/judge/contest_format/__init__.py
+++ b/judge/contest_format/__init__.py
@@ -1,4 +1,5 @@
 from judge.contest_format.atcoder import AtCoderContestFormat
+from judge.contest_format.bonuses import BonusesContestFormat
 from judge.contest_format.default import DefaultContestFormat
 from judge.contest_format.ecoo import ECOOContestFormat
 from judge.contest_format.icpc import ICPCContestFormat
diff --git a/judge/contest_format/bonuses.py b/judge/contest_format/bonuses.py
new file mode 100644
index 0000000000..59837a1711
--- /dev/null
+++ b/judge/contest_format/bonuses.py
@@ -0,0 +1,97 @@
+from datetime import timedelta
+
+from django.db import connection
+from django.template.defaultfilters import floatformat
+from django.urls import reverse
+from django.utils.html import format_html
+from django.utils.safestring import mark_safe
+from django.utils.translation import gettext as _, gettext_lazy
+
+from judge.contest_format.default import DefaultContestFormat
+from judge.contest_format.registry import register_contest_format
+from judge.timezone import from_database_time
+from judge.utils.timedelta import nice_repr
+
+
+@register_contest_format('bonuses')
+class BonusesContestFormat(DefaultContestFormat):
+    """
+    Used as a way to break ties by the sum of the last score
+     altering submission time on problems with a non-zero score.'
+    """
+
+    name = gettext_lazy('Bonuses')
+
+    def __init__(self, contest, config):
+        self.config = self.config_defaults.copy()
+        self.config.update(config or {})
+        self.contest = contest
+
+    def update_participation(self, participation):
+        cumtime = 0
+        points = 0
+        format_data = {}
+
+        with connection.cursor() as cursor:
+            cursor.execute(
+                """
+                SELECT MAX(cs.points) as `score`, (
+                    SELECT MIN(csub.date)
+                        FROM judge_contestsubmission ccs LEFT OUTER JOIN
+                             judge_submission csub ON (csub.id = ccs.submission_id)
+                        WHERE ccs.problem_id = cp.id AND ccs.participation_id = %s AND ccs.points = MAX(cs.points)
+                ) AS `time`, cp.id AS `prob`
+                FROM judge_contestproblem cp INNER JOIN
+                     judge_contestsubmission cs ON (cs.problem_id = cp.id AND cs.participation_id = %s) LEFT OUTER JOIN
+                     judge_submission sub ON (sub.id = cs.submission_id)
+                GROUP BY cp.id
+            """,
+                (participation.id, participation.id),
+            )
+
+            for score, time, prob in cursor.fetchall():
+                time = from_database_time(time)
+                dt = (time - participation.start).total_seconds()
+
+                if score:
+                    cumtime = max(cumtime, dt)
+
+                format_data[str(prob)] = {'time': dt, 'points': score}
+                points += score
+
+        participation.cumtime = cumtime
+        participation.score = round(points, self.contest.points_precision)
+        participation.tiebreaker = 0
+        participation.format_data = format_data
+        participation.save()
+
+    def display_user_problem(self, participation, contest_problem):
+        format_data = (participation.format_data or {}).get(str(contest_problem.id))
+        if format_data:
+            return format_html(
+                '<td class="{state}"><a href="{url}">{points}<div class="solving-time">{time}</div></a></td>',
+                state=(
+                    (
+                        'pretest-' if self.contest.run_pretests_only and contest_problem.is_pretested
+                        else ''
+                    ) + self.best_solution_state(
+                        format_data['points'], contest_problem.points,
+                    ),
+                ),
+                url=reverse(
+                    'contest_user_submissions',
+                    args=[
+                        self.contest.key,
+                        participation.user.user.username,
+                        contest_problem.problem.code,
+                    ],
+                ),
+                points=floatformat(format_data['points']),
+                time=nice_repr(timedelta(seconds=format_data['time']), 'noday'),
+            )
+        else:
+            return mark_safe('<td></td>')
+
+    def get_short_form_display(self):
+        yield _('The maximum score submission for each problem will be used.')
+        yield _('Ties will be broken by the last score altering submission time.')

From 79755f5aaf038289c78070632b427fececb3be38 Mon Sep 17 00:00:00 2001
From: Jason Cameron <git@jasoncameron.dev>
Date: Sat, 2 Nov 2024 22:45:04 -0400
Subject: [PATCH 57/57] Remove config defaults

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
---
 judge/contest_format/bonuses.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/judge/contest_format/bonuses.py b/judge/contest_format/bonuses.py
index 59837a1711..042ebf796e 100644
--- a/judge/contest_format/bonuses.py
+++ b/judge/contest_format/bonuses.py
@@ -23,8 +23,7 @@ class BonusesContestFormat(DefaultContestFormat):
     name = gettext_lazy('Bonuses')
 
     def __init__(self, contest, config):
-        self.config = self.config_defaults.copy()
-        self.config.update(config or {})
+        self.config = config or {}
         self.contest = contest
 
     def update_participation(self, participation):