Merge branch 'main' into account-banning

This commit is contained in:
jvyden 2022-01-09 00:18:12 -05:00 committed by GitHub
commit 7c238f8d7e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 482 additions and 234 deletions

View file

@ -41,10 +41,19 @@ namespace LBPUnion.ProjectLighthouse.Controllers
{
loginData = null;
}
if (loginData == null) return this.BadRequest();
if (loginData == null)
{
Logger.Log("loginData was null, rejecting login", LoggerLevelLogin.Instance);
return this.BadRequest();
}
IPAddress? remoteIpAddress = this.HttpContext.Connection.RemoteIpAddress;
if (remoteIpAddress == null) return this.StatusCode(403, ""); // 403 probably isnt the best status code for this, but whatever
if (remoteIpAddress == null)
{
Logger.Log("unable to determine ip, rejecting login", LoggerLevelLogin.Instance);
return this.StatusCode(403, ""); // 403 probably isnt the best status code for this, but whatever
}
string ipAddress = remoteIpAddress.ToString();
@ -56,11 +65,20 @@ namespace LBPUnion.ProjectLighthouse.Controllers
if (token == null) // If we cant find an existing token, try to generate a new one
{
token = await this.database.AuthenticateUser(loginData, ipAddress, titleId);
if (token == null) return this.StatusCode(403, ""); // If not, then 403.
if (token == null)
{
Logger.Log("unable to find/generate a token, rejecting login", LoggerLevelLogin.Instance);
return this.StatusCode(403, ""); // If not, then 403.
}
}
User? user = await this.database.UserFromGameToken(token, true);
if (user == null || user.Banned) return this.StatusCode(403, "");
if (user == null || user.Banned)
{
Logger.Log("unable to find a user from a token, rejecting login", LoggerLevelLogin.Instance);
return this.StatusCode(403, "");
}
if (ServerSettings.Instance.UseExternalAuth)
{
@ -75,6 +93,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers
DeniedAuthenticationHelper.AddAttempt(ipAddressAndName);
await this.database.SaveChangesAsync();
Logger.Log("too many denied logins, rejecting login", LoggerLevelLogin.Instance);
return this.StatusCode(403, "");
}
}
@ -104,7 +123,11 @@ namespace LBPUnion.ProjectLighthouse.Controllers
await this.database.SaveChangesAsync();
if (!token.Approved) return this.StatusCode(403, "");
if (!token.Approved)
{
Logger.Log("token unapproved, rejecting login", LoggerLevelLogin.Instance);
return this.StatusCode(403, "");
}
Logger.Log($"Successfully logged in user {user.Username} as {token.GameVersion} client ({titleId})", LoggerLevelLogin.Instance);
// After this point we are now considering this session as logged in.

View file

@ -0,0 +1,15 @@
using System.Text.RegularExpressions;
using Microsoft.AspNetCore.Http;
using Microsoft.Net.Http.Headers;
namespace LBPUnion.ProjectLighthouse.Helpers.Extensions
{
// yoinked and adapted from https://stackoverflow.com/a/68641796
public static class RequestExtensions
{
private static readonly Regex mobileCheck = new
("Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);
public static bool IsMobile(this HttpRequest request) => mobileCheck.IsMatch(request.Headers[HeaderNames.UserAgent].ToString());
}
}

View file

@ -5,5 +5,7 @@ namespace LBPUnion.ProjectLighthouse.Helpers
public static class TimestampHelper
{
public static long Timestamp => (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
public static long TimestampMillis => (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds;
}
}

View file

@ -1,4 +1,5 @@
@using LBPUnion.ProjectLighthouse.Helpers
@using LBPUnion.ProjectLighthouse.Helpers.Extensions
@using LBPUnion.ProjectLighthouse.Types
@using LBPUnion.ProjectLighthouse.Types.Settings
@model LBPUnion.ProjectLighthouse.Pages.Layouts.BaseLayout
@ -26,6 +27,9 @@
}
Model.NavigationItemsRight.Add(new PageNavigationItem("Log out", "/logout", "user alternate slash")); // should always be last
}
Model.IsMobile = Model.Request.IsMobile();
long timeStarted = TimestampHelper.TimestampMillis;
}
<!DOCTYPE html>
@ -48,10 +52,20 @@
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#008cff">
<meta name="msapplication-TileColor" content="#008cff">
@* Embed Stuff *@
<meta name="theme-color" data-react-helmet="true" content="#008cff">
<meta content="Project Lighthouse - @Model.Title" property="og:title">
@if (!string.IsNullOrEmpty(Model.Description))
{
<meta content="@Model.Description" property="og:description">
}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@* Google Analytics *@
@if (ServerSettings.Instance.GoogleAnalyticsEnabled)
{
<!-- Global site tag (gtag.js) - Google Analytics -->
@ -81,14 +95,21 @@
<header class="lighthouse-header">
<div class="ui attached menu">
<div class="ui container">
@{
string mobileIconStyle = Model.IsMobile ? "margin-right: 0;" : "";
}
@foreach (PageNavigationItem navigationItem in Model!.NavigationItems)
{
<a class="item" href="@navigationItem.Url">
@if (navigationItem.Icon != null)
{
<i class="@navigationItem.Icon icon"></i>
<i class="@navigationItem.Icon icon" style="@mobileIconStyle"></i>
}
@if (!Model.IsMobile)
{
@navigationItem.Name
}
@navigationItem.Name
</a>
}
<div class="right menu">
@ -97,9 +118,13 @@
<a class="item" href="@navigationItem.Url">
@if (navigationItem.Icon != null)
{
<i class="@navigationItem.Icon icon"></i>
<i class="@navigationItem.Icon icon" style="@mobileIconStyle"></i>
}
@if (!Model.IsMobile)
{
@navigationItem.Name
}
@navigationItem.Name
</a>
}
</div>
@ -143,6 +168,46 @@
}
</div>
</div>
@if (ServerStatics.IsDebug)
{
<div class="ui red attached inverted segment">
<div class="ui container">
<button type="button" class="ui inverted button collapsible">
<b>Show/Hide Debug Info</b>
</button>
<div style="display:none" id="lighthouse-debug-info">
<br>
<p>Model.IsMobile: @Model.IsMobile</p>
<p>Model.Title: @Model.Title</p>
<p>Model.Description: @Model.Description</p>
<p>Model.User.UserId: @(Model.User?.UserId.ToString() ?? "(not logged in)")</p>
<p>Render time: ~@(TimestampHelper.TimestampMillis - timeStarted)ms</p>
</div>
</div>
</div>
<script>
const collapsible = document.getElementsByClassName("collapsible");
for (let i = 0; i < collapsible.length; i++)
{
collapsible[i].addEventListener("click", function()
{
this.classList.toggle("active");
const content = this.nextElementSibling;
if (content.style.display === "block")
{
content.style.display = "none";
}
else
{
content.style.display = "block";
}
});
}
</script>
}
</footer>
</div>
</body>

View file

@ -7,6 +7,13 @@ namespace LBPUnion.ProjectLighthouse.Pages.Layouts
{
public class BaseLayout : PageModel
{
public BaseLayout(Database database)
{
this.Database = database;
}
public bool IsMobile;
public readonly Database Database;
public readonly List<PageNavigationItem> NavigationItems = new()
@ -21,14 +28,10 @@ namespace LBPUnion.ProjectLighthouse.Pages.Layouts
public bool ShowTitleInPage = true;
public string Title = string.Empty;
public string Description = string.Empty;
private User? user;
public BaseLayout(Database database)
{
this.Database = database;
}
public new User? User {
get {
if (this.user != null) return this.user;

View file

@ -3,8 +3,10 @@
@{
Layout = "Layouts/BaseLayout";
Model.Title = Model.Slot.Name;
Model.ShowTitleInPage = false;
Model.Title = Model.Slot.Name;
Model.Description = Model.Slot.Description;
}
@await Html.PartialAsync("Partials/SlotCardPartial", Model.Slot, new ViewDataDictionary(ViewData)

View file

@ -8,8 +8,10 @@
@{
Layout = "Layouts/BaseLayout";
Model.Title = Model.ProfileUser!.Username + "'s user page";
Model.ShowTitleInPage = false;
Model.Title = Model.ProfileUser!.Username + "'s user page";
Model.Description = Model.ProfileUser!.Biography;
}
@if (Model.ProfileUser.Banned)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Before After
Before After

View file

@ -3,7 +3,7 @@
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#da532c</TileColor>
<TileColor>#008cff</TileColor>
</tile>
</msapplication>
</browserconfig>

View file

@ -16,3 +16,6 @@ div.statsUnderTitle > span {
margin-right: 5px;
}
#lighthouse-debug-info > p {
margin-bottom: 1px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Before After
Before After

View file

@ -2,222 +2,350 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="602.000000pt" height="602.000000pt" viewBox="0 0 602.000000 602.000000"
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,602.000000) scale(0.100000,-0.100000)"
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M2730 5987 c-3 -3 -36 -8 -74 -11 -38 -3 -78 -8 -90 -11 -11 -2 -37
-7 -56 -9 -19 -3 -59 -10 -88 -17 -30 -6 -59 -12 -65 -13 -19 -4 -98 -25 -157
-43 -81 -23 -297 -102 -358 -129 -29 -13 -55 -24 -57 -24 -23 0 -388 -198
-405 -220 -3 -3 -23 -17 -45 -30 -22 -13 -44 -28 -50 -32 -5 -4 -44 -33 -85
-65 -419 -316 -809 -823 -995 -1292 -20 -52 -38 -99 -39 -105 -1 -6 -17 -56
-35 -111 -29 -89 -67 -235 -76 -290 -2 -11 -11 -63 -19 -115 -24 -148 -31
-248 -31 -480 0 -250 9 -358 42 -520 8 -41 17 -86 19 -100 3 -14 9 -38 14 -55
5 -16 25 -83 44 -147 19 -65 40 -126 46 -138 6 -11 8 -20 6 -20 -3 0 9 -33 25
-72 17 -40 36 -86 42 -103 7 -16 31 -68 54 -116 24 -48 43 -92 43 -98 0 -6 5
-11 10 -11 6 0 10 -5 10 -11 0 -14 130 -233 142 -237 4 -2 8 -8 8 -13 0 -16
175 -253 257 -346 210 -242 498 -461 813 -619 324 -163 816 -314 1135 -350 39
-5 162 -8 275 -9 211 0 311 7 448 30 17 3 44 7 60 9 46 7 203 46 277 68 39 12
75 22 80 24 33 6 248 79 349 118 245 95 519 254 704 410 210 176 279 250 514
550 13 16 26 38 30 48 4 10 12 18 18 18 5 0 10 5 10 11 0 5 18 37 40 69 22 32
40 61 40 64 0 3 13 24 29 48 39 58 152 276 196 379 20 46 40 93 45 104 42 94
128 383 144 485 3 19 8 46 11 60 4 25 8 49 22 165 4 33 7 159 8 280 0 242 -5
301 -41 505 -8 47 -17 99 -20 115 -3 17 -7 37 -10 45 -3 8 -8 26 -10 40 -15
83 -92 333 -134 435 -7 17 -16 39 -21 50 -24 60 -127 269 -161 330 -187 325
-447 639 -683 825 -271 214 -594 392 -913 504 -86 31 -316 88 -417 105 -79 13
-109 18 -145 25 -32 5 -101 15 -165 21 -27 3 -68 8 -90 11 -54 7 -470 16 -475
11z m513 -101 c15 -2 60 -7 100 -11 40 -4 81 -9 92 -11 11 -2 40 -6 65 -9 104
-12 314 -54 395 -79 6 -1 30 -8 55 -15 157 -43 424 -161 589 -261 115 -69 285
-190 344 -243 20 -19 37 -33 37 -31 0 6 141 -129 205 -196 194 -203 408 -502
521 -730 30 -60 103 -232 108 -255 1 -5 19 -62 40 -125 21 -63 39 -122 41
-130 2 -8 11 -44 20 -80 9 -36 19 -76 21 -90 3 -14 9 -50 14 -80 26 -148 33
-263 33 -570 0 -146 -2 -299 -6 -340 -11 -118 -19 -185 -23 -191 -1 -3 -6 -28
-10 -55 -3 -27 -8 -52 -10 -55 -2 -3 -6 -20 -9 -37 -7 -43 -85 -279 -123 -372
-39 -97 -104 -225 -162 -320 -51 -83 -142 -222 -150 -230 -3 -3 -51 -66 -107
-140 -166 -221 -300 -361 -503 -525 -87 -70 -276 -196 -360 -241 -30 -16 -56
-32 -58 -36 -2 -5 -8 -8 -12 -8 -5 0 -42 -15 -82 -34 -219 -103 -597 -217
-798 -241 -25 -3 -58 -8 -75 -10 -171 -24 -628 -24 -824 1 -46 5 -233 39 -266
48 -21 6 -86 23 -120 32 -29 8 -38 10 -55 16 -8 3 -51 18 -95 33 -44 15 -87
29 -95 33 -8 3 -17 6 -20 7 -3 1 -18 7 -35 14 -16 8 -39 17 -50 21 -33 13
-250 115 -255 120 -3 3 -30 18 -60 34 -81 42 -322 204 -420 282 -168 134 -337
316 -528 569 -4 6 -23 35 -42 65 -19 30 -37 57 -40 60 -28 25 -232 428 -224
442 3 4 2 8 -3 8 -4 0 -13 15 -19 33 -6 17 -32 93 -57 168 -42 123 -90 291
-102 358 -3 14 -7 35 -9 46 -2 11 -7 40 -11 65 -3 25 -9 59 -11 75 -17 104
-26 555 -11 555 4 0 5 4 2 10 -3 5 -1 45 4 87 6 43 13 101 16 128 4 28 8 58
11 67 5 16 10 41 19 88 2 14 12 52 21 85 8 33 17 67 19 75 8 36 96 292 125
365 39 98 141 309 152 313 4 2 8 8 8 13 0 21 163 263 247 368 200 249 403 437
663 612 123 83 153 101 280 165 130 65 195 94 212 94 8 0 18 4 23 9 12 11 278
97 325 105 19 3 45 8 58 11 53 12 68 15 92 20 40 7 94 15 131 20 19 2 52 6 74
9 87 11 133 16 210 22 44 3 81 7 83 9 5 4 350 -4 385 -9z"/>
<path d="M2839 5856 c-2 -2 -40 -6 -84 -10 -44 -4 -93 -9 -110 -11 -37 -6 -85
-12 -150 -20 -66 -8 -169 -26 -237 -41 -15 -3 -30 -5 -33 -5 -2 0 -23 -6 -45
-14 -22 -8 -41 -14 -43 -13 -1 0 -29 -7 -62 -17 -33 -10 -64 -19 -70 -21 -29
-6 -248 -100 -332 -143 -127 -63 -142 -72 -180 -98 -17 -13 -34 -23 -37 -23
-8 0 -131 -84 -134 -92 -2 -5 -10 -8 -17 -8 -7 0 -15 -3 -17 -7 -1 -5 -32 -30
-68 -58 -36 -27 -81 -63 -100 -80 -46 -39 -265 -259 -309 -310 -88 -101 -291
-391 -291 -415 0 -6 -4 -10 -9 -10 -5 0 -11 -8 -14 -17 -3 -10 -25 -52 -48
-93 -82 -148 -222 -511 -245 -636 -3 -21 -10 -46 -14 -54 -5 -8 -11 -32 -14
-54 -4 -21 -8 -42 -11 -46 -5 -8 -13 -54 -20 -120 -2 -19 -7 -51 -10 -70 -25
-161 -25 -590 0 -690 2 -8 6 -42 10 -75 10 -90 69 -331 115 -465 14 -42 58
-163 71 -195 7 -16 13 -35 14 -40 5 -23 112 -235 153 -305 100 -168 254 -385
347 -486 66 -73 166 -172 226 -224 41 -36 76 -67 79 -70 18 -18 180 -137 255
-187 100 -67 254 -153 360 -203 85 -39 289 -120 304 -120 6 0 19 -4 29 -10 32
-18 238 -74 352 -95 153 -29 138 -27 275 -41 150 -15 640 -8 697 11 7 2 36 6
63 9 103 12 302 57 444 100 119 37 328 118 379 147 18 10 38 19 43 19 32 0
377 227 499 328 68 57 261 250 315 315 22 27 45 54 50 60 6 7 39 50 73 97 35
47 70 94 79 104 32 40 183 266 183 275 0 5 6 16 14 24 12 12 123 235 146 292
4 11 15 38 24 60 29 73 75 229 100 340 24 108 28 132 43 265 9 82 9 643 -1
730 -4 36 -11 91 -17 123 -6 33 -12 73 -14 90 -2 18 -8 48 -13 67 -5 19 -10
40 -11 45 -11 54 -30 133 -51 210 -7 29 -68 198 -93 260 -31 77 -149 300 -207
390 -63 98 -224 316 -284 384 -132 149 -298 300 -476 430 -75 55 -334 215
-349 216 -3 1 -17 7 -31 15 -14 8 -29 15 -35 16 -5 2 -53 22 -105 44 -52 23
-99 43 -105 45 -5 1 -17 5 -25 8 -49 19 -243 75 -289 83 -14 3 -42 9 -61 14
-19 4 -69 14 -110 20 -41 6 -88 14 -105 17 -16 2 -46 6 -65 8 -19 2 -60 6 -90
9 -110 13 -120 13 -125 6 -2 -4 2 -38 10 -76 9 -38 24 -111 35 -162 11 -52 22
-97 24 -100 2 -4 7 -24 10 -44 3 -20 15 -77 25 -125 11 -48 22 -99 25 -113 3
-14 7 -34 10 -45 12 -51 25 -112 30 -135 14 -70 55 -257 60 -270 3 -8 7 -31
10 -51 3 -20 8 -42 10 -50 3 -8 8 -26 11 -41 6 -35 9 -50 35 -168 12 -52 28
-126 36 -165 8 -38 19 -86 24 -105 5 -19 12 -53 16 -75 3 -22 8 -43 9 -46 2
-3 13 -50 25 -105 12 -54 23 -108 26 -119 2 -11 7 -33 9 -50 3 -16 8 -38 11
-47 3 -9 7 -25 9 -35 2 -10 13 -63 25 -118 12 -55 23 -111 26 -125 3 -14 9
-41 14 -60 6 -19 10 -46 10 -59 0 -23 0 -23 -22 5 -38 49 -41 52 -108 119 -79
79 -126 120 -162 142 -16 10 -28 21 -28 25 0 4 -5 8 -11 8 -21 0 -68 40 -67
58 0 9 -2 40 -6 67 -3 28 -8 73 -11 100 -3 28 -7 66 -10 85 -2 19 -7 60 -10
90 -3 30 -8 66 -10 80 -2 14 -7 57 -11 95 -3 39 -8 79 -10 90 -3 11 -7 43 -9
70 -8 76 -16 147 -21 177 -5 32 -12 97 -19 184 -3 33 -8 71 -10 85 -3 13 -8
47 -10 74 -7 69 -14 128 -20 167 -2 18 -7 58 -10 88 -5 55 -9 83 -19 173 -6
51 -12 101 -21 187 -3 30 -8 69 -11 85 -2 17 -7 53 -10 80 -2 28 -7 73 -10
100 -3 28 -6 56 -6 63 -1 6 -6 12 -11 12 -9 0 -5 -113 8 -225 6 -46 14 -136
20 -215 2 -30 6 -73 9 -95 3 -22 8 -71 11 -110 3 -38 8 -89 11 -112 2 -23 7
-68 10 -100 14 -162 25 -269 30 -318 5 -42 10 -91 17 -185 5 -50 10 -105 23
-217 2 -23 7 -68 9 -100 3 -32 7 -76 9 -98 3 -22 8 -71 11 -110 4 -38 9 -86
11 -105 2 -19 7 -66 10 -103 6 -69 6 -69 -18 -61 -12 4 -47 12 -77 18 -42 9
-55 16 -57 31 -4 27 -16 245 -29 535 -3 74 -7 173 -10 220 -2 47 -7 141 -10
210 -6 142 -12 261 -20 435 -4 66 -8 163 -10 215 -11 286 -16 374 -20 379 -3
2 -6 -13 -6 -35 -1 -21 -3 -59 -4 -84 -2 -25 -6 -115 -9 -200 -9 -193 -15
-321 -31 -645 -2 -44 -6 -136 -9 -205 -4 -69 -8 -168 -11 -220 -3 -52 -7 -135
-10 -185 -2 -49 -7 -148 -11 -220 -3 -71 -7 -149 -8 -173 -3 -51 -9 -58 -61
-65 -22 -3 -53 -10 -68 -16 -26 -10 -31 -6 -29 19 3 33 15 164 18 195 6 64 13
135 19 200 5 58 8 92 20 200 3 28 7 75 10 105 3 30 7 75 10 100 8 74 14 141
20 210 3 36 7 79 9 95 2 17 7 68 11 115 4 47 8 92 10 100 2 8 6 53 10 99 4 47
8 92 10 100 1 9 6 52 10 96 16 186 23 259 30 315 3 19 7 70 9 113 3 43 8 82
11 87 3 6 -1 10 -9 10 -10 0 -16 -9 -17 -22 0 -13 -2 -36 -5 -53 -4 -30 -12
-107 -19 -175 -2 -19 -6 -51 -9 -70 -3 -19 -8 -60 -11 -90 -13 -119 -16 -146
-20 -170 -2 -14 -7 -52 -10 -85 -2 -33 -7 -71 -10 -85 -2 -14 -7 -48 -9 -75
-7 -77 -16 -150 -32 -278 -8 -65 -17 -139 -19 -165 -6 -63 -13 -126 -20 -187
-3 -27 -8 -68 -11 -90 -2 -22 -7 -56 -9 -75 -3 -19 -7 -60 -10 -90 -3 -30 -7
-71 -10 -90 -3 -19 -7 -55 -10 -80 -3 -25 -7 -61 -10 -80 -5 -45 -14 -123 -20
-180 -3 -25 -9 -46 -13 -48 -53 -17 -290 -223 -344 -298 -31 -44 -56 -59 -43
-26 4 9 9 28 11 42 8 47 16 82 44 210 11 52 22 104 24 115 2 11 23 106 46 210
23 105 44 199 46 210 2 11 6 30 8 43 3 12 7 25 9 30 3 4 8 28 11 55 4 26 11
60 17 75 6 15 10 28 9 30 -1 1 1 15 4 30 12 51 17 77 22 102 3 14 14 63 24
110 11 47 22 96 24 110 3 14 7 34 10 45 5 19 45 202 51 235 2 8 4 15 5 15 1 0
3 11 5 25 2 14 16 77 30 140 15 63 29 129 31 145 3 17 12 55 19 85 8 31 17 73
21 94 3 22 9 49 14 60 4 12 8 24 8 29 1 6 15 78 27 132 3 18 18 90 21 107 3
16 -8 32 -17 24z m-139 -135 c0 -8 -14 -83 -24 -126 -2 -11 -12 -56 -21 -100
-9 -44 -18 -87 -20 -95 -2 -8 -9 -37 -15 -65 -6 -27 -14 -61 -16 -75 -3 -14
-11 -53 -19 -88 -8 -34 -17 -77 -20 -95 -4 -17 -10 -50 -16 -72 -9 -39 -14
-61 -23 -107 -3 -13 -7 -32 -10 -43 -2 -11 -14 -63 -25 -115 -11 -52 -27 -124
-35 -160 -30 -136 -65 -296 -69 -320 -3 -14 -10 -43 -15 -65 -6 -22 -13 -53
-16 -70 -3 -16 -7 -39 -10 -50 -2 -11 -14 -65 -26 -120 -12 -55 -23 -104 -25
-110 -2 -11 -18 -86 -20 -95 -1 -3 -7 -31 -15 -62 l-13 -57 -51 4 c-28 2 -62
6 -76 9 -14 2 -47 7 -75 10 -27 3 -61 8 -75 11 -27 5 -81 13 -145 21 -22 3
-47 7 -55 9 -8 3 -32 7 -54 11 -21 3 -48 8 -60 10 -26 5 -133 25 -166 30 -14
3 -34 8 -45 11 -11 4 -29 7 -40 9 -158 20 -533 130 -692 204 -24 11 -45 20
-48 20 -2 0 -34 13 -70 30 -36 17 -70 30 -75 30 -5 0 -18 10 -30 22 -25 27
-24 31 51 183 62 126 70 140 106 192 13 17 23 34 23 37 0 15 149 219 238 326
322 387 781 695 1227 821 39 11 79 22 90 24 11 2 62 13 113 25 51 11 97 18
102 15 5 -3 11 -1 15 5 4 6 9 9 13 7 4 -2 43 2 87 8 98 16 145 18 145 6z m781
-11 c30 -5 70 -12 89 -15 19 -3 46 -7 60 -10 14 -3 41 -7 60 -10 195 -31 532
-159 730 -278 373 -223 660 -502 901 -875 37 -59 72 -112 76 -118 25 -32 171
-321 178 -349 1 -5 5 -17 8 -25 28 -67 28 -66 -16 -81 -23 -8 -44 -14 -47 -15
-3 0 -16 -5 -30 -11 -106 -44 -489 -165 -568 -179 -15 -3 -46 -9 -70 -15 -23
-5 -59 -12 -78 -15 -35 -5 -47 -7 -104 -18 -14 -3 -43 -8 -65 -11 -22 -3 -53
-7 -70 -10 -55 -9 -101 -14 -161 -20 -32 -4 -77 -9 -99 -12 -22 -3 -56 -6 -75
-8 -42 -4 -101 -11 -190 -21 -36 -4 -94 -8 -129 -8 l-64 -1 -14 65 c-7 36 -15
75 -17 86 -2 12 -16 76 -30 141 -15 66 -28 128 -30 139 -3 10 -10 42 -16 69
-6 28 -13 61 -15 75 -2 14 -6 34 -9 45 -13 57 -95 437 -102 475 -3 14 -16 77
-30 140 -14 63 -27 124 -29 135 -3 20 -33 161 -42 200 -2 11 -11 49 -18 85 -8
36 -17 76 -19 90 -3 14 -18 81 -32 150 -14 69 -28 134 -31 145 -16 73 -16 75
15 75 15 0 53 -4 83 -10z m-261 -2103 c59 -15 83 -24 144 -55 153 -80 330
-323 362 -497 23 -127 -9 -284 -64 -314 -17 -9 -72 -7 -142 5 -28 4 -51 -2
-118 -36 -135 -68 -250 -198 -267 -302 -5 -28 -13 -87 -20 -130 -2 -18 -7 -58
-10 -88 -3 -30 -8 -71 -10 -90 -8 -52 -9 -238 -1 -290 10 -77 19 -119 41 -210
9 -36 19 -76 21 -89 3 -13 6 -28 7 -34 1 -7 -32 -12 -93 -13 -52 -2 -141 -4
-197 -5 -57 -2 -105 0 -108 3 -3 3 6 57 20 119 14 63 28 124 30 136 19 84 97
310 156 456 82 198 94 267 59 344 -28 64 -68 84 -155 79 -103 -7 -355 -97
-355 -126 0 -14 -57 -31 -83 -24 -65 16 -133 161 -155 329 -35 265 98 536 341
692 109 71 256 129 352 140 28 3 52 7 54 9 4 4 170 -4 191 -9z m-971 -1072
c109 -139 140 -184 135 -199 -10 -31 -157 -248 -215 -319 -131 -158 -298 -334
-441 -463 l-56 -51 -103 3 c-57 2 -193 5 -302 8 -175 4 -222 8 -206 19 59 39
451 420 584 567 103 115 185 219 235 300 53 85 132 240 163 320 l17 44 24 -24
c13 -14 87 -106 165 -205z m1670 193 c24 -64 151 -314 171 -336 11 -11 20 -25
20 -30 0 -4 8 -17 18 -28 10 -10 29 -35 42 -54 13 -19 29 -40 35 -46 5 -6 39
-44 75 -85 159 -179 425 -445 600 -598 l35 -31 -30 1 c-16 1 -157 -2 -313 -6
l-282 -7 -53 49 c-78 71 -287 282 -332 334 -22 25 -58 67 -80 94 -22 26 -45
53 -51 59 -20 21 -142 201 -173 257 -31 55 -31 55 -11 80 10 13 65 83 121 154
56 72 109 137 118 147 9 9 27 30 40 47 13 17 27 31 31 31 4 0 13 -15 19 -32z
m-1183 -375 c16 -10 20 -22 18 -51 -1 -20 -5 -109 -9 -197 -3 -88 -8 -194 -10
-235 -3 -41 -7 -133 -10 -204 -3 -71 -10 -134 -15 -141 -5 -6 -20 -11 -32 -9
-13 1 -42 3 -65 3 l-41 1 2 175 c1 120 -2 171 -9 165 -5 -6 -66 -86 -135 -178
l-126 -167 -59 1 c-33 1 -93 2 -134 3 l-73 1 18 28 c10 15 24 33 32 41 8 8 40
49 71 90 31 42 58 78 61 81 7 6 93 127 137 193 35 52 114 206 127 247 26 82
53 195 55 227 1 12 151 -44 197 -74z m690 60 c3 -16 8 -34 10 -42 3 -8 7 -30
10 -50 8 -45 50 -162 82 -226 41 -82 147 -245 219 -335 89 -113 164 -213 166
-222 2 -13 -19 -15 -161 -19 -82 -2 -94 0 -106 17 -20 28 -152 206 -170 229
-9 11 -30 39 -47 63 -17 23 -35 42 -40 42 -6 0 -8 -4 -5 -9 7 -11 10 -317 3
-328 -7 -11 -137 -17 -138 -6 -7 59 -11 136 -34 680 l-6 142 58 27 c105 48
138 63 145 63 4 1 10 -11 14 -26z m-735 -1158 c33 -10 59 -35 59 -56 0 -32
-20 -31 -53 3 -30 32 -35 33 -80 28 -50 -6 -71 -21 -81 -57 -9 -28 21 -56 77
-72 74 -22 148 -61 156 -83 18 -48 -4 -105 -49 -132 -76 -44 -184 -15 -223 60
-14 28 -15 34 -2 44 16 14 35 5 35 -16 0 -57 132 -93 180 -49 23 21 27 77 6
94 -7 6 -44 22 -82 35 -38 13 -81 29 -96 36 -72 33 -52 147 30 170 30 8 87 6
123 -5z m769 -12 c0 -15 -6 -23 -17 -24 -10 0 -35 -1 -56 -2 -20 -1 -37 1 -37
5 0 4 -7 5 -16 1 -9 -3 -28 -6 -42 -7 -25 -1 -27 -4 -28 -53 -1 -29 1 -53 5
-54 3 0 44 -2 91 -5 105 -5 114 -8 101 -32 -9 -16 -21 -18 -104 -16 l-94 2 1
-66 1 -67 90 -2 c105 -3 114 -6 111 -30 -3 -16 -15 -18 -115 -18 -62 0 -117 3
-123 6 -7 4 -11 72 -12 189 -1 145 2 183 13 189 7 5 62 8 122 8 107 -1 109 -1
109 -24z m-1409 -24 c0 -10 1 -53 1 -94 0 -177 1 -173 -36 -208 -18 -18 -49
-37 -67 -43 -67 -20 -162 16 -187 71 -6 13 -11 68 -12 122 -2 174 -2 173 20
173 11 0 20 -3 21 -7 0 -5 1 -65 2 -136 3 -127 3 -128 32 -157 28 -27 56 -36
107 -31 9 0 29 14 45 30 29 28 29 30 31 162 2 73 5 136 8 140 8 14 34 -2 35
-22z m1875 14 c3 -10 10 -27 15 -38 4 -11 25 -60 45 -110 20 -49 39 -94 41
-99 7 -10 21 21 70 154 32 86 43 106 61 108 12 2 22 0 22 -5 0 -12 -47 -143
-54 -150 -3 -4 -6 -12 -6 -19 0 -26 -73 -184 -85 -184 -7 0 -19 10 -27 23 -20
32 -128 303 -128 322 0 21 39 19 46 -2z"/>
<path d="M2290 5390 c-7 -16 -18 -30 -26 -30 -25 0 -25 -20 0 -30 14 -5 31
-18 38 -30 15 -23 28 -26 28 -6 0 8 12 24 26 35 17 13 21 21 12 21 -15 0 -66
48 -60 57 2 2 2 7 -1 9 -2 3 -10 -9 -17 -26z"/>
<path d="M2357 5229 c-15 -17 -15 -19 6 -34 19 -13 22 -13 30 0 11 20 10 23
-6 40 -12 11 -16 11 -30 -6z"/>
<path d="M1910 5151 c0 -25 6 -27 13 -6 4 8 2 17 -3 20 -6 4 -10 -3 -10 -14z"/>
<path d="M1244 4883 c4 -8 2 -13 -5 -13 -10 0 -10 -3 -1 -12 8 -8 15 -9 22 -2
8 8 6 15 -6 25 -12 9 -15 10 -10 2z"/>
<path d="M1365 4660 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M1165 4630 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
<path d="M4827 10194 c-1 -1 -51 -4 -112 -8 -112 -6 -196 -13 -250 -20 -16 -3
-52 -8 -80 -11 -358 -47 -808 -178 -1280 -371 -115 -47 -411 -196 -545 -274
-278 -162 -582 -380 -795 -572 -16 -14 -41 -36 -55 -48 -38 -32 -217 -209
-290 -286 -108 -114 -256 -291 -360 -429 -25 -33 -48 -62 -51 -65 -15 -13
-255 -356 -294 -421 -263 -438 -399 -751 -533 -1224 -74 -261 -120 -498 -147
-755 -3 -30 -8 -68 -10 -85 -25 -174 -26 -907 -1 -1040 2 -11 7 -51 11 -90 4
-38 8 -77 10 -85 2 -8 6 -35 9 -60 9 -65 14 -94 37 -200 11 -52 22 -104 25
-115 8 -41 76 -284 110 -395 76 -242 193 -538 296 -745 36 -72 175 -327 198
-365 5 -8 37 -60 72 -115 130 -211 355 -519 504 -690 138 -159 349 -362 509
-490 39 -31 79 -64 90 -73 11 -10 67 -52 125 -94 479 -345 945 -568 1620 -777
174 -53 400 -117 455 -127 11 -2 29 -6 40 -8 102 -23 274 -57 312 -61 27 -4
55 -8 63 -10 8 -2 42 -7 75 -10 33 -4 76 -8 95 -10 251 -28 732 -23 965 11 17
2 46 6 65 8 102 13 146 20 260 42 282 55 459 104 896 250 547 182 947 390
1364 708 58 44 107 83 110 86 3 4 12 11 21 16 35 20 203 170 328 294 90 89
227 240 296 325 31 39 66 81 77 93 43 51 190 253 270 372 496 733 825 1589
883 2295 2 28 7 95 12 150 4 55 8 213 8 350 0 280 -8 416 -35 605 -5 36 -12
83 -15 105 -3 23 -7 50 -9 62 -3 11 -7 38 -10 59 -15 93 -60 303 -102 474 -85
347 -196 643 -374 1005 -268 543 -565 961 -964 1361 -216 215 -352 328 -611
506 -521 358 -1042 604 -1574 744 -52 13 -108 27 -125 30 -17 2 -47 9 -66 14
-59 15 -188 40 -335 64 -86 15 -226 35 -270 41 -27 3 -63 8 -80 10 -51 8 -117
15 -185 20 -36 3 -85 7 -110 10 -91 10 -535 25 -543 19z m588 -167 c11 -3 61
-8 110 -11 50 -4 101 -9 115 -11 14 -2 50 -6 80 -10 46 -5 132 -16 235 -30 78
-10 127 -18 170 -25 28 -5 61 -11 75 -14 174 -28 431 -91 595 -143 300 -97
607 -234 897 -402 222 -128 514 -340 726 -527 132 -116 382 -373 491 -504 213
-255 453 -594 585 -825 32 -55 61 -107 66 -115 37 -64 164 -346 186 -415 2 -5
35 -101 73 -211 151 -441 218 -758 246 -1154 25 -343 19 -1018 -10 -1260 -2
-19 -7 -59 -10 -89 -4 -30 -8 -62 -10 -72 -2 -9 -7 -39 -10 -66 -4 -26 -11
-64 -15 -83 -5 -19 -11 -46 -14 -60 -29 -164 -141 -512 -243 -760 -35 -84
-139 -297 -183 -375 -93 -165 -266 -434 -357 -554 -6 -9 -46 -63 -89 -121
-293 -395 -499 -618 -853 -924 -73 -63 -283 -217 -406 -298 -244 -160 -498
-294 -725 -382 -69 -26 -134 -52 -145 -57 -45 -19 -269 -93 -410 -134 -168
-50 -368 -97 -507 -120 -51 -8 -103 -17 -115 -19 -12 -3 -53 -8 -90 -11 -37
-4 -79 -8 -92 -10 -168 -27 -1130 -27 -1271 0 -15 3 -42 6 -155 20 -16 2 -57
8 -90 14 -57 10 -81 14 -150 27 -150 28 -437 111 -640 184 -27 10 -77 28 -110
40 -180 66 -582 251 -704 325 -9 6 -55 32 -101 59 -293 171 -628 419 -868 641
-142 131 -269 267 -421 450 -9 11 -39 49 -66 85 -27 36 -53 70 -57 75 -51 64
-252 361 -306 452 -202 340 -366 710 -495 1118 -70 220 -153 567 -173 720 -3
28 -8 59 -10 70 -2 11 -7 47 -10 80 -3 33 -7 70 -9 83 -24 149 -24 775 -1 897
2 11 7 56 11 99 4 43 8 86 10 95 6 34 17 102 20 124 6 55 39 212 66 322 17 66
32 127 34 136 2 9 19 70 39 135 229 762 513 1286 1020 1889 142 169 379 403
546 540 25 20 54 44 65 54 107 90 448 332 565 400 467 273 962 464 1415 545
17 3 41 8 55 11 54 11 338 54 400 60 36 4 72 8 80 10 8 1 53 6 100 10 47 4 99
9 115 11 17 2 71 7 120 10 50 4 92 8 94 10 6 6 491 -3 516 -9z"/>
<path d="M5046 9972 c-5 -8 -13 -59 -21 -137 -3 -27 -7 -61 -10 -75 -2 -14 -7
-54 -10 -90 -3 -36 -7 -76 -10 -90 -4 -25 -15 -115 -20 -160 -1 -14 -5 -50 -9
-80 -9 -66 -12 -94 -26 -225 -6 -55 -13 -116 -15 -135 -3 -19 -7 -55 -10 -80
-3 -25 -7 -61 -10 -80 -2 -19 -7 -60 -10 -90 -3 -30 -8 -66 -10 -80 -2 -14 -7
-56 -10 -93 -4 -37 -8 -76 -10 -85 -1 -9 -6 -51 -10 -92 -3 -41 -8 -82 -10
-90 -2 -8 -6 -37 -9 -65 -3 -27 -8 -75 -12 -105 -3 -30 -7 -69 -9 -86 -2 -18
-7 -54 -10 -80 -3 -27 -8 -69 -10 -94 -3 -25 -7 -58 -9 -75 -3 -16 -12 -97
-21 -180 -9 -82 -18 -161 -20 -175 -3 -22 -7 -52 -20 -170 -2 -19 -6 -53 -9
-75 -3 -22 -8 -67 -11 -100 -3 -33 -8 -67 -10 -75 -2 -8 -6 -46 -10 -85 -3
-38 -8 -81 -10 -95 -2 -14 -7 -52 -10 -84 -3 -33 -8 -73 -10 -90 -2 -17 -12
-96 -20 -176 -9 -80 -18 -154 -20 -165 -2 -11 -4 -27 -4 -36 -1 -8 -35 -37
-77 -64 -177 -112 -459 -371 -564 -517 -18 -27 -35 -48 -36 -48 -5 0 3 39 47
249 22 101 41 193 43 205 5 24 64 297 131 601 49 223 51 234 61 280 3 17 14
66 24 110 31 131 59 258 64 285 2 14 16 79 31 145 15 66 28 126 30 135 5 23
109 501 120 550 2 8 10 45 19 83 9 37 18 82 21 100 3 17 8 40 11 49 3 9 7 25
9 35 2 10 15 72 30 138 15 66 29 131 31 145 3 14 30 138 61 275 30 138 57 261
59 274 3 12 12 53 20 90 9 36 18 77 21 91 2 14 22 104 43 200 21 96 41 192 44
214 4 21 9 42 12 47 4 7 -18 13 -46 11 -36 -2 -171 -14 -190 -17 -14 -2 -54
-7 -90 -10 -36 -4 -72 -8 -80 -10 -8 -1 -42 -6 -75 -10 -91 -10 -125 -15 -190
-25 -33 -5 -78 -12 -100 -15 -22 -2 -62 -9 -90 -15 -27 -5 -66 -12 -85 -15
-126 -21 -608 -162 -634 -186 -6 -5 -16 -9 -23 -9 -53 0 -541 -239 -749 -367
-199 -122 -434 -291 -569 -408 -16 -14 -58 -50 -92 -78 -110 -94 -382 -373
-483 -497 -25 -30 -48 -57 -51 -60 -15 -12 -230 -303 -286 -385 -70 -104 -149
-231 -185 -295 -14 -25 -35 -63 -48 -85 -161 -283 -361 -785 -444 -1115 -4
-14 -22 -86 -41 -160 -41 -163 -74 -346 -90 -495 -4 -33 -8 -71 -11 -85 -23
-142 -23 -809 1 -940 1 -8 6 -46 10 -84 4 -38 9 -79 10 -90 2 -12 13 -77 25
-146 77 -465 302 -1114 524 -1515 12 -22 36 -65 53 -96 117 -213 406 -623 573
-813 494 -564 1185 -1047 1880 -1316 311 -120 706 -235 950 -276 14 -2 39 -6
55 -9 17 -3 41 -7 54 -10 23 -4 65 -10 156 -20 28 -3 66 -7 85 -10 212 -28
920 -28 1120 0 14 2 50 6 80 10 87 9 109 13 215 30 138 22 135 21 280 54 330
75 668 183 878 280 37 17 70 31 73 31 7 0 280 137 339 170 384 215 843 579
1100 874 28 31 59 67 70 80 12 12 39 45 60 72 22 27 48 58 58 69 11 11 83 106
161 210 378 504 515 735 711 1200 31 73 118 335 140 420 5 17 9 35 11 40 16
58 66 292 79 370 24 143 24 144 41 310 5 49 5 971 0 1040 -13 174 -42 396 -70
540 -64 322 -147 607 -260 893 -108 273 -227 496 -414 782 -53 79 -99 149
-104 155 -4 5 -42 55 -83 110 -106 142 -111 148 -205 260 -226 269 -424 459
-697 673 -104 81 -112 87 -245 180 -347 242 -780 454 -1178 576 -98 30 -320
89 -385 102 -157 32 -398 71 -550 89 -27 3 -63 8 -80 10 -35 5 -101 12 -202
21 l-73 6 6 -33 c7 -43 42 -212 54 -264 5 -22 32 -146 60 -275 28 -129 55
-253 60 -275 5 -22 17 -74 26 -115 9 -41 23 -104 31 -140 8 -36 16 -76 19 -90
2 -14 21 -96 40 -184 20 -87 37 -168 40 -180 2 -11 13 -61 24 -111 11 -49 29
-130 39 -180 17 -77 82 -376 177 -805 14 -63 34 -155 45 -205 11 -49 22 -101
25 -115 3 -14 14 -63 24 -110 25 -109 152 -693 191 -875 16 -77 34 -158 40
-180 5 -22 12 -51 14 -65 3 -14 7 -37 11 -52 3 -16 3 -28 1 -28 -3 0 -36 37
-73 83 -142 170 -351 360 -514 465 -47 31 -86 56 -88 58 -2 1 -5 21 -7 45 -3
24 -7 60 -10 79 -2 19 -7 58 -10 85 -3 28 -7 66 -10 85 -2 19 -7 58 -10 85 -5
49 -21 185 -30 255 -2 19 -7 60 -10 90 -3 30 -7 71 -10 90 -2 19 -7 60 -10 90
-4 30 -8 66 -10 80 -2 14 -6 54 -10 90 -4 36 -9 79 -11 95 -2 17 -6 53 -9 80
-3 28 -7 66 -10 85 -3 19 -7 60 -10 90 -3 30 -7 66 -10 80 -2 14 -7 54 -10 90
-4 36 -8 72 -10 80 -2 9 -6 47 -9 85 -4 39 -8 81 -11 95 -2 14 -7 52 -10 85
-4 33 -8 74 -10 90 -2 17 -6 55 -10 85 -3 30 -8 66 -10 80 -2 14 -7 50 -10 80
-3 30 -7 73 -10 95 -3 22 -7 63 -10 90 -4 28 -8 68 -11 90 -2 22 -6 56 -9 75
-2 19 -7 60 -10 90 -4 30 -8 69 -10 85 -2 17 -6 57 -10 90 -3 33 -10 92 -15
130 -5 39 -12 93 -15 120 -2 28 -7 70 -10 95 -14 120 -21 175 -35 295 -6 50
-12 104 -14 120 -2 17 -4 33 -5 38 0 4 -8 7 -17 7 -16 0 -16 -29 1 -200 2 -19
6 -67 9 -107 3 -39 8 -86 10 -105 3 -18 8 -69 11 -113 4 -44 8 -93 10 -110 5
-40 14 -132 20 -202 3 -32 7 -76 10 -98 2 -22 7 -76 11 -120 3 -44 8 -87 9
-97 2 -9 6 -54 10 -100 3 -45 8 -94 10 -108 2 -14 7 -59 10 -100 3 -41 8 -91
10 -110 2 -19 7 -64 10 -100 3 -36 8 -81 10 -100 2 -19 7 -64 10 -100 4 -36 8
-85 11 -110 2 -25 6 -65 9 -90 2 -25 9 -97 15 -160 6 -63 13 -133 15 -155 2
-22 7 -67 10 -100 3 -33 8 -78 10 -100 2 -22 7 -71 10 -110 6 -73 13 -142 20
-185 2 -14 6 -61 10 -105 3 -44 8 -98 10 -120 3 -22 7 -67 10 -100 3 -33 8
-78 10 -100 3 -22 7 -67 10 -100 3 -33 8 -80 10 -105 16 -164 16 -163 -2 -155
-40 15 -168 45 -197 45 -50 0 -55 9 -61 106 -3 49 -7 123 -10 164 -4 67 -9
169 -20 415 -2 44 -7 143 -10 220 -3 77 -8 169 -10 205 -2 36 -7 128 -10 205
-6 146 -12 278 -20 430 -2 50 -7 146 -10 215 -3 69 -7 168 -10 220 -2 52 -7
151 -10 220 -3 69 -8 161 -10 205 -2 44 -7 145 -11 225 -3 80 -8 170 -9 200
-2 30 -6 132 -10 225 -8 194 -11 234 -18 241 -3 3 -4 -8 -4 -23 0 -25 -9 -264
-18 -443 -2 -36 -6 -135 -10 -220 -3 -85 -8 -191 -10 -235 -2 -44 -7 -136 -10
-205 -8 -185 -15 -324 -20 -425 -2 -49 -7 -142 -10 -205 -9 -195 -15 -331 -20
-420 -2 -47 -7 -143 -11 -215 -3 -71 -8 -159 -9 -195 -2 -36 -6 -128 -9 -205
-4 -77 -8 -171 -11 -210 -3 -38 -7 -119 -10 -180 -9 -203 -15 -290 -20 -306
-4 -12 -23 -18 -63 -23 -32 -4 -87 -15 -122 -26 -36 -11 -69 -20 -73 -20 -5 0
-6 24 -3 53 3 28 8 79 11 112 3 33 8 78 10 100 5 41 11 103 20 210 3 33 8 76
10 95 3 19 7 64 10 100 3 36 8 83 10 105 2 22 7 74 10 115 4 41 8 86 10 100 2
14 7 61 11 105 3 44 8 87 9 96 2 8 6 55 10 105 4 49 9 103 11 119 2 17 8 82
14 145 6 63 13 131 15 150 2 19 7 64 10 100 3 36 8 81 10 100 4 32 9 82 20
195 2 22 6 74 9 115 4 41 9 86 11 100 2 14 7 63 10 108 4 46 8 91 10 100 1 10
6 55 10 101 4 47 8 92 10 100 1 9 6 59 10 111 4 52 9 102 10 110 1 8 6 51 9
95 4 44 9 91 11 105 2 14 6 60 10 102 3 43 8 90 10 105 2 16 6 64 10 108 3 44
9 105 13 135 4 30 6 63 4 73 -4 18 -17 23 -26 9z m-456 -238 c0 -18 -56 -305
-75 -389 -3 -11 -7 -31 -10 -45 -3 -14 -23 -108 -45 -210 -23 -102 -50 -225
-60 -275 -11 -49 -27 -121 -36 -160 -8 -38 -18 -81 -20 -95 -4 -21 -31 -140
-50 -225 -2 -11 -7 -33 -10 -50 -2 -16 -18 -86 -34 -155 -15 -69 -31 -138 -34
-155 -4 -16 -8 -39 -10 -50 -3 -11 -25 -112 -50 -225 -86 -391 -185 -845 -190
-873 -2 -15 -7 -35 -10 -45 -3 -9 -7 -28 -10 -42 -2 -14 -12 -59 -21 -100 -9
-41 -18 -84 -21 -95 -26 -131 -62 -287 -75 -331 -9 -30 -11 -31 -57 -28 -26 2
-78 9 -117 14 -38 5 -90 12 -115 15 -25 3 -56 8 -70 10 -14 2 -45 7 -70 10
-25 3 -56 7 -70 10 -14 3 -45 8 -70 11 -58 7 -99 13 -130 19 -14 3 -38 7 -55
9 -77 12 -230 39 -330 58 -60 11 -119 22 -130 24 -11 2 -31 6 -45 9 -14 2 -36
6 -50 9 -14 2 -61 12 -105 21 -44 9 -91 19 -105 21 -14 2 -43 8 -65 13 -22 6
-92 22 -155 37 -337 78 -582 160 -988 330 -228 96 -283 127 -292 164 -15 59
171 425 366 722 333 508 693 893 1154 1234 410 304 775 492 1240 642 29 9 200
55 250 67 31 7 317 64 350 69 45 7 196 27 235 31 79 9 150 18 153 20 12 10 32
-2 32 -21z m1345 -18 c251 -38 504 -89 655 -131 255 -72 638 -233 885 -373
119 -67 380 -242 492 -329 256 -199 527 -455 683 -643 25 -30 49 -60 55 -66
106 -121 353 -474 485 -694 76 -126 206 -376 250 -480 18 -41 39 -90 47 -108
36 -81 52 -143 40 -147 -7 -3 -50 -18 -97 -34 -47 -16 -143 -50 -215 -76 -340
-123 -758 -247 -942 -280 -18 -3 -61 -12 -95 -19 -35 -8 -81 -17 -103 -21 -22
-3 -78 -12 -125 -20 -47 -8 -116 -19 -155 -24 -38 -6 -87 -13 -107 -16 -21 -3
-54 -7 -73 -10 -20 -3 -79 -10 -133 -16 -53 -5 -108 -12 -122 -14 -14 -2 -56
-7 -95 -10 -38 -3 -77 -8 -85 -10 -8 -2 -44 -7 -80 -10 -36 -3 -76 -7 -90 -10
-14 -2 -59 -7 -100 -10 -41 -4 -86 -8 -100 -10 -40 -6 -149 -16 -226 -20 -86
-5 -100 4 -108 65 -5 47 -29 162 -96 475 -22 105 -43 206 -46 225 -3 19 -8 38
-10 41 -2 3 -6 19 -8 35 -8 40 -12 62 -25 114 -6 25 -35 164 -66 310 -30 146
-58 276 -61 290 -3 14 -8 34 -10 45 -2 11 -13 63 -24 115 -30 138 -49 226 -65
300 -8 36 -23 108 -35 160 -11 52 -22 104 -24 115 -4 20 -20 95 -76 355 -17
80 -35 165 -40 190 -5 25 -18 86 -29 135 -11 50 -22 101 -25 115 -2 14 -25
124 -51 245 -25 121 -48 233 -51 249 l-6 28 53 -5 c30 -3 99 -13 154 -21z
m-480 -3569 c178 -31 389 -147 515 -284 192 -208 331 -462 371 -676 14 -77 18
-180 8 -232 -4 -22 -10 -57 -13 -77 -7 -45 -39 -130 -60 -163 -37 -56 -151
-75 -246 -41 -25 8 -53 16 -64 16 -29 0 -204 -79 -281 -127 -93 -59 -251 -220
-293 -300 -33 -62 -66 -175 -76 -255 -3 -24 -10 -77 -15 -118 -6 -41 -13 -99
-16 -129 -4 -30 -8 -61 -10 -70 -19 -105 -27 -489 -12 -611 10 -81 28 -174 68
-338 40 -166 39 -161 46 -204 l6 -38 -79 -1 c-44 0 -199 -3 -345 -5 l-266 -5
19 98 c57 302 204 801 299 1018 93 214 166 414 175 479 12 84 -23 216 -72 279
-47 59 -166 81 -301 56 -26 -5 -59 -11 -73 -14 -109 -20 -385 -137 -452 -192
-83 -68 -139 -70 -209 -6 -75 68 -163 287 -193 483 -15 95 -13 311 2 380 6 25
13 59 17 77 8 50 53 171 92 248 31 63 98 172 112 185 3 3 23 26 44 53 150 186
354 327 642 442 56 23 219 64 279 71 28 4 53 8 55 10 6 5 288 -3 326 -9z
m-1830 -1572 c48 -60 94 -119 104 -130 9 -11 89 -114 179 -228 l162 -209 -28
-51 c-75 -137 -216 -344 -338 -496 -219 -273 -536 -606 -780 -820 -21 -19 -49
-43 -61 -54 -24 -21 -21 -21 -323 -12 -63 2 -252 7 -420 10 -168 4 -309 10
-313 14 -4 5 9 23 30 41 38 33 136 120 242 215 74 66 517 509 606 605 39 42
102 111 140 154 39 43 75 84 80 90 28 30 157 188 196 241 103 137 239 382 334
600 31 71 61 138 67 148 12 23 6 30 123 -118z m3042 68 c17 -38 41 -93 54
-123 111 -266 335 -617 514 -806 11 -11 40 -43 64 -70 276 -310 794 -824 986
-979 33 -26 62 -52 63 -56 2 -5 -11 -9 -30 -10 -18 0 -94 -2 -168 -4 -323 -7
-701 -17 -771 -19 -87 -3 -65 -17 -259 164 -234 218 -417 410 -605 635 -157
188 -337 444 -411 584 -28 56 -26 73 15 118 9 10 74 92 146 183 177 227 359
450 366 450 3 0 19 -30 36 -67z m-839 -530 c64 -288 90 -369 172 -538 95 -193
372 -591 629 -900 22 -27 40 -54 38 -60 -4 -10 -111 -16 -322 -19 l-120 -1
-187 250 c-103 138 -207 276 -231 307 l-43 57 4 -299 c2 -165 0 -301 -5 -301
-49 -7 -79 -9 -146 -12 -95 -5 -96 -4 -102 125 -2 51 -7 149 -10 218 -4 69 -8
166 -10 215 -11 258 -16 397 -20 465 -2 41 -7 145 -10 230 l-7 156 59 27 c92
42 287 126 295 127 3 0 11 -21 16 -47z m-1337 -27 c79 -35 156 -69 170 -76 25
-11 26 -15 24 -78 -13 -297 -16 -378 -20 -452 -4 -83 -13 -268 -20 -440 -7
-179 -17 -376 -20 -400 -2 -14 -4 -31 -4 -38 -1 -10 -25 -13 -105 -11 -160 4
-143 -33 -139 316 l4 298 -108 -145 c-59 -80 -159 -214 -221 -298 -62 -83
-120 -158 -128 -166 -11 -11 -36 -14 -111 -10 -54 2 -151 6 -216 8 -66 3 -121
7 -124 10 -6 6 -5 6 128 172 196 245 444 598 521 744 44 84 103 230 134 333
23 76 65 256 67 285 1 20 18 15 168 -52z"/>
<path d="M3738 9333 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M3916 9215 c-11 -43 -50 -90 -86 -105 l-32 -13 51 -24 c32 -15 58
-37 72 -60 l22 -36 14 34 c7 19 30 45 49 59 33 22 35 25 19 35 -44 25 -80 65
-90 101 l-11 39 -8 -30z"/>
<path d="M3545 9190 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1114 4199 c-17 -18 -16 -20 3 -39 20 -18 21 -18 38 0 16 17 15 20
-3 38 -20 20 -21 20 -38 1z"/>
<path d="M1465 4160 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
<path d="M2920 9010 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M4020 8914 c-7 -13 -22 -26 -32 -30 -16 -5 -13 -10 21 -35 l40 -29
26 26 25 25 -34 34 -34 33 -12 -24z"/>
<path d="M2945 8790 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M4096 5151 c-4 -5 -2 -12 3 -15 5 -4 12 -2 15 3 4 5 2 12 -3 15 -5 4
<path d="M3250 8786 c0 -8 -5 -16 -11 -18 -6 -2 -1 -12 10 -22 19 -17 21 -17
21 -3 0 10 6 17 13 17 6 0 4 5 -6 11 -9 6 -15 14 -12 20 4 5 1 9 -4 9 -6 0
-11 -6 -11 -14z"/>
<path d="M3851 8704 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M3340 8701 c0 -6 5 -13 10 -16 6 -3 10 1 10 9 0 9 -4 16 -10 16 -5 0
-10 -4 -10 -9z"/>
<path d="M3370 8489 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M2108 8305 c-15 -20 -15 -24 -3 -29 8 -3 15 -12 15 -21 0 -8 4 -15
10 -15 5 0 7 7 4 15 -4 9 2 18 17 24 18 7 20 10 6 10 -10 1 -21 10 -25 20 -7
18 -8 18 -24 -4z"/>
<path d="M3730 8279 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M3685 8230 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M2555 8210 c-3 -5 -2 -10 4 -10 5 0 13 5 16 10 3 6 2 10 -4 10 -5 0
-13 -4 -16 -10z"/>
<path d="M3375 8170 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M2541 8144 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M3340 8134 c0 -8 5 -12 10 -9 6 4 8 11 5 16 -9 14 -15 11 -15 -7z"/>
<path d="M1845 8060 c-3 -5 1 -10 9 -10 9 0 16 5 16 10 0 6 -4 10 -9 10 -6 0
-13 -4 -16 -10z"/>
<path d="M2300 8061 c0 -5 5 -13 10 -16 6 -3 10 -2 10 4 0 5 -4 13 -10 16 -5
3 -10 2 -10 -4z"/>
<path d="M1878 8023 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M2246 8021 c-3 -5 1 -11 9 -15 9 -3 15 0 15 9 0 16 -16 20 -24 6z"/>
<path d="M2322 7938 c6 -18 28 -21 28 -4 0 9 -7 16 -16 16 -9 0 -14 -5 -12
-12z"/>
<path d="M1987 7893 c-12 -11 -8 -23 8 -23 8 0 15 7 15 15 0 16 -12 20 -23 8z"/>
<path d="M2580 7660 c0 -5 7 -10 15 -10 8 0 15 5 15 10 0 6 -7 10 -15 10 -8 0
-15 -4 -15 -10z"/>
<path d="M3580 7460 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M2460 7450 c0 -6 7 -10 15 -10 8 0 15 2 15 4 0 2 -7 6 -15 10 -8 3
-15 1 -15 -4z"/>
<path d="M1450 7410 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M1535 7400 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M2522 7298 c6 -18 28 -21 28 -4 0 9 -7 16 -16 16 -9 0 -14 -5 -12
-12z"/>
<path d="M3226 7251 c-4 -5 -2 -12 3 -15 5 -4 12 -2 15 3 4 5 2 12 -3 15 -5 4
-12 2 -15 -3z"/>
<path d="M4766 4873 c-11 -11 -6 -23 9 -23 8 0 15 4 15 9 0 13 -16 22 -24 14z"/>
<path d="M3815 4725 c-5 -11 -20 -30 -34 -41 l-25 -21 22 -7 c12 -4 30 -18 41
-32 19 -24 20 -24 26 -4 3 11 15 25 26 30 10 6 19 15 19 21 0 6 -4 8 -9 5 -9
-6 -46 31 -54 54 -4 12 -6 11 -12 -5z"/>
<path d="M4545 4160 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
<path d="M1920 7179 c0 -5 -14 -23 -31 -39 l-31 -28 23 -12 c13 -7 34 -22 47
-33 12 -11 22 -15 22 -9 0 6 11 21 24 34 l23 23 -38 38 c-22 20 -39 32 -39 26z"/>
<path d="M3470 7159 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M2490 7090 c0 -10 5 -22 10 -25 6 -3 10 -4 10 -1 0 2 3 11 6 19 3 8
-2 17 -10 20 -11 5 -16 0 -16 -13z"/>
<path d="M3705 7030 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M2895 6970 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M4921 4116 c-11 -13 -10 -17 3 -22 22 -8 30 1 19 21 -9 15 -11 15
-22 1z"/>
<path d="M3037 2874 c-1 -1 -20 -5 -41 -8 -22 -4 -41 -8 -43 -10 -2 -1 8 -16
23 -32 32 -37 65 -101 94 -184 13 -36 27 -69 31 -74 14 -16 49 82 49 137 0 29
-10 80 -22 115 -21 61 -23 62 -55 60 -19 -1 -35 -3 -36 -4z"/>
<path d="M2810 2823 c-34 -13 -73 -48 -105 -96 -39 -58 -45 -83 -17 -69 14 7
116 25 217 38 29 3 29 3 44 13 11 7 10 14 -5 37 -41 65 -90 93 -134 77z"/>
<path d="M2415 6880 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M2400 6840 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M6570 9369 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M6691 9184 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M7230 8859 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M6981 8788 c-1 -9 -9 -22 -18 -27 -17 -10 -17 -10 0 -11 9 0 17 -8
17 -17 0 -14 3 -13 16 6 10 14 13 26 7 30 -6 3 -13 13 -16 21 -4 12 -6 12 -6
-2z"/>
<path d="M7285 8790 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M6380 8700 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M6886 8702 c-3 -6 -1 -14 5 -17 14 -9 20 -2 10 14 -6 8 -11 9 -15 3z"/>
<path d="M7222 8581 c2 -7 7 -12 11 -12 12 1 9 15 -3 20 -7 2 -11 -2 -8 -8z"/>
<path d="M6855 8490 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M7325 8460 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M6870 8430 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M6705 8310 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M8110 8310 c0 -7 -8 -19 -17 -27 -12 -9 -13 -12 -4 -11 8 2 18 -8 22
-22 4 -14 7 -20 8 -13 1 6 8 19 17 27 14 14 13 18 -5 38 -13 13 -21 17 -21 8z"/>
<path d="M6500 8269 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M6858 8163 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M7676 8143 c-11 -11 -6 -23 9 -23 8 0 15 4 15 9 0 13 -16 22 -24 14z"/>
<path d="M6880 8130 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M6491 8048 c-13 -39 -55 -82 -93 -94 -19 -6 -15 -9 29 -30 29 -14 61
-39 76 -61 15 -21 28 -32 28 -25 4 35 13 47 60 82 l39 28 -28 10 c-36 12 -74
52 -88 94 l-11 33 -12 -37z"/>
<path d="M7765 8060 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M8380 8060 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M7705 8040 c3 -5 10 -10 16 -10 5 0 9 5 9 10 0 6 -7 10 -16 10 -8 0
-12 -4 -9 -10z"/>
<path d="M8350 8020 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M8010 7990 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M7460 7925 c-10 -12 -10 -15 3 -15 19 0 31 16 18 24 -5 3 -14 -1 -21
-9z"/>
<path d="M7995 7910 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M7100 7880 c0 -5 7 -10 15 -10 8 0 15 5 15 10 0 6 -7 10 -15 10 -8 0
-15 -4 -15 -10z"/>
<path d="M7175 7871 c-3 -5 -1 -12 5 -16 5 -3 10 1 10 9 0 18 -6 21 -15 7z"/>
<path d="M7170 7820 c0 -5 4 -10 9 -10 6 0 13 5 16 10 3 6 -1 10 -9 10 -9 0
-16 -4 -16 -10z"/>
<path d="M7881 7484 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M6645 7450 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M8780 7400 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M7015 7300 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M7000 7240 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M6760 7160 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M7733 7092 c-8 -5 -9 -13 -3 -22 7 -12 12 -12 22 -2 14 14 -1 35 -19
24z"/>
<path d="M6525 7020 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M8368 7010 c-15 -17 -15 -19 7 -38 22 -19 24 -19 38 -4 14 15 13 19
-3 40 -21 26 -20 26 -42 2z"/>
<path d="M8460 6920 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M7840 6890 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M7830 6829 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M7190 6740 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M5209 4906 c-4 -4 -40 -10 -127 -22 -29 -4 -55 -10 -57 -15 -3 -4 6
-20 20 -35 70 -76 132 -201 216 -436 7 -21 16 -38 19 -38 12 0 48 75 64 131
32 108 17 232 -41 361 -24 53 -28 58 -58 58 -17 0 -34 -2 -36 -4z"/>
<path d="M4773 4807 c-75 -28 -141 -98 -209 -223 -31 -56 -34 -65 -18 -61 10
3 37 10 59 16 38 9 62 13 153 26 20 3 60 10 87 15 28 5 69 12 93 15 102 12
110 23 66 90 -80 120 -144 154 -231 122z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

View file

@ -1,6 +1,6 @@
{
"name": "",
"short_name": "",
"name": "Project Lighthouse",
"short_name": "Lighthouse",
"icons": [
{
"src": "/android-chrome-192x192.png",
@ -13,7 +13,7 @@
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"theme_color": "#008cff",
"background_color": "#008cff",
"display": "standalone"
}

View file

@ -27,5 +27,11 @@ namespace LBPUnion.ProjectLighthouse.Types.Settings
}
public static bool IsUnitTesting => AppDomain.CurrentDomain.GetAssemblies().Any(assembly => assembly.FullName.StartsWith("xunit"));
#if DEBUG
public static readonly bool IsDebug = true;
#else
public static readonly bool IsDebug = false;
#endif
}
}

View file

@ -1,7 +1,6 @@
# Project Lighthouse
Project Lighthouse is an umbrella project for all work to investigate and develop private servers for LittleBigPlanet.
This project is the main server component that LittleBigPlanet games connect to.
Project Lighthouse is a clean-room, open-source custom server for LittleBigPlanet. This is a project conducted by the [LBP Union Ministry of Technology Research and Development team.](https://www.lbpunion.com/technology) For concerns and inquiries about the project, please [contact us here.](https://www.lbpunion.com/contact) For general questions and discussion about Project Lighthouse, please see the [megathread](https://www.lbpunion.com/forum/union-hall/project-lighthouse-littlebigplanet-private-servers-megathread) on our forum.
## WARNING!