4613 lines
295 KiB
HTML
4613 lines
295 KiB
HTML
<html lang="ru">
|
||
<head>
|
||
<script>
|
||
window.__resources = {};
|
||
</script>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>MoonWell Launcher</title>
|
||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||
<style>
|
||
/* latin-ext */
|
||
@font-face {
|
||
font-family: "Cinzel";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/f59b88c7-7860-45b1-9a0a-52df50217f65")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cinzel";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/2f059136-84c4-4d58-9739-ad7c554fb2fe")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cinzel";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/f59b88c7-7860-45b1-9a0a-52df50217f65")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cinzel";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/2f059136-84c4-4d58-9739-ad7c554fb2fe")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cinzel";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/f59b88c7-7860-45b1-9a0a-52df50217f65")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cinzel";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/2f059136-84c4-4d58-9739-ad7c554fb2fe")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cinzel";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/f59b88c7-7860-45b1-9a0a-52df50217f65")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cinzel";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/2f059136-84c4-4d58-9739-ad7c554fb2fe")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/6572ff93-71aa-46ee-9f2b-a93cdb064065")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/929e8ebd-dc00-40e2-867f-0ad2fb0c9564")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/23b9ffb6-88a1-49b4-ab30-cf56280051a3")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/3b4f0ed1-7dca-4456-a024-9c9bfac68df5")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/04592027-a480-48d5-884c-c3a2045fb388")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Cormorant Garamond";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* greek-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
|
||
format("woff2");
|
||
unicode-range: U+1F00-1FFF;
|
||
} /* greek */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
|
||
U+03A3-03FF;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
font-display: swap;
|
||
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* greek-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
|
||
format("woff2");
|
||
unicode-range: U+1F00-1FFF;
|
||
} /* greek */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
|
||
U+03A3-03FF;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* greek-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
|
||
format("woff2");
|
||
unicode-range: U+1F00-1FFF;
|
||
} /* greek */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
|
||
U+03A3-03FF;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* greek-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
|
||
format("woff2");
|
||
unicode-range: U+1F00-1FFF;
|
||
} /* greek */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
|
||
U+03A3-03FF;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 600;
|
||
font-display: swap;
|
||
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* greek-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
|
||
format("woff2");
|
||
unicode-range: U+1F00-1FFF;
|
||
} /* greek */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
|
||
U+03A3-03FF;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "Inter";
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
font-display: swap;
|
||
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/4a796ff7-acfa-4008-b79a-ed9d83073557")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/53e4ee87-b751-4948-9b05-449758af2ac8")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* greek */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/24be2f05-f3ed-4120-8ac7-a44df57409ec")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
|
||
U+03A3-03FF;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/d4d17132-9ea1-411c-a59e-9f9a32cf09ac")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/52b3ab63-2285-432c-9a4e-4ee132aeaab0")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
src: url("blob:null/e36d161d-9afc-4a07-bcf7-45058dba537f")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
} /* cyrillic-ext */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/4a796ff7-acfa-4008-b79a-ed9d83073557")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
|
||
U+FE2E-FE2F;
|
||
} /* cyrillic */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/53e4ee87-b751-4948-9b05-449758af2ac8")
|
||
format("woff2");
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
} /* greek */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/24be2f05-f3ed-4120-8ac7-a44df57409ec")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
|
||
U+03A3-03FF;
|
||
} /* vietnamese */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/d4d17132-9ea1-411c-a59e-9f9a32cf09ac")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
||
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
||
U+1EA0-1EF9, U+20AB;
|
||
} /* latin-ext */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/52b3ab63-2285-432c-9a4e-4ee132aeaab0")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
|
||
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
||
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
} /* latin */
|
||
@font-face {
|
||
font-family: "JetBrains Mono";
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
font-display: swap;
|
||
src: url("blob:null/e36d161d-9afc-4a07-bcf7-45058dba537f")
|
||
format("woff2");
|
||
unicode-range:
|
||
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
||
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
||
U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
</style>
|
||
<style>
|
||
:root {
|
||
--bg-0: #070a18;
|
||
--bg-1: #0a0d1f;
|
||
--bg-2: #10142a;
|
||
--bg-3: #1a1f3a;
|
||
--panel: rgba(20, 25, 48, 0.55);
|
||
--panel-border: rgba(127, 184, 212, 0.14);
|
||
--panel-border-strong: rgba(127, 184, 212, 0.28);
|
||
--arcane: #5b3a8a;
|
||
--arcane-2: #8a5cc8;
|
||
--moon: #7fb8d4;
|
||
--moon-2: #c8e6ff;
|
||
--ivory: #ece4d0;
|
||
--gold: #d4b878;
|
||
--green: #6fc28a;
|
||
--amber: #e8a76b;
|
||
--red: #d76a78;
|
||
--text-soft: rgba(236, 228, 208, 0.78);
|
||
--text-mute: rgba(236, 228, 208, 0.5);
|
||
--text-dim: rgba(236, 228, 208, 0.32);
|
||
--f-display: "Cinzel", serif;
|
||
--f-serif: "Cormorant Garamond", serif;
|
||
--f-sans: "Inter", system-ui, sans-serif;
|
||
--f-mono: "JetBrains Mono", monospace;
|
||
--radius: 6px;
|
||
--radius-lg: 10px;
|
||
--t-fast: 180ms ease;
|
||
}
|
||
* {
|
||
box-sizing: border-box;
|
||
}
|
||
html,
|
||
body {
|
||
margin: 0;
|
||
padding: 0;
|
||
background: #04060e;
|
||
min-height: 100vh;
|
||
color: var(--ivory);
|
||
font-family: var(--f-sans);
|
||
}
|
||
body {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding: 32px;
|
||
background:
|
||
radial-gradient(
|
||
ellipse at 30% 30%,
|
||
rgba(91, 58, 138, 0.12),
|
||
transparent 50%
|
||
),
|
||
radial-gradient(
|
||
ellipse at 70% 70%,
|
||
rgba(127, 184, 212, 0.08),
|
||
transparent 50%
|
||
),
|
||
#04060e;
|
||
} /* ---------- Stage with multiple slide states ---------- */
|
||
.stage {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 24px;
|
||
align-items: center;
|
||
}
|
||
.stage-label {
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
letter-spacing: 0.24em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
display: flex;
|
||
gap: 14px;
|
||
align-items: center;
|
||
}
|
||
.stage-label .dot {
|
||
width: 6px;
|
||
height: 6px;
|
||
border-radius: 50%;
|
||
background: var(--moon);
|
||
box-shadow: 0 0 10px var(--moon);
|
||
}
|
||
.stage-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(2, 1280px);
|
||
gap: 32px;
|
||
padding-bottom: 32px;
|
||
} /* ---------- Launcher window ---------- */
|
||
.launcher {
|
||
width: 1280px;
|
||
height: 720px;
|
||
position: relative;
|
||
background: #06091a;
|
||
border-radius: 12px;
|
||
overflow: hidden;
|
||
box-shadow:
|
||
0 60px 160px -30px rgba(0, 0, 0, 0.8),
|
||
0 0 0 1px rgba(127, 184, 212, 0.18),
|
||
inset 0 0 0 1px rgba(255, 255, 255, 0.02);
|
||
font-family: var(--f-sans);
|
||
color: var(--ivory);
|
||
isolation: isolate;
|
||
} /* Theming variants — same as landing */
|
||
.launcher[data-variant="forest"] {
|
||
--bg-tint: rgba(60, 90, 70, 0.18);
|
||
--accent: var(--moon);
|
||
}
|
||
.launcher[data-variant="temple"] {
|
||
--bg-tint: rgba(91, 58, 138, 0.22);
|
||
--accent: var(--arcane-2);
|
||
} /* ---------- Window chrome ---------- */
|
||
.win-titlebar {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
height: 40px;
|
||
display: flex;
|
||
align-items: center;
|
||
padding: 0 12px;
|
||
z-index: 30;
|
||
-webkit-app-region: drag;
|
||
}
|
||
.win-title-spacer {
|
||
flex: 1;
|
||
}
|
||
.win-buttons {
|
||
display: flex;
|
||
gap: 4px;
|
||
-webkit-app-region: no-drag;
|
||
}
|
||
.win-btn {
|
||
width: 36px;
|
||
height: 28px;
|
||
border-radius: 4px;
|
||
background: transparent;
|
||
border: 0;
|
||
color: var(--text-soft);
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
transition:
|
||
background var(--t-fast),
|
||
color var(--t-fast);
|
||
}
|
||
.win-btn:hover {
|
||
background: rgba(255, 255, 255, 0.06);
|
||
color: var(--ivory);
|
||
}
|
||
.win-btn.close:hover {
|
||
background: rgba(215, 106, 120, 0.5);
|
||
color: white;
|
||
}
|
||
.win-btn svg {
|
||
width: 14px;
|
||
height: 14px;
|
||
} /* ---------- Background art (placeholder) ---------- */
|
||
.bg-art {
|
||
position: absolute;
|
||
inset: 0;
|
||
z-index: 0;
|
||
background:
|
||
radial-gradient(ellipse at 60% 30%, var(--bg-tint), transparent 55%),
|
||
radial-gradient(
|
||
ellipse at 30% 80%,
|
||
rgba(127, 184, 212, 0.1),
|
||
transparent 55%
|
||
),
|
||
linear-gradient(180deg, #08102a 0%, #06091a 60%, #050714 100%);
|
||
}
|
||
.bg-art::after {
|
||
/* darken edges for legibility */
|
||
content: "";
|
||
position: absolute;
|
||
inset: 0;
|
||
background:
|
||
linear-gradient(
|
||
90deg,
|
||
rgba(6, 9, 26, 0.85) 0%,
|
||
rgba(6, 9, 26, 0.2) 30%,
|
||
rgba(6, 9, 26, 0) 50%,
|
||
rgba(6, 9, 26, 0.5) 100%
|
||
),
|
||
linear-gradient(
|
||
180deg,
|
||
rgba(6, 9, 26, 0) 60%,
|
||
rgba(6, 9, 26, 0.85) 100%
|
||
);
|
||
}
|
||
.bg-stars {
|
||
position: absolute;
|
||
inset: 0;
|
||
background-image:
|
||
radial-gradient(
|
||
1.5px 1.5px at 12% 18%,
|
||
rgba(232, 220, 192, 0.7),
|
||
transparent 50%
|
||
),
|
||
radial-gradient(
|
||
1px 1px at 28% 52%,
|
||
rgba(232, 220, 192, 0.5),
|
||
transparent 50%
|
||
),
|
||
radial-gradient(
|
||
1.5px 1.5px at 64% 22%,
|
||
rgba(127, 184, 212, 0.6),
|
||
transparent 50%
|
||
),
|
||
radial-gradient(
|
||
1px 1px at 82% 65%,
|
||
rgba(232, 220, 192, 0.5),
|
||
transparent 50%
|
||
),
|
||
radial-gradient(
|
||
2px 2px at 48% 12%,
|
||
rgba(232, 220, 192, 0.4),
|
||
transparent 50%
|
||
),
|
||
radial-gradient(
|
||
1px 1px at 76% 38%,
|
||
rgba(232, 220, 192, 0.4),
|
||
transparent 50%
|
||
);
|
||
}
|
||
.bg-moon {
|
||
position: absolute;
|
||
top: 8%;
|
||
right: 14%;
|
||
width: 180px;
|
||
height: 180px;
|
||
border-radius: 50%;
|
||
background: radial-gradient(
|
||
circle at 35% 35%,
|
||
rgba(232, 220, 192, 0.95),
|
||
rgba(127, 184, 212, 0.4) 60%,
|
||
transparent 75%
|
||
);
|
||
filter: blur(0.5px);
|
||
opacity: 0.55;
|
||
}
|
||
.bg-placeholder-mark {
|
||
position: absolute;
|
||
inset: 80px 80px 200px 580px;
|
||
border: 1px dashed rgba(127, 184, 212, 0.28);
|
||
border-radius: 8px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
pointer-events: none;
|
||
z-index: 1;
|
||
}
|
||
.bg-placeholder-mark span:first-child {
|
||
font-family: var(--f-mono);
|
||
font-size: 11px;
|
||
letter-spacing: 0.22em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
}
|
||
.bg-placeholder-mark span:last-child {
|
||
font-family: var(--f-serif);
|
||
font-style: italic;
|
||
font-size: 14px;
|
||
color: var(--text-mute);
|
||
} /* ---------- Left rail ---------- */
|
||
.rail {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
bottom: 0;
|
||
width: 64px;
|
||
background: linear-gradient(
|
||
180deg,
|
||
rgba(7, 10, 24, 0.55),
|
||
rgba(7, 10, 24, 0.35)
|
||
);
|
||
border-right: 1px solid var(--panel-border);
|
||
z-index: 10;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
padding: 48px 0 16px;
|
||
gap: 14px;
|
||
}
|
||
.rail-wide {
|
||
width: 240px;
|
||
align-items: stretch;
|
||
padding: 48px 14px 16px;
|
||
gap: 8px;
|
||
}
|
||
.rail-wide .rail-avatar {
|
||
align-self: center;
|
||
}
|
||
.rail-wide .rail-divider {
|
||
align-self: center;
|
||
width: 80%;
|
||
}
|
||
.rail-section-label {
|
||
font-family: var(--f-mono);
|
||
font-size: 9px;
|
||
letter-spacing: 0.24em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
padding: 8px 8px 4px;
|
||
}
|
||
.game-tile {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 10px;
|
||
padding: 8px 10px;
|
||
background: rgba(127, 184, 212, 0.04);
|
||
border: 1px solid var(--panel-border);
|
||
border-radius: var(--radius);
|
||
cursor: pointer;
|
||
text-align: left;
|
||
transition: all var(--t-fast);
|
||
position: relative;
|
||
color: var(--text-soft);
|
||
}
|
||
.game-tile:hover {
|
||
border-color: var(--panel-border-strong);
|
||
background: rgba(127, 184, 212, 0.08);
|
||
}
|
||
.game-tile.active {
|
||
background: linear-gradient(
|
||
90deg,
|
||
rgba(127, 184, 212, 0.18),
|
||
rgba(91, 58, 138, 0.12)
|
||
);
|
||
border-color: var(--accent);
|
||
box-shadow:
|
||
inset 3px 0 0 var(--accent),
|
||
0 0 16px rgba(127, 184, 212, 0.18);
|
||
color: var(--ivory);
|
||
}
|
||
.game-tile.soon {
|
||
opacity: 0.6;
|
||
}
|
||
.game-tile.soon:hover {
|
||
opacity: 0.85;
|
||
}
|
||
.game-tile-mark {
|
||
width: 32px;
|
||
height: 32px;
|
||
flex-shrink: 0;
|
||
border-radius: 6px;
|
||
background: linear-gradient(135deg, var(--arcane), var(--moon));
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-family: var(--f-display);
|
||
font-size: 13px;
|
||
letter-spacing: 0.04em;
|
||
color: var(--ivory);
|
||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||
}
|
||
.game-tile.soon .game-tile-mark {
|
||
background: linear-gradient(
|
||
135deg,
|
||
rgba(91, 58, 138, 0.4),
|
||
rgba(127, 184, 212, 0.25)
|
||
);
|
||
filter: grayscale(0.4);
|
||
}
|
||
.game-tile-info {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 2px;
|
||
min-width: 0;
|
||
flex: 1;
|
||
}
|
||
.game-tile-name {
|
||
font-family: var(--f-display);
|
||
font-size: 11px;
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
color: inherit;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
.game-tile-tag {
|
||
font-family: var(--f-mono);
|
||
font-size: 9px;
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
}
|
||
.game-tile.active .game-tile-tag {
|
||
color: var(--accent);
|
||
}
|
||
.game-tile-lock {
|
||
position: absolute;
|
||
top: 6px;
|
||
right: 8px;
|
||
font-family: var(--f-mono);
|
||
font-size: 8px;
|
||
letter-spacing: 0.18em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
background: rgba(7, 10, 24, 0.6);
|
||
padding: 2px 6px;
|
||
border-radius: 3px;
|
||
border: 1px solid var(--panel-border);
|
||
}
|
||
.rail-avatar {
|
||
width: 40px;
|
||
height: 40px;
|
||
border-radius: 50%;
|
||
background: radial-gradient(
|
||
circle at 30% 30%,
|
||
rgba(127, 184, 212, 0.5),
|
||
rgba(91, 58, 138, 0.6) 70%
|
||
);
|
||
border: 1px solid var(--accent);
|
||
box-shadow: 0 0 12px rgba(127, 184, 212, 0.3);
|
||
position: relative;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-family: var(--f-display);
|
||
font-size: 14px;
|
||
letter-spacing: 0.04em;
|
||
color: var(--ivory);
|
||
}
|
||
.rail-avatar::after {
|
||
content: "";
|
||
position: absolute;
|
||
bottom: 0;
|
||
right: 0;
|
||
width: 10px;
|
||
height: 10px;
|
||
background: var(--green);
|
||
border-radius: 50%;
|
||
border: 2px solid #06091a;
|
||
}
|
||
.rail-divider {
|
||
width: 24px;
|
||
height: 1px;
|
||
background: var(--panel-border);
|
||
}
|
||
.rail-icon {
|
||
width: 40px;
|
||
height: 40px;
|
||
background: transparent;
|
||
border: 0;
|
||
color: var(--text-mute);
|
||
cursor: pointer;
|
||
border-radius: var(--radius);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
transition: all var(--t-fast);
|
||
}
|
||
.rail-icon:hover {
|
||
color: var(--accent);
|
||
background: rgba(127, 184, 212, 0.06);
|
||
}
|
||
.rail-icon.active {
|
||
color: var(--accent);
|
||
background: rgba(127, 184, 212, 0.1);
|
||
}
|
||
.rail-icon svg {
|
||
width: 18px;
|
||
height: 18px;
|
||
}
|
||
.rail-spacer {
|
||
flex: 1;
|
||
} /* ---------- Header (logo + player) ---------- */
|
||
.header {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 240px;
|
||
right: 0;
|
||
height: 96px;
|
||
z-index: 20;
|
||
padding: 24px 32px 0;
|
||
display: flex;
|
||
align-items: flex-start;
|
||
justify-content: space-between;
|
||
pointer-events: none;
|
||
}
|
||
.header > * {
|
||
pointer-events: auto;
|
||
}
|
||
.brand {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 14px;
|
||
}
|
||
.brand-mark {
|
||
width: 40px;
|
||
height: 40px;
|
||
color: var(--accent);
|
||
filter: drop-shadow(0 0 12px currentColor);
|
||
}
|
||
.brand-mark svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
.brand-name {
|
||
font-family: var(--f-display);
|
||
font-size: 22px;
|
||
letter-spacing: 0.28em;
|
||
color: var(--ivory);
|
||
line-height: 1;
|
||
}
|
||
.brand-name small {
|
||
display: block;
|
||
font-family: var(--f-mono);
|
||
font-size: 9px;
|
||
letter-spacing: 0.32em;
|
||
color: var(--accent);
|
||
margin-top: 4px;
|
||
font-weight: 400;
|
||
}
|
||
.player {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 12px;
|
||
padding: 8px 14px 8px 8px;
|
||
background: rgba(7, 10, 24, 0.55);
|
||
border: 1px solid var(--panel-border);
|
||
border-radius: 100px;
|
||
backdrop-filter: blur(8px);
|
||
margin-top: 4px;
|
||
}
|
||
.player-avatar {
|
||
width: 36px;
|
||
height: 36px;
|
||
border-radius: 50%;
|
||
background: radial-gradient(
|
||
circle at 30% 30%,
|
||
var(--moon),
|
||
var(--arcane) 70%
|
||
);
|
||
border: 1px solid var(--accent);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-family: var(--f-display);
|
||
font-size: 13px;
|
||
}
|
||
.player-info {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 2px;
|
||
line-height: 1;
|
||
}
|
||
.player-name {
|
||
font-family: var(--f-display);
|
||
font-size: 14px;
|
||
letter-spacing: 0.1em;
|
||
color: var(--ivory);
|
||
}
|
||
.player-meta {
|
||
font-family: var(--f-mono);
|
||
font-size: 9px;
|
||
letter-spacing: 0.18em;
|
||
color: var(--text-mute);
|
||
text-transform: uppercase;
|
||
} /* ---------- News panel (right) ---------- */
|
||
.news-panel {
|
||
position: absolute;
|
||
top: 110px;
|
||
right: 24px;
|
||
bottom: 130px;
|
||
width: 360px;
|
||
z-index: 15;
|
||
background: linear-gradient(
|
||
180deg,
|
||
rgba(10, 13, 31, 0.78),
|
||
rgba(7, 10, 24, 0.78)
|
||
);
|
||
border: 1px solid var(--panel-border-strong);
|
||
border-radius: var(--radius-lg);
|
||
backdrop-filter: blur(12px);
|
||
display: flex;
|
||
flex-direction: column;
|
||
overflow: hidden;
|
||
}
|
||
.news-tabs {
|
||
display: flex;
|
||
border-bottom: 1px solid var(--panel-border);
|
||
}
|
||
.news-tab {
|
||
flex: 1;
|
||
padding: 14px 8px;
|
||
background: transparent;
|
||
border: 0;
|
||
border-bottom: 1px solid transparent;
|
||
color: var(--text-mute);
|
||
cursor: pointer;
|
||
font-family: var(--f-display);
|
||
font-size: 11px;
|
||
letter-spacing: 0.18em;
|
||
text-transform: uppercase;
|
||
transition: all var(--t-fast);
|
||
}
|
||
.news-tab.active {
|
||
color: var(--ivory);
|
||
border-bottom-color: var(--accent);
|
||
background: rgba(127, 184, 212, 0.06);
|
||
}
|
||
.news-tab:hover:not(.active) {
|
||
color: var(--text-soft);
|
||
}
|
||
.news-list {
|
||
flex: 1;
|
||
overflow-y: auto;
|
||
padding: 8px 4px 8px 16px;
|
||
}
|
||
.news-list::-webkit-scrollbar {
|
||
width: 6px;
|
||
}
|
||
.news-list::-webkit-scrollbar-thumb {
|
||
background: rgba(127, 184, 212, 0.2);
|
||
border-radius: 3px;
|
||
}
|
||
.news-item {
|
||
display: block;
|
||
padding: 14px 12px 14px 0;
|
||
border-bottom: 1px solid var(--panel-border);
|
||
cursor: pointer;
|
||
transition: background var(--t-fast);
|
||
text-decoration: none;
|
||
color: inherit;
|
||
}
|
||
.news-item:hover {
|
||
background: rgba(127, 184, 212, 0.04);
|
||
}
|
||
.news-item:last-child {
|
||
border-bottom: 0;
|
||
}
|
||
.news-item-head {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
gap: 12px;
|
||
margin-bottom: 6px;
|
||
}
|
||
.news-tag {
|
||
font-family: var(--f-mono);
|
||
font-size: 9px;
|
||
letter-spacing: 0.22em;
|
||
text-transform: uppercase;
|
||
padding: 3px 8px;
|
||
border-radius: 3px;
|
||
border: 1px solid currentColor;
|
||
}
|
||
.news-tag.patch {
|
||
color: var(--accent);
|
||
}
|
||
.news-tag.event {
|
||
color: var(--gold);
|
||
}
|
||
.news-tag.notice {
|
||
color: var(--amber);
|
||
}
|
||
.news-date {
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
color: var(--text-mute);
|
||
letter-spacing: 0.08em;
|
||
}
|
||
.news-title {
|
||
font-family: var(--f-serif);
|
||
font-size: 16px;
|
||
line-height: 1.35;
|
||
color: var(--ivory);
|
||
letter-spacing: 0.01em;
|
||
}
|
||
.news-item:hover .news-title {
|
||
color: var(--accent);
|
||
}
|
||
.news-foot {
|
||
border-top: 1px solid var(--panel-border);
|
||
padding: 12px 16px;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
letter-spacing: 0.18em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
}
|
||
.news-foot a {
|
||
color: var(--accent);
|
||
text-decoration: none;
|
||
} /* ---------- Hero copy (left over art) ---------- */
|
||
.hero-copy {
|
||
position: absolute;
|
||
left: 272px;
|
||
top: 160px;
|
||
z-index: 12;
|
||
max-width: 540px;
|
||
}
|
||
.hero-eyebrow {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 10px;
|
||
font-family: var(--f-mono);
|
||
font-size: 11px;
|
||
letter-spacing: 0.24em;
|
||
text-transform: uppercase;
|
||
color: var(--accent);
|
||
padding: 6px 12px;
|
||
border: 1px solid currentColor;
|
||
border-radius: 100px;
|
||
}
|
||
.hero-eyebrow .dot {
|
||
width: 6px;
|
||
height: 6px;
|
||
border-radius: 50%;
|
||
background: currentColor;
|
||
box-shadow: 0 0 8px currentColor;
|
||
}
|
||
.hero-headline {
|
||
font-family: var(--f-display);
|
||
font-size: 56px;
|
||
line-height: 1.05;
|
||
letter-spacing: 0.04em;
|
||
margin: 18px 0 12px;
|
||
color: var(--ivory);
|
||
text-shadow: 0 4px 30px rgba(0, 0, 0, 0.6);
|
||
}
|
||
.hero-headline .accent {
|
||
color: var(--accent);
|
||
font-style: italic;
|
||
font-family: var(--f-serif);
|
||
font-weight: 400;
|
||
}
|
||
.hero-sub {
|
||
font-family: var(--f-serif);
|
||
font-size: 18px;
|
||
font-style: italic;
|
||
line-height: 1.5;
|
||
color: var(--text-soft);
|
||
max-width: 460px;
|
||
} /* ---------- Bottom action bar ---------- */
|
||
.actions {
|
||
position: absolute;
|
||
left: 240px;
|
||
right: 0;
|
||
bottom: 0;
|
||
height: 110px;
|
||
z-index: 18;
|
||
padding: 18px 32px 22px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: flex-end;
|
||
background: linear-gradient(
|
||
180deg,
|
||
rgba(6, 9, 26, 0) 0%,
|
||
rgba(6, 9, 26, 0.85) 30%,
|
||
rgba(6, 9, 26, 0.95) 100%
|
||
);
|
||
}
|
||
.action-row {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 24px;
|
||
} /* Realm pill */
|
||
.realm-pill {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 12px;
|
||
padding: 10px 16px;
|
||
background: rgba(7, 10, 24, 0.6);
|
||
border: 1px solid var(--panel-border);
|
||
border-radius: var(--radius);
|
||
flex-shrink: 0;
|
||
}
|
||
.realm-pulse {
|
||
position: relative;
|
||
width: 8px;
|
||
height: 8px;
|
||
border-radius: 50%;
|
||
background: var(--green);
|
||
}
|
||
.realm-pulse::after {
|
||
content: "";
|
||
position: absolute;
|
||
inset: -4px;
|
||
border-radius: 50%;
|
||
border: 1px solid var(--green);
|
||
animation: pulse 2.5s ease-out infinite;
|
||
}
|
||
@keyframes pulse {
|
||
0% {
|
||
transform: scale(0.6);
|
||
opacity: 1;
|
||
}
|
||
100% {
|
||
transform: scale(2.4);
|
||
opacity: 0;
|
||
}
|
||
}
|
||
.realm-name {
|
||
font-family: var(--f-display);
|
||
font-size: 12px;
|
||
letter-spacing: 0.16em;
|
||
color: var(--ivory);
|
||
}
|
||
.realm-meta {
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
letter-spacing: 0.12em;
|
||
color: var(--text-mute);
|
||
margin-top: 2px;
|
||
} /* Progress block */
|
||
.progress-block {
|
||
flex: 1;
|
||
min-width: 0;
|
||
}
|
||
.progress-head {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: baseline;
|
||
margin-bottom: 8px;
|
||
font-family: var(--f-mono);
|
||
font-size: 11px;
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
}
|
||
.progress-state {
|
||
color: var(--accent);
|
||
}
|
||
.progress-pct {
|
||
color: var(--ivory);
|
||
font-size: 14px;
|
||
letter-spacing: 0.04em;
|
||
}
|
||
.progress-bar {
|
||
height: 4px;
|
||
background: rgba(127, 184, 212, 0.12);
|
||
border-radius: 2px;
|
||
overflow: hidden;
|
||
position: relative;
|
||
}
|
||
.progress-fill {
|
||
height: 100%;
|
||
background: linear-gradient(90deg, var(--arcane-2), var(--accent));
|
||
border-radius: 2px;
|
||
position: relative;
|
||
transition: width 400ms ease;
|
||
}
|
||
.progress-fill::after {
|
||
content: "";
|
||
position: absolute;
|
||
top: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
width: 30px;
|
||
background: linear-gradient(
|
||
90deg,
|
||
transparent,
|
||
rgba(255, 255, 255, 0.4)
|
||
);
|
||
filter: blur(2px);
|
||
}
|
||
.progress-meta {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
margin-top: 8px;
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
color: var(--text-mute);
|
||
letter-spacing: 0.08em;
|
||
}
|
||
.progress-meta .left {
|
||
display: flex;
|
||
gap: 18px;
|
||
} /* Play button */
|
||
.play-btn {
|
||
height: 64px;
|
||
min-width: 220px;
|
||
padding: 0 36px;
|
||
border: 0;
|
||
border-radius: var(--radius);
|
||
font-family: var(--f-display);
|
||
font-size: 18px;
|
||
letter-spacing: 0.22em;
|
||
text-transform: uppercase;
|
||
cursor: pointer;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 14px;
|
||
transition: all var(--t-fast);
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
.play-btn .icon {
|
||
width: 18px;
|
||
height: 18px;
|
||
display: inline-flex;
|
||
}
|
||
.play-btn .icon svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
.play-btn.ready {
|
||
background: linear-gradient(180deg, #6fc28a, #4ea073);
|
||
color: #0a1810;
|
||
box-shadow:
|
||
0 0 40px rgba(111, 194, 138, 0.4),
|
||
inset 0 1px 0 rgba(255, 255, 255, 0.3);
|
||
}
|
||
.play-btn.ready:hover {
|
||
transform: translateY(-1px);
|
||
box-shadow:
|
||
0 0 60px rgba(111, 194, 138, 0.55),
|
||
inset 0 1px 0 rgba(255, 255, 255, 0.3);
|
||
}
|
||
.play-btn.ready::before {
|
||
content: "";
|
||
position: absolute;
|
||
inset: -2px;
|
||
border-radius: var(--radius);
|
||
background: conic-gradient(
|
||
from 0deg,
|
||
transparent,
|
||
var(--green),
|
||
transparent 60%
|
||
);
|
||
animation: rotate 4s linear infinite;
|
||
z-index: -1;
|
||
}
|
||
@keyframes rotate {
|
||
to {
|
||
transform: rotate(360deg);
|
||
}
|
||
}
|
||
.play-btn.pause {
|
||
background: linear-gradient(180deg, var(--arcane-2), var(--arcane));
|
||
color: var(--ivory);
|
||
box-shadow:
|
||
0 0 30px rgba(138, 92, 200, 0.35),
|
||
inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
||
}
|
||
.play-btn.pause:hover {
|
||
filter: brightness(1.1);
|
||
}
|
||
.play-btn.disabled {
|
||
background: rgba(127, 184, 212, 0.1);
|
||
color: var(--text-mute);
|
||
cursor: not-allowed;
|
||
border: 1px solid var(--panel-border-strong);
|
||
}
|
||
.play-btn.error {
|
||
background: linear-gradient(180deg, var(--red), #a14750);
|
||
color: white;
|
||
} /* ---------- Footer status bar ---------- */
|
||
.statusbar {
|
||
position: absolute;
|
||
bottom: 0;
|
||
left: 240px;
|
||
right: 0;
|
||
height: 26px;
|
||
z-index: 19;
|
||
display: flex;
|
||
align-items: center;
|
||
padding: 0 32px;
|
||
gap: 24px;
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
letter-spacing: 0.14em;
|
||
color: var(--text-mute);
|
||
border-top: 1px solid var(--panel-border);
|
||
background: rgba(4, 6, 14, 0.7);
|
||
}
|
||
.statusbar .sep {
|
||
color: var(--text-dim);
|
||
}
|
||
.statusbar .right {
|
||
margin-left: auto;
|
||
}
|
||
.statusbar strong {
|
||
color: var(--text-soft);
|
||
font-weight: 400;
|
||
} /* ---------- Login screen ---------- */
|
||
.login-stack {
|
||
position: absolute;
|
||
inset: 0;
|
||
z-index: 25;
|
||
display: flex;
|
||
}
|
||
.login-art {
|
||
flex: 1;
|
||
position: relative;
|
||
border-right: 1px solid var(--panel-border);
|
||
display: flex;
|
||
align-items: flex-end;
|
||
padding: 64px;
|
||
}
|
||
.login-art-mark {
|
||
position: absolute;
|
||
inset: 100px 80px;
|
||
border: 1px dashed rgba(127, 184, 212, 0.22);
|
||
border-radius: 8px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
pointer-events: none;
|
||
}
|
||
.login-art-mark span:first-child {
|
||
font-family: var(--f-mono);
|
||
font-size: 11px;
|
||
letter-spacing: 0.22em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
}
|
||
.login-art-mark span:last-child {
|
||
font-family: var(--f-serif);
|
||
font-style: italic;
|
||
font-size: 14px;
|
||
color: var(--text-mute);
|
||
}
|
||
.login-art-quote {
|
||
position: relative;
|
||
z-index: 2;
|
||
max-width: 460px;
|
||
font-family: var(--f-serif);
|
||
font-style: italic;
|
||
font-size: 22px;
|
||
line-height: 1.5;
|
||
color: var(--text-soft);
|
||
}
|
||
.login-art-quote::before {
|
||
content: "✦";
|
||
display: block;
|
||
color: var(--accent);
|
||
font-style: normal;
|
||
font-size: 18px;
|
||
margin-bottom: 14px;
|
||
}
|
||
.login-art-quote cite {
|
||
display: block;
|
||
margin-top: 18px;
|
||
font-family: var(--f-mono);
|
||
font-style: normal;
|
||
font-size: 10px;
|
||
letter-spacing: 0.22em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
}
|
||
.login-form {
|
||
width: 480px;
|
||
padding: 64px 56px 48px;
|
||
background: linear-gradient(
|
||
180deg,
|
||
rgba(10, 13, 31, 0.95),
|
||
rgba(7, 10, 24, 0.95)
|
||
);
|
||
display: flex;
|
||
flex-direction: column;
|
||
overflow-y: auto;
|
||
}
|
||
.login-form::-webkit-scrollbar {
|
||
width: 6px;
|
||
}
|
||
.login-form::-webkit-scrollbar-thumb {
|
||
background: rgba(127, 184, 212, 0.2);
|
||
border-radius: 3px;
|
||
}
|
||
.login-brand {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 12px;
|
||
margin-bottom: 24px;
|
||
}
|
||
.login-brand-mark {
|
||
width: 28px;
|
||
height: 28px;
|
||
color: var(--accent);
|
||
}
|
||
.login-brand-mark svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
.login-brand-name {
|
||
font-family: var(--f-display);
|
||
letter-spacing: 0.28em;
|
||
font-size: 15px;
|
||
}
|
||
.login-eyebrow {
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
letter-spacing: 0.24em;
|
||
text-transform: uppercase;
|
||
color: var(--accent);
|
||
}
|
||
.login-h {
|
||
font-family: var(--f-display);
|
||
font-size: 30px;
|
||
letter-spacing: 0.04em;
|
||
margin: 10px 0 6px;
|
||
color: var(--ivory);
|
||
}
|
||
.login-sub {
|
||
font-family: var(--f-serif);
|
||
font-style: italic;
|
||
font-size: 15px;
|
||
color: var(--text-mute);
|
||
margin-bottom: 22px;
|
||
line-height: 1.4;
|
||
}
|
||
.login-tabs {
|
||
display: flex;
|
||
gap: 0;
|
||
margin-bottom: 18px;
|
||
border-bottom: 1px solid var(--panel-border);
|
||
}
|
||
.login-tab {
|
||
flex: 1;
|
||
padding: 10px 0;
|
||
background: transparent;
|
||
border: 0;
|
||
border-bottom: 1px solid transparent;
|
||
color: var(--text-mute);
|
||
cursor: pointer;
|
||
font-family: var(--f-display);
|
||
font-size: 11px;
|
||
letter-spacing: 0.18em;
|
||
text-transform: uppercase;
|
||
transition: all var(--t-fast);
|
||
}
|
||
.login-tab.active {
|
||
color: var(--ivory);
|
||
border-bottom-color: var(--accent);
|
||
}
|
||
.field {
|
||
margin-bottom: 12px;
|
||
}
|
||
.field-label {
|
||
display: block;
|
||
font-family: var(--f-sans);
|
||
font-size: 10px;
|
||
font-weight: 600;
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
color: var(--ivory);
|
||
margin-bottom: 6px;
|
||
}
|
||
.field-input {
|
||
width: 100%;
|
||
padding: 10px 12px;
|
||
background: rgba(7, 10, 24, 0.7);
|
||
border: 1px solid var(--panel-border);
|
||
border-radius: var(--radius);
|
||
color: var(--ivory);
|
||
font-family: var(--f-sans);
|
||
font-size: 13px;
|
||
transition: all var(--t-fast);
|
||
}
|
||
.field-input:focus {
|
||
outline: none;
|
||
border-color: var(--accent);
|
||
box-shadow: 0 0 0 3px rgba(127, 184, 212, 0.1);
|
||
}
|
||
.login-row {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
font-size: 11px;
|
||
margin: 4px 0 16px;
|
||
}
|
||
.login-row a {
|
||
color: var(--accent);
|
||
text-decoration: none;
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
letter-spacing: 0.1em;
|
||
}
|
||
.login-row label {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
color: var(--text-soft);
|
||
cursor: pointer;
|
||
}
|
||
.login-row input[type="checkbox"] {
|
||
accent-color: var(--accent);
|
||
}
|
||
.login-submit {
|
||
width: 100%;
|
||
padding: 14px;
|
||
background: linear-gradient(180deg, var(--arcane-2), var(--arcane));
|
||
border: 0;
|
||
border-radius: var(--radius);
|
||
color: var(--ivory);
|
||
font-family: var(--f-display);
|
||
font-size: 13px;
|
||
letter-spacing: 0.22em;
|
||
text-transform: uppercase;
|
||
cursor: pointer;
|
||
transition: all var(--t-fast);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 12px;
|
||
flex-shrink: 0;
|
||
}
|
||
.login-submit svg {
|
||
width: 14px;
|
||
height: 14px;
|
||
flex-shrink: 0;
|
||
}
|
||
.login-submit:hover {
|
||
filter: brightness(1.1);
|
||
transform: translateY(-1px);
|
||
}
|
||
.login-foot {
|
||
margin-top: 16px;
|
||
padding-top: 16px;
|
||
border-top: 1px solid var(--panel-border);
|
||
font-family: var(--f-mono);
|
||
font-size: 9px;
|
||
letter-spacing: 0.16em;
|
||
text-transform: uppercase;
|
||
color: var(--text-mute);
|
||
text-align: center;
|
||
flex-shrink: 0;
|
||
} /* ---------- Tweaks ---------- */
|
||
.tweaks-host {
|
||
position: fixed;
|
||
top: 16px;
|
||
right: 16px;
|
||
z-index: 100;
|
||
background: rgba(10, 13, 31, 0.95);
|
||
border: 1px solid var(--panel-border-strong);
|
||
border-radius: var(--radius-lg);
|
||
padding: 16px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 12px;
|
||
font-family: var(--f-sans);
|
||
font-size: 12px;
|
||
width: 240px;
|
||
backdrop-filter: blur(10px);
|
||
}
|
||
.tweaks-host h4 {
|
||
margin: 0 0 4px;
|
||
font-family: var(--f-display);
|
||
letter-spacing: 0.18em;
|
||
font-size: 13px;
|
||
}
|
||
.tweaks-row {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 6px;
|
||
}
|
||
.tweaks-row label {
|
||
color: var(--text-mute);
|
||
font-family: var(--f-mono);
|
||
font-size: 10px;
|
||
letter-spacing: 0.16em;
|
||
text-transform: uppercase;
|
||
}
|
||
.tweaks-seg {
|
||
display: flex;
|
||
gap: 4px;
|
||
}
|
||
.tweaks-seg button {
|
||
flex: 1;
|
||
padding: 8px;
|
||
background: rgba(127, 184, 212, 0.05);
|
||
border: 1px solid var(--panel-border);
|
||
border-radius: 4px;
|
||
color: var(--text-soft);
|
||
cursor: pointer;
|
||
font-family: var(--f-sans);
|
||
font-size: 11px;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
}
|
||
.tweaks-seg button.active {
|
||
background: var(--accent);
|
||
color: var(--bg-0);
|
||
border-color: var(--accent);
|
||
}
|
||
</style>
|
||
<script>
|
||
"use strict"; // Icon set for the launcher var LIcons = { min: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M5 12h14" })), close: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M6 6l12 12M18 6L6 18" })), play: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor" }, /*#__PURE__*/React.createElement("path", { d: "M7 5v14l12-7z" })), pause: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor" }, /*#__PURE__*/React.createElement("rect", { x: "6", y: "5", width: "4", height: "14", rx: "1" }), /*#__PURE__*/React.createElement("rect", { x: "14", y: "5", width: "4", height: "14", rx: "1" })), refresh: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M3 12a9 9 0 0 1 15.5-6.3L21 8" }), /*#__PURE__*/React.createElement("path", { d: "M21 3v5h-5" }), /*#__PURE__*/React.createElement("path", { d: "M21 12a9 9 0 0 1-15.5 6.3L3 16" }), /*#__PURE__*/React.createElement("path", { d: "M3 21v-5h5" })), arrow: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M5 12h14M13 6l6 6-6 6" })), cog: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("circle", { cx: "12", cy: "12", r: "3" }), /*#__PURE__*/React.createElement("path", { d: "M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z" })), friends: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }), /*#__PURE__*/React.createElement("circle", { cx: "9", cy: "7", r: "4" }), /*#__PURE__*/React.createElement("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }), /*#__PURE__*/React.createElement("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })), news: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M4 4h13v16H4z" }), /*#__PURE__*/React.createElement("path", { d: "M17 8h3v10a2 2 0 0 1-2 2" }), /*#__PURE__*/React.createElement("path", { d: "M7 8h7M7 12h7M7 16h4" })), shop: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M3 7h18l-2 12H5z" }), /*#__PURE__*/React.createElement("path", { d: "M8 7a4 4 0 0 1 8 0" })), moon: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor" }, /*#__PURE__*/React.createElement("path", { d: "M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z" })), download: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M12 3v13" }), /*#__PURE__*/React.createElement("path", { d: "M7 11l5 5 5-5" }), /*#__PURE__*/React.createElement("path", { d: "M5 21h14" })), warning: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M12 3l10 18H2z" }), /*#__PURE__*/React.createElement("path", { d: "M12 10v5M12 18v.01" })), arrow_left: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M19 12H5M11 18l-6-6 6-6" })) }; function MoonMark(_ref) { var _ref$size = _ref.size, size = _ref$size === void 0 ? 32 : _ref$size; return /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 64 64", width: size, height: size, fill: "none" }, /*#__PURE__*/React.createElement("circle", { cx: "32", cy: "32", r: "22", stroke: "currentColor", strokeWidth: "1.2", opacity: "0.4" }), /*#__PURE__*/React.createElement("path", { d: "M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z", fill: "currentColor" }), /*#__PURE__*/React.createElement("circle", { cx: "32", cy: "32", r: "30", stroke: "currentColor", strokeWidth: "0.5", opacity: "0.2", strokeDasharray: "2 4" })); } Object.assign(window, { LIcons: LIcons, MoonMark: MoonMark }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMSWNvbnMiLCJtaW4iLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJ2aWV3Qm94IiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiZCIsImNsb3NlIiwicGxheSIsInBhdXNlIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsInJ4IiwicmVmcmVzaCIsImFycm93IiwiY29nIiwiY3giLCJjeSIsInIiLCJmcmllbmRzIiwibmV3cyIsInNob3AiLCJtb29uIiwiZG93bmxvYWQiLCJ3YXJuaW5nIiwiYXJyb3dfbGVmdCIsIk1vb25NYXJrIiwiX3JlZiIsIl9yZWYkc2l6ZSIsInNpemUiLCJvcGFjaXR5Iiwic3Ryb2tlRGFzaGFycmF5IiwiT2JqZWN0IiwiYXNzaWduIiwid2luZG93Il0sInNvdXJjZXMiOlsiSW5saW5lIEJhYmVsIHNjcmlwdCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJY29uIHNldCBmb3IgdGhlIGxhdW5jaGVyXG5jb25zdCBMSWNvbnMgPSB7XG4gIG1pbjogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjEuNVwiPjxwYXRoIGQ9XCJNNSAxMmgxNFwiLz48L3N2Zz4sXG4gIGNsb3NlOiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMS41XCI+PHBhdGggZD1cIk02IDZsMTIgMTJNMTggNkw2IDE4XCIvPjwvc3ZnPixcbiAgcGxheTogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjxwYXRoIGQ9XCJNNyA1djE0bDEyLTd6XCIvPjwvc3ZnPixcbiAgcGF1c2U6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cmVjdCB4PVwiNlwiIHk9XCI1XCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiMTRcIiByeD1cIjFcIi8+PHJlY3QgeD1cIjE0XCIgeT1cIjVcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCIxNFwiIHJ4PVwiMVwiLz48L3N2Zz4sXG4gIHJlZnJlc2g6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTMgMTJhOSA5IDAgMCAxIDE1LjUtNi4zTDIxIDhcIi8+PHBhdGggZD1cIk0yMSAzdjVoLTVcIi8+PHBhdGggZD1cIk0yMSAxMmE5IDkgMCAwIDEtMTUuNSA2LjNMMyAxNlwiLz48cGF0aCBkPVwiTTMgMjF2LTVoNVwiLz48L3N2Zz4sXG4gIGFycm93OiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMS41XCI+PHBhdGggZD1cIk01IDEyaDE0TTEzIDZsNiA2LTYgNlwiLz48L3N2Zz4sXG4gIGNvZzogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjEuNVwiPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiM1wiLz48cGF0aCBkPVwiTTE5LjQgMTVhMS43IDEuNyAwIDAgMCAuMyAxLjhsLjEuMWEyIDIgMCAwIDEgMCAyLjggMiAyIDAgMCAxLTIuOCAwbC0uMS0uMWExLjcgMS43IDAgMCAwLTEuOC0uMyAxLjcgMS43IDAgMCAwLTEgMS41VjIxYTIgMiAwIDAgMS00IDB2LS4xYTEuNyAxLjcgMCAwIDAtMS0xLjUgMS43IDEuNyAwIDAgMC0xLjguM2wtLjEuMWEyIDIgMCAwIDEtMi44LTIuOGwuMS0uMWExLjcgMS43IDAgMCAwIC4zLTEuOCAxLjcgMS43IDAgMCAwLTEuNS0xSDNhMiAyIDAgMCAxIDAtNGguMWExLjcgMS43IDAgMCAwIDEuNS0xIDEuNyAxLjcgMCAwIDAtLjMtMS44bC0uMS0uMWEyIDIgMCAwIDEgMi44LTIuOGwuMS4xYTEuNyAxLjcgMCAwIDAgMS44LjMgMS43IDEuNyAwIDAgMCAxLTEuNVYzYTIgMiAwIDAgMSA0IDB2LjFhMS43IDEuNyAwIDAgMCAxIDEuNSAxLjcgMS43IDAgMCAwIDEuOC0uM2wuMS0uMWEyIDIgMCAwIDEgMi44IDIuOGwtLjEuMWExLjcgMS43IDAgMCAwLS4zIDEuOCAxLjcgMS43IDAgMCAwIDEuNSAxSDIxYTIgMiAwIDAgMSAwIDRoLS4xYTEuNyAxLjcgMCAwIDAtMS41IDF6XCIvPjwvc3ZnPixcbiAgZnJpZW5kczogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjEuNVwiPjxwYXRoIGQ9XCJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MlwiLz48Y2lyY2xlIGN4PVwiOVwiIGN5PVwiN1wiIHI9XCI0XCIvPjxwYXRoIGQ9XCJNMjIgMjF2LTJhNCA0IDAgMCAwLTMtMy44N1wiLz48cGF0aCBkPVwiTTE2IDMuMTNhNCA0IDAgMCAxIDAgNy43NVwiLz48L3N2Zz4sXG4gIG5ld3M6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTQgNGgxM3YxNkg0elwiLz48cGF0aCBkPVwiTTE3IDhoM3YxMGEyIDIgMCAwIDEtMiAyXCIvPjxwYXRoIGQ9XCJNNyA4aDdNNyAxMmg3TTcgMTZoNFwiLz48L3N2Zz4sXG4gIHNob3A6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTMgN2gxOGwtMiAxMkg1elwiLz48cGF0aCBkPVwiTTggN2E0IDQgMCAwIDEgOCAwXCIvPjwvc3ZnPixcbiAgbW9vbjogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjxwYXRoIGQ9XCJNMjEgMTIuOEE5IDkgMCAxIDEgMTEuMiAzYTcgNyAwIDAgMCA5LjggOS44elwiLz48L3N2Zz4sXG4gIGRvd25sb2FkOiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMS41XCI+PHBhdGggZD1cIk0xMiAzdjEzXCIvPjxwYXRoIGQ9XCJNNyAxMWw1IDUgNS01XCIvPjxwYXRoIGQ9XCJNNSAyMWgxNFwiLz48L3N2Zz4sXG4gIHdhcm5pbmc6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTEyIDNsMTAgMThIMnpcIi8+PHBhdGggZD1cIk0xMiAxMHY1TTEyIDE4di4wMVwiLz48L3N2Zz4sXG4gIGFycm93X2xlZnQ6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTE5IDEySDVNMTEgMThsLTYtNiA2LTZcIi8+PC9zdmc+LFxufTtcblxuZnVuY3Rpb24gTW9vbk1hcmsoeyBzaXplID0gMzIgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgdmlld0JveD1cIjAgMCA2NCA2NFwiIHdpZHRoPXtzaXplfSBoZWlnaHQ9e3NpemV9IGZpbGw9XCJub25lXCI+XG4gICAgICA8Y2lyY2xlIGN4PVwiMzJcIiBjeT1cIjMyXCIgcj1cIjIyXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjJcIiBvcGFjaXR5PVwiMC40XCIvPlxuICAgICAgPHBhdGggZD1cIk00MCAxNCBBMjIgMjIgMCAxIDAgNDAgNTAgQTE2IDE2IDAgMSAxIDQwIDE0IFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgPGNpcmNsZSBjeD1cIjMyXCIgY3k9XCIzMlwiIHI9XCIzMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMC41XCIgb3BhY2l0eT1cIjAuMlwiIHN0cm9rZURhc2hhcnJheT1cIjIgNFwiLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cblxuT2JqZWN0LmFzc2lnbih3aW5kb3csIHsgTEljb25zLCBNb29uTWFyayB9KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLElBQU1BLE1BQU0sR0FBRztFQUNiQyxHQUFHLGVBQUVDLEtBQUEsQ0FBQUMsYUFBQTtJQUFLQyxPQUFPLEVBQUMsV0FBVztJQUFDQyxJQUFJLEVBQUMsTUFBTTtJQUFDQyxNQUFNLEVBQUMsY0FBYztJQUFDQyxXQUFXLEVBQUM7RUFBSyxnQkFBQ0wsS0FBQSxDQUFBQyxhQUFBO0lBQU1LLENBQUMsRUFBQztFQUFVLENBQUMsQ0FBTSxDQUFDO0VBQzVHQyxLQUFLLGVBQUVQLEtBQUEsQ0FBQUMsYUFBQTtJQUFLQyxPQUFPLEVBQUMsV0FBVztJQUFDQyxJQUFJLEVBQUMsTUFBTTtJQUFDQyxNQUFNLEVBQUMsY0FBYztJQUFDQyxXQUFXLEVBQUM7RUFBSyxnQkFBQ0wsS0FBQSxDQUFBQyxhQUFBO0lBQU1LLENBQUMsRUFBQztFQUFzQixDQUFDLENBQU0sQ0FBQztFQUMxSEUsSUFBSSxlQUFFUixLQUFBLENBQUFDLGFBQUE7SUFBS0MsT0FBTyxFQUFDLFdBQVc7SUFBQ0MsSUFBSSxFQUFDO0VBQWMsZ0JBQUNILEtBQUEsQ0FBQUMsYUFBQTtJQUFNSyxDQUFDLEVBQUM7RUFBZSxDQUFDLENBQU0sQ0FBQztFQUNsRkcsS0FBSyxlQUFFVCxLQUFBLENBQUFDLGFBQUE7SUFBS0MsT0FBTyxFQUFDLFdBQVc7SUFBQ0MsSUFBSSxFQUFDO0VBQWMsZ0JBQUNILEtBQUEsQ0FBQUMsYUFBQTtJQUFNUyxDQUFDLEVBQUMsR0FBRztJQUFD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
|
||
</script>
|
||
<script>
|
||
"use strict";
|
||
function _slicedToArray(r, e) {
|
||
return (
|
||
_arrayWithHoles(r) ||
|
||
_iterableToArrayLimit(r, e) ||
|
||
_unsupportedIterableToArray(r, e) ||
|
||
_nonIterableRest()
|
||
);
|
||
}
|
||
function _nonIterableRest() {
|
||
throw new TypeError(
|
||
"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.",
|
||
);
|
||
}
|
||
function _unsupportedIterableToArray(r, a) {
|
||
if (r) {
|
||
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
||
var t = {}.toString.call(r).slice(8, -1);
|
||
return (
|
||
"Object" === t && r.constructor && (t = r.constructor.name),
|
||
"Map" === t || "Set" === t
|
||
? Array.from(r)
|
||
: "Arguments" === t ||
|
||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
|
||
? _arrayLikeToArray(r, a)
|
||
: void 0
|
||
);
|
||
}
|
||
}
|
||
function _arrayLikeToArray(r, a) {
|
||
(null == a || a > r.length) && (a = r.length);
|
||
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
||
return n;
|
||
}
|
||
function _iterableToArrayLimit(r, l) {
|
||
var t =
|
||
null == r
|
||
? null
|
||
: ("undefined" != typeof Symbol && r[Symbol.iterator]) ||
|
||
r["@@iterator"];
|
||
if (null != t) {
|
||
var e,
|
||
n,
|
||
i,
|
||
u,
|
||
a = [],
|
||
f = !0,
|
||
o = !1;
|
||
try {
|
||
if (((i = (t = t.call(r)).next), 0 === l)) {
|
||
if (Object(t) !== t) return;
|
||
f = !1;
|
||
} else
|
||
for (
|
||
;
|
||
!(f = (e = i.call(t)).done) &&
|
||
(a.push(e.value), a.length !== l);
|
||
f = !0
|
||
);
|
||
} catch (r) {
|
||
((o = !0), (n = r));
|
||
} finally {
|
||
try {
|
||
if (
|
||
!f &&
|
||
null != t["return"] &&
|
||
((u = t["return"]()), Object(u) !== u)
|
||
)
|
||
return;
|
||
} finally {
|
||
if (o) throw n;
|
||
}
|
||
}
|
||
return a;
|
||
}
|
||
}
|
||
function _arrayWithHoles(r) {
|
||
if (Array.isArray(r)) return r;
|
||
} // Main launcher window var _React = React, useState = _React.useState; var GAMES = [{ id: "wow", "short": "MW", name: "MoonWell · WoW", tag: "Open Beta", subtitle: "Wrath of the Lich King · приватный сервер", live: true }, { id: "karts", "short": "K", name: "MoonWell Karts", tag: "Closed Alpha", subtitle: "Аркадные гонки в нашей вселенной", live: false }, { id: "tides", "short": "T", name: "Tides of Elune", tag: "В разработке", subtitle: "Карточная стратегия по мотивам сервера", live: false }, { id: "verge", "short": "V", name: "Project Verge", tag: "Анонс", subtitle: "ARPG-песочница · собственный движок", live: false }]; function LauncherWindow(_ref) { var _ref$variant = _ref.variant, variant = _ref$variant === void 0 ? "forest" : _ref$variant, _ref$state = _ref.state, state = _ref$state === void 0 ? "ready" : _ref$state, _ref$title = _ref.title, title = _ref$title === void 0 ? "Главный — готов играть" : _ref$title, _ref$game = _ref.game, game = _ref$game === void 0 ? "wow" : _ref$game; var _useState = useState("news"), _useState2 = _slicedToArray(_useState, 2), tab = _useState2[0], setTab = _useState2[1]; var activeGame = GAMES.find(function (g) { return g.id === game; }) || GAMES[0]; var news = { news: [{ tag: "patch", tagLabel: "Патч", date: "29.04", title: "Открытая бета: первый сезон стартует на этой неделе" }, { tag: "event", tagLabel: "Событие", date: "27.04", title: "Лунные стражи: PvP-уикенд с тройным рейтингом" }, { tag: "patch", tagLabel: "Патч", date: "24.04", title: "1.4.2 — балансировка соло-данжей и фикс Mythic+" }, { tag: "notice", tagLabel: "Объявление", date: "22.04", title: "Запланированное обслуживание реалмов 24.04 03:00 UTC" }], events: [{ tag: "event", tagLabel: "Событие", date: "01.05", title: "Канун Лунной ночи — задания и временный босс в Тельдрассиле" }, { tag: "event", tagLabel: "Событие", date: "29.04", title: "Лунные стражи: PvP-уикенд с тройным рейтингом" }], patch: [{ tag: "patch", tagLabel: "1.4.2", date: "24.04", title: "Балансировка соло-данжей: Heroic Stratholme" }, { tag: "patch", tagLabel: "1.4.1", date: "18.04", title: "Mythic+ — новые аффиксы недели" }, { tag: "patch", tagLabel: "1.4.0", date: "10.04", title: "Старт открытой беты Wrath" }] }; // Determine visible action UI per state var isReady = state === "ready"; var isDownloading = state === "downloading"; var isPaused = state === "paused"; var isVerify = state === "verify"; var isUpdate = state === "update"; var stateMeta = { ready: { label: "Готов к запуску", pct: 100 }, downloading: { label: "Загрузка", pct: 6 }, paused: { label: "Пауза", pct: 6 }, verify: { label: "Проверка файлов", pct: 38 }, update: { label: "Обновление клиента", pct: 72 } }[state]; var playBtn = function () { if (isReady) return /*#__PURE__*/React.createElement("button", { className: "play-btn ready" }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.play), " \u0418\u0433\u0440\u0430\u0442\u044C"); if (isDownloading) return /*#__PURE__*/React.createElement("button", { className: "play-btn pause" }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.pause), " \u041F\u0430\u0443\u0437\u0430"); if (isPaused) return /*#__PURE__*/React.createElement("button", { className: "play-btn pause" }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.play), " \u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C"); if (isVerify) return /*#__PURE__*/React.createElement("button", { className: "play-btn disabled", disabled: true }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.refresh), " \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430\u2026"); if (isUpdate) return /*#__PURE__*/React.createElement("button", { className: "play-btn pause" }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.download), " \u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435"); return null; }(); return /*#__PURE__*/React.createElement("div", { className: "stage-cell" }, /*#__PURE__*/React.createElement("div", { className: "stage-label" }, /*#__PURE__*/React.createElement("span", { className: "dot" }), /*#__PURE__*/React.createElement("span", null, title)), /*#__PURE__*/React.createElement("div", { style: { height: 12 } }), /*#__PURE__*/React.createElement("div", { className: "launcher", "data-variant": variant }, /*#__PURE__*/React.createElement("div", { className: "bg-art" }), /*#__PURE__*/React.createElement("div", { className: "bg-stars" }), /*#__PURE__*/React.createElement("div", { className: "bg-moon" }), /*#__PURE__*/React.createElement("div", { className: "bg-placeholder-mark" }, /*#__PURE__*/React.createElement("span", null, "Place key art here"), /*#__PURE__*/React.createElement("span", null, "2560\xD71440 \xB7 \u043D\u043E\u0447\u043D\u044B\u0435 \u044D\u043B\u044C\u0444\u044B / \u0422\u0435\u043B\u044C\u0434\u0440\u0430\u0441\u0441\u0438\u043B")), /*#__PURE__*/React.createElement("div", { className: "win-titlebar" }, /*#__PURE__*/React.createElement("div", { className: "win-title-spacer" }), /*#__PURE__*/React.createElement("div", { className: "win-buttons" }, /*#__PURE__*/React.createElement("button", { className: "win-btn" }, LIcons.min), /*#__PURE__*/React.createElement("button", { className: "win-btn close" }, LIcons.close))), /*#__PURE__*/React.createElement("aside", { className: "rail rail-wide" }, /*#__PURE__*/React.createElement("div", { className: "rail-avatar" }, "A"), /*#__PURE__*/React.createElement("div", { className: "rail-divider" }), /*#__PURE__*/React.createElement("div", { className: "rail-section-label" }, "\u0418\u0433\u0440\u044B"), GAMES.map(function (g) { return /*#__PURE__*/React.createElement("button", { key: g.id, className: "game-tile ".concat(g.id === activeGame.id ? "active" : "", " ").concat(g.live ? "" : "soon"), title: "".concat(g.name, " \u2014 ").concat(g.tag) }, /*#__PURE__*/React.createElement("span", { className: "game-tile-mark" }, g["short"]), /*#__PURE__*/React.createElement("span", { className: "game-tile-info" }, /*#__PURE__*/React.createElement("span", { className: "game-tile-name" }, g.name), /*#__PURE__*/React.createElement("span", { className: "game-tile-tag" }, g.tag)), !g.live && /*#__PURE__*/React.createElement("span", { className: "game-tile-lock" }, "soon")); }), /*#__PURE__*/React.createElement("div", { className: "rail-spacer" }), /*#__PURE__*/React.createElement("div", { className: "rail-divider" }), /*#__PURE__*/React.createElement("button", { className: "rail-icon", title: "\u0414\u0440\u0443\u0437\u044C\u044F" }, LIcons.friends), /*#__PURE__*/React.createElement("button", { className: "rail-icon", title: "\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438" }, LIcons.cog)), /*#__PURE__*/React.createElement("header", { className: "header" }, /*#__PURE__*/React.createElement("div", { className: "brand" }, /*#__PURE__*/React.createElement("span", { className: "brand-mark" }, /*#__PURE__*/React.createElement(MoonMark, { size: 40 })), /*#__PURE__*/React.createElement("div", { className: "brand-name" }, "MOONWELL", /*#__PURE__*/React.createElement("small", null, "LUNAR \xB7 LAUNCHER"))), /*#__PURE__*/React.createElement("div", { className: "player" }, /*#__PURE__*/React.createElement("div", { className: "player-avatar" }, "\xC6"), /*#__PURE__*/React.createElement("div", { className: "player-info" }, /*#__PURE__*/React.createElement("span", { className: "player-name" }, "Aranthel"), /*#__PURE__*/React.createElement("span", { className: "player-meta" }, "\u0425\u0440\u0430\u043D\u0438\u0442\u0435\u043B\u044C \u0440\u043E\u0449\u0438 \xB7 47 \u0443\u0440.")))), /*#__PURE__*/React.createElement("div", { className: "hero-copy" }, /*#__PURE__*/React.createElement("span", { className: "hero-eyebrow" }, /*#__PURE__*/React.createElement("span", { className: "dot" }), " ", activeGame.tag), /*#__PURE__*/React.createElement("h1", { className: "hero-headline" }, activeGame.id === "wow" && /*#__PURE__*/React.createElement(React.Fragment, null, "\u0421\u0432\u0435\u0442 \u043A\u043E\u043B\u043E\u0434\u0446\u0430", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "accent" }, "\u0437\u043E\u0432\u0451\u0442 \u0442\u0435\u0431\u044F \u0434\u043E\u043C\u043E\u0439.")), activeGame.id === "karts" && /*#__PURE__*/React.createElement(React.Fragment, null, "\u0413\u043E\u043D\u043A\u0438 \u043F\u043E\u0434", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "accent" }, "\u043B\u0443\u043D\u043D\u044B\u043C \u0441\u0432\u0435\u0442\u043E\u043C.")), activeGame.id === "tides" && /*#__PURE__*/React.createElement(React.Fragment, null, "\u041A\u043E\u043B\u043E\u0434\u0430 \u0441\u0443\u0434\u044C\u0431\u044B", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "accent" }, "\u0432 \u0442\u0432\u043E\u0438\u0445 \u0440\u0443\u043A\u0430\u0445.")), activeGame.id === "verge" && /*#__PURE__*/React.createElement(React.Fragment, null, "\u0417\u0430 \u0433\u0440\u0430\u043D\u044C\u044E", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "accent" }, "\u043F\u0440\u0438\u0432\u044B\u0447\u043D\u043E\u0433\u043E \u043C\u0438\u0440\u0430."))), /*#__PURE__*/React.createElement("p", { className: "hero-sub" }, activeGame.subtitle)), /*#__PURE__*/React.createElement("aside", { className: "news-panel" }, /*#__PURE__*/React.createElement("div", { className: "news-tabs" }, /*#__PURE__*/React.createElement("button", { className: "news-tab ".concat(tab === 'news' ? 'active' : ''), onClick: function onClick() { return setTab('news'); } }, "\u041D\u043E\u0432\u043E\u0441\u0442\u0438"), /*#__PURE__*/React.createElement("button", { className: "news-tab ".concat(tab === 'events' ? 'active' : ''), onClick: function onClick() { return setTab('events'); } }, "\u0421\u043E\u0431\u044B\u0442\u0438\u044F"), /*#__PURE__*/React.createElement("button", { className: "news-tab ".concat(tab === 'patch' ? 'active' : ''), onClick: function onClick() { return setTab('patch'); } }, "\u041F\u0430\u0442\u0447\u0438")), /*#__PURE__*/React.createElement("div", { className: "news-list" }, news[tab].map(function (n, i) { return /*#__PURE__*/React.createElement("a", { key: i, className: "news-item", href: "#" }, /*#__PURE__*/React.createElement("div", { className: "news-item-head" }, /*#__PURE__*/React.createElement("span", { className: "news-tag ".concat(n.tag) }, n.tagLabel), /*#__PURE__*/React.createElement("span", { className: "news-date" }, n.date)), /*#__PURE__*/React.createElement("div", { className: "news-title" }, n.title)); })), /*#__PURE__*/React.createElement("div", { className: "news-foot" }, /*#__PURE__*/React.createElement("span", null, "moonwell.gg"), /*#__PURE__*/React.createElement("a", { href: "#" }, "\u0412\u0441\u0435 \u2192"))), /*#__PURE__*/React.createElement("div", { className: "actions" }, /*#__PURE__*/React.createElement("div", { className: "action-row" }, /*#__PURE__*/React.createElement("div", { className: "realm-pill" }, /*#__PURE__*/React.createElement("div", { className: "realm-pulse" }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { className: "realm-name" }, "ELUNE'S GRACE"), /*#__PURE__*/React.createElement("div", { className: "realm-meta" }, "Online \xB7 1247 players \xB7 38ms"))), /*#__PURE__*/React.createElement("div", { className: "progress-block" }, /*#__PURE__*/React.createElement("div", { className: "progress-head" }, /*#__PURE__*/React.createElement("span", { className: "progress-state" }, stateMeta.label), /*#__PURE__*/React.createElement("span", { className: "progress-pct" }, stateMeta.pct, "%")), /*#__PURE__*/React.createElement("div", { className: "progress-bar" }, /*#__PURE__*/React.createElement("div", { className: "progress-fill", style: { width: stateMeta.pct + '%' } })), /*#__PURE__*/React.createElement("div", { className: "progress-meta" }, /*#__PURE__*/React.createElement("div", { className: "left" }, isDownloading && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "3.22 / 48.80 GB"), /*#__PURE__*/React.createElement("span", null, "4.95 MB/s")), isPaused && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "3.22 / 48.80 GB"), /*#__PURE__*/React.createElement("span", null, "\u2014")), isVerify && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "18 432 / 48 121 \u0444\u0430\u0439\u043B\u043E\u0432"), /*#__PURE__*/React.createElement("span", null, "SHA-256")), isUpdate && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "1.4.1 \u2192 1.4.2"), /*#__PURE__*/React.createElement("span", null, "180 MB / 250 MB")), isReady && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "\u0412\u0435\u0440\u0441\u0438\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0430 1.4.2"), /*#__PURE__*/React.createElement("span", null, "\u0412\u0441\u0435 \u0444\u0430\u0439\u043B\u044B \u0446\u0435\u043B\u044B"))), /*#__PURE__*/React.createElement("div", { className: "right" }, isDownloading && /*#__PURE__*/React.createElement("span", null, "\u041E\u0441\u0442\u0430\u043B\u043E\u0441\u044C ~2:37:11"), isPaused && /*#__PURE__*/React.createElement("span", null, "\u0412\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u0438, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C"), isVerify && /*#__PURE__*/React.createElement("span", null, "~1 \u043C\u0438\u043D"), isUpdate && /*#__PURE__*/React.createElement("span", null, "~30 \u0441\u0435\u043A"), isReady && /*#__PURE__*/React.createElement("span", null, "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430: \u0442\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u043E")))), playBtn)), /*#__PURE__*/React.createElement("div", { className: "statusbar" }, /*#__PURE__*/React.createElement("span", null, "\u0412\u0435\u0440\u0441\u0438\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0430 ", /*#__PURE__*/React.createElement("strong", null, "1.4.2")), /*#__PURE__*/React.createElement("span", { className: "sep" }, "\xB7"), /*#__PURE__*/React.createElement("span", null, "Realmlist ", /*#__PURE__*/React.createElement("strong", null, "login.moonwell.gg")), /*#__PURE__*/React.createElement("span", { className: "sep" }, "\xB7"), /*#__PURE__*/React.createElement("span", null, "\u0420\u0435\u0433\u0438\u043E\u043D ", /*#__PURE__*/React.createElement("strong", null, "EU")), /*#__PURE__*/React.createElement("span", { className: "right" }, "\u041B\u0430\u0443\u043D\u0447\u0435\u0440 v1.4.2")))); } Object.assign(window, { LauncherWindow: LauncherWindow }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUmVhY3QiLCJSZWFjdCIsInVzZVN0YXRlIiwiR0FNRVMiLCJpZCIsIm5hbWUiLCJ0YWciLCJzdWJ0aXRsZSIsImxpdmUiLCJMYXVuY2hlcldpbmRvdyIsIl9yZWYiLCJfcmVmJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3JlZiRzdGF0ZSIsInN0YXRlIiwiX3JlZiR0aXRsZSIsInRpdGxlIiwiX3JlZiRnYW1lIiwiZ2FtZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInRhYiIsInNldFRhYiIsImFjdGl2ZUdhbWUiLCJmaW5kIiwiZyIsIm5ld3MiLCJ0YWdMYWJlbCIsImRhdGUiLCJldmVudHMiLCJwYXRjaCIsImlzUmVhZHkiLCJpc0Rvd25sb2FkaW5nIiwiaXNQYXVzZWQiLCJpc1ZlcmlmeSIsImlzVXBkYXRlIiwic3RhdGVNZXRhIiwicmVhZHkiLCJsYWJlbCIsInBjdCIsImRvd25sb2FkaW5nIiwicGF1c2VkIiwidmVyaWZ5IiwidXBkYXRlIiwicGxheUJ0biIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJMSWNvbnMiLCJwbGF5IiwicGF1c2UiLCJkaXNhYmxlZCIsInJlZnJlc2giLCJkb3dubG9hZCIsInN0eWxlIiwiaGVpZ2h0IiwibWluIiwiY2xvc2UiLCJtYXAiLCJrZXkiLCJjb25jYXQiLCJmcmllbmRzIiwiY29nIiwiTW9vbk1hcmsiLCJzaXplIiwiRnJhZ21lbnQiLCJvbkNsaWNrIiwibiIsImkiLCJocmVmIiwid2lkdGgiLCJPYmplY3QiLCJhc3NpZ24iLCJ3aW5kb3ciXSwic291cmNlcyI6WyJJbmxpbmUgQmFiZWwgc2NyaXB0ICgyKSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNYWluIGxhdW5jaGVyIHdpbmRvd1xuY29uc3QgeyB1c2VTdGF0ZSB9ID0gUmVhY3Q7XG5cbmNvbnN0IEdBTUVTID0gW1xuICB7IGlkOiBcIndvd1wiLCAgICBzaG9ydDogXCJNV1wiLCBuYW1lOiBcIk1vb25XZWxsIMK3IFdvV1wiLCAgIHRhZzogXCJPcGVuIEJldGFcIiwgICAgIHN1YnRpdGxlOiBcIldyYXRoIG9mIHRoZSBMaWNoIEtpbmcgwrcg0L/RgNC40LLQsNGC0L3Ri9C5INGB0LXRgNCy0LXRgFwiLCBsaXZlOiB0cnVlIH0sXG4gIHsgaWQ6IFwia2FydHNcIiwgIHNob3J0OiBcIktcIiwgIG5hbWU6IFwiTW9vbldlbGwgS2FydHNcIiwgICB0YWc6IFwiQ2xvc2VkIEFscGhhXCIsICBzdWJ0aXRsZTogXCLQkNGA0LrQsNC00L3Ri9C1INCz0L7QvdC60Lgg0LIg0L3QsNGI0LXQuSDQstGB0LXQu9C10L3QvdC+0LlcIiwgICAgICAgICAgICBsaXZlOiBmYWxzZSB9LFxuICB7IGlkOiBcInRpZGVzXCIsICBzaG9ydDogXCJUXCIsICBuYW1lOiBcIlRpZGVzIG9mIEVsdW5lXCIsICAgdGFnOiBcItCSINGA0LDQt9GA0LDQsdC+0YLQutC1XCIsICBzdWJ0aXRsZTogXCLQmtCw0YDRgtC+0YfQvdCw0Y8g0YHRgtGA0LDRgtC10LPQuNGPINC/0L4g0LzQvtGC0LjQstCw0Lwg0YHQtdGA0LLQtdGA0LBcIiwgICAgICBsaXZlOiBmYWxzZSB9LFxuICB7IGlkOiBcInZlcmdlXCIsICBzaG9ydDogXCJWXCIsICBuYW1lOiBcIlByb2plY3QgVmVyZ2VcIiwgICAgdGFnOiBcItCQ0L3QvtC90YFcIiwgICAgICAgICBzdWJ0aXRsZTogXCJBUlBHLdC/0LXRgdC+0YfQvdC40YbQsCDCtyDRgdC+0LHRgdGC0LLQtdC90L3Ri9C5INC00LLQuNC20L7QulwiLCAgICAgICAgIGxpdmU6IGZhbHNlIH0sXG5dO1xuXG5mdW5jdGlvbiBMYXVuY2hlcldpbmRvdyh7IHZhcmlhbnQgPSBcImZvcmVzdFwiLCBzdGF0ZSA9IFwicmVhZHlcIiwgdGl0bGUgPSBcItCT0LvQsNCy0L3Ri9C5IOKAlCDQs9C+0YLQvtCyINC40LPRgNCw0YLRjFwiLCBnYW1lID0gXCJ3b3dcIiB9KSB7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShcIm5ld3NcIik7XG4gIGNvbnN0IGFjdGl2ZUdhbWUgPSBHQU1FUy5maW5kKChnKSA9PiBnLmlkID09PSBnYW1lKSB8fCBHQU1FU1swXTtcblxuICBjb25zdCBuZXdzID0ge1xuICAgIG5ld3M6IFtcbiAgICAgIHsgdGFnOiBcInBhdGNoXCIsIHRhZ0xhYmVsOiBcItCf0LDRgtGHXCIsIGRhdGU6IFwiMjkuMDRcIiwgdGl0bGU6IFwi0J7RgtC60YDRi9GC0LDRjyDQsdC10YLQsDog0L/QtdGA0LLRi9C5INGB0LXQt9C+0L0g0YHRgtCw0YDRgtGD0LXRgiDQvdCwINGN0YLQvtC5INC90LXQtNC10LvQtVwiIH0sXG4gICAgICB7IHRhZzogXCJldmVudFwiLCB0YWdMYWJlbDogXCLQodC+0LHRi9GC0LjQtVwiLCBkYXRlOiBcIjI3LjA0XCIsIHRpdGxlOiBcItCb0YPQvdC90YvQtSDRgdGC0YDQsNC20Lg6IFB2UC3Rg9C40LrQtdC90LQg0YEg0YLRgNC+0LnQvdGL0Lwg0YDQtdC50YLQuNC90LPQvtC8XCIgfSxcbiAgICAgIHsgdGFnOiBcInBhdGNoXCIsIHRhZ0xhYmVsOiBcItCf0LDRgtGHXCIsIGRhdGU6IFwiMjQuMDRcIiwgdGl0bGU6IFwiMS40LjIg4oCUINCx0LDQu9Cw0L3RgdC40YDQvtCy0LrQsCDRgdC+0LvQvi3QtNCw0L3QttC10Lkg0Lgg0YTQuNC60YEgTXl0aGljK1wiIH0sXG4gICAgICB7IHRhZzogXCJub3RpY2VcIiwgdGFnTGFiZWw6IFwi0J7QsdGK0Y/QstC70LXQvdC40LVcIiwgZGF0ZTogXCIyMi4wNFwiLCB0aXRsZTogXCLQl9Cw0L/Qu9Cw0L3QuNGA0L7QstCw0L3QvdC+0LUg0L7QsdGB0LvRg9C20LjQstCw0L3QuNC1INGA0LXQsNC70LzQvtCyIDI0LjA0IDAzOjAwIFVUQ1wiIH0sXG4gICAgXSxcbiAgICBldmVudHM6IFtcbiAgICAgIHsgdGFnOiBcImV2ZW50XCIsIHRhZ0xhYmVsOiBcItCh0L7QsdGL0YLQuNC1XCIsIGRhdGU6IFwiMDEuMDVcIiwgdGl0bGU6IFwi0JrQsNC90YPQvSDQm9GD0L3QvdC+0Lkg0L3QvtGH0Lgg4oCUINC30LDQtNCw0L3QuNGPINC4INCy0YDQtdC80LXQvdC90YvQuSDQsdC+0YHRgSDQsiDQotC10LvRjNC00YDQsNGB0YHQuNC70LVcIiB9LFxuICAgICAgeyB0YWc6IFwiZXZlbnRcIiwgdGFnTGFiZWw6IFwi0KHQvtCx0YvRgtC40LVcIiwgZGF0ZTogXCIyOS4wNFwiLCB0aXRsZTogXCLQm9GD0L3QvdGL0LUg0YHRgtGA0LDQttC4OiBQdlAt0YPQuNC60LXQvdC0INGBINGC0YDQvtC50L3Ri9C8INGA0LXQudGC0LjQvdCz0L7QvFwiIH0sXG4gICAgXSxcbiAgICBwYXRjaDogW1xuICAgICAgeyB0YWc6IFwicGF0Y2hcIiwgdGFnTGFiZWw6IFwiMS40LjJcIiwgZGF0ZTogXCIyNC4wNFwiLCB0aXRsZTogXCLQkdCw0LvQsNC90YHQuNGA0L7QstC60LAg0YHQvtC70L4t0LTQsNC90LbQtdC5OiBIZXJvaWMgU3RyYXRob2xtZVwiIH0sXG4gICAgICB7IHRhZzogXCJwYXRjaFwiLCB0YWdMYWJlbDogXCIxLjQuMVwiLCBkYXRlOiBcIjE4LjA0XCIsIHRpdGxlOiBcIk15dGhpYysg4oCUINC90L7QstGL0LUg0LDRhNGE0LjQutGB0Ysg0L3QtdC00LXQu9C4XCIgfSxcbiAgICAgIHsgdGFnOiBcInBhdGNoXCIsIHRhZ0xhYmVsOiBcIjEuNC4wXCIsIGRhdGU6IFwiMTAuMDRcIiwgdGl0bGU6IFwi0KHRgtCw0YDRgiDQvtGC0LrRgNGL0YLQvtC5INCx0LXRgtGLIFdyYXRoXCIgfSxcbiAgICBdLFxuICB9O1xuXG4gIC8vIERldGVybWluZSB2aXNpYmxlIGFjdGlvbiBVSSBwZXIgc3RhdGVcbiAgY29uc3QgaXNSZWFkeSA9IHN0YXRlID09PSBcInJlYWR5XCI7XG4gIGNvbnN0IGlzRG93bmxvYWRpbmcgPSBzdGF0ZSA9PT0gXCJkb3dubG9hZGluZ1wiO1xuICBjb25zdCBpc1BhdXNlZCA9IHN0YXRlID09PSBcInBhdXNlZFwiO1xuICBjb25zdCBpc1ZlcmlmeSA9IHN0YXRlID09PSBcInZlcmlmeVwiO1xuICBjb25zdCBpc1VwZGF0ZSA9IHN0YXRlID09PSBcInVwZGF0ZVwiO1xuXG4gIGNvbnN0IHN0YXRlTWV0YSA9IHtcbiAgICByZWFkeTogeyBsYWJlbDogXCLQk9C+0YLQvtCyINC6INC30LDQv9GD0YHQutGDXCIsIHBjdDogMTAwIH0sXG4gICAgZG93bmxvYWRpbmc6IHsgbGFiZWw6IFwi0JfQsNCz0YDRg9C30LrQsFwiLCBwY3Q6IDYgfSxcbiAgICBwYXVzZWQ6IHsgbGFiZWw6IFwi0J/QsNGD0LfQsFwiLCBwY3Q6IDYgfSxcbiAgICB2ZXJpZnk6IHsgbGFiZWw6IFwi0J/RgNC+0LLQtdGA0LrQsCDRhNCw0LnQu9C+0LJcIiwgcGN0OiAzOCB9LFxuICAgIHVwZGF0ZTogeyBsYWJlbDogXCLQntCx0L3QvtCy0LvQtdC90LjQtSDQutC70LjQtdC90YLQsFwiLCBwY3Q6IDcyIH0sXG4gIH1bc3RhdGVdO1xuXG4gIGNvbnN0IHBsYXlCdG4gPSAoKCkgPT4ge1xuICAgIGlmIChpc1JlYWR5KSByZXR1cm4gPGJ1dHRvbiBjbGFzc05hbWU9XCJwbGF5LWJ0biByZWFkeVwiPjxzcGFuIGNsYXNzTmFtZT1cImljb25cIj57TEljb25zLnBsYXl9PC9zcGFuPiDQmNCz0YDQsNGC0Yw8L2J1dHRvbj47XG4gICAgaWYgKGlzRG93bmxvYWRpbmcpIHJldHVybiA8YnV0dG9uIGNsYXNzTmFtZT1cInBsYXktYnRuIHBhdXNlXCI+PHNwYW4gY2xhc3NOYW1lPVwiaWNvblwiPntMSWNvbnMucGF1c2V9PC9zcGFuPiDQn9Cw0YPQt9CwPC9idXR0b24+O1xuICAgIGlmIChpc1BhdXNlZCkgcmV0dXJuIDxidXR0b24gY2xhc3NOYW1lPVwicGxheS1idG4gcGF1c2VcIj48c3BhbiBjbGFzc05hbWU9XCJpY29uXCI+e0xJY29ucy5wbGF5fTwvc3Bhbj4g0J/RgNC+0LTQvtC70LbQuNGC0Yw8L2J1dHRvbj47XG4gICAgaWYgKGlzVmVyaWZ5KSByZXR1cm4gPGJ1dHRvbiBjbGFzc05hbWU9XCJwbGF5LWJ0biBkaXNhYmxlZFwiIGRpc2FibGVkPjxzcGFuIGNsYXNzTmFtZT1cImljb25cIj57TEljb25zLnJlZnJlc2h9PC9zcGFuPiDQn9GA0L7QstC10YDQutCw4oCmPC9idXR0b24+O1xuICAgIGlmIChpc1VwZGF0ZSkgcmV0dXJuIDxidXR0b24gY2xhc3NOYW1lPVwicGxheS1idG4gcGF1c2VcIj48c3BhbiBjbGFzc05hbWU9XCJpY29uXCI+e0xJY29ucy5kb3dubG9hZH08L3NwYW4+INCe0LHQvdC+0LLQu9C10L3QuNC1PC9idXR0b24+O1xuICAgIHJldHVybiBudWxsO1xuICB9KSgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzdGFnZS1jZWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0YWdlLWxhYmVsXCI+PHNwYW4gY2xhc3NOYW1lPVwiZG90XCI+PC9zcGFuPjxzcGFuPnt0aXRsZX08L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPXt7IGhlaWdodDogMTIgfX0gLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGF1bmNoZXJcIiBkYXRhLXZhcmlhbnQ9e3ZhcmlhbnR9PlxuICAgICAgICB7LyogQmFja2dyb3VuZCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1hcnRcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1zdGFyc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLW1vb25cIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1wbGFjZWhvbGRlci1tYXJrXCI+XG4gICAgICAgICAgPHNwYW4+UGxhY2Uga2V5IGFydCBoZXJlPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPjI1NjDDlzE0NDAgwrcg0L3QvtGH0L3Ri9C1INGN0LvRjNGE0YsgLyDQotC10LvRjNC00YDQsNGB0YHQuNC7PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogVGl0bGUgYmFyICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbi10aXRsZWJhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luLXRpdGxlLXNwYWNlclwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwid2luLWJ0blwiPntMSWNvbnMubWlufTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ3aW4tYnRuIGNsb3NlXCI+e0xJY29ucy5jbG9zZX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIExlZnQgcmFpbCB3aXRoIGdhbWVzIGxpc3QgKi99XG4gICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyYWlsIHJhaWwtd2lkZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFpbC1hdmF0YXJcIj5BPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYWlsLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJhaWwtc2VjdGlvbi1sYWJlbFwiPtCY0LPRgNGLPC9kaXY+XG4gICAgICAgICAge0dBTUVTLm1hcCgoZykgPT4gKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBrZXk9e2cuaWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YGdhbWUtdGlsZSAke2cuaWQgPT09IGFjdGl2ZUdhbWUuaWQgPyBcImFjdGl2ZVwiIDogXCJcIn0gJHtnLmxpdmUgPyBcIlwiIDogXCJzb29uXCJ9YH1cbiAgICAgICAgICAgICAgdGl0bGU9e2Ake2cubmFtZX0g4oCUICR7Zy50YWd9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZ2FtZS10aWxlLW1hcmtcIj57Zy5zaG9ydH08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImdhbWUtdGlsZS1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZ2FtZS10aWxlLW5hbWVcIj57Zy5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJnYW1lLXRpbGUtdGFnXCI+e2cudGFnfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB7IWcubGl2ZSAmJiA8c3BhbiBjbGFzc05hbWU9XCJnYW1lLXRpbGUtbG9ja1wiPnNvb248L3NwYW4+fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYWlsLXNwYWNlclwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFpbC1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJyYWlsLWljb25cIiB0aXRsZT1cItCU0YDRg9C30YzRj1wiPntMSWNvbnMuZnJpZW5kc308L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInJhaWwtaWNvblwiIHRpdGxlPVwi0J3QsNGB0YLRgNC+0LnQutC4XCI+e0xJY29ucy5jb2d9PC9idXR0b24+XG4gICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgey8qIEhlYWRlciDigJQgYnJhbmQgKyBwbGF5ZXIgY2hpcCAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJoZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJyYW5kXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJicmFuZC1tYXJrXCI+PE1vb25NYXJrIHNpemU9ezQwfSAvPjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnJhbmQtbmFtZVwiPlxuICAgICAgICAgICAgICBNT09OV0VMTFxuICAgICAgICAgICAgICA8c21hbGw+TFVOQVIgwrcgTEFVTkNIRVI8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwbGF5ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGxheWVyLWF2YXRhclwiPsOGPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBsYXllci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBsYXllci1uYW1lXCI+QXJhbnRoZWw8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBsYXllci1tZXRhXCI+0KXRgNCw0L3QuNGC0LXQu9GMINGA0L7RidC4IMK3IDQ3INGD0YAuPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIHsvKiBIZXJvIGNvcHkg4oCUIGRlcGVuZHMgb24gYWN0aXZlIGdhbWUgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVyby1jb3B5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGVyby1leWVicm93XCI+PHNwYW4gY2xhc3NOYW1lPVwiZG90XCI+PC9zcGFuPiB7YWN0aXZlR2FtZS50YWd9PC9zcGFuPlxuICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJoZXJvLWhlYWRsaW5lXCI+XG4gICAgICAgICAgICB7YWN0aXZlR2FtZS5pZCA9PT0gXCJ3b3dcIiAmJiA8PtCh0LLQtdGCINC60L7Qu9C+0LTRhtCwPGJyLz48c3BhbiBjbGFzc05hbWU9XCJhY2NlbnRcIj7Qt9C+0LLRkdGCINGC0LXQsdGPINC00L7QvNC+0LkuPC9zcGFuPjwvPn1cbiAgICAgICAgICAgIHthY3RpdmVHYW1lLmlkID09PSBcImthcnRzXCIgJiYgPD7Qk9C+0L3QutC4INC/0L7QtDxici8+PHNwYW4gY2xhc3NOYW1lPVwiYWNjZW50XCI+0LvRg9C90L3Ri9C8INGB0LLQtdGC0L7QvC48L3NwYW4+PC8+fVxuICAgICAgICAgICAge2FjdGl2ZUdhbWUuaWQgPT09IFwidGlkZXNcIiAmJiA8PtCa0L7Qu9C+0LTQsCDRgdGD0LTRjNCx0Ys8YnIvPjxzcGFuIGNsYXNzTmFtZT1cImFjY2VudFwiPtCyINGC0LLQvtC40YUg0YDRg9C60LDRhS48L3NwYW4+PC8+fVxuICAgICAgICAgICAge2FjdGl2ZUdhbWUuaWQgPT09IFwidmVyZ2VcIiAmJiA8PtCX0LAg0LPRgNCw0L3RjNGOPGJyLz48c3BhbiBjbGFzc05hbWU9XCJhY2NlbnRcIj7Qv9GA0LjQstGL0YfQvdC+0LPQviDQvNC40YDQsC48L3NwYW4+PC8+fVxuICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwiaGVyby1zdWJcIj57YWN0aXZlR2FtZS5zdWJ0aXRsZX08L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBOZXdzIHBhbmVsICovfVxuICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwibmV3cy1wYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibmV3cy10YWJzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17YG5ld3MtdGFiICR7dGFiID09PSAnbmV3cycgPyAnYWN0aXZlJyA6ICcnfWB9IG9uQ2xpY2s9eygpID0+IHNldFRhYignbmV3cycpfT7QndC+0LLQvtGB0YLQuDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e2BuZXdzLXRhYiAke3RhYiA9PT0gJ2V2ZW50cycgPyAnYWN0aXZlJyA6ICcnfWB9IG9uQ2xpY2s9eygpID0+IHNldFRhYignZXZlbnRzJyl9PtCh0L7QsdGL0YLQuNGPPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17YG5ld3MtdGFiICR7dGFiID09PSAncGF0Y2gnID8gJ2FjdGl2ZScgOiAnJ31gfSBvbkNsaWNrPXsoKSA9PiBzZXRUYWIoJ3BhdGNoJyl9PtCf0LDRgtGH0Lg8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5ld3MtbGlzdFwiPlxuICAgICAgICAgICAge25ld3NbdGFiXS5tYXAoKG4sIGkpID0+IChcbiAgICAgICAgICAgICAgPGEga2V5PXtpfSBjbGFzc05hbWU9XCJuZXdzLWl0ZW1cIiBocmVmPVwiI1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibmV3cy1pdGVtLWhlYWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YG5ld3MtdGFnICR7bi50YWd9YH0+e24udGFnTGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibmV3cy1kYXRlXCI+e24uZGF0ZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuZXdzLXRpdGxlXCI+e24udGl0bGV9PC9kaXY+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibmV3cy1mb290XCI+XG4gICAgICAgICAgICA8c3Bhbj5tb29ud2VsbC5nZzwvc3Bhbj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIjXCI+0JLRgdC1IOKGkjwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICB7LyogQWN0aW9ucyBiYXIgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWN0aW9uLXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFsbS1waWxsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVhbG0tcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlYWxtLW5hbWVcIj5FTFVORSdTIEdSQUNFPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFsbS1tZXRhXCI+T25saW5lIMK3IDEyNDcgcGxheWVycyDCtyAzOG1zPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb2dyZXNzLWJsb2NrXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvZ3Jlc3MtaGVhZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInByb2dyZXNzLXN0YXRlXCI+e3N0YXRlTWV0YS5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHJvZ3Jlc3MtcGN0XCI+e3N0YXRlTWV0YS5wY3R9JTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvZ3Jlc3MtYmFyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcm9ncmVzcy1maWxsXCIgc3R5bGU9e3sgd2lkdGg6IHN0YXRlTWV0YS5wY3QgKyAnJScgfX0+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb2dyZXNzLW1ldGFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtpc0Rvd25sb2FkaW5nICYmIDw+PHNwYW4+My4yMiAvIDQ4LjgwIEdCPC9zcGFuPjxzcGFuPjQuOTUgTUIvczwvc3Bhbj48Lz59XG4gICAgICAgICAgICAgICAgICB7aXNQYXVzZWQgJiYgPD48c3Bhbj4zLjIyIC8gNDguODAgR0I8L3NwYW4+PHNwYW4+4oCUPC9zcGFuPjwvPn1cbiAgICAgICAgICAgICAgICAgIHtpc1ZlcmlmeSAmJiA8PjxzcGFuPjE4IDQzMiAvIDQ4IDEyMSDRhNCw0LnQu9C+0LI8L3NwYW4+PHNwYW4+U0hBLTI1Njwvc3Bhbj48Lz59XG4gICAgICAgICAgICAgICAgICB7aXNVcGRhdGUgJiYgPD48c3Bhbj4xLjQuMSDihpIgMS40LjI8L3NwYW4+PHNwYW4+MTgwIE1CIC8gMjUwIE1CPC9zcGFuPjwvPn1cbiAgICAgICAgICAgICAgICAgIHtpc1JlYWR5ICYmIDw+PHNwYW4+0JLQtdGA0YHQuNGPINC60LvQuNC10L3RgtCwIDEuNC4yPC9zcGFuPjxzcGFuPtCS0YHQtSDRhNCw0LnQu9GLINGG0LXQu9GLPC9zcGFuPjwvPn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7aXNEb3dubG9hZGluZyAmJiA8c3Bhbj7QntGB0YLQsNC70L7RgdGMIH4yOjM3OjExPC9zcGFuPn1cbiAgICAgICAgICAgICAgICAgIHtpc1BhdXNlZCAmJiA8c3Bhbj7QktC+0LfQvtCx0L3QvtCy0LgsINGH0YLQvtCx0Ysg0L/RgNC+0LTQvtC70LbQuNGC0Yw8L3NwYW4+fVxuICAgICAgICAgICAgICAgICAge2lzVmVyaWZ5ICYmIDxzcGFuPn4xINC80LjQvTwvc3Bhbj59XG4gICAgICAgICAgICAgICAgICB7aXNVcGRhdGUgJiYgPHNwYW4+fjMwINGB0LXQujwvc3Bhbj59XG4gICAgICAgICAgICAgICAgICB7aXNSZWFkeSAmJiA8c3Bhbj7Qn9C+0YHQu9C10LTQvdGP0Y8g0L/RgNC+0LLQtdGA0LrQsDog0YLQvtC70YzQutC+INGH0YLQvjwvc3Bhbj59XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7cGxheUJ0bn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIFN0YXR1cyBiYXIgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3RhdHVzYmFyXCI+XG4gICAgICAgICAgPHNwYW4+0JLQtdGA0YHQuNGPINC60LvQuNC10L3RgtCwIDxzdHJvbmc+MS40LjI8L3N0cm9uZz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic2VwXCI+wrc8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+UmVhbG1saXN0IDxzdHJvbmc+bG9naW4ubW9vbndlbGwuZ2c8L3N0cm9uZz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic2VwXCI+wrc8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+0KDQtdCz0LjQvtC9IDxzdHJvbmc+RVU8L3N0cm9uZz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicmlnaHRcIj7Qm9Cw0YPQvdGH0LXRgCB2MS40LjI8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbk9iamVjdC5hc3NpZ24od2luZG93LCB7IExhdW5jaGVyV2luZG93IH0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsSUFBQUEsTUFBQSxHQUFxQkMsS0FBSztFQUFsQkMsUUFBUSxHQUFBRixNQUFBLENBQVJFLFFBQVE7QUFFaEIsSUFBTUMsS0FBSyxHQUFHLENBQ1o7RUFBRUMsRUFBRSxFQUFFLEtBQUs7RUFBSyxTQUFPLElBQUk7RUFBRUMsSUFBSSxFQUFFLGdCQUFnQjtFQUFJQyxHQUFHLEVBQUUsV0FBVztFQUFNQyxRQUFRLEVBQUUsMkNBQTJDO0VBQUVDLElBQUksRUFBRTtBQUFLLENBQUMsRUFDaEo7RUFBRUosRUFBRSxFQUFFLE9BQU87RUFBRyxTQUFPLEdBQUc7RUFBR0MsSUFBSSxFQUFFLGdCQUFnQjtFQUFJQyxHQUFHLEVBQUUsY0FBYztFQUFHQyxRQUFRLEVBQUUsa0NBQWtDO0VBQWFDLElBQUksRUFBRTtBQUFNLENBQUMsRUFDbko7RUFBRUosRUFBRSxFQUFFLE9BQU87RUFBRyxTQUFPLEdBQUc7RUFBR0MsSUFBSSxFQUFFLGdCQUFnQjtFQUFJQyxHQUFHLEVBQUUsY0FBYztFQUFHQyxRQUFRLEVBQUUsd0NBQXdDO0VBQU9DLElBQUksRUFBRTtBQUFNLENBQUMsRUFDbko7RUFBRUosRUFBRSxFQUFFLE9BQU87RUFBRyxTQUFPLEdBQUc7RUFBR0MsSUFBSSxFQUFFLGVBQWU7RUFBS0MsR0FBRyxFQUFFLE9BQU87RUFBVUMsUUFBUSxFQUFFLHFDQUFxQztFQUFVQyxJQUFJLEVBQUU7QUFBTSxDQUFDLENBQ3BKO0FBRUQsU0FBU0MsY0FBY0EsQ0FBQUMsSUFBQSxFQUEwRjtFQUFBLElBQUFDLFlBQUEsR0FBQUQsSUFBQSxDQUF2RkUsT0FBTztJQUFQQSxPQUFPLEdBQUFELFlBQUEsY0FBRyxRQUFRLEdBQUFBLFlBQUE7SUFBQUUsVUFBQSxHQUFBSCxJQUFBLENBQUVJLEtBQUs7SUFBTEEsS0FBSyxHQUFBRCxVQUFBLGNBQUcsT0FBTyxHQUFBQSxVQUFBO0lBQUFFLFVBQUEsR0FBQUwsSUFBQSxDQUFFTSxLQUFLO0lBQUxBLEtBQUssR0FBQUQsVUFBQSxjQUFHLHdCQUF3QixHQUFBQSxVQUFBO0lBQUFFLFNBQUEsR0FBQVAsSUFBQSxDQUFFUSxJQUFJO0lBQUpBLElBQUksR0FBQUQsU0FBQSxjQUFHLEtBQUssR0FBQUEsU0FBQTtFQUMzRyxJQUFBRSxTQUFBLEdBQXNCakIsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUFBa0IsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBL0JHLEdBQUcsR0FBQUYsVUFBQTtJQUFFRyxNQUFNLEdBQUFILFVBQUE7RUFDbEIsSUFBTUksVUFBVSxHQUFHckIsS0FBSyxDQUFDc0IsSUFBSSxDQUFDLFVBQUNDLENBQUM7SUFBQSxPQUFLQSxDQUFDLENBQUN0QixFQUFFLEtBQUtjLElBQUk7RUFBQSxFQUFDLElBQUlmLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFFL0QsSUFBTXdCLElBQUksR0FBRztJQUNYQSxJQUFJLEVBQUUsQ0FDSjtNQUFFckIsR0FBRyxFQUFFLE9BQU87TUFBRXNCLFFBQVEsRUFBRSxNQUFNO01BQUVDLElBQUksRUFBRSxPQUFPO01BQUViLEtBQUssRUFBRTtJQUFzRCxDQUFDLEVBQy9HO01BQUVWLEdBQUcsRUFBRSxPQUFPO01BQUVzQixRQUFRLEVBQUUsU0FBUztNQUFFQyxJQUFJLEVBQUUsT0FBTztNQUFFYixLQUFLLEVBQUU7SUFBZ0QsQ0FBQyxFQUM1RztNQUFFVixHQUFHLEVBQUUsT0FBTztNQUFFc0IsUUFBUSxFQUFFLE1BQU07TUFBRUMsSUFBSSxFQUFFLE9BQU87TUFBRWIsS0FBSyxFQUFFO0lBQWtELENBQUMsRUFDM0c7TUFBRVYsR0FBRyxFQUFFLFFBQVE7TUFBRXNCLFFBQVEsRUFBRSxZQUFZO01BQUVDLElBQUksRUFBRSxPQUFPO01BQUViLEtBQUssRUFBRTtJQUF1RCxDQUFDLENBQ3hIO0lBQ0RjLE1BQU0sRUFBRSxDQUNOO01BQUV4QixHQUFHLEVBQUUsT0FBTztNQUFFc0IsUUFBUSxFQUFFLFNBQVM7TUFBRUMsSUFBSSxFQUFFLE9BQU87TUFBRWIsS0FBSyxFQUFFO0lBQThELENBQUMsRUFDMUg7TUFBRVYsR0FBRyxFQUFFLE9BQU87TUFBRXNCLFFBQVEsRUFBRSxTQUFTO01BQUVDLElBQUksRUFBRSxPQUFPO01BQUViLEtBQUssRUFBRTtJQUFnRCxDQUFDLENBQzdHO0lBQ0RlLEtBQUssRUFBRSxDQUNMO01BQUV6QixHQUFHLEVBQUUsT0FBTztNQUFFc0IsUUFBUSxFQUFFLE9BQU87TUFBRUMsSUFBSSxFQUFFLE9BQU87TUFBRWIsS0FBSyxFQUFFO0lBQThDLENBQUMsRUFDeEc7TUFBRVYsR0FBRyxFQUFFLE9BQU87TUFBRXNCLFFBQVEsRUFBRSxPQUFPO01BQUVDLElBQUksRUFBRSxPQUFPO01BQUViLEtBQUssRUFBRTtJQUFpQyxDQUFDLEVBQzNGO01BQUVWLEdBQUcsRUFBRSxPQUFPO01BQUVzQixRQUFRLEVBQUUsT0FBTztNQUFFQyxJQUFJLEVBQUUsT0FBTztNQUFFYixLQUFLLEVBQUU7SUFBNEIsQ0FBQztFQUUxRixDQUFDOztFQUVEO0VBQ0EsSUFBTWdCLE9BQU8sR0FBR2xCLEtBQUssS0FBSyxPQUFPO0VBQ2pDLElBQU1tQixhQUFhLEdBQUduQixLQUFLLEtBQUssYUFBYTtFQUM3QyxJQUFNb0IsUUFBUSxHQUFHcEIsS0FBSyxLQUFLLFFBQVE7RUFDbkMsSUFBTXFCLFFBQVEsR0FBR3JCLEtBQUssS0FBSyxRQUFRO0VBQ25DLElBQU1zQixRQUFRLEdBQUd0QixLQUFLLEtBQUssUUFBUTtFQUVuQyxJQUFNdUIsU0FBUyxHQUFHO0lBQ2hCQyxLQUFLLEVBQUU7TUFBRUMsS0FBSyxFQUFFLGlCQUFpQjtNQUFFQyxHQUFHLEVBQUU7SUFBSSxDQUFDO0lBQzdDQyxXQUFXLEVBQUU7TUFBRUYsS0FBSyxFQUFFLFVBQVU7TUFBRUMsR0FBRyxFQUFFO0lBQUUsQ0FBQztJQUMxQ0UsTUFBTSxFQUFFO01BQUVILEtBQUssRUFBRSxPQUFPO01BQUVDLEdBQUcsRUFBRTtJQUFFLENBQUM7SUFDbENHLE1BQU0sRUFBRTtNQUFFSixLQUFLLEVBQUUsaUJBQWlCO01BQUVDLEdBQUcsRUFBRTtJQUFHLENBQUM7SUFDN0NJLE1BQU0sRUFBRTtNQUFFTCxLQUFLLEVBQUUsb0JBQW9CO01BQUVDLEdBQUcsRUFBRTtJQUFHO0VBQ2pELENBQUMsQ0FBQzFCLEtBQUssQ0FBQztFQUVSLElBQU0rQixPQUFPLEdBQUksWUFBTTtJQUNyQixJQUFJYixPQUFPLEVBQUUsb0JBQU8vQixLQUFBLENBQUE2QyxhQUFBO01BQVFDLFNBQVMsRUFBQztJQUFnQixnQkFBQzlDLEtBQUEsQ0FBQTZDLGFBQUE7TUFBTUMsU0FBUyxFQUFDO0lBQU0sR0FBRUMsTUFBTSxDQUFDQyxJQUFXLENBQUMseUNBQWUsQ0FBQztJQUNsSCxJQUFJaEIsYUFBYSxFQUFFLG9CQUFPaEMsS0FBQSxDQUFBNkMsYUFBQTtNQUFRQyxTQUFTLEVBQUM7SUFBZ0IsZ0JBQUM5QyxLQUFBLENBQUE2QyxhQUFBO01BQU1DLFNBQVMsRUFBQztJQUFNLEdBQUVDLE1BQU0sQ0FBQ0UsS0FBWSxDQUFDLG1DQUFjLENBQUM7SUFDeEgsSUFBSWhCLFFBQVEsRUFBRSxvQkFBT2pDLEtBQUEsQ0FBQTZDLGFBQUE7TUFBUUMsU0FBUyxFQUFDO0lBQWdCLGdCQUFDOUMsS0FBQSxDQUFBNkMsYUFBQTtNQUFNQyxTQUFTLEVBQUM7SUFBTSxHQUFFQyxNQUFNLENBQUNDLElBQVcsQ0FBQyxpRUFBbUIsQ0FBQztJQUN2SCxJQUFJZCxRQUFRLEVBQUUsb0JBQU9sQyxLQUFBLENBQUE2QyxhQUFBO01BQVFDLFNBQVMsRUFBQyxtQkFBbUI7TUFBQ0ksUUFBUTtJQUFBLGdCQUFDbEQsS0FBQSxDQUFBNkMsYUFBQTtNQUFNQyxTQUFTLEVBQUM7SUFBTSxHQUFFQyxNQUFNLENBQUNJLE9BQWMsQ0FBQywyREFBa0IsQ0FBQztJQUNySSxJQUFJaEIsUUFBUSxFQUFFLG9CQUFPbkMsS0FBQSxDQUFBNkMsYUFBQTtNQUFRQyxTQUFTLEVBQUM7SUFBZ0IsZ0JBQUM5QyxLQUFBLENBQUE2QyxhQUFBO01BQU1DLFNBQVMsRUFBQztJQUFNLEdBQUVDLE1BQU0sQ0FBQ0ssUUFBZSxDQUFDLGlFQUFtQixDQUFDO0lBQzNILE9BQU8sSUFBSTtFQUNiLENBQUMsQ0FBRSxDQUFDO0VBRUosb0JBQ0VwRCxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFZLGdCQUN6QjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQWEsZ0JBQUM5QyxLQUFBLENBQUE2QyxhQUFBO0lBQU1DLFNBQVMsRUFBQztFQUFLLENBQU8sQ0FBQyxlQUFBOUMsS0FBQSxDQUFBNkMsYUFBQSxlQUFPOUIsS0FBWSxDQUFNLENBQUMsZUFDcEZmLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS1EsS0FBSyxFQUFFO01BQUVDLE1BQU0sRUFBRTtJQUFHO0VBQUUsQ0FBRSxDQUFDLGVBQzlCdEQsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUMsVUFBVTtJQUFDLGdCQUFjbkM7RUFBUSxnQkFFOUNYLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQVEsQ0FBTSxDQUFDLGVBQzlCOUMsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBVSxDQUFNLENBQUMsZUFDaEM5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFTLENBQU0sQ0FBQyxlQUMvQjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQXFCLGdCQUNsQzlDLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSxvQkFBd0IsQ0FBQyxlQUMvQjdDLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSw0SkFBNEMsQ0FDL0MsQ0FBQyxlQUdON0MsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBYyxnQkFDM0I5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFrQixDQUFNLENBQUMsZUFDeEM5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFhLGdCQUMxQjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBUUMsU0FBUyxFQUFDO0VBQVMsR0FBRUMsTUFBTSxDQUFDUSxHQUFZLENBQUMsZUFDakR2RCxLQUFBLENBQUE2QyxhQUFBO0lBQVFDLFNBQVMsRUFBQztFQUFlLEdBQUVDLE1BQU0sQ0FBQ1MsS0FBYyxDQUNyRCxDQUNGLENBQUMsZUFHTnhELEtBQUEsQ0FBQTZDLGFBQUE7SUFBT0MsU0FBUyxFQUFDO0VBQWdCLGdCQUMvQjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQWEsR0FBQyxHQUFNLENBQUMsZUFDcEM5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFjLENBQU0sQ0FBQyxlQUNwQzlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQW9CLEdBQUMsMEJBQVMsQ0FBQyxFQUM3QzVDLEtBQUssQ0FBQ3VELEdBQUcsQ0FBQyxVQUFDaEMsQ0FBQztJQUFBLG9CQUNYekIsS0FBQSxDQUFBNkMsYUFBQTtNQUNFYSxHQUFHLEVBQUVqQyxDQUFDLENBQUN0QixFQUFHO01BQ1YyQyxTQUFTLGVBQUFhLE1BQUEsQ0FBZWxDLENBQUMsQ0FBQ3RCLEVBQUUsS0FBS29CLFVBQVUsQ0FBQ3BCLEVBQUUsR0FBRyxRQUFRLEdBQUcsRUFBRSxPQUFBd0QsTUFBQSxDQUFJbEMsQ0FBQyxDQUFDbEIsSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUc7TUFDekZRLEtBQUssS0FBQTRDLE1BQUEsQ0FBS2xDLENBQUMsQ0FBQ3JCLElBQUksY0FBQXVELE1BQUEsQ0FBTWxDLENBQUMsQ0FBQ3BCLEdBQUc7SUFBRyxnQkFFOUJMLEtBQUEsQ0FBQTZDLGFBQUE7TUFBTUMsU0FBUyxFQUFDO0lBQWdCLEdBQUVyQixDQUFDLFNBQWEsQ0FBQyxlQUNqRHpCLEtBQUEsQ0FBQTZDLGFBQUE7TUFBTUMsU0FBUyxFQUFDO0lBQWdCLGdCQUM5QjlDLEtBQUEsQ0FBQTZDLGFBQUE7TUFBTUMsU0FBUyxFQUFDO0lBQWdCLEdBQUVyQixDQUFDLENBQUNyQixJQUFXLENBQUMsZUFDaERKLEtBQUEsQ0FBQTZDLGFBQUE7TUFBTUMsU0FBUyxFQUFDO0lBQWUsR0FBRXJCLENBQUMsQ0FBQ3BCLEdBQVUsQ0FDekMsQ0FBQyxFQUNOLENBQUNvQixDQUFDLENBQUNsQixJQUFJLGlCQUFJUCxLQUFBLENBQUE2QyxhQUFBO01BQU1DLFNBQVMsRUFBQztJQUFnQixHQUFDLE1BQVUsQ0FDakQsQ0FBQztFQUFBLENBQ1YsQ0FBQyxlQUNGOUMsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBYSxDQUFNLENBQUMsZUFDbkM5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFjLENBQU0sQ0FBQyxlQUNwQzlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBUUMsU0FBUyxFQUFDLFdBQVc7SUFBQy9CLEtBQUssRUFBQztFQUFRLEdBQUVnQyxNQUFNLENBQUNhLE9BQWdCLENBQUMsZUFDdEU1RCxLQUFBLENBQUE2QyxhQUFBO0lBQVFDLFNBQVMsRUFBQyxXQUFXO0lBQUMvQixLQUFLLEVBQUM7RUFBVyxHQUFFZ0MsTUFBTSxDQUFDYyxHQUFZLENBQy9ELENBQUMsZUFHUjdELEtBQUEsQ0FBQTZDLGFBQUE7SUFBUUMsU0FBUyxFQUFDO0VBQVEsZ0JBQ3hCOUMsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBTyxnQkFDcEI5QyxLQUFBLENBQUE2QyxhQUFBO0lBQU1DLFNBQVMsRUFBQztFQUFZLGdCQUFDOUMsS0FBQSxDQUFBNkMsYUFBQSxDQUFDaUIsUUFBUTtJQUFDQyxJQUFJLEVBQUU7RUFBRyxDQUFFLENBQU8sQ0FBQyxlQUMxRC9ELEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQVksR0FBQyxVQUUxQixlQUFBOUMsS0FBQSxDQUFBNkMsYUFBQSxnQkFBTyxxQkFBdUIsQ0FDM0IsQ0FDRixDQUFDLGVBQ043QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFRLGdCQUNyQjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQWUsR0FBQyxNQUFNLENBQUMsZUFDdEM5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFhLGdCQUMxQjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBTUMsU0FBUyxFQUFDO0VBQWEsR0FBQyxVQUFjLENBQUMsZUFDN0M5QyxLQUFBLENBQUE2QyxhQUFBO0lBQU1DLFNBQVMsRUFBQztFQUFhLEdBQUMsdUdBQTZCLENBQ3hELENBQ0YsQ0FDQyxDQUFDLGVBR1Q5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFXLGdCQUN4QjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBTUMsU0FBUyxFQUFDO0VBQWMsZ0JBQUM5QyxLQUFBLENBQUE2QyxhQUFBO0lBQU1DLFNBQVMsRUFBQztFQUFLLENBQU8sQ0FBQyxLQUFDLEVBQUN2QixVQUFVLENBQUNsQixHQUFVLENBQUMsZUFDcEZMLEtBQUEsQ0FBQTZDLGFBQUE7SUFBSUMsU0FBUyxFQUFDO0VBQWUsR0FDMUJ2QixVQUFVLENBQUNwQixFQUFFLEtBQUssS0FBSyxpQkFBSUgsS0FBQSxDQUFBNkMsYUFBQSxDQUFBN0MsS0FBQSxDQUFBZ0UsUUFBQSxRQUFFLHFFQUFZLGVBQUFoRSxLQUFBLENBQUE2QyxhQUFBLFdBQUksQ0FBQyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQTtJQUFNQyxTQUFTLEVBQUM7RUFBUSxHQUFDLHlGQUF1QixDQUFHLENBQUMsRUFDbEd2QixVQUFVLENBQUNwQixFQUFFLEtBQUssT0FBTyxpQkFBSUgsS0FBQSxDQUFBNkMsYUFBQSxDQUFBN0MsS0FBQSxDQUFBZ0UsUUFBQSxRQUFFLG1EQUFTLGVBQUFoRSxLQUFBLENBQUE2QyxhQUFBLFdBQUksQ0FBQyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQTtJQUFNQyxTQUFTLEVBQUM7RUFBUSxHQUFDLDRFQUFvQixDQUFHLENBQUMsRUFDOUZ2QixVQUFVLENBQUNwQixFQUFFLEtBQUssT0FBTyxpQkFBSUgsS0FBQSxDQUFBNkMsYUFBQSxDQUFBN0MsS0FBQSxDQUFBZ0UsUUFBQSxRQUFFLDJFQUFhLGVBQUFoRSxLQUFBLENBQUE2QyxhQUFBLFdBQUksQ0FBQyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQTtJQUFNQyxTQUFTLEVBQUM7RUFBUSxHQUFDLHVFQUFvQixDQUFHLENBQUMsRUFDbEd2QixVQUFVLENBQUNwQixFQUFFLEtBQUssT0FBTyxpQkFBSUgsS0FBQSxDQUFBNkMsYUFBQSxDQUFBN0MsS0FBQSxDQUFBZ0UsUUFBQSxRQUFFLG1EQUFTLGVBQUFoRSxLQUFBLENBQUE2QyxhQUFBLFdBQUksQ0FBQyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQTtJQUFNQyxTQUFTLEVBQUM7RUFBUSxHQUFDLHdGQUFzQixDQUFHLENBQzlGLENBQUMsZUFDTDlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBR0MsU0FBUyxFQUFDO0VBQVUsR0FBRXZCLFVBQVUsQ0FBQ2pCLFFBQVksQ0FDN0MsQ0FBQyxlQUdOTixLQUFBLENBQUE2QyxhQUFBO0lBQU9DLFNBQVMsRUFBQztFQUFZLGdCQUMzQjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQVcsZ0JBQ3hCOUMsS0FBQSxDQUFBNkMsYUFBQTtJQUFRQyxTQUFTLGNBQUFhLE1BQUEsQ0FBY3RDLEdBQUcsS0FBSyxNQUFNLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBRztJQUFDNEMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7TUFBQSxPQUFRM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUFBO0VBQUMsR0FBQyw0Q0FBZSxDQUFDLGVBQ2hIdEIsS0FBQSxDQUFBNkMsYUFBQTtJQUFRQyxTQUFTLGNBQUFhLE1BQUEsQ0FBY3RDLEdBQUcsS0FBSyxRQUFRLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBRztJQUFDNEMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7TUFBQSxPQUFRM0MsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUFBO0VBQUMsR0FBQyw0Q0FBZSxDQUFDLGVBQ3BIdEIsS0FBQSxDQUFBNkMsYUFBQTtJQUFRQyxTQUFTLGNBQUFhLE1BQUEsQ0FBY3RDLEdBQUcsS0FBSyxPQUFPLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBRztJQUFDNEMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7TUFBQSxPQUFRM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUFBO0VBQUMsR0FBQyxnQ0FBYSxDQUM1RyxDQUFDLGVBQ050QixLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFXLEdBQ3ZCcEIsSUFBSSxDQUFDTCxHQUFHLENBQUMsQ0FBQ29DLEdBQUcsQ0FBQyxVQUFDUyxDQUFDLEVBQUVDLENBQUM7SUFBQSxvQkFDbEJuRSxLQUFBLENBQUE2QyxhQUFBO01BQUdhLEdBQUcsRUFBRVMsQ0FBRTtNQUFDckIsU0FBUyxFQUFDLFdBQVc7TUFBQ3NCLElBQUksRUFBQztJQUFHLGdCQUN2Q3BFLEtBQUEsQ0FBQTZDLGFBQUE7TUFBS0MsU0FBUyxFQUFDO0lBQWdCLGdCQUM3QjlDLEtBQUEsQ0FBQTZDLGFBQUE7TUFBTUMsU0FBUyxjQUFBYSxNQUFBLENBQWNPLENBQUMsQ0FBQzdELEdBQUc7SUFBRyxHQUFFNkQsQ0FBQyxDQUFDdkMsUUFBZSxDQUFDLGVBQ3pEM0IsS0FBQSxDQUFBNkMsYUFBQTtNQUFNQyxTQUFTLEVBQUM7SUFBVyxHQUFFb0IsQ0FBQyxDQUFDdEMsSUFBVyxDQUN2QyxDQUFDLGVBQ041QixLQUFBLENBQUE2QyxhQUFBO01BQUtDLFNBQVMsRUFBQztJQUFZLEdBQUVvQixDQUFDLENBQUNuRCxLQUFXLENBQ3pDLENBQUM7RUFBQSxDQUNMLENBQ0UsQ0FBQyxlQUNOZixLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFXLGdCQUN4QjlDLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSxhQUFpQixDQUFDLGVBQ3hCN0MsS0FBQSxDQUFBNkMsYUFBQTtJQUFHdUIsSUFBSSxFQUFDO0VBQUcsR0FBQywyQkFBUSxDQUNqQixDQUNBLENBQUMsZUFHUnBFLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQVMsZ0JBQ3RCOUMsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBWSxnQkFDekI5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFZLGdCQUN6QjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQWEsQ0FBTSxDQUFDLGVBQ25DOUMsS0FBQSxDQUFBNkMsYUFBQSwyQkFDRTdDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQVksR0FBQyxlQUFrQixDQUFDLGVBQy9DOUMsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBWSxHQUFDLG9DQUFpQyxDQUMxRCxDQUNGLENBQUMsZUFDTjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQWdCLGdCQUM3QjlDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQWUsZ0JBQzVCOUMsS0FBQSxDQUFBNkMsYUFBQTtJQUFNQyxTQUFTLEVBQUM7RUFBZ0IsR0FBRVYsU0FBUyxDQUFDRSxLQUFZLENBQUMsZUFDekR0QyxLQUFBLENBQUE2QyxhQUFBO0lBQU1DLFNBQVMsRUFBQztFQUFjLEdBQUVWLFNBQVMsQ0FBQ0csR0FBRyxFQUFDLEdBQU8sQ0FDbEQsQ0FBQyxlQUNOdkMsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBYyxnQkFDM0I5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQyxlQUFlO0lBQUNPLEtBQUssRUFBRTtNQUFFZ0IsS0FBSyxFQUFFakMsU0FBUyxDQUFDRyxHQUFHLEdBQUc7SUFBSTtFQUFFLENBQU0sQ0FDeEUsQ0FBQyxlQUNOdkMsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBZSxnQkFDNUI5QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFNLEdBQ2xCZCxhQUFhLGlCQUFJaEMsS0FBQSxDQUFBNkMsYUFBQSxDQUFBN0MsS0FBQSxDQUFBZ0UsUUFBQSxxQkFBRWhFLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSxpQkFBcUIsQ0FBQyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQSxlQUFNLFdBQWUsQ0FBRyxDQUFDLEVBQ3hFWixRQUFRLGlCQUFJakMsS0FBQSxDQUFBNkMsYUFBQSxDQUFBN0MsS0FBQSxDQUFBZ0UsUUFBQSxxQkFBRWhFLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSxpQkFBcUIsQ0FBQyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQSxlQUFNLFFBQU8sQ0FBRyxDQUFDLEVBQzNEWCxRQUFRLGlCQUFJbEMsS0FBQSxDQUFBNkMsYUFBQSxDQUFBN0MsS0FBQSxDQUFBZ0UsUUFBQSxxQkFBRWhFLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSxzREFBNEIsQ0FBQyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQSxlQUFNLFNBQWEsQ0FBRyxDQUFDLEVBQ3hFVixRQUFRLGlCQUFJbkMsS0FBQSxDQUFBNkMsYUFBQSxDQUFBN0MsS0FBQSxDQUFBZ0UsUUFBQSxxQkFBRWhFLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSxvQkFBbUIsQ0FBQyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQSxlQUFNLGlCQUFxQixDQUFHLENBQUMsRUFDdkVkLE9BQU8saUJBQUkvQixLQUFBLENBQUE2QyxhQUFBLENBQUE3QyxLQUFBLENBQUFnRSxRQUFBLHFCQUFFaEUsS0FBQSxDQUFBNkMsYUFBQSxlQUFNLHVGQUEwQixDQUFDLGVBQUE3QyxLQUFBLENBQUE2QyxhQUFBLGVBQU0sNEVBQW9CLENBQUcsQ0FDekUsQ0FBQyxlQUNON0MsS0FBQSxDQUFBNkMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBTyxHQUNuQmQsYUFBYSxpQkFBSWhDLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSwyREFBdUIsQ0FBQyxFQUMvQ1osUUFBUSxpQkFBSWpDLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSxxSkFBaUMsQ0FBQyxFQUNwRFgsUUFBUSxpQkFBSWxDLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSx1QkFBWSxDQUFDLEVBQy9CVixRQUFRLGlCQUFJbkMsS0FBQSxDQUFBNkMsYUFBQSxlQUFNLHdCQUFhLENBQUMsRUFDaENkLE9BQU8saUJBQUkvQixLQUFBLENBQUE2QyxhQUFBLGVBQU0sa0tBQW9DLENBQ25ELENBQ0YsQ0FDRixDQUFDLEVBQ0xELE9BQ0UsQ0FDRixDQUFDLGVBR041QyxLQUFBLENBQUE2QyxhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFXLGdCQUN4QjlDLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSxrRkFBZSxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQSxpQkFBUSxPQUFhLENBQU8sQ0FBQyxlQUNsRDdDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBTUMsU0FBUyxFQUFDO0VBQUssR0FBQyxNQUFPLENBQUMsZUFDOUI5QyxLQUFBLENBQUE2QyxhQUFBLGVBQU0sWUFBVSxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQSxpQkFBUSxtQkFBeUIsQ0FBTyxDQUFDLGVBQ3pEN0MsS0FBQSxDQUFBNkMsYUFBQTtJQUFNQyxTQUFTLEVBQUM7RUFBSyxHQUFDLE1BQU8sQ0FBQyxlQUM5QjlDLEtBQUEsQ0FBQTZDLGFBQUEsZUFBTSx1Q0FBTyxlQUFBN0MsS0FBQSxDQUFBNkMsYUFBQSxpQkFBUSxJQUFVLENBQU8sQ0FBQyxlQUN2QzdDLEtBQUEsQ0FBQTZDLGFBQUE7SUFBTUMsU0FBUyxFQUFDO0VBQU8sR0FBQyxtREFBb0IsQ0FDekMsQ0FDRixDQUNGLENBQUM7QUFFVjtBQUVBd0IsTUFBTSxDQUFDQyxNQUFNLENBQUNDLE1BQU0sRUFBRTtFQUFFaEUsY0FBYyxFQUFkQTtBQUFlLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
||
</script>
|
||
<script>
|
||
"use strict";
|
||
function _slicedToArray(r, e) {
|
||
return (
|
||
_arrayWithHoles(r) ||
|
||
_iterableToArrayLimit(r, e) ||
|
||
_unsupportedIterableToArray(r, e) ||
|
||
_nonIterableRest()
|
||
);
|
||
}
|
||
function _nonIterableRest() {
|
||
throw new TypeError(
|
||
"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.",
|
||
);
|
||
}
|
||
function _unsupportedIterableToArray(r, a) {
|
||
if (r) {
|
||
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
||
var t = {}.toString.call(r).slice(8, -1);
|
||
return (
|
||
"Object" === t && r.constructor && (t = r.constructor.name),
|
||
"Map" === t || "Set" === t
|
||
? Array.from(r)
|
||
: "Arguments" === t ||
|
||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
|
||
? _arrayLikeToArray(r, a)
|
||
: void 0
|
||
);
|
||
}
|
||
}
|
||
function _arrayLikeToArray(r, a) {
|
||
(null == a || a > r.length) && (a = r.length);
|
||
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
||
return n;
|
||
}
|
||
function _iterableToArrayLimit(r, l) {
|
||
var t =
|
||
null == r
|
||
? null
|
||
: ("undefined" != typeof Symbol && r[Symbol.iterator]) ||
|
||
r["@@iterator"];
|
||
if (null != t) {
|
||
var e,
|
||
n,
|
||
i,
|
||
u,
|
||
a = [],
|
||
f = !0,
|
||
o = !1;
|
||
try {
|
||
if (((i = (t = t.call(r)).next), 0 === l)) {
|
||
if (Object(t) !== t) return;
|
||
f = !1;
|
||
} else
|
||
for (
|
||
;
|
||
!(f = (e = i.call(t)).done) &&
|
||
(a.push(e.value), a.length !== l);
|
||
f = !0
|
||
);
|
||
} catch (r) {
|
||
((o = !0), (n = r));
|
||
} finally {
|
||
try {
|
||
if (
|
||
!f &&
|
||
null != t["return"] &&
|
||
((u = t["return"]()), Object(u) !== u)
|
||
)
|
||
return;
|
||
} finally {
|
||
if (o) throw n;
|
||
}
|
||
}
|
||
return a;
|
||
}
|
||
}
|
||
function _arrayWithHoles(r) {
|
||
if (Array.isArray(r)) return r;
|
||
} // Login / register screen overlay function LoginWindow(_ref) { var _ref$variant = _ref.variant, variant = _ref$variant === void 0 ? "temple" : _ref$variant, _ref$mode = _ref.mode, mode = _ref$mode === void 0 ? "login" : _ref$mode, _ref$title = _ref.title, title = _ref$title === void 0 ? "Логин" : _ref$title; var _React$useState = React.useState(mode), _React$useState2 = _slicedToArray(_React$useState, 2), tab = _React$useState2[0], setTab = _React$useState2[1]; return /*#__PURE__*/React.createElement("div", { className: "stage-cell" }, /*#__PURE__*/React.createElement("div", { className: "stage-label" }, /*#__PURE__*/React.createElement("span", { className: "dot" }), /*#__PURE__*/React.createElement("span", null, title)), /*#__PURE__*/React.createElement("div", { style: { height: 12 } }), /*#__PURE__*/React.createElement("div", { className: "launcher", "data-variant": variant }, /*#__PURE__*/React.createElement("div", { className: "bg-art" }), /*#__PURE__*/React.createElement("div", { className: "bg-stars" }), /*#__PURE__*/React.createElement("div", { className: "bg-moon", style: { top: '12%', right: '60%' } }), /*#__PURE__*/React.createElement("div", { className: "win-titlebar" }, /*#__PURE__*/React.createElement("div", { className: "win-title-spacer" }), /*#__PURE__*/React.createElement("div", { className: "win-buttons" }, /*#__PURE__*/React.createElement("button", { className: "win-btn" }, LIcons.min), /*#__PURE__*/React.createElement("button", { className: "win-btn close" }, LIcons.close))), /*#__PURE__*/React.createElement("div", { className: "login-stack" }, /*#__PURE__*/React.createElement("div", { className: "login-art" }, /*#__PURE__*/React.createElement("div", { className: "login-art-mark" }, /*#__PURE__*/React.createElement("span", null, "Place key art here"), /*#__PURE__*/React.createElement("span", null, "\u043F\u043E\u0440\u0442\u0440\u0435\u0442 \u043D\u043E\u0447\u043D\u043E\u0433\u043E \u044D\u043B\u044C\u0444\u0430 \xB7 \u0441\u043B\u0435\u0432\u0430")), /*#__PURE__*/React.createElement("div", { className: "login-art-quote" }, "\xAB\u0417\u0432\u0451\u0437\u0434\u043D\u044B\u0439 \u0441\u0432\u0435\u0442 \u043F\u0440\u043E\u0432\u0435\u0434\u0451\u0442 \u0442\u0435\u0431\u044F \u0441\u043A\u0432\u043E\u0437\u044C \u0441\u0430\u043C\u044B\u0435 \u0442\u0451\u043C\u043D\u044B\u0435 \u043D\u043E\u0447\u0438 \u2014 \u0435\u0441\u043B\u0438 \u0442\u044B \u0433\u043E\u0442\u043E\u0432 \u0438\u0434\u0442\u0438 \u0442\u0443\u0434\u0430, \u043A\u0443\u0434\u0430 \u043E\u043D \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442.\xBB", /*#__PURE__*/React.createElement("cite", null, "\u2014 \u041C\u0430\u043B\u0444\u0443\u0440\u0438\u043E\u043D \u042F\u0440\u043E\u0441\u0442\u044C \u0411\u0443\u0440\u0438"))), /*#__PURE__*/React.createElement("div", { className: "login-form" }, /*#__PURE__*/React.createElement("div", { className: "login-brand" }, /*#__PURE__*/React.createElement("span", { className: "login-brand-mark" }, /*#__PURE__*/React.createElement(MoonMark, { size: 28 })), /*#__PURE__*/React.createElement("span", { className: "login-brand-name" }, "MOONWELL")), /*#__PURE__*/React.createElement("span", { className: "login-eyebrow" }, tab === "login" ? "Вход" : "Регистрация"), /*#__PURE__*/React.createElement("h2", { className: "login-h" }, tab === "login" ? "С возвращением" : "Создай героя"), /*#__PURE__*/React.createElement("p", { className: "login-sub" }, tab === "login" ? "Войди в свой аккаунт, чтобы продолжить путь." : "Введи инвайт-код и придумай имя для лунного героя."), /*#__PURE__*/React.createElement("div", { className: "login-tabs" }, /*#__PURE__*/React.createElement("button", { className: "login-tab ".concat(tab === "login" ? "active" : ""), onClick: function onClick() { return setTab("login"); } }, "\u0412\u0445\u043E\u0434"), /*#__PURE__*/React.createElement("button", { className: "login-tab ".concat(tab === "register" ? "active" : ""), onClick: function onClick() { return setTab("register"); } }, "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F")), tab === "login" ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u041B\u043E\u0433\u0438\u043D \u0438\u043B\u0438 email"), /*#__PURE__*/React.createElement("input", { className: "field-input", placeholder: "Aranthel", defaultValue: "aranthel" })), /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u041F\u0430\u0440\u043E\u043B\u044C"), /*#__PURE__*/React.createElement("input", { className: "field-input", type: "password", defaultValue: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" })), /*#__PURE__*/React.createElement("div", { className: "login-row" }, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", { type: "checkbox", defaultChecked: true }), " \u0417\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C \u043C\u0435\u043D\u044F"), /*#__PURE__*/React.createElement("a", { href: "#" }, "\u0417\u0430\u0431\u044B\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C?")), /*#__PURE__*/React.createElement("button", { className: "login-submit" }, "\u0412\u043E\u0439\u0442\u0438 ", LIcons.arrow)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u0418\u043D\u0432\u0430\u0439\u0442-\u043A\u043E\u0434"), /*#__PURE__*/React.createElement("input", { className: "field-input", placeholder: "ABCD-EFGH-IJKL", defaultValue: "MOON-WELL-2026", style: { fontFamily: "var(--f-mono)", letterSpacing: "0.14em" } })), /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u041B\u043E\u0433\u0438\u043D"), /*#__PURE__*/React.createElement("input", { className: "field-input", placeholder: "Moonwalker" })), /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "Email"), /*#__PURE__*/React.createElement("input", { className: "field-input", type: "email", placeholder: "player@example.com" })), /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u041F\u0430\u0440\u043E\u043B\u044C"), /*#__PURE__*/React.createElement("input", { className: "field-input", type: "password", placeholder: "\u041C\u0438\u043D\u0438\u043C\u0443\u043C 8 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432" })), /*#__PURE__*/React.createElement("button", { className: "login-submit" }, "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0430\u043A\u043A\u0430\u0443\u043D\u0442 ", LIcons.arrow)), /*#__PURE__*/React.createElement("div", { className: "login-foot" }, "moonwell \xB7 v 1.4.2 \xB7 login.moonwell.gg"))), /*#__PURE__*/React.createElement("div", { className: "statusbar", style: { left: 0 } }, /*#__PURE__*/React.createElement("span", null, "\u0412\u0435\u0440\u0441\u0438\u044F \u043B\u0430\u0443\u043D\u0447\u0435\u0440\u0430 ", /*#__PURE__*/React.createElement("strong", null, "1.4.2")), /*#__PURE__*/React.createElement("span", { className: "sep" }, "\xB7"), /*#__PURE__*/React.createElement("span", null, "\u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 ", /*#__PURE__*/React.createElement("strong", null, "\u0437\u0430\u0449\u0438\u0449\u0435\u043D\u043E TLS")), /*#__PURE__*/React.createElement("span", { className: "right" }, "\xA9 2026 MoonWell")))); } Object.assign(window, { LoginWindow: LoginWindow }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMb2dpbldpbmRvdyIsIl9yZWYiLCJfcmVmJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3JlZiRtb2RlIiwibW9kZSIsIl9yZWYkdGl0bGUiLCJ0aXRsZSIsIl9SZWFjdCR1c2VTdGF0ZSIsIlJlYWN0IiwidXNlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ0YWIiLCJzZXRUYWIiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJoZWlnaHQiLCJ0b3AiLCJyaWdodCIsIkxJY29ucyIsIm1pbiIsImNsb3NlIiwiTW9vbk1hcmsiLCJzaXplIiwiY29uY2F0Iiwib25DbGljayIsIkZyYWdtZW50IiwicGxhY2Vob2xkZXIiLCJkZWZhdWx0VmFsdWUiLCJ0eXBlIiwiZGVmYXVsdENoZWNrZWQiLCJocmVmIiwiYXJyb3ciLCJmb250RmFtaWx5IiwibGV0dGVyU3BhY2luZyIsImxlZnQiLCJPYmplY3QiLCJhc3NpZ24iLCJ3aW5kb3ciXSwic291cmNlcyI6WyJJbmxpbmUgQmFiZWwgc2NyaXB0ICgzKSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMb2dpbiAvIHJlZ2lzdGVyIHNjcmVlbiBvdmVybGF5XG5mdW5jdGlvbiBMb2dpbldpbmRvdyh7IHZhcmlhbnQgPSBcInRlbXBsZVwiLCBtb2RlID0gXCJsb2dpblwiLCB0aXRsZSA9IFwi0JvQvtCz0LjQvVwiIH0pIHtcbiAgY29uc3QgW3RhYiwgc2V0VGFiXSA9IFJlYWN0LnVzZVN0YXRlKG1vZGUpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzdGFnZS1jZWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0YWdlLWxhYmVsXCI+PHNwYW4gY2xhc3NOYW1lPVwiZG90XCI+PC9zcGFuPjxzcGFuPnt0aXRsZX08L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPXt7IGhlaWdodDogMTIgfX0gLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGF1bmNoZXJcIiBkYXRhLXZhcmlhbnQ9e3ZhcmlhbnR9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWFydFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXN0YXJzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctbW9vblwiIHN0eWxlPXt7IHRvcDogJzEyJScsIHJpZ2h0OiAnNjAlJyB9fT48L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbi10aXRsZWJhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luLXRpdGxlLXNwYWNlclwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwid2luLWJ0blwiPntMSWNvbnMubWlufTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ3aW4tYnRuIGNsb3NlXCI+e0xJY29ucy5jbG9zZX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2dpbi1zdGFja1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9naW4tYXJ0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvZ2luLWFydC1tYXJrXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlBsYWNlIGtleSBhcnQgaGVyZTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+0L/QvtGA0YLRgNC10YIg0L3QvtGH0L3QvtCz0L4g0Y3Qu9GM0YTQsCDCtyDRgdC70LXQstCwPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvZ2luLWFydC1xdW90ZVwiPlxuICAgICAgICAgICAgICDCq9CX0LLRkdC30LTQvdGL0Lkg0YHQstC10YIg0L/RgNC+0LLQtdC00ZHRgiDRgtC10LHRjyDRgdC60LLQvtC30Ywg0YHQsNC80YvQtSDRgtGR0LzQvdGL0LUg0L3QvtGH0Lgg4oCUXG4gICAgICAgICAgICAgINC10YHQu9C4INGC0Ysg0LPQvtGC0L7QsiDQuNC00YLQuCDRgtGD0LTQsCwg0LrRg9C00LAg0L7QvSDRg9C60LDQt9GL0LLQsNC10YIuwrtcbiAgICAgICAgICAgICAgPGNpdGU+4oCUINCc0LDQu9GE0YPRgNC40L7QvSDQr9GA0L7RgdGC0Ywg0JHRg9GA0Lg8L2NpdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9naW4tZm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2dpbi1icmFuZFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsb2dpbi1icmFuZC1tYXJrXCI+PE1vb25NYXJrIHNpemU9ezI4fSAvPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibG9naW4tYnJhbmQtbmFtZVwiPk1PT05XRUxMPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxvZ2luLWV5ZWJyb3dcIj57dGFiID09PSBcImxvZ2luXCIgPyBcItCS0YXQvtC0XCIgOiBcItCg0LXQs9C40YHRgtGA0LDRhtC40Y9cIn08L3NwYW4+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwibG9naW4taFwiPnt0YWIgPT09IFwibG9naW5cIiA/IFwi0KEg0LLQvtC30LLRgNCw0YnQtdC90LjQtdC8XCIgOiBcItCh0L7Qt9C00LDQuSDQs9C10YDQvtGPXCJ9PC9oMj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImxvZ2luLXN1YlwiPlxuICAgICAgICAgICAgICB7dGFiID09PSBcImxvZ2luXCJcbiAgICAgICAgICAgICAgICA/IFwi0JLQvtC50LTQuCDQsiDRgdCy0L7QuSDQsNC60LrQsNGD0L3Rgiwg0YfRgtC+0LHRiyDQv9GA0L7QtNC+0LvQttC40YLRjCDQv9GD0YLRjC5cIlxuICAgICAgICAgICAgICAgIDogXCLQktCy0LXQtNC4INC40L3QstCw0LnRgi3QutC+0LQg0Lgg0L/RgNC40LTRg9C80LDQuSDQuNC80Y8g0LTQu9GPINC70YPQvdC90L7Qs9C+INCz0LXRgNC+0Y8uXCJ9XG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9naW4tdGFic1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17YGxvZ2luLXRhYiAke3RhYiA9PT0gXCJsb2dpblwiID8gXCJhY3RpdmVcIiA6IFwiXCJ9YH0gb25DbGljaz17KCkgPT4gc2V0VGFiKFwibG9naW5cIil9PtCS0YXQvtC0PC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtgbG9naW4tdGFiICR7dGFiID09PSBcInJlZ2lzdGVyXCIgPyBcImFjdGl2ZVwiIDogXCJcIn1gfSBvbkNsaWNrPXsoKSA9PiBzZXRUYWIoXCJyZWdpc3RlclwiKX0+0KDQtdCz0LjRgdGC0YDQsNGG0LjRjzwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHt0YWIgPT09IFwibG9naW5cIiA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmllbGQtbGFiZWxcIj7Qm9C+0LPQuNC9INC40LvQuCBlbWFpbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZmllbGQtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkFyYW50aGVsXCIgZGVmYXVsdFZhbHVlPVwiYXJhbnRoZWxcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmaWVsZC1sYWJlbFwiPtCf0LDRgNC+0LvRjDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZmllbGQtaW5wdXRcIiB0eXBlPVwicGFzc3dvcmRcIiBkZWZhdWx0VmFsdWU9XCLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKJcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9naW4tcm93XCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGRlZmF1bHRDaGVja2VkIC8+INCX0LDQv9C+0LzQvdC40YLRjCDQvNC10L3RjzwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiPtCX0LDQsdGL0LvQuCDQv9Cw0YDQvtC70Yw/PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwibG9naW4tc3VibWl0XCI+0JLQvtC50YLQuCB7TEljb25zLmFycm93fTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZpZWxkLWxhYmVsXCI+0JjQvdCy0LDQudGCLdC60L7QtDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZmllbGQtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkFCQ0QtRUZHSC1JSktMXCIgZGVmYXVsdFZhbHVlPVwiTU9PTi1XRUxMLTIwMjZcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcInZhcigtLWYtbW9ubylcIiwgbGV0dGVyU3BhY2luZzogXCIwLjE0ZW1cIiB9fSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmaWVsZC1sYWJlbFwiPtCb0L7Qs9C40L08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT1cImZpZWxkLWlucHV0XCIgcGxhY2Vob2xkZXI9XCJNb29ud2Fsa2VyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmllbGQtbGFiZWxcIj5FbWFpbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZmllbGQtaW5wdXRcIiB0eXBlPVwiZW1haWxcIiBwbGFjZWhvbGRlcj1cInBsYXllckBleGFtcGxlLmNvbVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZpZWxkLWxhYmVsXCI+0J/QsNGA0L7Qu9GMPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJmaWVsZC1pbnB1dFwiIHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwi0JzQuNC90LjQvNGD0LwgOCDRgdC40LzQstC+0LvQvtCyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImxvZ2luLXN1Ym1pdFwiPtCh0L7Qt9C00LDRgtGMINCw0LrQutCw0YPQvdGCIHtMSWNvbnMuYXJyb3d9PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2dpbi1mb290XCI+bW9vbndlbGwgwrcgdiAxLjQuMiDCtyBsb2dpbi5tb29ud2VsbC5nZzwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0YXR1c2JhclwiIHN0eWxlPXt7IGxlZnQ6IDAgfX0+XG4gICAgICAgICAgPHNwYW4+0JLQtdGA0YHQuNGPINC70LDRg9C90YfQtdGA0LAgPHN0cm9uZz4xLjQuMjwvc3Ryb25nPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzZXBcIj7Ctzwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj7QodC+0LXQtNC40L3QtdC90LjQtSA8c3Ryb25nPtC30LDRidC40YnQtdC90L4gVExTPC9zdHJvbmc+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJpZ2h0XCI+wqkgMjAyNiBNb29uV2VsbDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuT2JqZWN0LmFzc2lnbih3aW5kb3csIHsgTG9naW5XaW5kb3cgfSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxXQUFXQSxDQUFBQyxJQUFBLEVBQTBEO0VBQUEsSUFBQUMsWUFBQSxHQUFBRCxJQUFBLENBQXZERSxPQUFPO0lBQVBBLE9BQU8sR0FBQUQsWUFBQSxjQUFHLFFBQVEsR0FBQUEsWUFBQTtJQUFBRSxTQUFBLEdBQUFILElBQUEsQ0FBRUksSUFBSTtJQUFKQSxJQUFJLEdBQUFELFNBQUEsY0FBRyxPQUFPLEdBQUFBLFNBQUE7SUFBQUUsVUFBQSxHQUFBTCxJQUFBLENBQUVNLEtBQUs7SUFBTEEsS0FBSyxHQUFBRCxVQUFBLGNBQUcsT0FBTyxHQUFBQSxVQUFBO0VBQ3hFLElBQUFFLGVBQUEsR0FBc0JDLEtBQUssQ0FBQ0MsUUFBUSxDQUFDTCxJQUFJ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
|
||
</script>
|
||
<script>
|
||
"use strict";
|
||
function _defineProperty(e, r, t) {
|
||
return (
|
||
(r = _toPropertyKey(r)) in e
|
||
? Object.defineProperty(e, r, {
|
||
value: t,
|
||
enumerable: !0,
|
||
configurable: !0,
|
||
writable: !0,
|
||
})
|
||
: (e[r] = t),
|
||
e
|
||
);
|
||
}
|
||
function _toPropertyKey(t) {
|
||
var i = _toPrimitive(t, "string");
|
||
return "symbol" == _typeof(i) ? i : i + "";
|
||
}
|
||
function _toPrimitive(t, r) {
|
||
if ("object" != _typeof(t) || !t) return t;
|
||
var e = t[Symbol.toPrimitive];
|
||
if (void 0 !== e) {
|
||
var i = e.call(t, r || "default");
|
||
if ("object" != _typeof(i)) return i;
|
||
throw new TypeError("@@toPrimitive must return a primitive value.");
|
||
}
|
||
return ("string" === r ? String : Number)(t);
|
||
}
|
||
function _typeof(o) {
|
||
"@babel/helpers - typeof";
|
||
return (
|
||
(_typeof =
|
||
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
|
||
? function (o) {
|
||
return typeof o;
|
||
}
|
||
: function (o) {
|
||
return o &&
|
||
"function" == typeof Symbol &&
|
||
o.constructor === Symbol &&
|
||
o !== Symbol.prototype
|
||
? "symbol"
|
||
: typeof o;
|
||
}),
|
||
_typeof(o)
|
||
);
|
||
}
|
||
function _slicedToArray(r, e) {
|
||
return (
|
||
_arrayWithHoles(r) ||
|
||
_iterableToArrayLimit(r, e) ||
|
||
_unsupportedIterableToArray(r, e) ||
|
||
_nonIterableRest()
|
||
);
|
||
}
|
||
function _nonIterableRest() {
|
||
throw new TypeError(
|
||
"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.",
|
||
);
|
||
}
|
||
function _unsupportedIterableToArray(r, a) {
|
||
if (r) {
|
||
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
||
var t = {}.toString.call(r).slice(8, -1);
|
||
return (
|
||
"Object" === t && r.constructor && (t = r.constructor.name),
|
||
"Map" === t || "Set" === t
|
||
? Array.from(r)
|
||
: "Arguments" === t ||
|
||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
|
||
? _arrayLikeToArray(r, a)
|
||
: void 0
|
||
);
|
||
}
|
||
}
|
||
function _arrayLikeToArray(r, a) {
|
||
(null == a || a > r.length) && (a = r.length);
|
||
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
||
return n;
|
||
}
|
||
function _iterableToArrayLimit(r, l) {
|
||
var t =
|
||
null == r
|
||
? null
|
||
: ("undefined" != typeof Symbol && r[Symbol.iterator]) ||
|
||
r["@@iterator"];
|
||
if (null != t) {
|
||
var e,
|
||
n,
|
||
i,
|
||
u,
|
||
a = [],
|
||
f = !0,
|
||
o = !1;
|
||
try {
|
||
if (((i = (t = t.call(r)).next), 0 === l)) {
|
||
if (Object(t) !== t) return;
|
||
f = !1;
|
||
} else
|
||
for (
|
||
;
|
||
!(f = (e = i.call(t)).done) &&
|
||
(a.push(e.value), a.length !== l);
|
||
f = !0
|
||
);
|
||
} catch (r) {
|
||
((o = !0), (n = r));
|
||
} finally {
|
||
try {
|
||
if (
|
||
!f &&
|
||
null != t["return"] &&
|
||
((u = t["return"]()), Object(u) !== u)
|
||
)
|
||
return;
|
||
} finally {
|
||
if (o) throw n;
|
||
}
|
||
}
|
||
return a;
|
||
}
|
||
}
|
||
function _arrayWithHoles(r) {
|
||
if (Array.isArray(r)) return r;
|
||
} // App: presents all states side-by-side as a design canvas var TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "variant": "forest" } /*EDITMODE-END*/; function App() { var _React$useState = React.useState(TWEAK_DEFAULTS.variant), _React$useState2 = _slicedToArray(_React$useState, 2), variant = _React$useState2[0], setVariant = _React$useState2[1]; var _React$useState3 = React.useState(false), _React$useState4 = _slicedToArray(_React$useState3, 2), editMode = _React$useState4[0], setEditMode = _React$useState4[1]; React.useEffect(function () { var onMsg = function onMsg(e) { if (!e.data || _typeof(e.data) !== "object") return; if (e.data.type === "__activate_edit_mode") setEditMode(true); if (e.data.type === "__deactivate_edit_mode") setEditMode(false); }; window.addEventListener("message", onMsg); window.parent.postMessage({ type: "__edit_mode_available" }, "*"); return function () { return window.removeEventListener("message", onMsg); }; }, []); var setKey = function setKey(k, v) { if (k === "variant") setVariant(v); window.parent.postMessage({ type: "__edit_mode_set_keys", edits: _defineProperty({}, k, v) }, "*"); }; return /*#__PURE__*/React.createElement("div", { className: "stage" }, /*#__PURE__*/React.createElement("div", { style: { textAlign: "center", padding: "20px 0 10px" } }, /*#__PURE__*/React.createElement("div", { style: { fontFamily: "var(--f-display)", fontSize: 28, letterSpacing: "0.24em", color: "var(--ivory)" } }, "MOONWELL \xB7 LAUNCHER"), /*#__PURE__*/React.createElement("div", { style: { fontFamily: "var(--f-serif)", fontStyle: "italic", color: "var(--text-mute)", marginTop: 6 } }, "\u0413\u043B\u0430\u0432\u043D\u044B\u0439 \u044D\u043A\u0440\u0430\u043D, \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438, \u044D\u043A\u0440\u0430\u043D \u0432\u0445\u043E\u0434\u0430 \u2014 \u0432\u0441\u0451 \u0432 \u043E\u0434\u043D\u043E\u043C \u0445\u043E\u043B\u0441\u0442\u0435.")), /*#__PURE__*/React.createElement("div", { className: "stage-grid" }, /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "ready", game: "wow", title: "01 \xB7 \u0413\u043B\u0430\u0432\u043D\u0430\u044F \u2014 WoW \xB7 \u0433\u043E\u0442\u043E\u0432 \u0438\u0433\u0440\u0430\u0442\u044C" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "downloading", game: "wow", title: "02 \xB7 \u0421\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "paused", game: "wow", title: "03 \xB7 \u041F\u0430\u0443\u0437\u0430" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "verify", game: "wow", title: "04 \xB7 \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0444\u0430\u0439\u043B\u043E\u0432" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "update", game: "wow", title: "05 \xB7 \u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "ready", game: "karts", title: "06 \xB7 MoonWell Karts (closed alpha)" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "ready", game: "verge", title: "07 \xB7 Project Verge (\u0430\u043D\u043E\u043D\u0441)" }), /*#__PURE__*/React.createElement(LoginWindow, { variant: variant, mode: "login", title: "08 \xB7 \u0412\u0445\u043E\u0434" }), /*#__PURE__*/React.createElement(LoginWindow, { variant: variant, mode: "register", title: "09 \xB7 \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F" })), editMode && /*#__PURE__*/React.createElement("div", { className: "tweaks-host" }, /*#__PURE__*/React.createElement("h4", null, "Tweaks"), /*#__PURE__*/React.createElement("div", { className: "tweaks-row" }, /*#__PURE__*/React.createElement("label", null, "\u041D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u0438\u0435"), /*#__PURE__*/React.createElement("div", { className: "tweaks-seg" }, /*#__PURE__*/React.createElement("button", { className: variant === "forest" ? "active" : "", onClick: function onClick() { return setKey("variant", "forest"); } }, "\u041B\u0435\u0441"), /*#__PURE__*/React.createElement("button", { className: variant === "temple" ? "active" : "", onClick: function onClick() { return setKey("variant", "temple"); } }, "\u0425\u0440\u0430\u043C"))), /*#__PURE__*/React.createElement("div", { style: { fontFamily: "var(--f-mono)", fontSize: 10, color: "var(--text-mute)", letterSpacing: "0.1em", marginTop: 4 } }, "\u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u043E\u043A\u043D\u0430 \u0441\u0440\u0430\u0437\u0443"))); } var root = ReactDOM.createRoot(document.getElementById("root")); root.render(/*#__PURE__*/React.createElement(App, null)); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUV0VBS19ERUZBVUxUUyIsIkFwcCIsIl9SZWFjdCR1c2VTdGF0ZSIsIlJlYWN0IiwidXNlU3RhdGUiLCJ2YXJpYW50IiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2V0VmFyaWFudCIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0IiwiZWRpdE1vZGUiLCJzZXRFZGl0TW9kZSIsInVzZUVmZmVjdCIsIm9uTXNnIiwiZSIsImRhdGEiLCJfdHlwZW9mIiwidHlwZSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXJlbnQiLCJwb3N0TWVzc2FnZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRLZXkiLCJrIiwidiIsImVkaXRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInN0eWxlIiwidGV4dEFsaWduIiwicGFkZGluZyIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImxldHRlclNwYWNpbmciLCJjb2xvciIsImZvbnRTdHlsZSIsIm1hcmdpblRvcCIsIkxhdW5jaGVyV2luZG93Iiwic3RhdGUiLCJnYW1lIiwidGl0bGUiLCJMb2dpbldpbmRvdyIsIm1vZGUiLCJvbkNsaWNrIiwicm9vdCIsIlJlYWN0RE9NIiwiY3JlYXRlUm9vdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJyZW5kZXIiXSwic291cmNlcyI6WyJJbmxpbmUgQmFiZWwgc2NyaXB0ICg0KSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBcHA6IHByZXNlbnRzIGFsbCBzdGF0ZXMgc2lkZS1ieS1zaWRlIGFzIGEgZGVzaWduIGNhbnZhc1xuY29uc3QgVFdFQUtfREVGQVVMVFMgPSAvKkVESVRNT0RFLUJFR0lOKi97XG4gIFwidmFyaWFudFwiOiBcImZvcmVzdFwiXG59LypFRElUTU9ERS1FTkQqLztcblxuZnVuY3Rpb24gQXBwKCkge1xuICBjb25zdCBbdmFyaWFudCwgc2V0VmFyaWFudF0gPSBSZWFjdC51c2VTdGF0ZShUV0VBS19ERUZBVUxUUy52YXJpYW50KTtcbiAgY29uc3QgW2VkaXRNb2RlLCBzZXRFZGl0TW9kZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1zZyA9IChlKSA9PiB7XG4gICAgICBpZiAoIWUuZGF0YSB8fCB0eXBlb2YgZS5kYXRhICE9PSBcIm9iamVjdFwiKSByZXR1cm47XG4gICAgICBpZiAoZS5kYXRhLnR5cGUgPT09IFwiX19hY3RpdmF0ZV9lZGl0X21vZGVcIikgc2V0RWRpdE1vZGUodHJ1ZSk7XG4gICAgICBpZiAoZS5kYXRhLnR5cGUgPT09IFwiX19kZWFjdGl2YXRlX2VkaXRfbW9kZVwiKSBzZXRFZGl0TW9kZShmYWxzZSk7XG4gICAgfTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgb25Nc2cpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBcIl9fZWRpdF9tb2RlX2F2YWlsYWJsZVwiIH0sIFwiKlwiKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG9uTXNnKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNldEtleSA9IChrLCB2KSA9PiB7XG4gICAgaWYgKGsgPT09IFwidmFyaWFudFwiKSBzZXRWYXJpYW50KHYpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBcIl9fZWRpdF9tb2RlX3NldF9rZXlzXCIsIGVkaXRzOiB7IFtrXTogdiB9IH0sIFwiKlwiKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwic3RhZ2VcIj5cbiAgICAgIDxkaXYgc3R5bGU9e3sgdGV4dEFsaWduOiBcImNlbnRlclwiLCBwYWRkaW5nOiBcIjIwcHggMCAxMHB4XCIgfX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udEZhbWlseTogXCJ2YXIoLS1mLWRpc3BsYXkpXCIsIGZvbnRTaXplOiAyOCwgbGV0dGVyU3BhY2luZzogXCIwLjI0ZW1cIiwgY29sb3I6IFwidmFyKC0taXZvcnkpXCIgfX0+XG4gICAgICAgICAgTU9PTldFTEwgwrcgTEFVTkNIRVJcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udEZhbWlseTogXCJ2YXIoLS1mLXNlcmlmKVwiLCBmb250U3R5bGU6IFwiaXRhbGljXCIsIGNvbG9yOiBcInZhcigtLXRleHQtbXV0ZSlcIiwgbWFyZ2luVG9wOiA2IH19PlxuICAgICAgICAgINCT0LvQsNCy0L3Ri9C5INGN0LrRgNCw0L0sINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4LCDRjdC60YDQsNC9INCy0YXQvtC00LAg4oCUINCy0YHRkSDQsiDQvtC00L3QvtC8INGF0L7Qu9GB0YLQtS5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdGFnZS1ncmlkXCI+XG4gICAgICAgIDxMYXVuY2hlcldpbmRvdyB2YXJpYW50PXt2YXJpYW50fSBzdGF0ZT1cInJlYWR5XCIgICAgICAgZ2FtZT1cIndvd1wiICAgdGl0bGU9XCIwMSDCtyDQk9C70LDQstC90LDRjyDigJQgV29XIMK3INCz0L7RgtC+0LIg0LjQs9GA0LDRgtGMXCIgLz5cbiAgICAgICAgPExhdW5jaGVyV2luZG93IHZhcmlhbnQ9e3ZhcmlhbnR9IHN0YXRlPVwiZG93bmxvYWRpbmdcIiBnYW1lPVwid293XCIgICB0aXRsZT1cIjAyIMK3INCh0LrQsNGH0LjQstCw0L3QuNC1INC60LvQuNC10L3RgtCwXCIgLz5cbiAgICAgICAgPExhdW5jaGVyV2luZG93IHZhcmlhbnQ9e3ZhcmlhbnR9IHN0YXRlPVwicGF1c2VkXCIgICAgICBnYW1lPVwid293XCIgICB0aXRsZT1cIjAzIMK3INCf0LDRg9C30LBcIiAvPlxuICAgICAgICA8TGF1bmNoZXJXaW5kb3cgdmFyaWFudD17dmFyaWFudH0gc3RhdGU9XCJ2ZXJpZnlcIiAgICAgIGdhbWU9XCJ3b3dcIiAgIHRpdGxlPVwiMDQgwrcg0J/RgNC+0LLQtdGA0LrQsCDRhNCw0LnQu9C+0LJcIiAvPlxuICAgICAgICA8TGF1bmNoZXJXaW5kb3cgdmFyaWFudD17dmFyaWFudH0gc3RhdGU9XCJ1cGRhdGVcIiAgICAgIGdhbWU9XCJ3b3dcIiAgIHRpdGxlPVwiMDUgwrcg0J7QsdC90L7QstC70LXQvdC40LVcIiAvPlxuICAgICAgICA8TGF1bmNoZXJXaW5kb3cgdmFyaWFudD17dmFyaWFudH0gc3RhdGU9XCJyZWFkeVwiICAgICAgIGdhbWU9XCJrYXJ0c1wiIHRpdGxlPVwiMDYgwrcgTW9vbldlbGwgS2FydHMgKGNsb3NlZCBhbHBoYSlcIiAvPlxuICAgICAgICA8TGF1bmNoZXJXaW5kb3cgdmFyaWFudD17dmFyaWFudH0gc3RhdGU9XCJyZWFkeVwiICAgICAgIGdhbWU9XCJ2ZXJnZVwiIHRpdGxlPVwiMDcgwrcgUHJvamVjdCBWZXJnZSAo0LDQvdC+0L3RgSlcIiAvPlxuICAgICAgICA8TG9naW5XaW5kb3cgICAgdmFyaWFudD17dmFyaWFudH0gbW9kZT1cImxvZ2luXCIgICAgICAgIHRpdGxlPVwiMDggwrcg0JLRhdC+0LRcIiAvPlxuICAgICAgICA8TG9naW5XaW5kb3cgICAgdmFyaWFudD17dmFyaWFudH0gbW9kZT1cInJlZ2lzdGVyXCIgICAgIHRpdGxlPVwiMDkgwrcg0KDQtdCz0LjRgdGC0YDQsNGG0LjRj1wiIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAge2VkaXRNb2RlICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d2Vha3MtaG9zdFwiPlxuICAgICAgICAgIDxoND5Ud2Vha3M8L2g0PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidHdlYWtzLXJvd1wiPlxuICAgICAgICAgICAgPGxhYmVsPtCd0LDRgdGC0YDQvtC10L3QuNC1PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidHdlYWtzLXNlZ1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt2YXJpYW50ID09PSBcImZvcmVzdFwiID8gXCJhY3RpdmVcIiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0S2V5KFwidmFyaWFudFwiLCBcImZvcmVzdFwiKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCb0LXRgVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17dmFyaWFudCA9PT0gXCJ0ZW1wbGVcIiA/IFwiYWN0aXZlXCIgOiBcIlwifVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEtleShcInZhcmlhbnRcIiwgXCJ0ZW1wbGVcIil9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQpdGA0LDQvFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udEZhbWlseTogXCJ2YXIoLS1mLW1vbm8pXCIsIGZvbnRTaXplOiAxMCwgY29sb3I6IFwidmFyKC0tdGV4dC1tdXRlKVwiLCBsZXR0ZXJTcGFjaW5nOiBcIjAuMWVtXCIsIG1hcmdpblRvcDogNCB9fT5cbiAgICAgICAgICAgINC/0LXRgNC10LrQu9GO0YfQsNC10YIg0LLRgdC1INC+0LrQvdCwINGB0YDQsNC30YNcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJvb3RcIikpO1xucm9vdC5yZW5kZXIoPEFwcCAvPik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsSUFBTUEsY0FBYyxHQUFHLGtCQUFrQjtFQUN2QyxTQUFTLEVBQUU7QUFDYixDQUFDO0FBRUQsU0FBU0MsR0FBR0EsQ0FBQSxFQUFHO0VBQ2IsSUFBQUMsZUFBQSxHQUE4QkMsS0FBSyxDQUFDQyxRQUFRLENBQUNKLGNBQWMsQ0FBQ0ssT0FBTyxDQUFDO0lBQUFDLGdCQUFBLEdBQUFDLGNBQUEsQ0FBQUwsZUFBQTtJQUE3REcsT0FBTyxHQUFBQyxnQkFBQTtJQUFFRSxVQUFVLEdBQUFGLGdCQUFBO0VBQzFCLElBQUFHLGdCQUFBLEdBQWdDTixLQUFLLENBQUNDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQU0sZ0JBQUEsR0FBQUgsY0FBQSxDQUFBRSxnQkFBQTtJQUE5Q0UsUUFBUSxHQUFBRCxnQkFBQTtJQUFFRSxXQUFXLEdBQUFGLGdCQUFBO0VBRTVCUCxLQUFLLENBQUNVLFNBQVMsQ0FBQyxZQUFNO0lBQ3BCLElBQU1DLEtBQUssR0FBRyxTQUFSQSxLQUFLQSxDQUFJQyxDQUFDLEVBQUs7TUFDbkIsSUFBSSxDQUFDQSxDQUFDLENBQUNDLElBQUksSUFBSUMsT0FBQSxDQUFPRixDQUFDLENBQUNDLElBQUksTUFBSyxRQUFRLEVBQUU7TUFDM0MsSUFBSUQsQ0FBQyxDQUFDQyxJQUFJLENBQUNFLElBQUksS0FBSyxzQkFBc0IsRUFBRU4sV0FBVyxDQUFDLElBQUksQ0FBQztNQUM3RCxJQUFJRyxDQUFDLENBQUNDLElBQUksQ0FBQ0UsSUFBSSxLQUFLLHdCQUF3QixFQUFFTixXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2xFLENBQUM7SUFDRE8sTUFBTSxDQUFDQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUVOLEtBQUssQ0FBQztJQUN6Q0ssTUFBTSxDQUFDRSxNQUFNLENBQUNDLFdBQVcsQ0FBQztNQUFFSixJQUFJLEVBQUU7SUFBd0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNqRSxPQUFPO01BQUEsT0FBTUMsTUFBTSxDQUFDSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUVULEtBQUssQ0FBQztJQUFBO0VBQzNELENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNVSxNQUFNLEdBQUcsU0FBVEEsTUFBTUEsQ0FBSUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUs7SUFDdkIsSUFBSUQsQ0FBQyxLQUFLLFNBQVMsRUFBRWpCLFVBQVUsQ0FBQ2tCLENBQUMsQ0FBQztJQUNsQ1AsTUFBTSxDQUFDRSxNQUFNLENBQUNDLFdBQVcsQ0FBQztNQUFFSixJQUFJLEVBQUUsc0JBQXNCO01BQUVTLEtBQUssRUFBQUMsZUFBQSxLQUFLSCxDQUFDLEVBQUdDLENBQUM7SUFBRyxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQ3JGLENBQUM7RUFFRCxvQkFDRXZCLEtBQUEsQ0FBQTBCLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCM0IsS0FBQSxDQUFBMEIsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFBRUMsU0FBUyxFQUFFLFFBQVE7TUFBRUMsT0FBTyxFQUFFO0lBQWM7RUFBRSxnQkFDMUQ5QixLQUFBLENBQUEwQixhQUFBO0lBQUtFLEtBQUssRUFBRTtNQUFFRyxVQUFVLEVBQUUsa0JBQWtCO01BQUVDLFFBQVEsRUFBRSxFQUFFO01BQUVDLGFBQWEsRUFBRSxRQUFRO01BQUVDLEtBQUssRUFBRTtJQUFlO0VBQUUsR0FBQyx3QkFFekcsQ0FBQyxlQUNObEMsS0FBQSxDQUFBMEIsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFBRUcsVUFBVSxFQUFFLGdCQUFnQjtNQUFFSSxTQUFTLEVBQUUsUUFBUTtNQUFFRCxLQUFLLEVBQUUsa0JBQWtCO01BQUVFLFNBQVMsRUFBRTtJQUFFO0VBQUUsR0FBQyx5VkFFdkcsQ0FDRixDQUFDLGVBRU5wQyxLQUFBLENBQUEwQixhQUFBO0lBQUtDLFNBQVMsRUFBQztFQUFZLGdCQUN6QjNCLEtBQUEsQ0FBQTBCLGFBQUEsQ0FBQ1csY0FBYztJQUFDbkMsT0FBTyxFQUFFQSxPQUFRO0lBQUNvQyxLQUFLLEVBQUMsT0FBTztJQUFPQyxJQUFJLEVBQUMsS0FBSztJQUFHQyxLQUFLLEVBQUM7RUFBbUMsQ0FBRSxDQUFDLGVBQy9HeEMsS0FBQSxDQUFBMEIsYUFBQSxDQUFDVyxjQUFjO0lBQUNuQyxPQUFPLEVBQUVBLE9BQVE7SUFBQ29DLEtBQUssRUFBQyxhQUFhO0lBQUNDLElBQUksRUFBQyxLQUFLO0lBQUdDLEtBQUssRUFBQztFQUF5QixDQUFFLENBQUMsZUFDckd4QyxLQUFBLENBQUEwQixhQUFBLENBQUNXLGNBQWM7SUFBQ25DLE9BQU8sRUFBRUEsT0FBUTtJQUFDb0MsS0FBSyxFQUFDLFFBQVE7SUFBTUMsSUFBSSxFQUFDLEtBQUs7SUFBR0MsS0FBSyxFQUFDO0VBQVksQ0FBRSxDQUFDLGVBQ3hGeEMsS0FBQSxDQUFBMEIsYUFBQSxDQUFDVyxjQUFjO0lBQUNuQyxPQUFPLEVBQUVBLE9BQVE7SUFBQ29DLEtBQUssRUFBQyxRQUFRO0lBQU1DLElBQUksRUFBQyxLQUFLO0lBQUdDLEtBQUssRUFBQztFQUFzQixDQUFFLENBQUMsZUFDbEd4QyxLQUFBLENBQUEwQixhQUFBLENBQUNXLGNBQWM7SUFBQ25DLE9BQU8sRUFBRUEsT0FBUTtJQUFDb0MsS0FBSyxFQUFDLFFBQVE7SUFBTUMsSUFBSSxFQUFDLEtBQUs7SUFBR0MsS0FBSyxFQUFDO0VBQWlCLENBQUUsQ0FBQyxlQUM3RnhDLEtBQUEsQ0FBQTBCLGFBQUEsQ0FBQ1csY0FBYztJQUFDbkMsT0FBTyxFQUFFQSxPQUFRO0lBQUNvQyxLQUFLLEVBQUMsT0FBTztJQUFPQyxJQUFJLEVBQUMsT0FBTztJQUFDQyxLQUFLLEVBQUM7RUFBb0MsQ0FBRSxDQUFDLGVBQ2hIeEMsS0FBQSxDQUFBMEIsYUFBQSxDQUFDVyxjQUFjO0lBQUNuQyxPQUFPLEVBQUVBLE9BQVE7SUFBQ29DLEtBQUssRUFBQyxPQUFPO0lBQU9DLElBQUksRUFBQyxPQUFPO0lBQUNDLEtBQUssRUFBQztFQUE0QixDQUFFLENBQUMsZUFDeEd4QyxLQUFBLENBQUEwQixhQUFBLENBQUNlLFdBQVc7SUFBSXZDLE9BQU8sRUFBRUEsT0FBUTtJQUFDd0MsSUFBSSxFQUFDLE9BQU87SUFBUUYsS0FBSyxFQUFDO0VBQVcsQ0FBRSxDQUFDLGVBQzFFeEMsS0FBQSxDQUFBMEIsYUFBQSxDQUFDZSxXQUFXO0lBQUl2QyxPQUFPLEVBQUVBLE9BQVE7SUFBQ3dDLElBQUksRUFBQyxVQUFVO0lBQUtGLEtBQUssRUFBQztFQUFrQixDQUFFLENBQzdFLENBQUMsRUFFTGhDLFFBQVEsaUJBQ1BSLEtBQUEsQ0FBQTBCLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQWEsZ0JBQzFCM0IsS0FBQSxDQUFBMEIsYUFBQSxhQUFJLFFBQVUsQ0FBQyxlQUNmMUIsS0FBQSxDQUFBMEIsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBWSxnQkFDekIzQixLQUFBLENBQUEwQixhQUFBLGdCQUFPLDhEQUFpQixDQUFDLGVBQ3pCMUIsS0FBQSxDQUFBMEIsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBWSxnQkFDekIzQixLQUFBLENBQUEwQixhQUFBO0lBQ0VDLFNBQVMsRUFBRXpCLE9BQU8sS0FBSyxRQUFRLEdBQUcsUUFBUSxHQUFHLEVBQUc7SUFDaER5QyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtNQUFBLE9BQVF0QixNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztJQUFBO0VBQUMsR0FDNUMsb0JBRU8sQ0FBQyxlQUNUckIsS0FBQSxDQUFBMEIsYUFBQTtJQUNFQyxTQUFTLEVBQUV6QixPQUFPLEtBQUssUUFBUSxHQUFHLFFBQVEsR0FBRyxFQUFHO0lBQ2hEeUMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7TUFBQSxPQUFRdEIsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7SUFBQTtFQUFDLEdBQzVDLDBCQUVPLENBQ0wsQ0FDRixDQUFDLGVBQ05yQixLQUFBLENBQUEwQixhQUFBO0lBQUtFLEtBQUssRUFBRTtNQUFFRyxVQUFVLEVBQUUsZUFBZTtNQUFFQyxRQUFRLEVBQUUsRUFBRTtNQUFFRSxLQUFLLEVBQUUsa0JBQWtCO01BQUVELGFBQWEsRUFBRSxPQUFPO01BQUVHLFNBQVMsRUFBRTtJQUFFO0VBQUUsR0FBQywrSUFFdkgsQ0FDRixDQUVKLENBQUM7QUFFVjtBQUVBLElBQU1RLElBQUksR0FBR0MsUUFBUSxDQUFDQyxVQUFVLENBQUNDLFFBQVEsQ0FBQ0MsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pFSixJQUFJLENBQUNLLE1BQU0sY0FBQ2pELEtBQUEsQ0FBQTBCLGFBQUEsQ0FBQzVCLEdBQUcsTUFBRSxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<div id="root">
|
||
<div class="stage">
|
||
<div style="text-align: center; padding: 20px 0px 10px">
|
||
<div
|
||
style="
|
||
font-family: var(--f-display);
|
||
font-size: 28px;
|
||
letter-spacing: 0.24em;
|
||
color: var(--ivory);
|
||
"
|
||
>
|
||
MOONWELL · LAUNCHER
|
||
</div>
|
||
<div
|
||
style="
|
||
font-family: var(--f-serif);
|
||
font-style: italic;
|
||
color: var(--text-mute);
|
||
margin-top: 6px;
|
||
"
|
||
>
|
||
Главный экран, состояния загрузки, экран входа — всё в одном холсте.
|
||
</div>
|
||
</div>
|
||
<div class="stage-grid">
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span
|
||
><span>01 · Главная — WoW · готов играть</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon"></div>
|
||
<div class="bg-placeholder-mark">
|
||
<span>Place key art here</span
|
||
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
|
||
</div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<aside class="rail rail-wide">
|
||
<div class="rail-avatar">A</div>
|
||
<div class="rail-divider"></div>
|
||
<div class="rail-section-label">Игры</div>
|
||
<button
|
||
class="game-tile active"
|
||
title="MoonWell · WoW — Open Beta"
|
||
>
|
||
<span class="game-tile-mark">MW</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell · WoW</span
|
||
><span class="game-tile-tag">Open Beta</span></span
|
||
></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="MoonWell Karts — Closed Alpha"
|
||
>
|
||
<span class="game-tile-mark">K</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell Karts</span
|
||
><span class="game-tile-tag">Closed Alpha</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="Tides of Elune — В разработке"
|
||
>
|
||
<span class="game-tile-mark">T</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Tides of Elune</span
|
||
><span class="game-tile-tag">В разработке</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button class="game-tile soon" title="Project Verge — Анонс">
|
||
<span class="game-tile-mark">V</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Project Verge</span
|
||
><span class="game-tile-tag">Анонс</span></span
|
||
><span class="game-tile-lock">soon</span>
|
||
</button>
|
||
<div class="rail-spacer"></div>
|
||
<div class="rail-divider"></div>
|
||
<button class="rail-icon" title="Друзья">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
|
||
<circle cx="9" cy="7" r="4"></circle>
|
||
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
|
||
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
|
||
</svg></button
|
||
><button class="rail-icon" title="Настройки">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<circle cx="12" cy="12" r="3"></circle>
|
||
<path
|
||
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</aside>
|
||
<header class="header">
|
||
<div class="brand">
|
||
<span class="brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="40"
|
||
height="40"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg
|
||
></span>
|
||
<div class="brand-name">
|
||
MOONWELL<small>LUNAR · LAUNCHER</small>
|
||
</div>
|
||
</div>
|
||
<div class="player">
|
||
<div class="player-avatar">Æ</div>
|
||
<div class="player-info">
|
||
<span class="player-name">Aranthel</span
|
||
><span class="player-meta">Хранитель рощи · 47 ур.</span>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="hero-copy">
|
||
<span class="hero-eyebrow"
|
||
><span class="dot"></span> Open Beta</span
|
||
>
|
||
<h1 class="hero-headline">
|
||
Свет колодца<br /><span class="accent"
|
||
>зовёт тебя домой.</span
|
||
>
|
||
</h1>
|
||
<p class="hero-sub">
|
||
Wrath of the Lich King · приватный сервер
|
||
</p>
|
||
</div>
|
||
<aside class="news-panel">
|
||
<div class="news-tabs">
|
||
<button class="news-tab active">Новости</button
|
||
><button class="news-tab">События</button
|
||
><button class="news-tab">Патчи</button>
|
||
</div>
|
||
<div class="news-list">
|
||
<a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">29.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Открытая бета: первый сезон стартует на этой неделе
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag event">Событие</span
|
||
><span class="news-date">27.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Лунные стражи: PvP-уикенд с тройным рейтингом
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">24.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
1.4.2 — балансировка соло-данжей и фикс Mythic+
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag notice">Объявление</span
|
||
><span class="news-date">22.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Запланированное обслуживание реалмов 24.04 03:00 UTC
|
||
</div></a
|
||
>
|
||
</div>
|
||
<div class="news-foot">
|
||
<span>moonwell.gg</span><a href="#">Все →</a>
|
||
</div>
|
||
</aside>
|
||
<div class="actions">
|
||
<div class="action-row">
|
||
<div class="realm-pill">
|
||
<div class="realm-pulse"></div>
|
||
<div>
|
||
<div class="realm-name">ELUNE'S GRACE</div>
|
||
<div class="realm-meta">Online · 1247 players · 38ms</div>
|
||
</div>
|
||
</div>
|
||
<div class="progress-block">
|
||
<div class="progress-head">
|
||
<span class="progress-state">Готов к запуску</span
|
||
><span class="progress-pct">100%</span>
|
||
</div>
|
||
<div class="progress-bar">
|
||
<div class="progress-fill" style="width: 100%"></div>
|
||
</div>
|
||
<div class="progress-meta">
|
||
<div class="left">
|
||
<span>Версия клиента 1.4.2</span
|
||
><span>Все файлы целы</span>
|
||
</div>
|
||
<div class="right">
|
||
<span>Последняя проверка: только что</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<button class="play-btn ready">
|
||
<span class="icon"
|
||
><svg viewBox="0 0 24 24" fill="currentColor">
|
||
<path d="M7 5v14l12-7z"></path></svg
|
||
></span>
|
||
Играть
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar">
|
||
<span>Версия клиента <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Realmlist <strong>login.moonwell.gg</strong></span
|
||
><span class="sep">·</span
|
||
><span>Регион <strong>EU</strong></span
|
||
><span class="right">Лаунчер v1.4.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span><span>02 · Скачивание клиента</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon"></div>
|
||
<div class="bg-placeholder-mark">
|
||
<span>Place key art here</span
|
||
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
|
||
</div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<aside class="rail rail-wide">
|
||
<div class="rail-avatar">A</div>
|
||
<div class="rail-divider"></div>
|
||
<div class="rail-section-label">Игры</div>
|
||
<button
|
||
class="game-tile active"
|
||
title="MoonWell · WoW — Open Beta"
|
||
>
|
||
<span class="game-tile-mark">MW</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell · WoW</span
|
||
><span class="game-tile-tag">Open Beta</span></span
|
||
></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="MoonWell Karts — Closed Alpha"
|
||
>
|
||
<span class="game-tile-mark">K</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell Karts</span
|
||
><span class="game-tile-tag">Closed Alpha</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="Tides of Elune — В разработке"
|
||
>
|
||
<span class="game-tile-mark">T</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Tides of Elune</span
|
||
><span class="game-tile-tag">В разработке</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button class="game-tile soon" title="Project Verge — Анонс">
|
||
<span class="game-tile-mark">V</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Project Verge</span
|
||
><span class="game-tile-tag">Анонс</span></span
|
||
><span class="game-tile-lock">soon</span>
|
||
</button>
|
||
<div class="rail-spacer"></div>
|
||
<div class="rail-divider"></div>
|
||
<button class="rail-icon" title="Друзья">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
|
||
<circle cx="9" cy="7" r="4"></circle>
|
||
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
|
||
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
|
||
</svg></button
|
||
><button class="rail-icon" title="Настройки">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<circle cx="12" cy="12" r="3"></circle>
|
||
<path
|
||
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</aside>
|
||
<header class="header">
|
||
<div class="brand">
|
||
<span class="brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="40"
|
||
height="40"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg
|
||
></span>
|
||
<div class="brand-name">
|
||
MOONWELL<small>LUNAR · LAUNCHER</small>
|
||
</div>
|
||
</div>
|
||
<div class="player">
|
||
<div class="player-avatar">Æ</div>
|
||
<div class="player-info">
|
||
<span class="player-name">Aranthel</span
|
||
><span class="player-meta">Хранитель рощи · 47 ур.</span>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="hero-copy">
|
||
<span class="hero-eyebrow"
|
||
><span class="dot"></span> Open Beta</span
|
||
>
|
||
<h1 class="hero-headline">
|
||
Свет колодца<br /><span class="accent"
|
||
>зовёт тебя домой.</span
|
||
>
|
||
</h1>
|
||
<p class="hero-sub">
|
||
Wrath of the Lich King · приватный сервер
|
||
</p>
|
||
</div>
|
||
<aside class="news-panel">
|
||
<div class="news-tabs">
|
||
<button class="news-tab active">Новости</button
|
||
><button class="news-tab">События</button
|
||
><button class="news-tab">Патчи</button>
|
||
</div>
|
||
<div class="news-list">
|
||
<a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">29.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Открытая бета: первый сезон стартует на этой неделе
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag event">Событие</span
|
||
><span class="news-date">27.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Лунные стражи: PvP-уикенд с тройным рейтингом
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">24.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
1.4.2 — балансировка соло-данжей и фикс Mythic+
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag notice">Объявление</span
|
||
><span class="news-date">22.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Запланированное обслуживание реалмов 24.04 03:00 UTC
|
||
</div></a
|
||
>
|
||
</div>
|
||
<div class="news-foot">
|
||
<span>moonwell.gg</span><a href="#">Все →</a>
|
||
</div>
|
||
</aside>
|
||
<div class="actions">
|
||
<div class="action-row">
|
||
<div class="realm-pill">
|
||
<div class="realm-pulse"></div>
|
||
<div>
|
||
<div class="realm-name">ELUNE'S GRACE</div>
|
||
<div class="realm-meta">Online · 1247 players · 38ms</div>
|
||
</div>
|
||
</div>
|
||
<div class="progress-block">
|
||
<div class="progress-head">
|
||
<span class="progress-state">Загрузка</span
|
||
><span class="progress-pct">6%</span>
|
||
</div>
|
||
<div class="progress-bar">
|
||
<div class="progress-fill" style="width: 6%"></div>
|
||
</div>
|
||
<div class="progress-meta">
|
||
<div class="left">
|
||
<span>3.22 / 48.80 GB</span><span>4.95 MB/s</span>
|
||
</div>
|
||
<div class="right"><span>Осталось ~2:37:11</span></div>
|
||
</div>
|
||
</div>
|
||
<button class="play-btn pause">
|
||
<span class="icon"
|
||
><svg viewBox="0 0 24 24" fill="currentColor">
|
||
<rect x="6" y="5" width="4" height="14" rx="1"></rect>
|
||
<rect
|
||
x="14"
|
||
y="5"
|
||
width="4"
|
||
height="14"
|
||
rx="1"
|
||
></rect></svg
|
||
></span>
|
||
Пауза
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar">
|
||
<span>Версия клиента <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Realmlist <strong>login.moonwell.gg</strong></span
|
||
><span class="sep">·</span
|
||
><span>Регион <strong>EU</strong></span
|
||
><span class="right">Лаунчер v1.4.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span><span>03 · Пауза</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon"></div>
|
||
<div class="bg-placeholder-mark">
|
||
<span>Place key art here</span
|
||
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
|
||
</div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<aside class="rail rail-wide">
|
||
<div class="rail-avatar">A</div>
|
||
<div class="rail-divider"></div>
|
||
<div class="rail-section-label">Игры</div>
|
||
<button
|
||
class="game-tile active"
|
||
title="MoonWell · WoW — Open Beta"
|
||
>
|
||
<span class="game-tile-mark">MW</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell · WoW</span
|
||
><span class="game-tile-tag">Open Beta</span></span
|
||
></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="MoonWell Karts — Closed Alpha"
|
||
>
|
||
<span class="game-tile-mark">K</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell Karts</span
|
||
><span class="game-tile-tag">Closed Alpha</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="Tides of Elune — В разработке"
|
||
>
|
||
<span class="game-tile-mark">T</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Tides of Elune</span
|
||
><span class="game-tile-tag">В разработке</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button class="game-tile soon" title="Project Verge — Анонс">
|
||
<span class="game-tile-mark">V</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Project Verge</span
|
||
><span class="game-tile-tag">Анонс</span></span
|
||
><span class="game-tile-lock">soon</span>
|
||
</button>
|
||
<div class="rail-spacer"></div>
|
||
<div class="rail-divider"></div>
|
||
<button class="rail-icon" title="Друзья">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
|
||
<circle cx="9" cy="7" r="4"></circle>
|
||
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
|
||
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
|
||
</svg></button
|
||
><button class="rail-icon" title="Настройки">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<circle cx="12" cy="12" r="3"></circle>
|
||
<path
|
||
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</aside>
|
||
<header class="header">
|
||
<div class="brand">
|
||
<span class="brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="40"
|
||
height="40"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg
|
||
></span>
|
||
<div class="brand-name">
|
||
MOONWELL<small>LUNAR · LAUNCHER</small>
|
||
</div>
|
||
</div>
|
||
<div class="player">
|
||
<div class="player-avatar">Æ</div>
|
||
<div class="player-info">
|
||
<span class="player-name">Aranthel</span
|
||
><span class="player-meta">Хранитель рощи · 47 ур.</span>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="hero-copy">
|
||
<span class="hero-eyebrow"
|
||
><span class="dot"></span> Open Beta</span
|
||
>
|
||
<h1 class="hero-headline">
|
||
Свет колодца<br /><span class="accent"
|
||
>зовёт тебя домой.</span
|
||
>
|
||
</h1>
|
||
<p class="hero-sub">
|
||
Wrath of the Lich King · приватный сервер
|
||
</p>
|
||
</div>
|
||
<aside class="news-panel">
|
||
<div class="news-tabs">
|
||
<button class="news-tab active">Новости</button
|
||
><button class="news-tab">События</button
|
||
><button class="news-tab">Патчи</button>
|
||
</div>
|
||
<div class="news-list">
|
||
<a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">29.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Открытая бета: первый сезон стартует на этой неделе
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag event">Событие</span
|
||
><span class="news-date">27.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Лунные стражи: PvP-уикенд с тройным рейтингом
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">24.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
1.4.2 — балансировка соло-данжей и фикс Mythic+
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag notice">Объявление</span
|
||
><span class="news-date">22.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Запланированное обслуживание реалмов 24.04 03:00 UTC
|
||
</div></a
|
||
>
|
||
</div>
|
||
<div class="news-foot">
|
||
<span>moonwell.gg</span><a href="#">Все →</a>
|
||
</div>
|
||
</aside>
|
||
<div class="actions">
|
||
<div class="action-row">
|
||
<div class="realm-pill">
|
||
<div class="realm-pulse"></div>
|
||
<div>
|
||
<div class="realm-name">ELUNE'S GRACE</div>
|
||
<div class="realm-meta">Online · 1247 players · 38ms</div>
|
||
</div>
|
||
</div>
|
||
<div class="progress-block">
|
||
<div class="progress-head">
|
||
<span class="progress-state">Пауза</span
|
||
><span class="progress-pct">6%</span>
|
||
</div>
|
||
<div class="progress-bar">
|
||
<div class="progress-fill" style="width: 6%"></div>
|
||
</div>
|
||
<div class="progress-meta">
|
||
<div class="left">
|
||
<span>3.22 / 48.80 GB</span><span>—</span>
|
||
</div>
|
||
<div class="right">
|
||
<span>Возобнови, чтобы продолжить</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<button class="play-btn pause">
|
||
<span class="icon"
|
||
><svg viewBox="0 0 24 24" fill="currentColor">
|
||
<path d="M7 5v14l12-7z"></path></svg
|
||
></span>
|
||
Продолжить
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar">
|
||
<span>Версия клиента <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Realmlist <strong>login.moonwell.gg</strong></span
|
||
><span class="sep">·</span
|
||
><span>Регион <strong>EU</strong></span
|
||
><span class="right">Лаунчер v1.4.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span><span>04 · Проверка файлов</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon"></div>
|
||
<div class="bg-placeholder-mark">
|
||
<span>Place key art here</span
|
||
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
|
||
</div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<aside class="rail rail-wide">
|
||
<div class="rail-avatar">A</div>
|
||
<div class="rail-divider"></div>
|
||
<div class="rail-section-label">Игры</div>
|
||
<button
|
||
class="game-tile active"
|
||
title="MoonWell · WoW — Open Beta"
|
||
>
|
||
<span class="game-tile-mark">MW</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell · WoW</span
|
||
><span class="game-tile-tag">Open Beta</span></span
|
||
></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="MoonWell Karts — Closed Alpha"
|
||
>
|
||
<span class="game-tile-mark">K</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell Karts</span
|
||
><span class="game-tile-tag">Closed Alpha</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="Tides of Elune — В разработке"
|
||
>
|
||
<span class="game-tile-mark">T</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Tides of Elune</span
|
||
><span class="game-tile-tag">В разработке</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button class="game-tile soon" title="Project Verge — Анонс">
|
||
<span class="game-tile-mark">V</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Project Verge</span
|
||
><span class="game-tile-tag">Анонс</span></span
|
||
><span class="game-tile-lock">soon</span>
|
||
</button>
|
||
<div class="rail-spacer"></div>
|
||
<div class="rail-divider"></div>
|
||
<button class="rail-icon" title="Друзья">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
|
||
<circle cx="9" cy="7" r="4"></circle>
|
||
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
|
||
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
|
||
</svg></button
|
||
><button class="rail-icon" title="Настройки">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<circle cx="12" cy="12" r="3"></circle>
|
||
<path
|
||
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</aside>
|
||
<header class="header">
|
||
<div class="brand">
|
||
<span class="brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="40"
|
||
height="40"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg
|
||
></span>
|
||
<div class="brand-name">
|
||
MOONWELL<small>LUNAR · LAUNCHER</small>
|
||
</div>
|
||
</div>
|
||
<div class="player">
|
||
<div class="player-avatar">Æ</div>
|
||
<div class="player-info">
|
||
<span class="player-name">Aranthel</span
|
||
><span class="player-meta">Хранитель рощи · 47 ур.</span>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="hero-copy">
|
||
<span class="hero-eyebrow"
|
||
><span class="dot"></span> Open Beta</span
|
||
>
|
||
<h1 class="hero-headline">
|
||
Свет колодца<br /><span class="accent"
|
||
>зовёт тебя домой.</span
|
||
>
|
||
</h1>
|
||
<p class="hero-sub">
|
||
Wrath of the Lich King · приватный сервер
|
||
</p>
|
||
</div>
|
||
<aside class="news-panel">
|
||
<div class="news-tabs">
|
||
<button class="news-tab active">Новости</button
|
||
><button class="news-tab">События</button
|
||
><button class="news-tab">Патчи</button>
|
||
</div>
|
||
<div class="news-list">
|
||
<a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">29.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Открытая бета: первый сезон стартует на этой неделе
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag event">Событие</span
|
||
><span class="news-date">27.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Лунные стражи: PvP-уикенд с тройным рейтингом
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">24.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
1.4.2 — балансировка соло-данжей и фикс Mythic+
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag notice">Объявление</span
|
||
><span class="news-date">22.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Запланированное обслуживание реалмов 24.04 03:00 UTC
|
||
</div></a
|
||
>
|
||
</div>
|
||
<div class="news-foot">
|
||
<span>moonwell.gg</span><a href="#">Все →</a>
|
||
</div>
|
||
</aside>
|
||
<div class="actions">
|
||
<div class="action-row">
|
||
<div class="realm-pill">
|
||
<div class="realm-pulse"></div>
|
||
<div>
|
||
<div class="realm-name">ELUNE'S GRACE</div>
|
||
<div class="realm-meta">Online · 1247 players · 38ms</div>
|
||
</div>
|
||
</div>
|
||
<div class="progress-block">
|
||
<div class="progress-head">
|
||
<span class="progress-state">Проверка файлов</span
|
||
><span class="progress-pct">38%</span>
|
||
</div>
|
||
<div class="progress-bar">
|
||
<div class="progress-fill" style="width: 38%"></div>
|
||
</div>
|
||
<div class="progress-meta">
|
||
<div class="left">
|
||
<span>18 432 / 48 121 файлов</span><span>SHA-256</span>
|
||
</div>
|
||
<div class="right"><span>~1 мин</span></div>
|
||
</div>
|
||
</div>
|
||
<button class="play-btn disabled" disabled="">
|
||
<span class="icon"
|
||
><svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M3 12a9 9 0 0 1 15.5-6.3L21 8"></path>
|
||
<path d="M21 3v5h-5"></path>
|
||
<path d="M21 12a9 9 0 0 1-15.5 6.3L3 16"></path>
|
||
<path d="M3 21v-5h5"></path></svg
|
||
></span>
|
||
Проверка…
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar">
|
||
<span>Версия клиента <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Realmlist <strong>login.moonwell.gg</strong></span
|
||
><span class="sep">·</span
|
||
><span>Регион <strong>EU</strong></span
|
||
><span class="right">Лаунчер v1.4.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span><span>05 · Обновление</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon"></div>
|
||
<div class="bg-placeholder-mark">
|
||
<span>Place key art here</span
|
||
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
|
||
</div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<aside class="rail rail-wide">
|
||
<div class="rail-avatar">A</div>
|
||
<div class="rail-divider"></div>
|
||
<div class="rail-section-label">Игры</div>
|
||
<button
|
||
class="game-tile active"
|
||
title="MoonWell · WoW — Open Beta"
|
||
>
|
||
<span class="game-tile-mark">MW</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell · WoW</span
|
||
><span class="game-tile-tag">Open Beta</span></span
|
||
></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="MoonWell Karts — Closed Alpha"
|
||
>
|
||
<span class="game-tile-mark">K</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell Karts</span
|
||
><span class="game-tile-tag">Closed Alpha</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="Tides of Elune — В разработке"
|
||
>
|
||
<span class="game-tile-mark">T</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Tides of Elune</span
|
||
><span class="game-tile-tag">В разработке</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button class="game-tile soon" title="Project Verge — Анонс">
|
||
<span class="game-tile-mark">V</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Project Verge</span
|
||
><span class="game-tile-tag">Анонс</span></span
|
||
><span class="game-tile-lock">soon</span>
|
||
</button>
|
||
<div class="rail-spacer"></div>
|
||
<div class="rail-divider"></div>
|
||
<button class="rail-icon" title="Друзья">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
|
||
<circle cx="9" cy="7" r="4"></circle>
|
||
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
|
||
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
|
||
</svg></button
|
||
><button class="rail-icon" title="Настройки">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<circle cx="12" cy="12" r="3"></circle>
|
||
<path
|
||
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</aside>
|
||
<header class="header">
|
||
<div class="brand">
|
||
<span class="brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="40"
|
||
height="40"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg
|
||
></span>
|
||
<div class="brand-name">
|
||
MOONWELL<small>LUNAR · LAUNCHER</small>
|
||
</div>
|
||
</div>
|
||
<div class="player">
|
||
<div class="player-avatar">Æ</div>
|
||
<div class="player-info">
|
||
<span class="player-name">Aranthel</span
|
||
><span class="player-meta">Хранитель рощи · 47 ур.</span>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="hero-copy">
|
||
<span class="hero-eyebrow"
|
||
><span class="dot"></span> Open Beta</span
|
||
>
|
||
<h1 class="hero-headline">
|
||
Свет колодца<br /><span class="accent"
|
||
>зовёт тебя домой.</span
|
||
>
|
||
</h1>
|
||
<p class="hero-sub">
|
||
Wrath of the Lich King · приватный сервер
|
||
</p>
|
||
</div>
|
||
<aside class="news-panel">
|
||
<div class="news-tabs">
|
||
<button class="news-tab active">Новости</button
|
||
><button class="news-tab">События</button
|
||
><button class="news-tab">Патчи</button>
|
||
</div>
|
||
<div class="news-list">
|
||
<a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">29.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Открытая бета: первый сезон стартует на этой неделе
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag event">Событие</span
|
||
><span class="news-date">27.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Лунные стражи: PvP-уикенд с тройным рейтингом
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">24.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
1.4.2 — балансировка соло-данжей и фикс Mythic+
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag notice">Объявление</span
|
||
><span class="news-date">22.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Запланированное обслуживание реалмов 24.04 03:00 UTC
|
||
</div></a
|
||
>
|
||
</div>
|
||
<div class="news-foot">
|
||
<span>moonwell.gg</span><a href="#">Все →</a>
|
||
</div>
|
||
</aside>
|
||
<div class="actions">
|
||
<div class="action-row">
|
||
<div class="realm-pill">
|
||
<div class="realm-pulse"></div>
|
||
<div>
|
||
<div class="realm-name">ELUNE'S GRACE</div>
|
||
<div class="realm-meta">Online · 1247 players · 38ms</div>
|
||
</div>
|
||
</div>
|
||
<div class="progress-block">
|
||
<div class="progress-head">
|
||
<span class="progress-state">Обновление клиента</span
|
||
><span class="progress-pct">72%</span>
|
||
</div>
|
||
<div class="progress-bar">
|
||
<div class="progress-fill" style="width: 72%"></div>
|
||
</div>
|
||
<div class="progress-meta">
|
||
<div class="left">
|
||
<span>1.4.1 → 1.4.2</span><span>180 MB / 250 MB</span>
|
||
</div>
|
||
<div class="right"><span>~30 сек</span></div>
|
||
</div>
|
||
</div>
|
||
<button class="play-btn pause">
|
||
<span class="icon"
|
||
><svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M12 3v13"></path>
|
||
<path d="M7 11l5 5 5-5"></path>
|
||
<path d="M5 21h14"></path></svg
|
||
></span>
|
||
Обновление
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar">
|
||
<span>Версия клиента <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Realmlist <strong>login.moonwell.gg</strong></span
|
||
><span class="sep">·</span
|
||
><span>Регион <strong>EU</strong></span
|
||
><span class="right">Лаунчер v1.4.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span
|
||
><span>06 · MoonWell Karts (closed alpha)</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon"></div>
|
||
<div class="bg-placeholder-mark">
|
||
<span>Place key art here</span
|
||
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
|
||
</div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<aside class="rail rail-wide">
|
||
<div class="rail-avatar">A</div>
|
||
<div class="rail-divider"></div>
|
||
<div class="rail-section-label">Игры</div>
|
||
<button class="game-tile" title="MoonWell · WoW — Open Beta">
|
||
<span class="game-tile-mark">MW</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell · WoW</span
|
||
><span class="game-tile-tag">Open Beta</span></span
|
||
></button
|
||
><button
|
||
class="game-tile active soon"
|
||
title="MoonWell Karts — Closed Alpha"
|
||
>
|
||
<span class="game-tile-mark">K</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell Karts</span
|
||
><span class="game-tile-tag">Closed Alpha</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="Tides of Elune — В разработке"
|
||
>
|
||
<span class="game-tile-mark">T</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Tides of Elune</span
|
||
><span class="game-tile-tag">В разработке</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button class="game-tile soon" title="Project Verge — Анонс">
|
||
<span class="game-tile-mark">V</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Project Verge</span
|
||
><span class="game-tile-tag">Анонс</span></span
|
||
><span class="game-tile-lock">soon</span>
|
||
</button>
|
||
<div class="rail-spacer"></div>
|
||
<div class="rail-divider"></div>
|
||
<button class="rail-icon" title="Друзья">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
|
||
<circle cx="9" cy="7" r="4"></circle>
|
||
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
|
||
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
|
||
</svg></button
|
||
><button class="rail-icon" title="Настройки">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<circle cx="12" cy="12" r="3"></circle>
|
||
<path
|
||
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</aside>
|
||
<header class="header">
|
||
<div class="brand">
|
||
<span class="brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="40"
|
||
height="40"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg
|
||
></span>
|
||
<div class="brand-name">
|
||
MOONWELL<small>LUNAR · LAUNCHER</small>
|
||
</div>
|
||
</div>
|
||
<div class="player">
|
||
<div class="player-avatar">Æ</div>
|
||
<div class="player-info">
|
||
<span class="player-name">Aranthel</span
|
||
><span class="player-meta">Хранитель рощи · 47 ур.</span>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="hero-copy">
|
||
<span class="hero-eyebrow"
|
||
><span class="dot"></span> Closed Alpha</span
|
||
>
|
||
<h1 class="hero-headline">
|
||
Гонки под<br /><span class="accent">лунным светом.</span>
|
||
</h1>
|
||
<p class="hero-sub">Аркадные гонки в нашей вселенной</p>
|
||
</div>
|
||
<aside class="news-panel">
|
||
<div class="news-tabs">
|
||
<button class="news-tab active">Новости</button
|
||
><button class="news-tab">События</button
|
||
><button class="news-tab">Патчи</button>
|
||
</div>
|
||
<div class="news-list">
|
||
<a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">29.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Открытая бета: первый сезон стартует на этой неделе
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag event">Событие</span
|
||
><span class="news-date">27.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Лунные стражи: PvP-уикенд с тройным рейтингом
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">24.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
1.4.2 — балансировка соло-данжей и фикс Mythic+
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag notice">Объявление</span
|
||
><span class="news-date">22.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Запланированное обслуживание реалмов 24.04 03:00 UTC
|
||
</div></a
|
||
>
|
||
</div>
|
||
<div class="news-foot">
|
||
<span>moonwell.gg</span><a href="#">Все →</a>
|
||
</div>
|
||
</aside>
|
||
<div class="actions">
|
||
<div class="action-row">
|
||
<div class="realm-pill">
|
||
<div class="realm-pulse"></div>
|
||
<div>
|
||
<div class="realm-name">ELUNE'S GRACE</div>
|
||
<div class="realm-meta">Online · 1247 players · 38ms</div>
|
||
</div>
|
||
</div>
|
||
<div class="progress-block">
|
||
<div class="progress-head">
|
||
<span class="progress-state">Готов к запуску</span
|
||
><span class="progress-pct">100%</span>
|
||
</div>
|
||
<div class="progress-bar">
|
||
<div class="progress-fill" style="width: 100%"></div>
|
||
</div>
|
||
<div class="progress-meta">
|
||
<div class="left">
|
||
<span>Версия клиента 1.4.2</span
|
||
><span>Все файлы целы</span>
|
||
</div>
|
||
<div class="right">
|
||
<span>Последняя проверка: только что</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<button class="play-btn ready">
|
||
<span class="icon"
|
||
><svg viewBox="0 0 24 24" fill="currentColor">
|
||
<path d="M7 5v14l12-7z"></path></svg
|
||
></span>
|
||
Играть
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar">
|
||
<span>Версия клиента <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Realmlist <strong>login.moonwell.gg</strong></span
|
||
><span class="sep">·</span
|
||
><span>Регион <strong>EU</strong></span
|
||
><span class="right">Лаунчер v1.4.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span><span>07 · Project Verge (анонс)</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon"></div>
|
||
<div class="bg-placeholder-mark">
|
||
<span>Place key art here</span
|
||
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
|
||
</div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<aside class="rail rail-wide">
|
||
<div class="rail-avatar">A</div>
|
||
<div class="rail-divider"></div>
|
||
<div class="rail-section-label">Игры</div>
|
||
<button class="game-tile" title="MoonWell · WoW — Open Beta">
|
||
<span class="game-tile-mark">MW</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell · WoW</span
|
||
><span class="game-tile-tag">Open Beta</span></span
|
||
></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="MoonWell Karts — Closed Alpha"
|
||
>
|
||
<span class="game-tile-mark">K</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">MoonWell Karts</span
|
||
><span class="game-tile-tag">Closed Alpha</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button
|
||
class="game-tile soon"
|
||
title="Tides of Elune — В разработке"
|
||
>
|
||
<span class="game-tile-mark">T</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Tides of Elune</span
|
||
><span class="game-tile-tag">В разработке</span></span
|
||
><span class="game-tile-lock">soon</span></button
|
||
><button
|
||
class="game-tile active soon"
|
||
title="Project Verge — Анонс"
|
||
>
|
||
<span class="game-tile-mark">V</span
|
||
><span class="game-tile-info"
|
||
><span class="game-tile-name">Project Verge</span
|
||
><span class="game-tile-tag">Анонс</span></span
|
||
><span class="game-tile-lock">soon</span>
|
||
</button>
|
||
<div class="rail-spacer"></div>
|
||
<div class="rail-divider"></div>
|
||
<button class="rail-icon" title="Друзья">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
|
||
<circle cx="9" cy="7" r="4"></circle>
|
||
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
|
||
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
|
||
</svg></button
|
||
><button class="rail-icon" title="Настройки">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<circle cx="12" cy="12" r="3"></circle>
|
||
<path
|
||
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
|
||
></path>
|
||
</svg>
|
||
</button>
|
||
</aside>
|
||
<header class="header">
|
||
<div class="brand">
|
||
<span class="brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="40"
|
||
height="40"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg
|
||
></span>
|
||
<div class="brand-name">
|
||
MOONWELL<small>LUNAR · LAUNCHER</small>
|
||
</div>
|
||
</div>
|
||
<div class="player">
|
||
<div class="player-avatar">Æ</div>
|
||
<div class="player-info">
|
||
<span class="player-name">Aranthel</span
|
||
><span class="player-meta">Хранитель рощи · 47 ур.</span>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="hero-copy">
|
||
<span class="hero-eyebrow"
|
||
><span class="dot"></span> Анонс</span
|
||
>
|
||
<h1 class="hero-headline">
|
||
За гранью<br /><span class="accent">привычного мира.</span>
|
||
</h1>
|
||
<p class="hero-sub">ARPG-песочница · собственный движок</p>
|
||
</div>
|
||
<aside class="news-panel">
|
||
<div class="news-tabs">
|
||
<button class="news-tab active">Новости</button
|
||
><button class="news-tab">События</button
|
||
><button class="news-tab">Патчи</button>
|
||
</div>
|
||
<div class="news-list">
|
||
<a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">29.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Открытая бета: первый сезон стартует на этой неделе
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag event">Событие</span
|
||
><span class="news-date">27.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Лунные стражи: PvP-уикенд с тройным рейтингом
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag patch">Патч</span
|
||
><span class="news-date">24.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
1.4.2 — балансировка соло-данжей и фикс Mythic+
|
||
</div></a
|
||
><a class="news-item" href="#"
|
||
><div class="news-item-head">
|
||
<span class="news-tag notice">Объявление</span
|
||
><span class="news-date">22.04</span>
|
||
</div>
|
||
<div class="news-title">
|
||
Запланированное обслуживание реалмов 24.04 03:00 UTC
|
||
</div></a
|
||
>
|
||
</div>
|
||
<div class="news-foot">
|
||
<span>moonwell.gg</span><a href="#">Все →</a>
|
||
</div>
|
||
</aside>
|
||
<div class="actions">
|
||
<div class="action-row">
|
||
<div class="realm-pill">
|
||
<div class="realm-pulse"></div>
|
||
<div>
|
||
<div class="realm-name">ELUNE'S GRACE</div>
|
||
<div class="realm-meta">Online · 1247 players · 38ms</div>
|
||
</div>
|
||
</div>
|
||
<div class="progress-block">
|
||
<div class="progress-head">
|
||
<span class="progress-state">Готов к запуску</span
|
||
><span class="progress-pct">100%</span>
|
||
</div>
|
||
<div class="progress-bar">
|
||
<div class="progress-fill" style="width: 100%"></div>
|
||
</div>
|
||
<div class="progress-meta">
|
||
<div class="left">
|
||
<span>Версия клиента 1.4.2</span
|
||
><span>Все файлы целы</span>
|
||
</div>
|
||
<div class="right">
|
||
<span>Последняя проверка: только что</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<button class="play-btn ready">
|
||
<span class="icon"
|
||
><svg viewBox="0 0 24 24" fill="currentColor">
|
||
<path d="M7 5v14l12-7z"></path></svg
|
||
></span>
|
||
Играть
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar">
|
||
<span>Версия клиента <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Realmlist <strong>login.moonwell.gg</strong></span
|
||
><span class="sep">·</span
|
||
><span>Регион <strong>EU</strong></span
|
||
><span class="right">Лаунчер v1.4.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span><span>08 · Вход</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon" style="top: 12%; right: 60%"></div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="login-stack">
|
||
<div class="login-art">
|
||
<div class="login-art-mark">
|
||
<span>Place key art here</span
|
||
><span>портрет ночного эльфа · слева</span>
|
||
</div>
|
||
<div class="login-art-quote">
|
||
«Звёздный свет проведёт тебя сквозь самые тёмные ночи — если
|
||
ты готов идти туда, куда он указывает.»<cite
|
||
>— Малфурион Ярость Бури</cite
|
||
>
|
||
</div>
|
||
</div>
|
||
<div class="login-form">
|
||
<div class="login-brand">
|
||
<span class="login-brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="28"
|
||
height="28"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg></span
|
||
><span class="login-brand-name">MOONWELL</span>
|
||
</div>
|
||
<span class="login-eyebrow">Вход</span>
|
||
<h2 class="login-h">С возвращением</h2>
|
||
<p class="login-sub">
|
||
Войди в свой аккаунт, чтобы продолжить путь.
|
||
</p>
|
||
<div class="login-tabs">
|
||
<button class="login-tab active">Вход</button
|
||
><button class="login-tab">Регистрация</button>
|
||
</div>
|
||
<div class="field">
|
||
<label class="field-label">Логин или email</label
|
||
><input
|
||
class="field-input"
|
||
placeholder="Aranthel"
|
||
value="aranthel"
|
||
/>
|
||
</div>
|
||
<div class="field">
|
||
<label class="field-label">Пароль</label
|
||
><input
|
||
class="field-input"
|
||
type="password"
|
||
value="••••••••••"
|
||
/>
|
||
</div>
|
||
<div class="login-row">
|
||
<label
|
||
><input type="checkbox" checked="" /> Запомнить
|
||
меня</label
|
||
><a href="#">Забыли пароль?</a>
|
||
</div>
|
||
<button class="login-submit">
|
||
Войти
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14M13 6l6 6-6 6"></path>
|
||
</svg>
|
||
</button>
|
||
<div class="login-foot">
|
||
moonwell · v 1.4.2 · login.moonwell.gg
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar" style="left: 0px">
|
||
<span>Версия лаунчера <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Соединение <strong>защищено TLS</strong></span
|
||
><span class="right">© 2026 MoonWell</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="stage-cell">
|
||
<div class="stage-label">
|
||
<span class="dot"></span><span>09 · Регистрация</span>
|
||
</div>
|
||
<div style="height: 12px"></div>
|
||
<div class="launcher" data-variant="forest">
|
||
<div class="bg-art"></div>
|
||
<div class="bg-stars"></div>
|
||
<div class="bg-moon" style="top: 12%; right: 60%"></div>
|
||
<div class="win-titlebar">
|
||
<div class="win-title-spacer"></div>
|
||
<div class="win-buttons">
|
||
<button class="win-btn">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14"></path>
|
||
</svg></button
|
||
><button class="win-btn close">
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M6 6l12 12M18 6L6 18"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="login-stack">
|
||
<div class="login-art">
|
||
<div class="login-art-mark">
|
||
<span>Place key art here</span
|
||
><span>портрет ночного эльфа · слева</span>
|
||
</div>
|
||
<div class="login-art-quote">
|
||
«Звёздный свет проведёт тебя сквозь самые тёмные ночи — если
|
||
ты готов идти туда, куда он указывает.»<cite
|
||
>— Малфурион Ярость Бури</cite
|
||
>
|
||
</div>
|
||
</div>
|
||
<div class="login-form">
|
||
<div class="login-brand">
|
||
<span class="login-brand-mark"
|
||
><svg
|
||
viewBox="0 0 64 64"
|
||
width="28"
|
||
height="28"
|
||
fill="none"
|
||
>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="22"
|
||
stroke="currentColor"
|
||
stroke-width="1.2"
|
||
opacity="0.4"
|
||
></circle>
|
||
<path
|
||
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
|
||
fill="currentColor"
|
||
></path>
|
||
<circle
|
||
cx="32"
|
||
cy="32"
|
||
r="30"
|
||
stroke="currentColor"
|
||
stroke-width="0.5"
|
||
opacity="0.2"
|
||
stroke-dasharray="2 4"
|
||
></circle></svg></span
|
||
><span class="login-brand-name">MOONWELL</span>
|
||
</div>
|
||
<span class="login-eyebrow">Регистрация</span>
|
||
<h2 class="login-h">Создай героя</h2>
|
||
<p class="login-sub">
|
||
Введи инвайт-код и придумай имя для лунного героя.
|
||
</p>
|
||
<div class="login-tabs">
|
||
<button class="login-tab">Вход</button
|
||
><button class="login-tab active">Регистрация</button>
|
||
</div>
|
||
<div class="field">
|
||
<label class="field-label">Инвайт-код</label
|
||
><input
|
||
class="field-input"
|
||
placeholder="ABCD-EFGH-IJKL"
|
||
style="font-family: var(--f-mono); letter-spacing: 0.14em"
|
||
value="MOON-WELL-2026"
|
||
/>
|
||
</div>
|
||
<div class="field">
|
||
<label class="field-label">Логин</label
|
||
><input class="field-input" placeholder="Moonwalker" />
|
||
</div>
|
||
<div class="field">
|
||
<label class="field-label">Email</label
|
||
><input
|
||
class="field-input"
|
||
type="email"
|
||
placeholder="player@example.com"
|
||
/>
|
||
</div>
|
||
<div class="field">
|
||
<label class="field-label">Пароль</label
|
||
><input
|
||
class="field-input"
|
||
type="password"
|
||
placeholder="Минимум 8 символов"
|
||
/>
|
||
</div>
|
||
<button class="login-submit">
|
||
Создать аккаунт
|
||
<svg
|
||
viewBox="0 0 24 24"
|
||
fill="none"
|
||
stroke="currentColor"
|
||
stroke-width="1.5"
|
||
>
|
||
<path d="M5 12h14M13 6l6 6-6 6"></path>
|
||
</svg>
|
||
</button>
|
||
<div class="login-foot">
|
||
moonwell · v 1.4.2 · login.moonwell.gg
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="statusbar" style="left: 0px">
|
||
<span>Версия лаунчера <strong>1.4.2</strong></span
|
||
><span class="sep">·</span
|
||
><span>Соединение <strong>защищено TLS</strong></span
|
||
><span class="right">© 2026 MoonWell</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script src="blob:null/c6d81bf0-ccd0-4944-bc78-753266c4f047"></script>
|
||
<script src="blob:null/9b1a5d84-adb2-485c-8938-eb58a6c40aea"></script>
|
||
<script src="blob:null/33ef3769-be3e-47ab-a3e7-b746877b7114"></script>
|
||
<script type="text/babel">
|
||
// Icon set for the launcher const LIcons = { min: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M5 12h14"/></svg>, close: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M6 6l12 12M18 6L6 18"/></svg>, play: <svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 5v14l12-7z"/></svg>, pause: <svg viewBox="0 0 24 24" fill="currentColor"><rect x="6" y="5" width="4" height="14" rx="1"/><rect x="14" y="5" width="4" height="14" rx="1"/></svg>, refresh: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M3 12a9 9 0 0 1 15.5-6.3L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-15.5 6.3L3 16"/><path d="M3 21v-5h5"/></svg>, arrow: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M5 12h14M13 6l6 6-6 6"/></svg>, cog: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/></svg>, friends: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>, news: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M4 4h13v16H4z"/><path d="M17 8h3v10a2 2 0 0 1-2 2"/><path d="M7 8h7M7 12h7M7 16h4"/></svg>, shop: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M3 7h18l-2 12H5z"/><path d="M8 7a4 4 0 0 1 8 0"/></svg>, moon: <svg viewBox="0 0 24 24" fill="currentColor"><path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/></svg>, download: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M12 3v13"/><path d="M7 11l5 5 5-5"/><path d="M5 21h14"/></svg>, warning: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M12 3l10 18H2z"/><path d="M12 10v5M12 18v.01"/></svg>, arrow_left: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M19 12H5M11 18l-6-6 6-6"/></svg>, }; function MoonMark({ size = 32 }) { return ( <svg viewBox="0 0 64 64" width={size} height={size} fill="none"> <circle cx="32" cy="32" r="22" stroke="currentColor" strokeWidth="1.2" opacity="0.4"/> <path d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z" fill="currentColor"/> <circle cx="32" cy="32" r="30" stroke="currentColor" strokeWidth="0.5" opacity="0.2" strokeDasharray="2 4"/> </svg> ); } Object.assign(window, { LIcons, MoonMark });
|
||
</script>
|
||
<script type="text/babel">
|
||
// Main launcher window const { useState } = React; const GAMES = [ { id: "wow", short: "MW", name: "MoonWell · WoW", tag: "Open Beta", subtitle: "Wrath of the Lich King · приватный сервер", live: true }, { id: "karts", short: "K", name: "MoonWell Karts", tag: "Closed Alpha", subtitle: "Аркадные гонки в нашей вселенной", live: false }, { id: "tides", short: "T", name: "Tides of Elune", tag: "В разработке", subtitle: "Карточная стратегия по мотивам сервера", live: false }, { id: "verge", short: "V", name: "Project Verge", tag: "Анонс", subtitle: "ARPG-песочница · собственный движок", live: false }, ]; function LauncherWindow({ variant = "forest", state = "ready", title = "Главный — готов играть", game = "wow" }) { const [tab, setTab] = useState("news"); const activeGame = GAMES.find((g) => g.id === game) || GAMES[0]; const news = { news: [ { tag: "patch", tagLabel: "Патч", date: "29.04", title: "Открытая бета: первый сезон стартует на этой неделе" }, { tag: "event", tagLabel: "Событие", date: "27.04", title: "Лунные стражи: PvP-уикенд с тройным рейтингом" }, { tag: "patch", tagLabel: "Патч", date: "24.04", title: "1.4.2 — балансировка соло-данжей и фикс Mythic+" }, { tag: "notice", tagLabel: "Объявление", date: "22.04", title: "Запланированное обслуживание реалмов 24.04 03:00 UTC" }, ], events: [ { tag: "event", tagLabel: "Событие", date: "01.05", title: "Канун Лунной ночи — задания и временный босс в Тельдрассиле" }, { tag: "event", tagLabel: "Событие", date: "29.04", title: "Лунные стражи: PvP-уикенд с тройным рейтингом" }, ], patch: [ { tag: "patch", tagLabel: "1.4.2", date: "24.04", title: "Балансировка соло-данжей: Heroic Stratholme" }, { tag: "patch", tagLabel: "1.4.1", date: "18.04", title: "Mythic+ — новые аффиксы недели" }, { tag: "patch", tagLabel: "1.4.0", date: "10.04", title: "Старт открытой беты Wrath" }, ], }; // Determine visible action UI per state const isReady = state === "ready"; const isDownloading = state === "downloading"; const isPaused = state === "paused"; const isVerify = state === "verify"; const isUpdate = state === "update"; const stateMeta = { ready: { label: "Готов к запуску", pct: 100 }, downloading: { label: "Загрузка", pct: 6 }, paused: { label: "Пауза", pct: 6 }, verify: { label: "Проверка файлов", pct: 38 }, update: { label: "Обновление клиента", pct: 72 }, }[state]; const playBtn = (() => { if (isReady) return <button className="play-btn ready"><span className="icon">{LIcons.play}</span> Играть</button>; if (isDownloading) return <button className="play-btn pause"><span className="icon">{LIcons.pause}</span> Пауза</button>; if (isPaused) return <button className="play-btn pause"><span className="icon">{LIcons.play}</span> Продолжить</button>; if (isVerify) return <button className="play-btn disabled" disabled><span className="icon">{LIcons.refresh}</span> Проверка…</button>; if (isUpdate) return <button className="play-btn pause"><span className="icon">{LIcons.download}</span> Обновление</button>; return null; })(); return ( <div className="stage-cell"> <div className="stage-label"><span className="dot"></span><span>{title}</span></div> <div style={{ height: 12 }} /> <div className="launcher" data-variant={variant}> {/* Background */} <div className="bg-art"></div> <div className="bg-stars"></div> <div className="bg-moon"></div> <div className="bg-placeholder-mark"> <span>Place key art here</span> <span>2560×1440 · ночные эльфы / Тельдрассил</span> </div> {/* Title bar */} <div className="win-titlebar"> <div className="win-title-spacer"></div> <div className="win-buttons"> <button className="win-btn">{LIcons.min}</button> <button className="win-btn close">{LIcons.close}</button> </div> </div> {/* Left rail with games list */} <aside className="rail rail-wide"> <div className="rail-avatar">A</div> <div className="rail-divider"></div> <div className="rail-section-label">Игры</div> {GAMES.map((g) => ( <button key={g.id} className={`game-tile ${g.id === activeGame.id ? "active" : ""} ${g.live ? "" : "soon"}`} title={`${g.name} — ${g.tag}`} > <span className="game-tile-mark">{g.short}</span> <span className="game-tile-info"> <span className="game-tile-name">{g.name}</span> <span className="game-tile-tag">{g.tag}</span> </span> {!g.live && <span className="game-tile-lock">soon</span>} </button> ))} <div className="rail-spacer"></div> <div className="rail-divider"></div> <button className="rail-icon" title="Друзья">{LIcons.friends}</button> <button className="rail-icon" title="Настройки">{LIcons.cog}</button> </aside> {/* Header — brand + player chip */} <header className="header"> <div className="brand"> <span className="brand-mark"><MoonMark size={40} /></span> <div className="brand-name"> MOONWELL <small>LUNAR · LAUNCHER</small> </div> </div> <div className="player"> <div className="player-avatar">Æ</div> <div className="player-info"> <span className="player-name">Aranthel</span> <span className="player-meta">Хранитель рощи · 47 ур.</span> </div> </div> </header> {/* Hero copy — depends on active game */} <div className="hero-copy"> <span className="hero-eyebrow"><span className="dot"></span> {activeGame.tag}</span> <h1 className="hero-headline"> {activeGame.id === "wow" && <>Свет колодца<br/><span className="accent">зовёт тебя домой.</span></>} {activeGame.id === "karts" && <>Гонки под<br/><span className="accent">лунным светом.</span></>} {activeGame.id === "tides" && <>Колода судьбы<br/><span className="accent">в твоих руках.</span></>} {activeGame.id === "verge" && <>За гранью<br/><span className="accent">привычного мира.</span></>} </h1> <p className="hero-sub">{activeGame.subtitle}</p> </div> {/* News panel */} <aside className="news-panel"> <div className="news-tabs"> <button className={`news-tab ${tab === 'news' ? 'active' : ''}`} onClick={() => setTab('news')}>Новости</button> <button className={`news-tab ${tab === 'events' ? 'active' : ''}`} onClick={() => setTab('events')}>События</button> <button className={`news-tab ${tab === 'patch' ? 'active' : ''}`} onClick={() => setTab('patch')}>Патчи</button> </div> <div className="news-list"> {news[tab].map((n, i) => ( <a key={i} className="news-item" href="#"> <div className="news-item-head"> <span className={`news-tag ${n.tag}`}>{n.tagLabel}</span> <span className="news-date">{n.date}</span> </div> <div className="news-title">{n.title}</div> </a> ))} </div> <div className="news-foot"> <span>moonwell.gg</span> <a href="#">Все →</a> </div> </aside> {/* Actions bar */} <div className="actions"> <div className="action-row"> <div className="realm-pill"> <div className="realm-pulse"></div> <div> <div className="realm-name">ELUNE'S GRACE</div> <div className="realm-meta">Online · 1247 players · 38ms</div> </div> </div> <div className="progress-block"> <div className="progress-head"> <span className="progress-state">{stateMeta.label}</span> <span className="progress-pct">{stateMeta.pct}%</span> </div> <div className="progress-bar"> <div className="progress-fill" style={{ width: stateMeta.pct + '%' }}></div> </div> <div className="progress-meta"> <div className="left"> {isDownloading && <><span>3.22 / 48.80 GB</span><span>4.95 MB/s</span></>} {isPaused && <><span>3.22 / 48.80 GB</span><span>—</span></>} {isVerify && <><span>18 432 / 48 121 файлов</span><span>SHA-256</span></>} {isUpdate && <><span>1.4.1 → 1.4.2</span><span>180 MB / 250 MB</span></>} {isReady && <><span>Версия клиента 1.4.2</span><span>Все файлы целы</span></>} </div> <div className="right"> {isDownloading && <span>Осталось ~2:37:11</span>} {isPaused && <span>Возобнови, чтобы продолжить</span>} {isVerify && <span>~1 мин</span>} {isUpdate && <span>~30 сек</span>} {isReady && <span>Последняя проверка: только что</span>} </div> </div> </div> {playBtn} </div> </div> {/* Status bar */} <div className="statusbar"> <span>Версия клиента <strong>1.4.2</strong></span> <span className="sep">·</span> <span>Realmlist <strong>login.moonwell.gg</strong></span> <span className="sep">·</span> <span>Регион <strong>EU</strong></span> <span className="right">Лаунчер v1.4.2</span> </div> </div> </div> ); } Object.assign(window, { LauncherWindow });
|
||
</script>
|
||
<script type="text/babel">
|
||
// Login / register screen overlay function LoginWindow({ variant = "temple", mode = "login", title = "Логин" }) { const [tab, setTab] = React.useState(mode); return ( <div className="stage-cell"> <div className="stage-label"><span className="dot"></span><span>{title}</span></div> <div style={{ height: 12 }} /> <div className="launcher" data-variant={variant}> <div className="bg-art"></div> <div className="bg-stars"></div> <div className="bg-moon" style={{ top: '12%', right: '60%' }}></div> <div className="win-titlebar"> <div className="win-title-spacer"></div> <div className="win-buttons"> <button className="win-btn">{LIcons.min}</button> <button className="win-btn close">{LIcons.close}</button> </div> </div> <div className="login-stack"> <div className="login-art"> <div className="login-art-mark"> <span>Place key art here</span> <span>портрет ночного эльфа · слева</span> </div> <div className="login-art-quote"> «Звёздный свет проведёт тебя сквозь самые тёмные ночи — если ты готов идти туда, куда он указывает.» <cite>— Малфурион Ярость Бури</cite> </div> </div> <div className="login-form"> <div className="login-brand"> <span className="login-brand-mark"><MoonMark size={28} /></span> <span className="login-brand-name">MOONWELL</span> </div> <span className="login-eyebrow">{tab === "login" ? "Вход" : "Регистрация"}</span> <h2 className="login-h">{tab === "login" ? "С возвращением" : "Создай героя"}</h2> <p className="login-sub"> {tab === "login" ? "Войди в свой аккаунт, чтобы продолжить путь." : "Введи инвайт-код и придумай имя для лунного героя."} </p> <div className="login-tabs"> <button className={`login-tab ${tab === "login" ? "active" : ""}`} onClick={() => setTab("login")}>Вход</button> <button className={`login-tab ${tab === "register" ? "active" : ""}`} onClick={() => setTab("register")}>Регистрация</button> </div> {tab === "login" ? ( <> <div className="field"> <label className="field-label">Логин или email</label> <input className="field-input" placeholder="Aranthel" defaultValue="aranthel" /> </div> <div className="field"> <label className="field-label">Пароль</label> <input className="field-input" type="password" defaultValue="••••••••••" /> </div> <div className="login-row"> <label><input type="checkbox" defaultChecked /> Запомнить меня</label> <a href="#">Забыли пароль?</a> </div> <button className="login-submit">Войти {LIcons.arrow}</button> </> ) : ( <> <div className="field"> <label className="field-label">Инвайт-код</label> <input className="field-input" placeholder="ABCD-EFGH-IJKL" defaultValue="MOON-WELL-2026" style={{ fontFamily: "var(--f-mono)", letterSpacing: "0.14em" }} /> </div> <div className="field"> <label className="field-label">Логин</label> <input className="field-input" placeholder="Moonwalker" /> </div> <div className="field"> <label className="field-label">Email</label> <input className="field-input" type="email" placeholder="player@example.com" /> </div> <div className="field"> <label className="field-label">Пароль</label> <input className="field-input" type="password" placeholder="Минимум 8 символов" /> </div> <button className="login-submit">Создать аккаунт {LIcons.arrow}</button> </> )} <div className="login-foot">moonwell · v 1.4.2 · login.moonwell.gg</div> </div> </div> <div className="statusbar" style={{ left: 0 }}> <span>Версия лаунчера <strong>1.4.2</strong></span> <span className="sep">·</span> <span>Соединение <strong>защищено TLS</strong></span> <span className="right">© 2026 MoonWell</span> </div> </div> </div> ); } Object.assign(window, { LoginWindow });
|
||
</script>
|
||
<script type="text/babel">
|
||
// App: presents all states side-by-side as a design canvas const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "variant": "forest" }/*EDITMODE-END*/; function App() { const [variant, setVariant] = React.useState(TWEAK_DEFAULTS.variant); const [editMode, setEditMode] = React.useState(false); React.useEffect(() => { const onMsg = (e) => { if (!e.data || typeof e.data !== "object") return; if (e.data.type === "__activate_edit_mode") setEditMode(true); if (e.data.type === "__deactivate_edit_mode") setEditMode(false); }; window.addEventListener("message", onMsg); window.parent.postMessage({ type: "__edit_mode_available" }, "*"); return () => window.removeEventListener("message", onMsg); }, []); const setKey = (k, v) => { if (k === "variant") setVariant(v); window.parent.postMessage({ type: "__edit_mode_set_keys", edits: { [k]: v } }, "*"); }; return ( <div className="stage"> <div style={{ textAlign: "center", padding: "20px 0 10px" }}> <div style={{ fontFamily: "var(--f-display)", fontSize: 28, letterSpacing: "0.24em", color: "var(--ivory)" }}> MOONWELL · LAUNCHER </div> <div style={{ fontFamily: "var(--f-serif)", fontStyle: "italic", color: "var(--text-mute)", marginTop: 6 }}> Главный экран, состояния загрузки, экран входа — всё в одном холсте. </div> </div> <div className="stage-grid"> <LauncherWindow variant={variant} state="ready" game="wow" title="01 · Главная — WoW · готов играть" /> <LauncherWindow variant={variant} state="downloading" game="wow" title="02 · Скачивание клиента" /> <LauncherWindow variant={variant} state="paused" game="wow" title="03 · Пауза" /> <LauncherWindow variant={variant} state="verify" game="wow" title="04 · Проверка файлов" /> <LauncherWindow variant={variant} state="update" game="wow" title="05 · Обновление" /> <LauncherWindow variant={variant} state="ready" game="karts" title="06 · MoonWell Karts (closed alpha)" /> <LauncherWindow variant={variant} state="ready" game="verge" title="07 · Project Verge (анонс)" /> <LoginWindow variant={variant} mode="login" title="08 · Вход" /> <LoginWindow variant={variant} mode="register" title="09 · Регистрация" /> </div> {editMode && ( <div className="tweaks-host"> <h4>Tweaks</h4> <div className="tweaks-row"> <label>Настроение</label> <div className="tweaks-seg"> <button className={variant === "forest" ? "active" : ""} onClick={() => setKey("variant", "forest")} > Лес </button> <button className={variant === "temple" ? "active" : ""} onClick={() => setKey("variant", "temple")} > Храм </button> </div> </div> <div style={{ fontFamily: "var(--f-mono)", fontSize: 10, color: "var(--text-mute)", letterSpacing: "0.1em", marginTop: 4 }}> переключает все окна сразу </div> </div> )} </div> ); } const root = ReactDOM.createRoot(document.getElementById("root")); root.render(<App />);
|
||
</script>
|
||
</body>
|
||
</html>
|