Co-authored-by: justcool393 <justcool393@gmail.com>
Co-authored-by: Snakes <duolsm@outlook.com>
Co-authored-by: Nekobit Bitneko <me@ow.nekobit.net>
Reviewed-on: #79
Co-authored-by: geese_suck <deandre.williams@geese-suck.us>
Co-committed-by: geese_suck <deandre.williams@geese-suck.us>
pull/80/head
geese_suck 2022-12-19 01:20:14 +00:00 committed by Aevann
parent ec228f269f
commit 1574b4da63
131 changed files with 2314 additions and 77 deletions

View File

@ -16,9 +16,10 @@ class AwardRelationship(Base):
user_id = Column(Integer, ForeignKey("users.id"))
submission_id = Column(Integer, ForeignKey("submissions.id"))
comment_id = Column(Integer, ForeignKey("comments.id"))
kind = Column(String)
kind = Column(String, nullable=False)
awarded_utc = Column(Integer)
created_utc = Column(Integer)
price_paid = Column(Integer, default = 0, nullable=False)
user = relationship("User", primaryjoin="AwardRelationship.user_id==User.id", back_populates="awards")
post = relationship("Submission", primaryjoin="AwardRelationship.submission_id==Submission.id", back_populates="awards")

View File

@ -259,6 +259,10 @@ class User(Base):
if not FEATURES['HATS']:
return ''
if HOLIDAY_EVENT:
from files.events.helpers.const import EVENT_FORCED_HATS
if EVENT_FORCED_HATS: return random.choice(EVENT_FORCED_HATS)
if self.is_cakeday:
return '/i/hats/Cakeday.webp'

View File

@ -1,6 +1,6 @@
from sqlalchemy import inspect
from files.helpers.config.awards import AWARDS_ENABLED, AWARDS_DISABLED
from files.helpers.config.awards import AWARDS, AWARDS_ENABLED, AWARDS_DISABLED
from files.__main__ import engine
from files.events.classes import *
@ -22,6 +22,8 @@ def _populate_awards():
if award in AWARDS_DISABLED:
AWARDS_DISABLED.remove(award)
AWARDS.update(EVENT_AWARDS)
def event_init():
_build_table()

View File

@ -0,0 +1,50 @@
/* text */
@font-face{
font-family: "Plakat-Fraktur";
src: url("/assets/fonts/event/Plakat-Fraktur-Black.woff") format("woff");
}
@media (max-width: 767.98px) {
#banner-title {
transform: scale(1.4) translate(-190px, -60px);
}
}
/* stars */
.star {
animation: linear infinite snow;
animation-delay:-4s;
}
.star1 {animation-duration: 5s;}
.star2 {animation-duration: 4.5s;}
.star3 {animation-duration: 7s;}
.star4 {animation-duration: 6s;}
.star5 {animation-duration: 8s;}
@media (max-width: 767.98px) {
.star {
animation: none;
fill-opacity: 0.5;
}
.star1 circle {
r: 1;
}
.star2 circle {
r: 1.5;
}
.star3 circle {
r: 2;
}
.star4 circle {
r: 2;
}
.star5 circle {
r: 2.5;
}
}
@keyframes snow {
from {transform: translateY(-60%)}
to {transform: translateY(60%)}
}

View File

@ -0,0 +1,571 @@
@charset "UTF-8";
/* Fonts */
@font-face {
font-family: "Burbank Small Medium";
src: url("/assets/fonts/event/Burbank-Small-Medium.woff2") format("woff2"),
url("/assets/fonts/event/Burbank-Small-Medium.woff") format("woff"),
url("/assets/fonts/event/Burbank-Small-Medium.ttf") format("truetype");
}
:root {
--primary: #9b161a;
--secondary: #c7c7c7;
--dark: #c7c7c7;
--muted: #131512;
--gray: #c7c7c7;
--white: #131512;
--black: #131512;
--background: #c1f3ff;
--gray-100: #131512;
--gray-200: #131512;
--gray-400: #e6faff;
--gray-500: #e6faff;
--gray-600: #e6faff;
--gray-700: #e6faff;
--gray-800: #e6faff;
--gray-900: #e6faff;
}
#frontpage .posts .card, #userpage .posts .card, #search .posts .card {
border-color: #a7e5fb;
}
body {
font-family: 'Burbank Small Medium', sans-serif;
background-color: var(--background) !important;
background-image: url('/i/event/pattern.png') !important;
overflow-x: hidden;
}
* {
border-color: var(--primary);
}
.border {
border-color: var(--primary) !important;
}
.form-control {
background: transparent;
border-color: var(--primary) !important;
}
.btn {
background: var(--primary) !important;
border-color: var(--primary) !important;
border-width: 2px;
color: #fff !important;
}
.btn .fas {
color: #fff !important;
}
.form-control:disabled, .form-control[readonly] {
background: transparent;
border-color: var(--primary) !important;
}
.btn-success {
border-color: #38A169 !important;
}
.btn-danger {
border-color: #E53E3E !important;
}
#frontpage .pseudo-submit-form.card .card-body .form-control {
border-color: transparent !important;
}
.btn-lg {
border-color: transparent !important;
}
pre {
color: #CFCFCF;
}
.transparent {
background: None !important;
}
#frontpage .post-title a:visited {
color: #7a7a7a !important;
}
.post-title a, h1.post-title {
font-family: 'Burbank Small Medium', cursive;
font-size: 1.25rem;
}
.arrow-up::before, .arrow-down::before {
content: '\f7dc';
width: 20px;
}
.arrow-down::before {
display: inline-block;
transform: rotate(180deg);
}
.arrow-up.active::before, .arrow-down.active::before {
content: '\f7db';
}
.comment {
background-color: var(--gray-600);
}
.comment-actions .btn {
background-color: transparent !important;
color: var(--gray-200) !important;
}
.comment-actions .fas {
color: var(--gray-200) !important;
}
.comment-actions .btn::after{
background: none !important;
}
#thread .card {
padding: 0.5rem;
}
body {
cursor: url(/assets/images/event/cursor.png?v=1), auto !important;
}
textarea, input[type=textbox], input[type=search] {
cursor: url(/assets/images/event/text.png?v=1), auto !important;
}
.btn, input[type=button], button, a, img {
cursor: url(/assets/images/event/pointer.png?v=1), auto !important;
}
.fa-moon-over-sun:before{content:"\f74a"}
.fa-temperature-snow:before{content:"\f768"}
.award-name {
color: var(--gray-200)
}
.sidebar {
background-color: var(--gray-600);
}
.form-control {
background: var(--gray-600);
}
/* lights */
.navbar::after, .lights::after {
content: "";
position: absolute;
top: 0;
left: 0;
height: 57px;
width: 100%;
background: url('/i/event/lights.png?v=1');
animation: lights 1s infinite steps(2);
pointer-events: none;
}
@keyframes lights {
0% {
/*Two zeros, not one !!*/
/*[0] is equivalent to [0 50%] and will create a different animation */
background-position: 0 0;
}
100% {
background-position: 0 -138px;
}
}
/* snowcaps */
.btn, .snow-cap {
position: relative;
}
.btn::after, .snow-cap::after {
content: '';
pointer-events: none;
background: url("/i/event/snowcap.png?v=1") repeat-x;
background-size: contain;
position: absolute;
bottom: -18px;
left: 0;
right: 0;
height: 23px;
border: none;
border-radius: 9999px;
}
/* snow effect */
body {
background-color: #1f1f1f;
background-blend-mode: soft-light;
}
.color {
width: 20%;
height: 100%;
float: left
}
.color p {
position: relative;
z-index: 1231231;
text-align: center;
line-height: 90vh;
}
.color:nth-child(1){
background-color: #F5624D;
}
.color:nth-child(2){
background-color: #CC231E;
}
.color:nth-child(3){
background-color: #34A65F;
}
.color:nth-child(4){
background-color: #0F8A5F;
}
.color:nth-child(5){
background-color: #235E6F;
}
#snow {
height: 100%;
color: #FFF;
display: block;
}
/* candy cane */
.candy-cane {
height: 125px;
width: 125px;
position: fixed;
right: 0;
bottom: -9px;
transform: rotate(15deg);
transition: 200ms ease-out;
background-image: url("/i/event/candy-cane.svg");
background-repeat: no-repeat;
background-size: contain;
}
.candy-cane:hover {
transform: translateY(4px) rotate(17deg);
}
.candy-cane::before {
content: '';
width: 4px;
height: 80%;
background-color: rgba(255,255,255,0.7);
display: block;
position: absolute;
right: 39px;
bottom: 0;
border-radius: 9999px;
}
/*sign */
#sign {
position: fixed;
bottom: -0.75rem;
left: 1.5rem;
transform: rotate(-3deg);
pointer-events: none;
}
/* Need to account for small screens */
@media screen and (min-height: 800px) {
#sign {
z-index: 999999;
}
}
#sign > img {
width: 156px;
}
#sign > ul {
position: absolute;
top: 4px;
left: 20px;
list-style: none;
display: flex;
gap: 4px;
}
#sign > ul li {
display: flex;
align-items: center;
justify-content: center;
color: #FFFFFF;
font-size: 28px;
font-weight: bold;
transform: rotate(6deg);
}
#sign > ul li:nth-child(1) {
transform: rotate(-4deg);
}
.sign.snow-cap::after {
top: -6px;
left: 2px;
width: 97%;
height: 17px;
}
/* awards */
/* gingerbread */
.fall-snowflake {
color: #fff;
font-size: 1em;
font-family: Serif;
text-shadow: 0 0 1px #000;
pointer-events: none;
}
@-webkit-keyframes fall-snowflakes-fall {
0% {
top: -20%
}
100% {
top: 100%
}
}
@-webkit-keyframes fall-snowflakes-shake {
0% {
-webkit-transform: translateX(0px);
transform: translateX(0px)
}
50% {
-webkit-transform: translateX(80px);
transform: translateX(80px)
}
100% {
-webkit-transform: translateX(0px) rotate(360deg);
transform: translateX(0px) rotate(360deg);
}
}
@keyframes fall-snowflakes-fall {
0% {
top: -20%
}
100% {
top: 100%
}
}
@keyframes fall-snowflakes-shake {
0% {
transform: translateX(0px)
}
50% {
transform: translateX(80px)
}
100% {
transform: translateX(0px) rotate(360deg);
}
}
.fall-snowflake {
position: fixed;
top: -20%;
z-index: 9999;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: default;
-webkit-animation-name: fall-snowflakes-fall, fall-snowflakes-shake;
-webkit-animation-duration: 10s, 4s;
-webkit-animation-timing-function: linear, ease-in-out;
-webkit-animation-iteration-count: infinite, infinite;
-webkit-animation-play-state: running, running;
animation-name: fall-snowflakes-fall, fall-snowflakes-shake;
animation-duration: 10s, 4s;
animation-timing-function: linear, ease-in-out;
animation-iteration-count: infinite, infinite;
animation-play-state: running, running
}
.fall-snowflake:nth-of-type(0) {
left: 1%;
-webkit-animation-delay: 0s, 0s;
animation-delay: 0s, 0s
}
.fall-snowflake:nth-of-type(1) {
left: 10%;
-webkit-animation-delay: 1s, 1s;
animation-delay: 1s, 1s
}
.fall-snowflake:nth-of-type(2) {
left: 20%;
-webkit-animation-delay: 6s, .5s;
animation-delay: 6s, .5s
}
.fall-snowflake:nth-of-type(3) {
left: 30%;
-webkit-animation-delay: 4s, 2s;
animation-delay: 4s, 2s
}
.fall-snowflake:nth-of-type(4) {
left: 40%;
-webkit-animation-delay: 2s, 2s;
animation-delay: 2s, 2s
}
.fall-snowflake:nth-of-type(5) {
left: 50%;
-webkit-animation-delay: 8s, 3s;
animation-delay: 8s, 3s
}
.fall-snowflake:nth-of-type(6) {
left: 60%;
-webkit-animation-delay: 6s, 2s;
animation-delay: 6s, 2s
}
.fall-snowflake:nth-of-type(7) {
left: 70%;
-webkit-animation-delay: 2.5s, 1s;
animation-delay: 2.5s, 1s
}
.fall-snowflake:nth-of-type(8) {
left: 80%;
-webkit-animation-delay: 1s, 0s;
animation-delay: 1s, 0s
}
.fall-snowflake:nth-of-type(9) {
left: 90%;
-webkit-animation-delay: 3s, 1.5s;
animation delay: 3s, 1.5s
}
.fall-snowflake:nth-of-type(10) {
left: 100%;
-webkit-animation-delay: 3s, 2s;
animation-delay: 3s, 2s
}
.fall-snowflake:nth-of-type(11) {
left: 5%;
-webkit-animation-delay: 1s, 4s;
animation-delay: 1s, 4s
}
.fall-snowflake:nth-of-type(12) {
left: 15%;
-webkit-animation-delay: 1s, 1.5s;
animation-delay: 1s, 1.5s
}
.fall-snowflake:nth-of-type(13) {
left: 25%;
-webkit-animation-delay: 6s, 2.5s;
animation-delay: 6s, 2.5s
}
.fall-snowflake:nth-of-type(14) {
left: 35%;
-webkit-animation-delay: 4s, 1s;
animation-delay: 4s, 1s
}
.fall-snowflake:nth-of-type(15) {
left: 45%;
-webkit-animation-delay: 2s, 4s;
animation-delay: 2s, 4s
}
.fall-snowflake:nth-of-type(16) {
left: 55%;
-webkit-animation-delay: 8s, 3s;
animation-delay: 8s, 3s
}
.fall-snowflake:nth-of-type(17) {
left: 65%;
-webkit-animation-delay: 6s, 3s;
animation-delay: 6s, 3s
}
.fall-snowflake:nth-of-type(18) {
left: 75%;
-webkit-animation-delay: 2.5s, 4s;
animation-delay: 2.5s, 4s
}
.fall-snowflake:nth-of-type(19) {
left: 85%;
-webkit-animation-delay: 2s, 0s;
animation-delay: 2s, 0s
}
.fall-snowflake:nth-of-type(20) {
left: 95%;
-webkit-animation-delay: 3s, 1.5s;
animation delay: 3s, 1.5s
}
.animate-spin {
animation: spin 5600ms linear infinite;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/* vvv kill yourself vscodelet vvv */
/* */
/* Change mobile navbar icon colors to basketball */
#mobile-bottom-navigation-bar i {
color: var(--gray-200)!important;
}
#mobile-bottom-navigation-bar {
box-shadow: 0px 2px 5px #000000cc;
/* wtf??? */
z-index:9999999 !important;
}
/* Revert the snowcaps on it, is bad */
#mobile-bottom-navigation-bar button:after {
background: unset;
/* Real work, lol */
display: none;
}
@media (max-width: 767.98px) {
.candy-cane, .sign {
bottom: 0.9rem !important;
}
}
/*footer*/
footer::after {
content: "";
display: block;
position: fixed;
bottom: 0;
left: 0;
height: 320px;
width: 100%;
background-image: url("/i/event/footer.svg");
background-size: cover;
background-repeat: no-repeat;
pointer-events: none;
z-index: -1;
}

View File

@ -0,0 +1,22 @@
:root {
--primary: #9b161a;
--secondary: #101819;
--dark: #101819;
--muted: #e6faff;
--gray: #101819;
--white: #e6faff;
--black: #e6faff;
--background: #101819;
--gray-100: #e6faff;
--gray-200: #e6faff;
--gray-400: #101819;
--gray-500: #101819;
--gray-600: #101819;
--gray-700: #101819;
--gray-800: #101819;
--gray-900: #101819;
}
/*#banner-skybox {
fill: url(#skybox-gradient-night);
}*/

View File

@ -0,0 +1 @@
/**/

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1 @@
<svg version='1.1' class='candy-cane' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 100 100' enable-background='new 0 0 100 100' xml:space='preserve'><g><path fill='#FFFFFF' d='M63.7,97.7c-3.7,0-6.8-3-6.8-6.8V27.1c0-0.3,0-0.6,0.1-0.9c0,0,0,0,0,0c0,0,0.2-2.8-1.2-4.3 c-1.3-1.4-3.9-2.4-5.8-2.4c-2.8,0-4.8,1.3-6,2.5c-1.6,1.8-1.5,4.9-1.5,4.9c0.4,3.7-2.4,7.1-6.1,7.4c-3.7,0.4-7.1-2.4-7.4-6.1 c-0.1-0.9-0.7-9.1,4.9-15.4c2.6-2.9,7.5-6.3,16-6.3c8.7,0,13.5,3.5,16.1,6.4c4.8,5.5,4.6,12.4,4.5,14.5v63.5 C70.5,94.7,67.4,97.7,63.7,97.7z'></path></g><g><path fill='#9B161A' d='M29,28.2c0.1,1.1,0.5,2.1,1.1,3L54.6,7c-1.4-0.2-3-0.4-4.7-0.4c-2.5,0-4.6,0.3-6.5,0.8L29.6,21 C28.7,24.7,28.9,27.7,29,28.2z'></path><polygon fill='#9B161A' points='56.9,75.9 70.5,62.5 70.5,51.9 56.9,65.3 '></polygon><path fill='#9B161A' d='M56.9,90.9c0,2.4,1.2,4.5,3.1,5.7l10.5-10.4V75.6L56.9,89.1V90.9z'></path><polygon fill='#9B161A' points='56.9,52.2 70.5,38.7 70.5,28.1 56.9,41.5 '></polygon><path fill='#9B161A' d='M55.8,21.9c1.4,1.6,1.2,4.3,1.2,4.3c0,0,0,0,0,0c0,0.3-0.1,0.6-0.1,0.9v1.3l11.7-11.6 c-0.6-1.3-1.5-2.6-2.6-3.9c-0.6-0.7-1.3-1.4-2.2-2.1l-9.9,9.8C54.7,21,55.3,21.3,55.8,21.9z'></path></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@ -0,0 +1,115 @@
<svg width="199" height="198" viewBox="0 0 199 198" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.767 37.223V51.387L11.321 98.003L196.096 88.448L191.889 77.334L196.791 43.406L194.636 43.154L189.001 41.933L7.767 37.223Z" fill="#AA805E"/>
<path d="M86.835 131.369L88.267 195.813L93.5 197.5C93.5 197.5 102.635 191.233 109.715 193.403C116.795 195.572 118.194 195.887 118.194 195.887C118.194 195.887 118.771 130.666 119.015 130.574C119.262 130.48 86.835 131.369 86.835 131.369Z" fill="#AA805E"/>
<g opacity="0.4">
<path d="M104.063 190.786L104.641 190.799C104.686 188.513 104.737 185.922 105.877 183.819C105.99 183.609 106.13 183.382 106.302 183.285C106.587 183.122 107.028 183.313 107.262 183.597C107.579 183.982 107.703 184.547 107.801 185.092C108.272 187.675 108.375 189.585 108.372 192.216C108.309 192.195 109.146 192.438 109.531 192.569C109.545 189.757 109.446 187.686 108.938 184.885C108.817 184.22 108.646 183.46 108.152 182.863C107.618 182.217 106.588 181.792 105.728 182.283C105.305 182.524 105.052 182.918 104.862 183.269C103.588 185.621 103.533 188.36 103.485 190.777L103.486 190.765L104.063 190.786Z" fill="#8C674D"/>
<path d="M109.972 193.186L109.387 192.988C109.239 192.937 109.021 192.869 108.817 192.808V192.818L107.993 192.56L107.881 192.053L107.93 192.01C107.928 189.571 107.83 187.727 107.365 185.17C107.278 184.681 107.17 184.18 106.921 183.878C106.786 183.714 106.571 183.656 106.522 183.67C106.5 183.683 106.423 183.747 106.27 184.029C105.181 186.038 105.131 188.57 105.086 190.805L104.983 192.566L103.487 193.185H103.043V190.765C103.043 190.765 103.044 190.76 103.044 190.758H103.043L103.044 190.747C103.093 188.284 103.15 185.495 104.473 183.055C104.682 182.671 104.987 182.193 105.51 181.894C106.579 181.283 107.847 181.79 108.497 182.577C109.059 183.258 109.245 184.082 109.377 184.804C109.898 187.665 109.99 189.819 109.977 192.57L109.972 193.186ZM108.817 191.866C108.896 191.889 108.986 191.919 109.088 191.951C109.085 189.491 108.973 187.559 108.501 184.963C108.39 184.354 108.235 183.658 107.81 183.146C107.392 182.637 106.597 182.297 105.948 182.668C105.623 182.854 105.415 183.183 105.254 183.481C104.107 185.594 103.989 188.085 103.94 190.337L104.207 190.345C104.255 188.122 104.371 185.667 105.489 183.607C105.639 183.329 105.815 183.051 106.083 182.899C106.587 182.609 107.253 182.886 107.605 183.313C107.992 183.78 108.13 184.409 108.24 185.012C108.704 187.568 108.81 189.497 108.817 191.866Z" fill="#8C674D"/>
</g>
<g opacity="0.4">
<path d="M113.678 184.316L113.407 183.226C112.744 180.562 112.058 177.808 112.256 175.096C112.531 171.325 114.477 166.08 116.36 162.725L117.038 161.495V158.936L115.354 162.161C113.409 165.626 111.398 170.984 111.105 175.014C110.893 177.909 111.603 180.754 112.288 183.505L112.556 184.59C113.184 187.168 113.948 190.069 114.039 193.915C114.425 194.018 114.815 194.15 115.203 194.249C115.149 190.168 114.336 187.027 113.678 184.316Z" fill="#8C674D"/>
<path d="M115.654 194.819L115.093 194.678C114.873 194.623 114.653 194.556 114.432 194.49C114.262 194.439 114.093 194.387 113.923 194.343L113.603 194.257L113.595 193.924C113.509 190.358 112.834 187.599 112.239 185.164L111.856 183.61C111.164 180.826 110.446 177.947 110.661 174.98C110.971 170.741 113.109 165.251 114.966 161.942L118.602 155.45L118.555 159.651L116.75 162.939C114.942 166.16 112.974 171.378 112.7 175.127C112.508 177.77 113.185 180.488 113.839 183.116L114.203 184.593C114.856 187.268 115.596 190.3 115.646 194.24L115.654 194.819ZM114.473 193.575C114.545 193.596 114.617 193.618 114.688 193.639C114.708 193.645 114.725 193.651 114.745 193.657C114.633 190.102 113.947 187.297 113.341 184.804L112.978 183.332C112.307 180.637 111.612 177.847 111.815 175.063C112.097 171.184 114.121 165.81 115.974 162.506L116.594 161.379V160.744L115.748 162.364C113.932 165.601 111.847 170.941 111.548 175.045C111.343 177.869 112.043 180.679 112.719 183.396L113.102 184.953C113.69 187.357 114.354 190.074 114.473 193.575Z" fill="#8C674D"/>
</g>
<g opacity="0.4">
<path d="M94.697 142.087C94.79 142.108 94.882 142.118 94.972 142.118C95.621 142.118 96.207 141.588 96.543 140.67C97.523 137.994 97.989 136.507 97.647 133.654L96.476 133.656C96.797 136.329 96.375 137.767 95.457 140.272C95.292 140.724 95.066 140.983 94.954 140.96C94.917 140.953 94.816 140.896 94.644 140.541C93.771 138.742 93.546 135.61 93.828 133.633L92.474 133.741C92.161 135.944 92.633 139.041 93.604 141.044C93.724 141.288 94.037 141.935 94.697 142.087Z" fill="#8C674D"/>
<path d="M94.973 142.561C94.851 142.561 94.724 142.547 94.601 142.521L94.599 142.52C93.733 142.321 93.337 141.506 93.208 141.239C92.201 139.164 91.709 135.984 92.037 133.678L92.086 133.325L94.348 133.145L94.27 133.694C94.003 135.575 94.204 138.505 94.995 140.238C95.011 140.202 95.027 140.162 95.043 140.119C95.966 137.598 96.339 136.229 96.036 133.707L95.976 133.21L98.043 133.209L98.09 133.602C98.446 136.58 97.947 138.125 96.962 140.822C96.562 141.912 95.819 142.561 94.973 142.561ZM94.796 141.653C95.336 141.77 95.828 141.333 96.127 140.516C97.044 138.007 97.496 136.625 97.25 134.098L96.971 134.099C97.192 136.501 96.789 137.932 95.877 140.424C95.757 140.752 95.419 141.511 94.869 141.395C94.63 141.343 94.446 141.146 94.246 140.734C93.416 139.023 93.144 136.164 93.327 134.119L92.873 134.156C92.667 136.244 93.133 139.052 94.005 140.85C94.107 141.06 94.346 141.551 94.796 141.653Z" fill="#8C674D"/>
</g>
<g opacity="0.4">
<path d="M99.086 174.726C100.735 169.531 103.555 162.913 106.281 158.234C109.012 153.546 111.838 148.696 113.532 143.439C114.499 140.439 115.178 138.026 115.672 133.815L114.396 133.783C113.913 137.916 113.377 140.159 112.433 143.086C110.777 148.224 107.984 153.018 105.285 157.652C102.527 162.386 99.674 169.06 97.986 174.378C95.945 180.805 95.275 187.167 96.366 195.843C96.749 195.804 97.458 195.324 97.458 195.324C96.388 186.823 97.098 180.988 99.086 174.726Z" fill="#8C674D"/>
<path d="M95.979 196L95.924 195.569C94.882 187.286 95.372 180.81 97.561 173.914C99.35 168.282 102.23 161.683 104.9 157.1C107.589 152.482 110.369 147.711 112.01 142.621C112.911 139.822 113.459 137.63 113.953 133.403L114 133L116.168 133.054L116.111 133.537C115.599 137.922 114.862 140.427 113.953 143.246C112.243 148.553 109.406 153.42 106.664 158.129C104.103 162.525 101.227 169.116 99.509 174.533C97.383 181.226 96.916 187.139 97.897 194.939L97.93 195.21L97.704 195.362C97.57 195.453 96.879 195.907 96.409 195.955L95.979 196ZM114.789 133.908C114.298 137.948 113.745 140.131 112.855 142.892C111.185 148.075 108.381 152.888 105.669 157.543C103.027 162.077 100.178 168.607 98.407 174.183C96.307 180.794 95.802 187.021 96.737 194.905C96.816 194.863 96.9 194.818 96.98 194.769C96.028 186.971 96.519 181.01 98.661 174.262C100.398 168.792 103.305 162.128 105.896 157.68C108.615 153.014 111.427 148.187 113.108 142.973C113.968 140.305 114.67 137.925 115.171 133.917L114.789 133.908Z" fill="#8C674D"/>
</g>
<g opacity="0.4">
<path d="M94.401 155.799C95.188 154.604 96.001 153.37 96.758 152.132C100.479 146.051 102.862 140.637 104.428 133.654L103.149 133.633C101.61 140.492 99.428 145.557 95.773 151.529C95.026 152.75 94.217 153.976 93.437 155.163C91.829 157.605 89.161 161.708 87.89 164.376L87.972 168.04C89.091 163.675 92.816 158.208 94.401 155.799Z" fill="#8C674D"/>
<path d="M87.719 171.108L87.58 164.828L87.562 164.036C88.772 161.495 91.105 157.899 93.066 154.919C93.863 153.709 94.659 152.498 95.396 151.298C99.187 145.102 101.239 140.12 102.716 133.536L102.795 133.182L104.983 133.219L104.862 133.751C103.357 140.467 101.118 145.858 97.138 152.362C96.379 153.603 95.566 154.836 94.781 156.03L94.402 155.798L94.773 156.042L94.473 156.497C92.839 158.97 89.438 164.112 88.404 168.15L87.719 171.108ZM88.337 164.472L88.36 165.502C89.81 161.938 92.278 158.204 93.731 156.009L94.038 155.542C94.82 154.354 95.628 153.126 96.38 151.899C100.2 145.657 102.393 140.457 103.875 134.087L103.504 134.081C102.009 140.596 99.932 145.584 96.153 151.759C95.41 152.974 94.61 154.19 93.835 155.365C91.888 158.325 89.538 161.981 88.337 164.472Z" fill="#8C674D"/>
</g>
<g opacity="0.64">
<path d="M119 135.276C119 135.276 97.9094 134.348 86.835 135.276L87.081 143C87.081 143 107.311 142.448 118.888 143L119 135.276Z" fill="#5B412E"/>
</g>
<path d="M116.251 1.024C72.817 2.064 2.52399 1.365 2.52399 1.365L11 14.5L5.13999 18.392L5.30699 44.552L194.636 43.154L194.261 0.357998C194.261 0.357998 135.229 0.568998 116.251 1.024Z" fill="#967053"/>
<path d="M5.30599 44.551L0.662994 46C0.662994 46 3.70999 59.598 2.43699 74.33C1.16499 89.06 0.662994 91.781 0.662994 91.781C0.662994 91.781 22.67 91.47 71.657 90.102C120.643 88.737 169.143 85.718 195.729 87.111C195.729 87.111 198.14 65.826 196.792 43.406C196.792 43.406 175.235 43.792 129.036 44.272C82.837 44.751 5.30599 44.551 5.30599 44.551Z" fill="#AA805E"/>
<path d="M195.729 87.111L197.643 89C197.643 89 201.852 102.85 192.317 107.115L197.371 110.731L197.643 133.479C197.643 133.479 167.806 137.788 127.48 135.594C87.154 133.4 7.886 138.434 7.886 138.434C7.886 138.434 4.678 114.017 5.89 91.599C5.89 91.599 49.698 90.489 80.815 89.829C111.933 89.171 195.729 87.111 195.729 87.111Z" fill="#967053"/>
<g opacity="0.4">
<g opacity="0.8">
<g opacity="0.8">
<path d="M69.6395 24.8863C71.8502 25.8294 74.1441 25.8896 76.3649 25.9478C77.3314 25.9749 78.3003 26 79.2691 26C80.9821 26 83.2426 25.9308 85.5263 25.396C86.087 25.2636 86.7285 25.076 87.258 24.5141C87.87 23.862 88.2642 22.5908 87.7899 21.5193C87.5566 20.9925 87.1842 20.6845 86.8856 20.4768C84.9813 19.1445 82.8134 19.0903 80.9075 19.0421C76.9488 18.8375 73.1519 19.4685 69.6232 20.9233C68.5634 21.3597 68.2842 22.1273 68.2368 22.6951C68.1582 23.6583 68.6816 24.478 69.6395 24.8863ZM70.1069 22.8767C73.036 21.6678 76.1813 21.0547 79.4565 21.0547C79.9184 21.0547 80.3819 21.0668 80.8601 21.0909C82.5972 21.135 84.566 21.1852 86.1297 22.2778C86.3482 22.4313 86.3988 22.5075 86.4089 22.5306C86.4245 22.5828 86.377 22.7925 86.2479 22.9309C86.0116 23.1817 85.622 23.2891 85.2425 23.3774C83.5575 23.7727 81.7154 23.9483 79.2691 23.9483C78.3112 23.9483 77.3532 23.9232 76.3882 23.8971C74.2895 23.8419 72.1185 23.7837 70.1372 22.9379C70.1069 22.9259 70.0773 22.9119 70.0509 22.8978C70.0695 22.8928 70.0882 22.8848 70.1069 22.8767Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M5.16799 22.761L5.47999 22.752C13.243 22.526 24.086 22.182 31.849 21.929C37.79 21.734 43.933 21.534 49.99 20.326C52.927 19.742 55.837 18.914 58.695 18.102C60.635 17.55 62.641 16.979 64.653 16.492C72.2879 14.2862 84.2029 12.9512 95.266 18.023C97.925 19.242 100.475 20.843 102.94 22.393C104.16 23.161 105.54 24.029 106.893 24.816C114.525 29.254 123.183 32.217 131.934 33.385C137.635 34.147 143.463 34.175 149.098 34.201L194.561 34.399L194.556 33.953L194.542 32.355L149.105 32.157C143.539 32.131 137.782 32.104 132.203 31.36C123.72 30.227 115.322 27.353 107.92 23.05C106.584 22.272 105.226 21.417 104.022 20.659C101.502 19.076 98.897 17.438 96.118 16.165C85.024 11.081 72.622 12.456 64.17 14.505C62.12 15.003 60.095 15.579 58.136 16.136C55.347 16.928 52.464 17.749 49.591 18.321C43.704 19.495 37.648 19.694 31.783 19.885C24.094 20.137 13.404 20.448 5.65899 20.673L5.15599 20.688L5.15899 21.055L5.16799 22.761Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M92.586 33.729H92.401C89.819 33.745 87.236 34.034 84.735 34.312C82.25 34.59 79.68 34.877 77.076 34.884C71.418 34.884 65.746 33.477 60.258 32.116C55.21 30.863 49.988 29.567 44.682 29.32C41.42 29.167 38.169 29.411 35.025 29.644C25.954 30.317 13.42 31.62 5.44999 33.255L5.23399 33.3L5.24799 35.334L5.63599 35.255C13.397 33.661 25.985 32.365 35.176 31.683C38.265 31.454 41.458 31.218 44.587 31.36C49.693 31.598 54.814 32.868 59.776 34.101C65.378 35.49 71.17 36.927 77.161 36.927C79.797 36.92 82.423 36.627 84.968 36.342C87.413 36.07 89.942 35.788 92.418 35.773C96.234 35.711 101.552 36.413 105.209 40.08L106.07 40.997L108.541 40.986L107.375 39.486C104.422 35.773 99.169 33.729 92.586 33.729Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M61.066 41.19L67.895 41.158L62.417 39.523C56.161 37.016 48.407 35.936 39.374 36.303L5.26099 37.458L5.27499 39.532L39.456 38.344C45.918 38.075 52.699 38.804 58.552 40.385" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M133.105 14.203C134.566 14.203 136.02 14.034 137.426 13.698C138.065 13.545 138.964 13.245 139.396 12.397C139.661 11.878 139.68 11.281 139.452 10.715C139.162 9.997 138.463 9.355 137.673 9.083C136.803 8.783 134.907 8.51 133.044 8.257C130.753 7.931 128.345 8.308 126.266 9.317C125.997 9.448 125.183 9.841 124.985 10.71C124.758 11.701 125.408 12.606 126.682 13.072C128.731 13.822 130.893 14.203 133.105 14.203ZM131.408 10.185C131.858 10.185 132.312 10.217 132.788 10.283C134.004 10.45 136.264 10.758 137.005 11.014C137.259 11.101 137.495 11.326 137.58 11.464C137.565 11.484 137.469 11.585 136.952 11.71C133.812 12.462 130.415 12.264 127.384 11.153C127.342 11.137 127.302 11.121 127.265 11.105C128.546 10.502 129.977 10.185 131.408 10.185Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M39.0808 7.9567C43.5483 7.24422 48.6494 6.26446 52.6434 3.64365L53 3.41107L51.7529 2L51.3963 2.23431C47.7619 4.61821 42.9399 5.53809 38.7061 6.21412C29.5183 7.679 16.7817 8.59715 8.23454 8.85576L7.46999 8.87833L8.68381 10.594L8.94471 10.5862C17.1 10.338 29.2977 9.51791 39.0808 7.9567Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M154.386 19.1988C149.427 19.0743 144.302 18.9431 139.331 18.384C131.068 17.4535 122.931 15.2712 115.801 12.0716C114.578 11.5235 113.349 10.9304 112.156 10.3543C108.605 8.64136 104.933 6.86952 100.75 5.92797C95.7263 4.7956 90.4993 4.954 85.4463 5.10724L85 5.12124L85.1015 6.62492L85.5478 6.61166C90.4229 6.46431 95.4649 6.31328 100.147 7.36681C104.045 8.245 107.591 9.9557 111.025 11.6126C112.227 12.1924 113.471 12.7929 114.727 13.3557C122.088 16.6585 130.489 18.9122 139.019 19.8714C144.109 20.4446 149.296 20.5757 154.313 20.7032L194.447 21.742L194.43 20.214L154.386 19.1988Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M176.211 11.5549C169.95 11.4357 163.478 11.3135 157.27 10.3573C154.691 9.96096 152.676 9.49279 150.926 8.88409C149.087 8.24408 147.331 7.36425 145.632 6.51344C145.091 6.24308 144.55 5.97195 144.003 5.70693C140.269 3.89381 136.282 2.35182 132.158 1.12373L131.742 1L131 2.45416L131.414 2.57789C135.414 3.7678 139.28 5.26473 142.907 7.02286C143.393 7.26038 143.878 7.50096 144.362 7.74383L144.511 7.81791C146.271 8.70003 148.09 9.61193 150.076 10.3031C151.971 10.9622 154.127 11.4655 156.865 11.8871C163.244 12.8693 169.802 12.9938 176.163 13.1152L194.392 13.423L194.373 11.8352L176.211 11.5549Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M68.469 131.055C73.08 130.965 78.302 130.862 81.354 134.351L81.972 135.272L84.275 135.232L83.483 133.812C80.639 128.748 73.867 128.896 68.428 129.012C45.649 129.461 20.657 132.293 7.78699 133.94L7.37299 133.995C7.44199 134.649 7.50599 135.237 7.56399 135.757C7.56799 135.784 7.57099 135.815 7.57399 135.843C7.59299 136.008 7.60999 136.167 7.62799 136.319C7.62899 136.326 7.62899 136.331 7.62899 136.336L8.06599 136.28C33.126 133.071 52.883 131.363 68.469 131.055Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M110.652 126.218C104.933 125.325 99.395 123.118 94.015 120.973C90.002 119.372 85.852 117.718 81.594 116.593C68.435 113.118 54.687 114.729 41.393 116.283C31.793 117.407 15.098 118.335 6.49299 117.884L6.07599 117.863C6.11799 118.614 6.16199 119.355 6.20699 120.08C6.20699 120.085 6.20699 120.089 6.20799 120.094L6.52899 120.111C15.833 120.601 32.974 119.327 41.646 118.313C54.746 116.78 68.292 115.193 81.07 118.572C85.221 119.667 89.32 121.301 93.283 122.882C98.744 125.059 104.389 127.311 110.338 128.239C112.999 128.655 115.865 128.841 119.629 128.841C121.179 128.841 122.723 128.811 124.247 128.78L197.569 127.341L197.545 125.298L124.184 126.738C119.719 126.821 115.103 126.913 110.652 126.218Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M6.234 114.709C6.718 114.723 7.509 114.726 8.398 114.726C9.422 114.726 10.575 114.721 11.537 114.715L13.291 114.709C22.788 114.709 32.349 113.953 41.708 112.463C44.62 111.999 47.667 111.397 50.107 109.603C51.153 108.833 51.822 108.007 52.149 107.082C52.826 105.172 51.892 103.14 50.667 101.972C49.397 100.762 47.78 100.164 46.365 99.701C34.419 95.774 15.91 96.629 5.966 97.091L5.681 97.105V97.115C5.665 97.792 5.652 98.467 5.642 99.142V99.145L5.932 99.131C15.778 98.674 34.104 97.822 45.728 101.642C46.934 102.038 48.299 102.538 49.259 103.453C50.008 104.166 50.595 105.355 50.224 106.402C50.037 106.93 49.603 107.44 48.898 107.961C46.829 109.482 44.166 110.006 41.389 110.447C31.324 112.051 17.842 112.876 6.2 112.593L5.825 112.584C5.825 112.599 5.826 112.612 5.826 112.626C5.854 113.325 5.883 114.019 5.915 114.703L6.234 114.709Z" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M61.083 93.76C71.628 100.661 83.1 105.96 95.202 109.516C117.698 116.128 141.583 116.42 164.683 116.703C178.347 116.869 189.368 117.211 197.455 117.72L197.441 116.69L197.429 115.626C187.543 115.009 175.355 114.791 164.706 114.66C141.747 114.381 118.005 114.091 95.777 107.556C84.864 104.35 74.459 99.697 64.807 93.711" fill="#5B412E"/>
</g>
<g opacity="0.8">
<path d="M101.917 93.105C101.854 93.221 101.8 93.336 101.757 93.447C101.366 94.469 101.485 95.714 102.061 96.612C103.031 98.125 104.805 98.721 106.054 99.039C109.068 99.803 112.2 99.901 115.228 99.997C143.613 100.9 169.208 102.168 195.776 103.987L196.017 104.004L196.636 103.185C196.849 102.814 197.039 102.431 197.209 102.038L196.669 102.001C169.565 100.146 143.695 98.86 115.249 97.954C112.349 97.862 109.349 97.766 106.556 97.059C105.642 96.828 104.361 96.414 103.782 95.511C103.552 95.152 103.505 94.604 103.667 94.177C103.682 94.138 103.906 93.571 104.494 93.053" fill="#5B412E"/>
</g>
</g>
<path d="M130.248 76.0789C126.055 75.3629 121.876 75 117.828 75C113.904 75 109.965 75.3423 106.123 76.0161C105.664 76.0963 104.809 76.2436 104.313 77.3692C104.058 77.9487 103.954 78.6897 104.019 79.4588C104.096 80.3796 104.407 81.2647 104.849 81.8247C105.534 82.6935 106.385 82.8398 107.005 82.9438C111.073 83.6447 115.211 84 119.302 84C122.969 84 126.674 83.7151 130.318 83.1539C131.9 82.9091 132.846 81.8204 132.984 80.0861C133.047 79.2952 132.922 78.5434 132.626 77.9075C132.076 76.7343 131.035 76.1927 130.248 76.0789ZM130.202 80.9494C122.547 82.1302 114.785 82.0587 107.133 80.7436C106.523 80.6385 105.987 80.515 105.618 80.0471C105.454 79.8391 105.326 79.4762 105.297 79.1436C105.287 79.0158 105.286 78.8359 105.345 78.7038C105.501 78.3506 106.01 78.2607 106.254 78.2174C110.056 77.5522 113.95 77.2142 117.829 77.2142C121.832 77.2142 125.969 77.5728 130.129 78.2835C130.654 78.3604 131.344 78.7092 131.617 79.2909C131.693 79.4523 131.719 79.6029 131.704 79.7882C131.649 80.4825 130.861 80.8487 130.202 80.9494Z" fill="#8C674D"/>
<path d="M152.966 72.714C141.555 70.662 128.614 68.325 116.051 68.482C108.2 68.588 102.042 69.664 96.672 71.867C95.183 72.477 93.737 73.187 92.337 73.873C90.721 74.666 89.049 75.486 87.353 76.13C83.904 77.436 80.186 78.059 77.332 78.457C69.148 79.592 60.725 79.803 52.578 80.006L1.788 81.561C1.719 82.294 1.654 82.974 1.592 83.61L52.632 82.049C60.83 81.845 69.308 81.633 77.614 80.48C80.573 80.069 84.437 79.421 88.078 78.041C89.868 77.361 91.58 76.521 93.238 75.708C94.606 75.037 96.02 74.344 97.449 73.758C102.574 71.656 108.494 70.628 116.08 70.526C128.319 70.351 140.667 72.581 152.606 74.725C165.695 77.076 182.466 79.655 196.446 78.854C196.492 78.199 196.539 77.513 196.584 76.794C182.439 77.618 164.935 74.865 152.966 72.714Z" fill="#8C674D"/>
<path d="M168.431 69.771C165.208 69.128 161.965 68.326 158.819 67.548C154.105 66.383 149.231 65.177 144.319 64.482C142.757 64.261 141.166 64.088 139.572 63.914C135.564 63.477 131.42 63.024 127.614 61.706C125.797 61.076 124.798 60.304 124.556 59.344C124.203 57.936 125.592 56.579 126.027 56.198C127.959 54.496 130.606 53.674 133.17 52.877C133.856 52.665 134.541 52.451 135.213 52.223C139.083 50.911 146.678 47.547 147.716 44.209L147.964 43.498L145.609 43.56L145.507 43.886C144.819 46.104 139.177 48.721 134.557 50.288C133.916 50.506 133.265 50.708 132.563 50.926C129.798 51.785 126.937 52.674 124.676 54.664C122.933 56.2 122.147 58.135 122.575 59.84C122.996 61.522 124.426 62.763 126.945 63.637C130.967 65.03 135.229 65.495 139.401 65.95C140.925 66.116 142.502 66.288 144.032 66.505C148.848 67.188 153.673 68.381 158.337 69.534C161.495 70.316 164.761 71.123 168.033 71.775C175.024 73.167 182.187 73.873 189.324 73.873C191.386 73.873 194.629 73.806 196.765 73.691C196.802 72.995 196.838 72.271 196.872 71.535C187.196 72.086 176.847 71.447 168.431 69.771Z" fill="#8C674D"/>
<path d="M165.455 51.629C163.493 52.673 162.108 53.877 161.221 55.31C160.055 57.191 159.869 59.449 160.736 61.201C162.277 64.315 166.219 64.834 169.049 64.954C171.226 65.046 173.444 65.092 175.641 65.092C182.601 65.092 190.975 64.599 197.135 63.832C197.151 63.097 197.164 62.355 197.175 61.6C188.056 62.756 177.34 63.261 169.135 62.911C166.823 62.814 163.627 62.437 162.568 60.295C162.02 59.187 162.173 57.651 162.959 56.385C163.65 55.268 164.781 54.302 166.415 53.433C170.896 51.049 188.891 50.722 195.665 50.599L197.103 50.57C197.083 49.917 197.063 49.261 197.039 48.603L195.379 48.634C187.871 48.76 170.293 49.055 165.455 51.629Z" fill="#8C674D"/>
<path d="M24.011 73.812C34.683 73.812 43.283 73.379 51.078 72.448C67.309 70.51 81.271 66.131 92.574 59.427C94.661 58.19 96.71 56.844 98.691 55.543C101.536 53.672 104.479 51.739 107.525 50.138C113.784 46.847 122.274 43.878 128.751 43.639H118.09L117.678 43.836C114.039 44.684 112.829 45.041 106.575 48.33C103.442 49.976 100.456 51.938 97.525 53.864C95.576 55.144 93.56 56.469 91.532 57.671C80.475 64.227 66.783 68.516 50.835 70.421C36.507 72.129 17.111 71.745 2.94799 71.463L2.63899 71.456C2.60099 72.14 2.55499 72.825 2.50099 73.511L2.85999 73.518C7.28699 73.605 18.21 73.812 24.011 73.812Z" fill="#8C674D"/>
<path d="M19.149 57.751C30.106 57.751 41.131 56.831 51.916 55.016C54.921 54.511 58.396 53.86 61.602 52.534C62.714 52.075 64.181 51.066 64.664 49.731C64.956 48.925 64.944 45.356 62.417 44.13L58.124 44.161L60.505 45.101C63.445 46.294 62.751 49.011 62.743 49.036C62.571 49.513 61.855 50.219 60.821 50.647C57.813 51.892 54.472 52.515 51.577 53.002C37.573 55.358 19.768 56 2.73199 54.76L2.40999 54.737C2.46299 55.455 2.51299 56.199 2.55899 56.968L2.76099 56.983C6.72199 57.27 14.118 57.751 19.149 57.751Z" fill="#8C674D"/>
</g>
<path d="M12.1682 82.7595C14.5442 83.6525 16.053 81.8789 14.1113 80.3835C9.54417 78.8881 8.08522 82.2109 9.54417 82.7595" fill="white"/>
<path d="M177.735 99.106C180.193 100.188 181.755 98.042 179.746 96.233C177.735 94.425 176.224 98.442 177.735 99.106Z" fill="white"/>
<path d="M139 78.337C139 78.337 141.027 78.359 141.176 80.654C141.323 82.95 141.543 85.499 141.543 85.499L143.353 85.557C143.353 85.557 143.236 81.913 143.353 80.507C143.471 79.1 144.596 78.738 145.618 78.812C146.639 78.885 143.989 76.847 143.989 76.847L140.88 76L139 78.337Z" fill="white"/>
<path d="M183.999 6C182.895 6 182 6.89491 182 8.00059C182 9.10509 182.895 10 183.999 10C185.104 10 186 9.10391 186 8.00059C186 6.89609 185.105 6 183.999 6Z" fill="#5B412E"/>
<path d="M186.433 51.24C186.433 50.1358 185.538 49.24 184.433 49.24C183.328 49.24 182.433 50.1358 182.433 51.24C182.433 52.3442 183.328 53.24 184.433 53.24C185.538 53.24 186.433 52.3453 186.433 51.24Z" fill="#5B412E"/>
<path d="M186.13 77.847C185.026 77.847 184.131 78.7419 184.131 79.8476C184.131 80.9533 185.027 81.847 186.13 81.847C187.235 81.847 188.131 80.9521 188.131 79.8476C188.131 78.7431 187.235 77.847 186.13 77.847Z" fill="#5B412E"/>
<path d="M189.001 123C187.896 123 187 123.896 187 124.999C187 126.104 187.896 127 189.001 127C190.105 127 191 126.104 191 124.999C191 123.896 190.104 123 189.001 123Z" fill="#5B412E"/>
<path d="M12.138 51.828C11.2 51.828 10.44 52.588 10.44 53.527C10.44 54.465 11.201 55.226 12.138 55.226C13.076 55.226 13.837 54.465 13.837 53.527C13.836 52.588 13.076 51.828 12.138 51.828Z" fill="#5B412E"/>
<path d="M12.138 83.176C11.2 83.176 10.44 83.937 10.44 84.875C10.44 85.813 11.201 86.573 12.138 86.573C13.076 86.573 13.837 85.813 13.837 84.875C13.837 83.937 13.076 83.176 12.138 83.176Z" fill="#5B412E"/>
<path d="M17.188 100.22C17.188 99.1151 16.2931 98.219 15.1886 98.219C14.0841 98.219 13.188 99.1163 13.188 100.22C13.188 101.323 14.0829 102.219 15.1886 102.219C16.2931 102.219 17.188 101.323 17.188 100.22Z" fill="#5B412E"/>
<path d="M16.8864 128.319C15.7819 128.319 14.887 129.214 14.887 130.319C14.887 131.424 15.7819 132.319 16.8864 132.319C17.9909 132.319 18.887 131.423 18.887 130.319C18.887 129.214 17.9921 128.319 16.8864 128.319Z" fill="#5B412E"/>
<path d="M14.887 34.68C13.949 34.68 13.188 35.441 13.188 36.379C13.188 37.317 13.948 38.078 14.887 38.078C15.825 38.078 16.586 37.318 16.586 36.379C16.586 35.441 15.825 34.68 14.887 34.68Z" fill="#5B412E"/>
<g opacity="0.38">
<path d="M194.614 40.62L5.286 41.423L5.306 44.551L194.636 43.154L194.614 40.62Z" fill="#5B412E"/>
</g>
<g opacity="0.38">
<path d="M195.729 87.111L195.473 90.736C195.473 90.736 92.461 93.759 56.63 93.759C20.797 93.759 5.71899 95.632 5.71899 95.632L5.88999 91.599L195.729 87.111Z" fill="#5B412E"/>
</g>
<path d="M141.542 85.499C141.542 85.499 141.181 87.77 142.543 87.787C143.905 87.804 143.552 85.904 143.353 84.016C143.155 82.128 142.425 82.628 142.425 82.628L141.542 85.499Z" fill="white"/>
<path d="M48.94 75.472C48.94 75.472 48.76 66.58 48.724 57.904C50.92 57.58 51.856 59.992 51.856 66.724C51.856 74.752 50.776 75.616 48.94 75.472ZM43.9 79.144C45.268 79.36 46.564 79.468 47.716 79.468C53.944 79.468 57.112 76.228 57.112 67.048C57.112 57.904 54.556 53.692 47.608 53.692C46.492 53.692 45.268 53.8 43.9 54.052C43.9 54.052 43.972 66.328 43.9 79.144Z" fill="white"/>
<path d="M58.1357 78.46C61.4837 78.46 62.9957 78.532 62.9957 78.532L63.3197 74.644C64.9037 74.644 66.0917 74.68 66.9197 74.68C67.2437 77.992 67.3877 79.576 67.3877 79.576C70.5197 79.468 72.5357 79.54 72.5357 79.54C70.3397 66.292 68.6117 53.728 68.6117 53.728C68.6117 53.728 65.5877 53.692 61.6637 53.872C59.6477 68.956 58.1357 78.46 58.1357 78.46ZM65.0837 57.904C65.6957 63.232 66.1637 67.372 66.4877 70.648C64.6517 70.684 63.7157 70.648 63.7157 70.648C64.2917 64.672 64.8317 59.992 65.0837 57.904Z" fill="white"/>
<path d="M77.0048 79.468C80.9288 79.36 81.9728 79.432 81.9728 79.432C81.7928 74.428 81.8648 73.672 81.8648 73.672C84.7448 61.396 86.6888 53.872 86.6888 53.872C83.0528 53.872 81.6488 53.764 81.6488 53.764C80.4968 61.144 79.4888 66.796 79.4888 66.796C78.1928 59.704 77.4368 54.484 77.4368 54.484C73.0808 54.664 72.1448 54.664 72.1448 54.664C75.8528 68.596 76.9688 73.744 76.9688 73.744C77.1128 78.28 77.0048 79.468 77.0048 79.468Z" fill="white"/>
<path d="M93.7338 79.54C97.5858 79.54 100.286 77.74 100.286 72.736C100.286 69.316 99.1338 67.336 95.8218 65.104C93.0858 63.268 92.2938 62.044 92.2938 60.28C92.2938 58.48 92.7258 57.4 93.6978 57.4C94.7778 57.4 95.4258 58.804 94.9938 62.512C97.4778 62.584 99.8898 62.8 99.8898 62.8C100.538 56.716 98.5218 53.476 93.7698 53.476C89.8818 53.476 87.1818 55.384 87.1818 60.028C87.1818 63.268 88.2978 65.572 91.5378 67.876C94.5258 70 95.1378 71.188 95.1378 72.844C95.1378 74.932 94.6698 75.616 93.7698 75.616C92.5098 75.616 92.0058 73.924 92.3298 70.144C89.2698 70.108 87.2898 70.036 87.2898 70.036C86.7138 76.336 88.6218 79.54 93.7338 79.54Z" fill="white"/>
<path d="M109.774 59.776C111.214 59.776 112.222 58.768 112.222 57.22C112.222 56.284 111.718 55.384 110.782 55.024C110.962 54.556 111.466 53.656 112.474 52.648C112.474 52.648 111.898 52.144 110.638 51.28C108.442 53.188 107.362 54.988 107.362 56.86C107.362 58.624 108.37 59.776 109.774 59.776Z" fill="white"/>
<path d="M115.598 58.66L119.306 58.624C119.414 71.116 119.378 79.18 119.378 79.18C122.618 79.108 124.274 79.144 124.274 79.144C124.13 68.272 124.13 62.188 124.13 58.624C126.326 58.624 127.802 58.66 127.802 58.66C127.766 55.636 127.874 53.872 127.874 53.872C119.342 54.016 115.562 53.98 115.562 53.98C115.634 57.364 115.598 58.66 115.598 58.66Z" fill="white"/>
<path d="M130.091 79.036C133.295 79 135.023 79.036 135.023 79.036C134.915 66.04 134.843 53.98 134.843 53.98C131.639 54.016 129.947 54.016 129.947 54.016C130.127 68.02 130.091 79.036 130.091 79.036Z" fill="white"/>
<path d="M138.048 78.856C138.048 78.856 144.564 78.928 148.128 79C148.128 79 148.128 77.272 148.164 74.536C148.164 74.536 146.292 74.536 142.872 74.428C142.656 59.236 142.728 54.196 142.728 54.196C139.416 54.268 137.832 54.196 137.832 54.196C138.012 68.92 138.048 78.856 138.048 78.856Z" fill="white"/>
<path d="M42.912 125.612C46.944 125.648 49.752 123.092 49.608 114.488C49.608 114.488 47.16 114.488 44.316 114.596C44.496 120.356 43.884 121.508 42.984 121.508C41.76 121.508 41.364 119.456 41.364 112.508C41.292 105.848 41.688 103.436 42.948 103.436C43.992 103.436 44.28 105.02 44.244 109.556C44.244 109.556 46.26 109.664 49.464 109.7C49.608 103.616 48.06 99.332 43.2 99.332C37.98 99.332 36 103.652 36 112.544C36 121.976 38.016 125.612 42.912 125.612Z" fill="white"/>
<path d="M59.3738 125.684C62.3618 125.576 64.3058 125.72 64.3058 125.72C64.1618 110.96 64.1978 99.368 64.1978 99.368C60.9938 99.44 59.2298 99.404 59.2298 99.404C59.2658 104.264 59.3378 108.692 59.3378 112.472C57.8618 112.472 56.9618 112.436 56.5298 112.436C56.4578 105.344 56.4218 100.52 56.4218 100.52C52.8218 100.592 51.6338 100.556 51.6338 100.556C51.7778 114.92 51.7778 124.424 51.7778 124.424C54.5858 124.316 56.6738 124.388 56.6738 124.388L56.5658 116.648C57.9338 116.612 58.7618 116.612 59.3738 116.612C59.4458 122.012 59.3738 125.684 59.3738 125.684Z" fill="white"/>
<path d="M75.4431 125.684C78.6471 125.468 80.5191 125.288 80.5191 125.288C78.3591 118.988 77.1711 115.352 76.8831 114.38C78.7911 113.12 79.9431 111.068 79.9431 107.864C79.9431 102.5 77.2791 99.476 71.6631 99.476C70.2591 99.476 68.6751 99.656 66.8751 99.98C66.9831 115.172 66.8391 124.532 66.8391 124.532C69.7191 124.496 71.8791 124.496 71.8791 124.496C71.8071 120.464 71.7351 117.548 71.7351 116.036C72.0591 116 72.4191 115.964 72.7431 115.892C74.4711 121.976 75.4431 125.684 75.4431 125.684ZM71.7351 112.652C71.7351 112.652 71.6631 108.584 71.6271 103.724C71.6271 103.724 71.9511 103.688 72.0951 103.688C74.0031 103.688 74.8311 105.452 74.8311 108.224C74.8311 111.392 73.4991 112.544 71.7351 112.652Z" fill="white"/>
<path d="M82.334 125.036C85.538 125 87.266 125.036 87.266 125.036C87.158 112.04 87.086 99.98 87.086 99.98C83.882 100.016 82.19 100.016 82.19 100.016C82.37 114.02 82.334 125.036 82.334 125.036Z" fill="white"/>
<path d="M96.1591 125.54C100.011 125.54 102.711 123.74 102.711 118.736C102.711 115.316 101.559 113.336 98.2471 111.104C95.5111 109.268 94.7191 108.044 94.7191 106.28C94.7191 104.48 95.1511 103.4 96.1231 103.4C97.2031 103.4 97.8511 104.804 97.4191 108.512C99.9031 108.584 102.315 108.8 102.315 108.8C102.963 102.716 100.947 99.476 96.1951 99.476C92.3071 99.476 89.6071 101.384 89.6071 106.028C89.6071 109.268 90.7231 111.572 93.9631 113.876C96.9511 116 97.5631 117.188 97.5631 118.844C97.5631 120.932 97.0951 121.616 96.1951 121.616C94.9351 121.616 94.4311 119.924 94.7551 116.144C91.6951 116.108 89.7151 116.036 89.7151 116.036C89.1391 122.336 91.0471 125.54 96.1591 125.54Z" fill="white"/>
<path d="M103.787 104.66L107.495 104.624C107.603 117.116 107.567 125.18 107.567 125.18C110.807 125.108 112.463 125.144 112.463 125.144C112.319 114.272 112.319 108.188 112.319 104.624C114.515 104.624 115.991 104.66 115.991 104.66C115.955 101.636 116.063 99.872 116.063 99.872C107.531 100.016 103.751 99.98 103.751 99.98C103.823 103.364 103.787 104.66 103.787 104.66Z" fill="white"/>
<path d="M117.523 124.532C119.647 124.568 122.671 124.64 122.671 124.64C122.599 117.692 122.635 110.096 122.671 105.776C124.111 114.92 124.795 120.356 124.795 120.356C127.135 120.464 129.763 120.5 129.763 120.5C130.447 114.776 131.383 108.692 131.995 104.84C132.391 116.972 132.247 125.648 132.247 125.648C134.731 125.576 137.323 125.432 137.323 125.432C136.531 109.7 136.459 99.62 136.459 99.62C133.039 99.512 129.259 99.404 129.259 99.404C128.647 105.092 127.819 110.78 127.207 114.596C126.091 107.252 125.299 100.448 125.299 100.448C121.483 100.628 118.315 100.592 118.315 100.592C118.027 114.236 117.523 124.532 117.523 124.532Z" fill="white"/>
<path d="M138.692 124.46C142.04 124.46 143.552 124.532 143.552 124.532L143.876 120.644C145.46 120.644 146.648 120.68 147.476 120.68C147.8 123.992 147.944 125.576 147.944 125.576C151.076 125.468 153.092 125.54 153.092 125.54C150.896 112.292 149.168 99.728 149.168 99.728C149.168 99.728 146.144 99.692 142.22 99.872C140.204 114.956 138.692 124.46 138.692 124.46ZM145.64 103.904C146.252 109.232 146.72 113.372 147.044 116.648C145.208 116.684 144.272 116.648 144.272 116.648C144.848 110.672 145.388 105.992 145.64 103.904Z" fill="white"/>
<path d="M160.388 125.504C164.672 125.504 166.94 122.876 166.94 118.772C166.94 115.964 166.148 113.66 162.08 111.212C159.56 109.7 158.948 108.368 158.948 106.964C158.948 105.164 159.38 104.228 160.352 104.228C161.432 104.228 162.08 105.308 161.648 108.908C164.24 108.8 166.58 108.908 166.58 108.908C167.192 103.256 165.356 100.304 160.424 100.304C156.644 100.304 153.836 102.14 153.836 106.712C153.836 110.348 155.348 112.364 158.372 114.344C161.108 116.144 161.792 117.26 161.792 118.88C161.792 120.644 161.324 121.58 160.424 121.58C159.344 121.58 158.624 120.464 158.948 116.792C155.816 116.9 153.908 116.864 153.908 116.864C153.368 122.696 155.528 125.504 160.388 125.504Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,19 @@
function postToastRoastEventDarkmode(t, url) {
const xhr = createXhrWithFormKey(url);
xhr[0].onload = function() {
postToastLoadEventDarkmode(xhr[0])
};
xhr[0].send(xhr[1]);
}
function postToastLoadEventDarkmode(xhr) {
let data
try {
data = JSON.parse(xhr.response)
}
catch (e) {
console.log(e)
}
success = xhr.status >= 200 && xhr.status < 300;
showToast(success, getMessageFromJsonData(success, data));
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,704 @@
/** @license
* DHTML Snowstorm! JavaScript-based snow for web pages
* Making it snow on the internets since 2003. You're welcome.
* -----------------------------------------------------------
* Version 1.44.20131208 (Previous rev: 1.44.20131125)
* Copyright (c) 2007, Scott Schiller. All rights reserved.
* Code provided under the BSD License
* http://schillmania.com/projects/snowstorm/license.txt
*/
/*jslint nomen: true, plusplus: true, sloppy: true, vars: true, white: true */
/*global window, document, navigator, clearInterval, setInterval */
function snow(flakesMax) {
// --- common properties ---
this.autoStart = true; // Whether the snow should start automatically or not.
this.excludeMobile = false; // Snow is likely to be bad news for mobile phones' CPUs (and batteries.) Enable at your own risk.
this.flakesMax = flakesMax; // Limit total amount of snow made (falling + sticking)
this.flakesMaxActive = 30; // Limit amount of snow falling at once (less = lower CPU use)
this.animationInterval = 70; // Theoretical "miliseconds per frame" measurement. 20 = fast + smooth, but high CPU use. 50 = more conservative, but slower
this.useGPU = true; // Enable transform-based hardware acceleration, reduce CPU load.
this.className = null; // CSS class name for further customization on snow elements
this.excludeMobile = true; // Snow is likely to be bad news for mobile phones' CPUs (and batteries.) By default, be nice.
this.flakeBottom = null; // Integer for Y axis snow limit, 0 or null for "full-screen" snow effect
this.followMouse = false; // Snow movement can respond to the user's mouse
this.snowColor = "#fff"; // Don't eat (or use?) yellow snow.
this.snowCharacter = "&bull;"; // &bull; = bullet, &middot; is square on some systems etc.
this.snowStick = true; // Whether or not snow should "stick" at the bottom. When off, will never collect.
this.targetElement = null; // element which snow will be appended to (null = document.body) - can be an element ID eg. 'myDiv', or a DOM node reference
this.useMeltEffect = true; // When recycling fallen snow (or rarely, when falling), have it "melt" and fade out if browser supports it
this.useTwinkleEffect = false; // Allow snow to randomly "flicker" in and out of view while falling
this.usePositionFixed = false; // true = snow does not shift vertically when scrolling. May increase CPU load, disabled by default - if enabled, used only where supported
this.usePixelPosition = false; // Whether to use pixel values for snow top/left vs. percentages. Auto-enabled if body is position:relative or targetElement is specified.
// --- less-used bits ---
this.freezeOnBlur = true; // Only snow when the window is in focus (foreground.) Saves CPU.
this.flakeLeftOffset = 0; // Left margin/gutter space on edge of container (eg. browser window.) Bump up these values if seeing horizontal scrollbars.
this.flakeRightOffset = 0; // Right margin/gutter space on edge of container
this.flakeWidth = 8; // Max pixel width reserved for snow element
this.flakeHeight = 8; // Max pixel height reserved for snow element
this.vMaxX = 5; // Maximum X velocity range for snow
this.vMaxY = 4; // Maximum Y velocity range for snow
this.zIndex = 0; // CSS stacking order applied to each snowflake
// --- "No user-serviceable parts inside" past this point, yadda yadda ---
var storm = this,
features,
// UA sniffing and backCompat rendering mode checks for fixed position, etc.
isIE = navigator.userAgent.match(/msie/i),
isIE6 = navigator.userAgent.match(/msie 6/i),
isMobile = navigator.userAgent.match(/mobile|opera m(ob|in)/i),
isBackCompatIE = isIE && document.compatMode === "BackCompat",
noFixed = isBackCompatIE || isIE6,
screenX = null,
screenX2 = null,
screenY = null,
scrollY = null,
docHeight = null,
vRndX = null,
vRndY = null,
windOffset = 1,
windMultiplier = 2,
flakeTypes = 6,
fixedForEverything = false,
targetElementIsRelative = false,
opacitySupported = (function () {
try {
document.createElement("div").style.opacity = "0.5";
} catch (e) {
return false;
}
return true;
})(),
didInit = false,
docFrag = document.createDocumentFragment();
features = (function () {
var getAnimationFrame;
/**
* hat tip: paul irish
* http://paulirish.com/2011/requestanimationframe-for-smart-animating/
* https://gist.github.com/838785
*/
function timeoutShim(callback) {
window.setTimeout(callback, 1000 / (storm.animationInterval || 20));
}
var _animationFrame =
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
timeoutShim;
// apply to window, avoid "illegal invocation" errors in Chrome
getAnimationFrame = _animationFrame
? function () {
return _animationFrame.apply(window, arguments);
}
: null;
var testDiv;
testDiv = document.createElement("div");
function has(prop) {
// test for feature support
var result = testDiv.style[prop];
return result !== undefined ? prop : null;
}
// note local scope.
var localFeatures = {
transform: {
ie: has("-ms-transform"),
moz: has("MozTransform"),
opera: has("OTransform"),
webkit: has("webkitTransform"),
w3: has("transform"),
prop: null // the normalized property value
},
getAnimationFrame: getAnimationFrame
};
localFeatures.transform.prop =
localFeatures.transform.w3 ||
localFeatures.transform.moz ||
localFeatures.transform.webkit ||
localFeatures.transform.ie ||
localFeatures.transform.opera;
testDiv = null;
return localFeatures;
})();
this.timer = null;
this.flakes = [];
this.disabled = false;
this.active = false;
this.meltFrameCount = 20;
this.meltFrames = [];
this.setXY = function (o, x, y) {
if (!o) {
return false;
}
if (storm.usePixelPosition || targetElementIsRelative) {
o.style.left = x - storm.flakeWidth + "px";
o.style.top = y - storm.flakeHeight + "px";
} else if (noFixed) {
o.style.right = 100 - (x / screenX) * 100 + "%";
// avoid creating vertical scrollbars
o.style.top = Math.min(y, docHeight - storm.flakeHeight) + "px";
} else {
if (!storm.flakeBottom) {
// if not using a fixed bottom coordinate...
o.style.right = 100 - (x / screenX) * 100 + "%";
o.style.bottom = 100 - (y / screenY) * 100 + "%";
} else {
// absolute top.
o.style.right = 100 - (x / screenX) * 100 + "%";
o.style.top = Math.min(y, docHeight - storm.flakeHeight) + "px";
}
}
};
this.events = (function () {
var old = !window.addEventListener && window.attachEvent,
slice = Array.prototype.slice,
evt = {
add: old ? "attachEvent" : "addEventListener",
remove: old ? "detachEvent" : "removeEventListener"
};
function getArgs(oArgs) {
var args = slice.call(oArgs),
len = args.length;
if (old) {
args[1] = "on" + args[1]; // prefix
if (len > 3) {
args.pop(); // no capture
}
} else if (len === 3) {
args.push(false);
}
return args;
}
function apply(args, sType) {
var element = args.shift(),
method = [evt[sType]];
if (old) {
element[method](args[0], args[1]);
} else {
element[method].apply(element, args);
}
}
function addEvent() {
apply(getArgs(arguments), "add");
}
function removeEvent() {
apply(getArgs(arguments), "remove");
}
return {
add: addEvent,
remove: removeEvent
};
})();
function rnd(n, min) {
if (isNaN(min)) {
min = 0;
}
return Math.random() * n + min;
}
function plusMinus(n) {
return parseInt(rnd(2), 10) === 1 ? n * -1 : n;
}
this.randomizeWind = function () {
var i;
vRndX = plusMinus(rnd(storm.vMaxX, 0.2));
vRndY = rnd(storm.vMaxY, 0.2);
if (this.flakes) {
for (i = 0; i < this.flakes.length; i++) {
if (this.flakes[i].active) {
this.flakes[i].setVelocities();
}
}
}
};
this.scrollHandler = function () {
var i;
// "attach" snowflakes to bottom of window if no absolute bottom value was given
scrollY = storm.flakeBottom
? 0
: parseInt(
window.scrollY ||
document.documentElement.scrollTop ||
(noFixed ? document.body.scrollTop : 0),
10
);
if (isNaN(scrollY)) {
scrollY = 0; // Netscape 6 scroll fix
}
if (!fixedForEverything && !storm.flakeBottom && storm.flakes) {
for (i = 0; i < storm.flakes.length; i++) {
if (storm.flakes[i].active === 0) {
storm.flakes[i].stick();
}
}
}
};
this.resizeHandler = function () {
if (window.innerWidth || window.innerHeight) {
screenX = window.innerWidth - 16 - storm.flakeRightOffset;
screenY = storm.flakeBottom || window.innerHeight;
} else {
screenX =
(document.documentElement.clientWidth ||
document.body.clientWidth ||
document.body.scrollWidth) -
(!isIE ? 8 : 0) -
storm.flakeRightOffset;
screenY =
storm.flakeBottom ||
document.documentElement.clientHeight ||
document.body.clientHeight ||
document.body.scrollHeight;
}
docHeight = document.body.offsetHeight;
screenX2 = parseInt(screenX / 2, 10);
};
this.resizeHandlerAlt = function () {
screenX = storm.targetElement.offsetWidth - storm.flakeRightOffset;
screenY = storm.flakeBottom || storm.targetElement.offsetHeight;
screenX2 = parseInt(screenX / 2, 10);
docHeight = document.body.offsetHeight;
};
this.freeze = function () {
// pause animation
if (!storm.disabled) {
storm.disabled = 1;
} else {
return false;
}
storm.timer = null;
};
this.resume = function () {
if (storm.disabled) {
storm.disabled = 0;
} else {
return false;
}
storm.timerInit();
};
this.toggleSnow = function () {
if (!storm.flakes.length) {
// first run
storm.start();
} else {
storm.active = !storm.active;
if (storm.active) {
storm.show();
storm.resume();
} else {
storm.stop();
storm.freeze();
}
}
};
this.stop = function () {
var i;
this.freeze();
for (i = 0; i < this.flakes.length; i++) {
this.flakes[i].o.style.display = "none";
}
storm.events.remove(window, "scroll", storm.scrollHandler);
storm.events.remove(window, "resize", storm.resizeHandler);
if (storm.freezeOnBlur) {
if (isIE) {
storm.events.remove(document, "focusout", storm.freeze);
storm.events.remove(document, "focusin", storm.resume);
} else {
storm.events.remove(window, "blur", storm.freeze);
storm.events.remove(window, "focus", storm.resume);
}
}
};
this.show = function () {
var i;
for (i = 0; i < this.flakes.length; i++) {
this.flakes[i].o.style.display = "block";
}
};
this.SnowFlake = function (type, x, y) {
var s = this;
this.type = type;
this.x = x || parseInt(rnd(screenX - 20), 10);
this.y = !isNaN(y) ? y : -rnd(screenY) - 12;
this.vX = null;
this.vY = null;
this.vAmpTypes = [1, 1.2, 1.4, 1.6, 1.8]; // "amplification" for vX/vY (based on flake size/type)
this.vAmp = this.vAmpTypes[this.type] || 1;
this.melting = false;
this.meltFrameCount = storm.meltFrameCount;
this.meltFrames = storm.meltFrames;
this.meltFrame = 0;
this.twinkleFrame = 0;
this.active = 1;
this.fontSize = 10 + (this.type / 5) * 10;
this.o = document.createElement("div");
this.o.innerHTML = storm.snowCharacter;
if (storm.className) {
this.o.setAttribute("class", storm.className);
}
this.o.style.color = storm.snowColor;
this.o.style.position = fixedForEverything ? "fixed" : "absolute";
if (storm.useGPU && features.transform.prop) {
// GPU-accelerated snow.
this.o.style[features.transform.prop] = "translate3d(0px, 0px, 0px)";
}
this.o.style.width = storm.flakeWidth + "px";
this.o.style.height = storm.flakeHeight + "px";
this.o.style.fontFamily = "arial,verdana";
this.o.style.cursor = "default";
this.o.style.overflow = "hidden";
this.o.style.fontWeight = "normal";
this.o.style.zIndex = storm.zIndex;
docFrag.appendChild(this.o);
this.refresh = function () {
if (isNaN(s.x) || isNaN(s.y)) {
// safety check
return false;
}
storm.setXY(s.o, s.x, s.y);
};
this.stick = function () {
if (
noFixed ||
(storm.targetElement !== document.documentElement &&
storm.targetElement !== document.body)
) {
s.o.style.top = screenY + scrollY - storm.flakeHeight + "px";
} else if (storm.flakeBottom) {
s.o.style.top = storm.flakeBottom + "px";
} else {
s.o.style.display = "none";
s.o.style.bottom = "0%";
s.o.style.position = "fixed";
s.o.style.display = "block";
}
};
this.vCheck = function () {
if (s.vX >= 0 && s.vX < 0.2) {
s.vX = 0.2;
} else if (s.vX < 0 && s.vX > -0.2) {
s.vX = -0.2;
}
if (s.vY >= 0 && s.vY < 0.2) {
s.vY = 0.2;
}
};
this.move = function () {
var vX = s.vX * windOffset,
yDiff;
s.x += vX;
s.y += s.vY * s.vAmp;
if (s.x >= screenX || screenX - s.x < storm.flakeWidth) {
// X-axis scroll check
s.x = 0;
} else if (vX < 0 && s.x - storm.flakeLeftOffset < -storm.flakeWidth) {
s.x = screenX - storm.flakeWidth - 1; // flakeWidth;
}
s.refresh();
yDiff = screenY + scrollY - s.y + storm.flakeHeight;
if (yDiff < storm.flakeHeight) {
s.active = 0;
if (storm.snowStick) {
s.stick();
} else {
s.recycle();
}
} else {
if (
storm.useMeltEffect &&
s.active &&
s.type < 3 &&
!s.melting &&
Math.random() > 0.998
) {
// ~1/1000 chance of melting mid-air, with each frame
s.melting = true;
s.melt();
// only incrementally melt one frame
// s.melting = false;
}
if (storm.useTwinkleEffect) {
if (s.twinkleFrame < 0) {
if (Math.random() > 0.97) {
s.twinkleFrame = parseInt(Math.random() * 8, 10);
}
} else {
s.twinkleFrame--;
if (!opacitySupported) {
s.o.style.visibility =
s.twinkleFrame && s.twinkleFrame % 2 === 0
? "hidden"
: "visible";
} else {
s.o.style.opacity =
s.twinkleFrame && s.twinkleFrame % 2 === 0 ? 0 : 1;
}
}
}
}
};
this.animate = function () {
// main animation loop
// move, check status, die etc.
s.move();
};
this.setVelocities = function () {
s.vX = vRndX + rnd(storm.vMaxX * 0.12, 0.1);
s.vY = vRndY + rnd(storm.vMaxY * 0.12, 0.1);
};
this.setOpacity = function (o, opacity) {
if (!opacitySupported) {
return false;
}
o.style.opacity = opacity;
};
this.melt = function () {
if (!storm.useMeltEffect || !s.melting) {
s.recycle();
} else {
if (s.meltFrame < s.meltFrameCount) {
s.setOpacity(s.o, s.meltFrames[s.meltFrame]);
s.o.style.fontSize =
s.fontSize - s.fontSize * (s.meltFrame / s.meltFrameCount) + "px";
s.o.style.lineHeight =
storm.flakeHeight +
2 +
storm.flakeHeight * 0.75 * (s.meltFrame / s.meltFrameCount) +
"px";
s.meltFrame++;
} else {
s.recycle();
}
}
};
this.recycle = function () {
s.o.style.display = "none";
s.o.style.position = fixedForEverything ? "fixed" : "absolute";
s.o.style.bottom = "auto";
s.setVelocities();
s.vCheck();
s.meltFrame = 0;
s.melting = false;
s.setOpacity(s.o, 1);
s.o.style.padding = "0px";
s.o.style.margin = "0px";
s.o.style.fontSize = s.fontSize + "px";
s.o.style.lineHeight = storm.flakeHeight + 2 + "px";
s.o.style.textAlign = "center";
s.o.style.verticalAlign = "baseline";
s.x = parseInt(rnd(screenX - storm.flakeWidth - 20), 10);
s.y = parseInt(rnd(screenY) * -1, 10) - storm.flakeHeight;
s.refresh();
s.o.style.display = "block";
s.active = 1;
};
this.recycle(); // set up x/y coords etc.
this.refresh();
};
this.snow = function () {
var active = 0,
flake = null,
i,
j;
for (i = 0, j = storm.flakes.length; i < j; i++) {
if (storm.flakes[i].active === 1) {
storm.flakes[i].move();
active++;
}
if (storm.flakes[i].melting) {
storm.flakes[i].melt();
}
}
if (active < storm.flakesMaxActive) {
flake = storm.flakes[parseInt(rnd(storm.flakes.length), 10)];
if (flake.active === 0) {
flake.melting = true;
}
}
if (storm.timer) {
features.getAnimationFrame(storm.snow);
}
};
this.mouseMove = function (e) {
if (!storm.followMouse) {
return true;
}
var x = parseInt(e.clientX, 10);
if (x < screenX2) {
windOffset = -windMultiplier + (x / screenX2) * windMultiplier;
} else {
x -= screenX2;
windOffset = (x / screenX2) * windMultiplier;
}
};
this.createSnow = function (limit, allowInactive) {
var i;
for (i = 0; i < limit; i++) {
storm.flakes[storm.flakes.length] = new storm.SnowFlake(
parseInt(rnd(flakeTypes), 10)
);
if (allowInactive || i > storm.flakesMaxActive) {
storm.flakes[storm.flakes.length - 1].active = -1;
}
}
storm.targetElement.appendChild(docFrag);
};
this.timerInit = function () {
storm.timer = true;
storm.snow();
};
this.init = function () {
var i;
for (i = 0; i < storm.meltFrameCount; i++) {
storm.meltFrames.push(1 - i / storm.meltFrameCount);
}
storm.randomizeWind();
storm.createSnow(storm.flakesMax); // create initial batch
storm.events.add(window, "resize", storm.resizeHandler);
storm.events.add(window, "scroll", storm.scrollHandler);
if (storm.freezeOnBlur) {
if (isIE) {
storm.events.add(document, "focusout", storm.freeze);
storm.events.add(document, "focusin", storm.resume);
} else {
storm.events.add(window, "blur", storm.freeze);
storm.events.add(window, "focus", storm.resume);
}
}
storm.resizeHandler();
storm.scrollHandler();
if (storm.followMouse) {
storm.events.add(isIE ? document : window, "mousemove", storm.mouseMove);
}
storm.animationInterval = Math.max(20, storm.animationInterval);
storm.timerInit();
};
this.start = function (bFromOnLoad) {
if (!didInit) {
didInit = true;
} else if (bFromOnLoad) {
// already loaded and running
return true;
}
if (typeof storm.targetElement === "string") {
var targetID = storm.targetElement;
storm.targetElement = document.getElementById(targetID);
if (!storm.targetElement) {
throw new Error(
'Snowstorm: Unable to get targetElement "' + targetID + '"'
);
}
}
if (!storm.targetElement) {
storm.targetElement = document.body || document.documentElement;
}
if (
storm.targetElement !== document.documentElement &&
storm.targetElement !== document.body
) {
// re-map handler to get element instead of screen dimensions
storm.resizeHandler = storm.resizeHandlerAlt;
//and force-enable pixel positioning
storm.usePixelPosition = true;
}
storm.resizeHandler(); // get bounding box elements
storm.usePositionFixed =
storm.usePositionFixed && !noFixed && !storm.flakeBottom; // whether or not position:fixed is to be used
if (window.getComputedStyle) {
// attempt to determine if body or user-specified snow parent element is relatlively-positioned.
try {
targetElementIsRelative =
window
.getComputedStyle(storm.targetElement, null)
.getPropertyValue("position") === "relative";
} catch (e) {
// oh well
targetElementIsRelative = false;
}
}
fixedForEverything = storm.usePositionFixed;
if (screenX && screenY && !storm.disabled) {
storm.init();
storm.active = true;
}
};
function doDelayedStart() {
window.setTimeout(function () {
storm.start(true);
}, 20);
// event cleanup
storm.events.remove(isIE ? document : window, "mousemove", doDelayedStart);
}
function doStart() {
if (!storm.excludeMobile || !isMobile) {
doDelayedStart();
}
// event cleanup
storm.events.remove(window, "load", doStart);
}
// hooks for starting the snow
if (storm.autoStart) {
storm.events.add(window, "load", doStart, false);
}
return this;
}

View File

@ -0,0 +1,101 @@
var canvas = document.querySelector('#canvas-snowed-in-overlay');
var lineCanvas = document.querySelector('#canvas-snowed-in-lines');
var canvasContext = canvas.getContext('2d');
var lineCanvasContext = lineCanvas.getContext('2d');
var pointLifetime = 4000;
var points = [];
//FILL CANVAS
canvasContext.fillStyle="rgba(0, 0, 0, 0.1)";
canvasContext.fillRect(0, 0, canvas.width, canvas.height);
//INIT
function init() {
document.addEventListener('mousemove', onMouseMove);
window.addEventListener('resize', resizeCanvases);
resizeCanvases();
tick();
}
init();
//RESIZE CANVAS
function resizeCanvases() {
canvas.width = lineCanvas.width = window.innerWidth;
canvas.height = lineCanvas.height = window.innerHeight;
}
function onMouseMove(event) {
points.push({
time: Date.now(),
x: event.clientX,
y: event.clientY
});
}
function tick() {
// Remove old points
// points = points.filter(function(point) {
// var age = Date.now() - point.time;
// return age < pointLifetime;
// });
drawLineCanvas();
drawImageCanvas();
requestAnimationFrame(tick);
//setTimeout(() => {
//tick();
//}, 1000 / 60);
}
function drawLineCanvas() {
var minimumLineWidth = 40;
var maximumLineWidth = 60;
var lineWidthRange = maximumLineWidth - minimumLineWidth;
var maximumSpeed = 200;
lineCanvasContext.clearRect(0, 0, lineCanvas.width, lineCanvas.height);
lineCanvasContext.lineCap = 'round';
lineCanvasContext.shadowBlur = 90;
lineCanvasContext.shadowColor = '#fff';
for (var i = 1; i < points.length; i++) {
var point = points[i];
var previousPoint = points[i - 1];
// Change line width based on speed
var distance = getDistanceBetween(point, previousPoint);
var speed = Math.max(0, Math.min(maximumSpeed, distance));
var percentageLineWidth = (maximumSpeed - speed) / maximumSpeed;
lineCanvasContext.lineWidth = minimumLineWidth + percentageLineWidth * lineWidthRange;
// Fade points as they age
// var age = Date.now() - point.time;
// var opacity = (pointLifetime - age) / pointLifetime;
// lineCanvasContext.strokeStyle = 'rgba(255, 255, 255, ' + opacity + ')';
lineCanvasContext.strokeStyle = 'rgba(255, 255, 255, 1)';
lineCanvasContext.beginPath();
lineCanvasContext.moveTo(previousPoint.x, previousPoint.y);
lineCanvasContext.lineTo(point.x, point.y);
lineCanvasContext.stroke();
}
}
function getDistanceBetween(a, b) {
return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));
}
function drawImageCanvas() {
canvasContext.globalCompositeOperation = 'source-over';
canvasContext.save();
canvasContext.fillStyle="rgb(255,255,255)";
canvasContext.globalAlpha = 0.09;
canvasContext.fillRect(0, 0, canvas.width, canvas.height);
canvasContext.restore();
canvasContext.globalCompositeOperation = 'destination-out';
canvasContext.drawImage(lineCanvas, 0, 0);
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More