0
0
Fork 0
mirror of https://github.com/selfhst/icons.git synced 2025-05-06 15:49:29 +02:00

Icon updates

This commit is contained in:
selfhst-bot 2025-04-30 07:59:33 -04:00
parent aa388af810
commit 1bbae842c0
19 changed files with 202 additions and 3 deletions

View file

@ -2,4 +2,90 @@
# selfh.st/icons # selfh.st/icons
This repository is a data store for the collection of icons found at [selfh.st/icons](https://selfh.st/icons). For more information, please see the project's [About](https://selfh.st/icons-about/) page. [selfh.st/icons](https://selfh.st/icons) is a collection of 4,400+ logos and icons for self-hosted (and non-self-hosted) software.
The collection is available for browsing via the directory at [selfh.st/icons](https://selfh.st/icons) and served to users directly from this repo using the jsDelivr content delivery network.
To self-host the collection, users can clone, download, or sync the repository with a tool like [git-sync](https://github.com/AkashRajpurohit/git-sync) and serve it with a web server of their choosing (Caddy, NGINX, etc.).
### Color Options
By default, most SVG icons are available in three color formats:
* **Standard**: The standard colors of an icon without any modifications.
* **Dark**: A modified version of an icon displayed entirely in black (```#000000```).
* **Light**: A modified version of an icon displayed entirely in white (```#FFFFFF```).
(Toggles to view icons by color type are available in the [directory hosted on the selfh.st website](https://selfh.st/icons).)
### Custom Colors
Because the dark and light versions of each icon are monochromatic, CSS can theoretically be leveraged to apply custom colors to the icons.
This only works, however, when the SVG code is embedded directly onto a webpage. Unfortunately, most [integrations](https://selfh.st/apps/?tag=selfh-st-icons) link to the icons via an `<img>` tag, which prevents styling from being overridden via CSS.
As a workaround, a lightweight self-hosted server has been published via Docker that utilizes a URL parameter for color conversion on the fly. Continue reading for further instructions.
#### Deploying the Custom Color Container
* Introduction
* Deploying the container
* Configuring a reverse proxy (optional)
* Linking to a custom icon
* Changelog
##### Introduction
The Docker image below allows users to host a local server that acts as a proxy between requests and jsDelivr. When a color parameter is detected in the URL, the server will intercept the requests, fill the SVG file with that color, and serve it to the user.
Once deployed, users can append ```?color=eeeeee``` to the end of a URL to specify a custom color (replacing ```eeeeee``` with any [hex color code](https://htmlcolorcodes.com/)).
##### Deployment
The container can be easily deployed via docker-compose with the following snippet:
```
selfhst-icons:
image: ghcr.io/selfhst/icons:latest
restart: unless-stopped
ports:
- 4050:4050
```
No volume mounts or environment variables are currently required.
##### Reverse Proxy
While out of the scope of this guide, many applications will require users to leverage HTTPS when linking to icons served from the container.
The process to proxy the container and icons is straightforward. A sample Caddyfile configuration has been provided for reference:
```
icons.selfh.st {
reverse_proxy selfhst-icons:4050
}
```
##### Linking
After the container has been deployed, users can easily link to any existing icon within the collection:
* ```https://icons.selfh.st/bookstack.svg```
* ```https://icons.selfh.st/bookstack.png```
* ```https://icons.selfh.st/bookstack-dark.webp```
To customize the color, users **must** link to the *standard* version of an SVG icon that has available monochromatic (dark/light) versions. To do so, append a custom URL parameter referencing any [hex color code](https://htmlcolorcodes.com/):
* ```https://icons.selfh.st/bookstack.svg?color=eeeeee```
* ```https://icons.selfh.st/bookstack.svg?color=439b68```
**Note the following:**
* Only the standard icons accept URL parameters (for example, ```bookstack-light.svg?color=fff000``` will not yield a different color.
* Only append the alpha-numeric portion of the hex color code to the URL. The server will append the ```#``` in the backend before passing it on for styling.
##### Changelog
* 2025-04-30: Initial release

11
build/dockerfile Executable file
View file

@ -0,0 +1,11 @@
FROM node:18-alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY server.js .
EXPOSE 4050
CMD ["node", "server.js"]

13
build/package.json Executable file
View file

@ -0,0 +1,13 @@
{
"name": "test-repo",
"version": "1.0.0",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"type": "module",
"dependencies": {
"express": "^4.18.2",
"node-fetch": "^3.3.0"
}
}

89
build/server.js Executable file
View file

@ -0,0 +1,89 @@
import express from 'express'
import fetch from 'node-fetch'
import path from 'path'
const app = express()
const PORT = 4050
const CDN_ROOT = 'https://cdn.jsdelivr.net/gh/selfhst/icons'
const CDN_PATH = 'svg'
async function fileExists(url) {
try {
const resp = await fetch(url, { method: 'HEAD' });
return resp.ok;
} catch {
return false;
}
}
async function fetchAndPipe(url, res) {
const response = await fetch(url);
if (!response.ok) return res.status(404).send('File not found');
res.type(path.extname(url).slice(1));
response.body.pipe(res);
}
app.get('/*', async (req, res) => {
const urlPath = req.path;
const extMatch = urlPath.match(/\.(\w+)$/);
if (!extMatch)
return res.status(404).send('File extension missing');
const ext = extMatch[1].toLowerCase();
if (!['png', 'webp', 'svg'].includes(ext))
return res.status(404).send('Format not supported');
const filename = urlPath.slice(1);
const lowerFilename = filename.toLowerCase();
const isSuffix = lowerFilename.endsWith('-light.svg') || lowerFilename.endsWith('-dark.svg');
if (isSuffix) {
return fetchAndPipe(`${CDN_ROOT}/${CDN_PATH}/${filename}`, res);
}
let mainUrl;
if (ext === 'png') {
mainUrl = `${CDN_ROOT}/png/${filename}`;
} else if (ext === 'webp') {
mainUrl = `${CDN_ROOT}/webp/${filename}`;
} else if (ext === 'svg') {
mainUrl = `${CDN_ROOT}/svg/${filename}`;
} else {
mainUrl = null;
}
const hasColor = !!req.query['color'] && req.query['color'].trim() !== '';
if (ext === 'svg') {
if (hasColor) {
const baseName = filename.replace(/\.(png|webp|svg)$/, '');
const suffixUrl = `${CDN_ROOT}/${CDN_PATH}/${baseName}-light.svg`;
if (await fileExists(suffixUrl)) {
let svgContent = await fetch(suffixUrl).then(r => r.text());
const color = req.query['color'].startsWith('#') ? req.query['color'] : `#${req.query['color']}`;
svgContent = svgContent
.replace(/style="[^"]*fill:\s*#fff[^"]*"/gi, (match) => {
console.log('Replacing style fill:', match);
return match.replace(/fill:\s*#fff/gi, `fill:${color}`);
})
.replace(/fill="#fff"/gi, `fill="${color}"`);
return res.type('image/svg+xml').send(svgContent);
} else {
return fetchAndPipe(mainUrl, res);
}
} else {
return fetchAndPipe(mainUrl, res);
}
} else {
// PNG/WebP: serve directly
return fetchAndPipe(mainUrl, res);
}
});
app.get('/', (req, res) => {
res.send('Self-hosted icon server');
});
app.listen(PORT, () => {
console.log(`Listening on port ${PORT}`);
});

View file

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View file

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

Before

Width:  |  Height:  |  Size: 965 B

After

Width:  |  Height:  |  Size: 965 B

View file

Before

Width:  |  Height:  |  Size: 983 B

After

Width:  |  Height:  |  Size: 983 B

View file

Before

Width:  |  Height:  |  Size: 987 B

After

Width:  |  Height:  |  Size: 987 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M212.2 309.2c9-2.1 17.4.1 26.1 2.5 10 2.7 20.6 3.4 30.8 5.6 18.2 3.9 36.6 7.3 54.4 12.6 15.1 4.4 29.6 10.9 44.1 17.1 4.6 1.9 8.7 5.4 12.4 8.9 5.9 5.7 5.5 10.6-1.6 14.4-16.7 8.9-33.4 17.9-50.6 25.6-16.6 7.5-33.7 14.2-50.9 20.3-28.8 10.2-57.9 19.4-89.1 17.8-15.8-.8-31.7-.6-47.2-3-10.6-1.6-21.1-5.9-30.9-10.5-20.9-9.8-42.9-17.8-61.6-32.1-22-16.8-38.7-37.4-47.2-64.1-2.3-7-.7-10.2 6.4-11.8 23-5.1 45.7-12.1 69.8-10 10.9 1 21.8 1.1 32.7 1.2 2 0 3.9-1.7 5.9-2.7 6.2 7.6 12.3 15.2 18.6 22.6 12.5 14.8 25.1 29.4 37.8 44.1 2.7 3.1 6.4 5.6 8.6 9 9.2 13.9 21 25.1 35.3 33.6 2.4 1.5 5.9 1.9 8.8 1.7 4-.3 6.4-2.7 5.1-7.3-4.8-18.2-10.3-36.2-14-54.7-2.5-13.3-2.5-27.1-3.7-40.8M512 409.5c-4.7-1.8-7.7-2.5-10.2-4-28.6-16.1-57.1-32.4-85.8-48.4-5.3-3-11.5-4.4-17.3-6.5-2.1-.8-4.3-1.3-6.2-2.4-10.5-6.3-21-12.8-31.4-19.2-1.1-.7-2.3-1.4-3.4-2.1-.7-.2-1.3-.3-2-.5l-2.7-1.2c-1.8-.5-3.6-1.1-5.4-1.6-2.7-.8-5.3-1.7-8-2.5l-2.7-.6c-2.2-.7-4.5-1.4-6.7-2.1.4-.3.8-.5 1.1-.7-.4.2-.7.4-1.1.7l-2.7-.6c-20.1-4.3-40.2-8.6-60.3-12.8l-2.7-.3-12-2.4-2.7-.3c-4.5-.8-8.9-1.5-13.4-2.3l-2.7-.3c-1.8-.4-3.6-.7-5.3-1.1-.9-.2-1.8-.4-2.7-.5-3.1-.7-6.2-1.5-9.3-2.2-.9-.1-1.8-.2-2.7-.4-6.6 4.1-1.9 9.2-1.3 14 1.2 13.6 1.3 27.5 3.9 40.8 3.6 18.4 9.2 36.5 14 54.7 1.2 4.7-1.1 7-5.1 7.3-2.9.2-6.4-.2-8.8-1.7-14.2-8.5-26-19.7-35.3-33.6-2.3-3.4-5.9-5.9-8.6-9q-19.05-21.9-37.8-44.1c-6.3-7.4-12.4-15.1-18.6-22.6-3.8-8.3-11.6-8.4-19-9.4 2.7-.9 5.4-1.5 7.9-1.5-2.5-.1-5.2.5-7.9 1.5l-8.1-.3c-4-.3-8-.7-12-1-.9 0-1.8-.1-2.7-.1-9 .4-17.9.8-26.9 1.2l-2.7.3c-4.5.8-8.9 1.6-13.4 2.4-.9.1-1.8.3-2.7.4-.9.3-1.8.5-2.7.8-.9.2-1.8.3-2.7.5-2.7.6-5.4 1.3-8 1.9-.9.2-1.8.4-2.7.7-3.1 0-6.1.1-9.2.1-.6-3.4-1.9-7-1.5-10.3 2.5-20.6 3.8-41.5 8.9-61.4 3.4-13.2 12.3-25.1 19.1-37.3 14.5-25.8 33.8-47.8 55.6-67.5 18.6-16.7 41.1-26.8 65.7-31.3 12.5-2.3 25.2-2.9 37.9-4 19.5-1.7 38.2 1.5 56.5 8.4 18.2 6.8 36.6 13 54.7 19.9 6 2.3 11.3 6.5 17.4 8.3 13.2 3.9 26.6 8.6 40.1 9.7 11 .9 22.3-3.2 33.6-4.7 24.6-3.4 47.5-12.5 69.5-23.3 13.6-6.6 26.2-15.2 39.3-23 2.2-1.3 4.5-2.7 6.7-4.1.6.3 1.3.5 1.9.8-.6 3-.5 6.3-1.8 8.8-9.6 18.4-18.4 37.3-29.6 54.6-9.8 15.1-22.2 28.5-33.8 42.3-8.9 10.6-18.3 20.7-28 30.7-4.1 4.2-9.2 7.6-14.2 11-4.6 3.1-6.4 6.4-3.5 11.8 2 3.7 3.1 7.9 5.1 11.6 2.4 4.5 4.9 9.1 8.1 13 16.1 19.3 33.1 38 48.7 57.8 19.5 24.7 34.7 52.3 49.2 80.1.7 2.2 1.4 4.7 3.1 9.1m-404.5-145c0-2.7-.8-5.2-2.3-7.3-1-1.4-2.2-2.6-3.6-3.5-.4-.2-.7-.5-1.1-.7-1.1-.6-2.3-1-3.6-1.3-.9-.2-1.7-.2-2.6-.2-5.1.1-10 3-12.9 7.1-1.7 2.4-2.7 5.3-2.7 8.2 0 1.2.3 2.4.7 3.5.3.7.6 1.4 1.1 2.1q.9 1.5 2.4 2.7c.6.5 1.3 1 2 1.4 2.2 1.3 4.8 2 7.5 2 6.3 0 12.3-4.5 14.3-10 .5-1.3.8-2.6.8-4"/></svg> <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M508.4 400.3c-14.5-27.9-29.7-55.4-49.2-80.1-15.6-19.8-32.6-38.4-48.7-57.8-3.2-3.9-5.7-8.5-8.1-13-2-3.7-3.1-7.9-5.1-11.6-2.9-5.3-1-8.7 3.5-11.8 4.9-3.4 10-6.7 14.2-11 9.6-9.9 19.1-20.1 28-30.7 11.7-13.8 24.1-27.2 33.8-42.3 11.2-17.3 20-36.3 29.6-54.6 1.3-2.6 1.2-5.9 1.8-8.8-.6-.3-1.3-.5-1.9-.8-2.2 1.4-4.4 2.8-6.7 4.1-13.1 7.7-25.7 16.3-39.3 23-22.1 10.8-44.9 19.9-69.5 23.3-11.2 1.6-22.6 5.6-33.6 4.7-13.6-1.1-26.9-5.8-40.1-9.7-6.1-1.8-11.4-6.1-17.4-8.3-18.1-6.9-36.5-13.1-54.7-19.9-18.3-6.8-37-10.1-56.5-8.4-12.6 1.1-25.4 1.8-37.9 4-24.6 4.5-47.2 14.6-65.7 31.3-21.8 19.6-41.2 41.6-55.6 67.5-6.9 12.2-15.7 24.1-19.1 37.3-5.1 19.9-6.3 40.9-8.9 61.4-.4 3.3 1 6.9 1.5 10.3 3.1 0 6.1-.1 9.2-.1.9-.2 1.8-.4 2.7-.7 2.7-.6 5.4-1.3 8-1.9.9-.2 1.8-.3 2.7-.5.9-.3 1.8-.5 2.7-.8.9-.1 1.8-.3 2.7-.4 4.5-.8 8.9-1.6 13.4-2.4l2.7-.3c9-.4 17.9-.8 26.9-1.2.9 0 1.8.1 2.7.1 4 .3 8 .7 12 1l8.1.3c3.6-1.2 7.1-1.9 10.4-1.1-3.2-.7-6.7-.1-10.4 1.1 7.4 1 15.2 1 19 9.4 6.2 7.6 12.3 15.2 18.6 22.6 12.5 14.8 25.1 29.4 37.8 44.1 2.7 3.1 6.4 5.6 8.6 9 9.2 13.9 21 25.1 35.3 33.6 2.4 1.5 5.9 1.9 8.8 1.7 4-.3 6.4-2.7 5.1-7.3-4.8-18.2-10.3-36.2-14-54.7-2.6-13.3-2.7-27.2-3.9-40.8-.7-4.8-5.4-9.9 1.3-14 .9.1 1.8.2 2.7.4 3.1.7 6.2 1.5 9.3 2.2.9.2 1.8.4 2.7.5 1.8.4 3.6.7 5.3 1.1l2.7.3c4.5.8 8.9 1.5 13.4 2.3l2.7.3 12 2.4 2.7.3c20.1 4.3 40.2 8.6 60.3 12.8l2.7.6c2.2.7 4.5 1.4 6.7 2.1l2.7.6c2.7.8 5.3 1.7 8 2.5 1.8.5 3.6 1.1 5.4 1.6l2.7 1.2c.7.2 1.3.3 2 .5 1.1.7 2.3 1.4 3.4 2.1 10.5 6.4 20.9 12.9 31.4 19.2 1.9 1.1 4.1 1.7 6.2 2.4 5.8 2.1 12 3.5 17.3 6.5 28.7 15.9 57.2 32.3 85.8 48.4 2.5 1.4 5.5 2.2 10.2 4-1.2-4.3-1.9-6.8-3.1-9.1m-416-121.8c-7.4 0-13.5-5.2-13.7-11.7-.2-7.7 7.3-15.1 15.5-15.2 7.1-.1 13.3 5.9 13.2 13 .1 7.1-7.2 13.9-15 13.9M380 355.9c5.9 5.7 5.5 10.6-1.6 14.4-16.7 8.9-33.4 17.9-50.6 25.6-16.6 7.5-33.7 14.2-50.9 20.3-28.8 10.2-57.9 19.4-89.1 17.8-15.8-.8-31.7-.6-47.2-3-10.6-1.6-21.1-5.9-30.9-10.5-20.9-9.8-42.9-17.8-61.6-32.1-22-16.8-38.7-37.4-47.2-64.1-2.3-7-.7-10.2 6.4-11.8 23-5.1 45.7-12.1 69.8-10 9.9.9 19.9 1.1 29.8 1.2.2.3.4.6.5.9l.5 1.1.7.9c1.3 1.6 2.7 3.3 4 4.9 4.8 5.9 9.7 12 14.7 17.8 12.2 14.5 24.4 28.6 37.9 44.2 1.4 1.6 2.9 3 4.2 4.2 1.5 1.4 2.9 2.7 3.6 3.8 9.9 14.9 22.7 27.1 38.1 36.3 5 3.1 11 3.2 14.1 3 4.9-.4 8.9-2.5 11.4-6 2.4-3.5 3.1-8 1.8-12.6-1.4-5.1-2.8-10.3-4.2-15.3-3.5-12.7-7.1-25.8-9.7-38.8-1.7-8.7-2.3-17.6-2.9-27.1-.3-4.2-.5-8.4-.9-12.7 5.9.2 11.6 1.7 17.4 3.3 10 2.7 20.6 3.4 30.8 5.6 18.2 3.9 36.6 7.3 54.4 12.6 15.1 4.4 29.6 10.9 44.1 17.1 4.8 2 8.9 5.5 12.6 9"/></svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M212.2 309.2c9-2.1 17.4.1 26.1 2.5 10 2.7 20.6 3.4 30.8 5.6 18.2 3.9 36.6 7.3 54.4 12.6 15.1 4.4 29.6 10.9 44.1 17.1 4.6 1.9 8.7 5.4 12.4 8.9 5.9 5.7 5.5 10.6-1.6 14.4-16.7 8.9-33.4 17.9-50.6 25.6-16.6 7.5-33.7 14.2-50.9 20.3-28.8 10.2-57.9 19.4-89.1 17.8-15.8-.8-31.7-.6-47.2-3-10.6-1.6-21.1-5.9-30.9-10.5-20.9-9.8-42.9-17.8-61.6-32.1-22-16.8-38.7-37.4-47.2-64.1-2.3-7-.7-10.2 6.4-11.8 23-5.1 45.7-12.1 69.8-10 10.9 1 21.8 1.1 32.7 1.2 2 0 3.9-1.7 5.9-2.7 6.2 7.6 12.3 15.2 18.6 22.6 12.5 14.8 25.1 29.4 37.8 44.1 2.7 3.1 6.4 5.6 8.6 9 9.2 13.9 21 25.1 35.3 33.6 2.4 1.5 5.9 1.9 8.8 1.7 4-.3 6.4-2.7 5.1-7.3-4.8-18.2-10.3-36.2-14-54.7-2.5-13.3-2.5-27.1-3.7-40.8M512 409.5c-4.7-1.8-7.7-2.5-10.2-4-28.6-16.1-57.1-32.4-85.8-48.4-5.3-3-11.5-4.4-17.3-6.5-2.1-.8-4.3-1.3-6.2-2.4-10.5-6.3-21-12.8-31.4-19.2-1.1-.7-2.3-1.4-3.4-2.1-.7-.2-1.3-.3-2-.5l-2.7-1.2c-1.8-.5-3.6-1.1-5.4-1.6-2.7-.8-5.3-1.7-8-2.5l-2.7-.6c-2.2-.7-4.5-1.4-6.7-2.1.4-.3.8-.5 1.1-.7-.4.2-.7.4-1.1.7l-2.7-.6c-20.1-4.3-40.2-8.6-60.3-12.8l-2.7-.3-12-2.4-2.7-.3c-4.5-.8-8.9-1.5-13.4-2.3l-2.7-.3c-1.8-.4-3.6-.7-5.3-1.1-.9-.2-1.8-.4-2.7-.5-3.1-.7-6.2-1.5-9.3-2.2-.9-.1-1.8-.2-2.7-.4-6.6 4.1-1.9 9.2-1.3 14 1.2 13.6 1.3 27.5 3.9 40.8 3.6 18.4 9.2 36.5 14 54.7 1.2 4.7-1.1 7-5.1 7.3-2.9.2-6.4-.2-8.8-1.7-14.2-8.5-26-19.7-35.3-33.6-2.3-3.4-5.9-5.9-8.6-9q-19.05-21.9-37.8-44.1c-6.3-7.4-12.4-15.1-18.6-22.6-3.8-8.3-11.6-8.4-19-9.4 2.7-.9 5.4-1.5 7.9-1.5-2.5-.1-5.2.5-7.9 1.5l-8.1-.3c-4-.3-8-.7-12-1-.9 0-1.8-.1-2.7-.1-9 .4-17.9.8-26.9 1.2l-2.7.3c-4.5.8-8.9 1.6-13.4 2.4-.9.1-1.8.3-2.7.4-.9.3-1.8.5-2.7.8-.9.2-1.8.3-2.7.5-2.7.6-5.4 1.3-8 1.9-.9.2-1.8.4-2.7.7-3.1 0-6.1.1-9.2.1-.6-3.4-1.9-7-1.5-10.3 2.5-20.6 3.8-41.5 8.9-61.4 3.4-13.2 12.3-25.1 19.1-37.3 14.5-25.8 33.8-47.8 55.6-67.5 18.6-16.7 41.1-26.8 65.7-31.3 12.5-2.3 25.2-2.9 37.9-4 19.5-1.7 38.2 1.5 56.5 8.4 18.2 6.8 36.6 13 54.7 19.9 6 2.3 11.3 6.5 17.4 8.3 13.2 3.9 26.6 8.6 40.1 9.7 11 .9 22.3-3.2 33.6-4.7 24.6-3.4 47.5-12.5 69.5-23.3 13.6-6.6 26.2-15.2 39.3-23 2.2-1.3 4.5-2.7 6.7-4.1.6.3 1.3.5 1.9.8-.6 3-.5 6.3-1.8 8.8-9.6 18.4-18.4 37.3-29.6 54.6-9.8 15.1-22.2 28.5-33.8 42.3-8.9 10.6-18.3 20.7-28 30.7-4.1 4.2-9.2 7.6-14.2 11-4.6 3.1-6.4 6.4-3.5 11.8 2 3.7 3.1 7.9 5.1 11.6 2.4 4.5 4.9 9.1 8.1 13 16.1 19.3 33.1 38 48.7 57.8 19.5 24.7 34.7 52.3 49.2 80.1.7 2.2 1.4 4.7 3.1 9.1m-404.5-145c0-2.7-.8-5.2-2.3-7.3-1-1.4-2.2-2.6-3.6-3.5-.4-.2-.7-.5-1.1-.7-1.1-.6-2.3-1-3.6-1.3-.9-.2-1.7-.2-2.6-.2-5.1.1-10 3-12.9 7.1-1.7 2.4-2.7 5.3-2.7 8.2 0 1.2.3 2.4.7 3.5.3.7.6 1.4 1.1 2.1q.9 1.5 2.4 2.7c.6.5 1.3 1 2 1.4 2.2 1.3 4.8 2 7.5 2 6.3 0 12.3-4.5 14.3-10 .5-1.3.8-2.6.8-4" style="fill:#fff"/></svg> <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M508.4 400.3c-14.5-27.9-29.7-55.4-49.2-80.1-15.6-19.8-32.6-38.4-48.7-57.8-3.2-3.9-5.7-8.5-8.1-13-2-3.7-3.1-7.9-5.1-11.6-2.9-5.3-1-8.7 3.5-11.8 4.9-3.4 10-6.7 14.2-11 9.6-9.9 19.1-20.1 28-30.7 11.7-13.8 24.1-27.2 33.8-42.3 11.2-17.3 20-36.3 29.6-54.6 1.3-2.6 1.2-5.9 1.8-8.8-.6-.3-1.3-.5-1.9-.8-2.2 1.4-4.4 2.8-6.7 4.1-13.1 7.7-25.7 16.3-39.3 23-22.1 10.8-44.9 19.9-69.5 23.3-11.2 1.6-22.6 5.6-33.6 4.7-13.6-1.1-26.9-5.8-40.1-9.7-6.1-1.8-11.4-6.1-17.4-8.3-18.1-6.9-36.5-13.1-54.7-19.9-18.3-6.8-37-10.1-56.5-8.4-12.6 1.1-25.4 1.8-37.9 4-24.6 4.5-47.2 14.6-65.7 31.3-21.8 19.6-41.2 41.6-55.6 67.5-6.9 12.2-15.7 24.1-19.1 37.3-5.1 19.9-6.3 40.9-8.9 61.4-.4 3.3 1 6.9 1.5 10.3 3.1 0 6.1-.1 9.2-.1.9-.2 1.8-.4 2.7-.7 2.7-.6 5.4-1.3 8-1.9.9-.2 1.8-.3 2.7-.5.9-.3 1.8-.5 2.7-.8.9-.1 1.8-.3 2.7-.4 4.5-.8 8.9-1.6 13.4-2.4l2.7-.3c9-.4 17.9-.8 26.9-1.2.9 0 1.8.1 2.7.1 4 .3 8 .7 12 1l8.1.3c3.6-1.2 7.1-1.9 10.4-1.1-3.2-.7-6.7-.1-10.4 1.1 7.4 1 15.2 1 19 9.4 6.2 7.6 12.3 15.2 18.6 22.6 12.5 14.8 25.1 29.4 37.8 44.1 2.7 3.1 6.4 5.6 8.6 9 9.2 13.9 21 25.1 35.3 33.6 2.4 1.5 5.9 1.9 8.8 1.7 4-.3 6.4-2.7 5.1-7.3-4.8-18.2-10.3-36.2-14-54.7-2.6-13.3-2.7-27.2-3.9-40.8-.7-4.8-5.4-9.9 1.3-14 .9.1 1.8.2 2.7.4 3.1.7 6.2 1.5 9.3 2.2.9.2 1.8.4 2.7.5 1.8.4 3.6.7 5.3 1.1l2.7.3c4.5.8 8.9 1.5 13.4 2.3l2.7.3 12 2.4 2.7.3c20.1 4.3 40.2 8.6 60.3 12.8l2.7.6c2.2.7 4.5 1.4 6.7 2.1l2.7.6c2.7.8 5.3 1.7 8 2.5 1.8.5 3.6 1.1 5.4 1.6l2.7 1.2c.7.2 1.3.3 2 .5 1.1.7 2.3 1.4 3.4 2.1 10.5 6.4 20.9 12.9 31.4 19.2 1.9 1.1 4.1 1.7 6.2 2.4 5.8 2.1 12 3.5 17.3 6.5 28.7 15.9 57.2 32.3 85.8 48.4 2.5 1.4 5.5 2.2 10.2 4-1.2-4.3-1.9-6.8-3.1-9.1m-416-121.8c-7.4 0-13.5-5.2-13.7-11.7-.2-7.7 7.3-15.1 15.5-15.2 7.1-.1 13.3 5.9 13.2 13 .1 7.1-7.2 13.9-15 13.9M380 355.9c5.9 5.7 5.5 10.6-1.6 14.4-16.7 8.9-33.4 17.9-50.6 25.6-16.6 7.5-33.7 14.2-50.9 20.3-28.8 10.2-57.9 19.4-89.1 17.8-15.8-.8-31.7-.6-47.2-3-10.6-1.6-21.1-5.9-30.9-10.5-20.9-9.8-42.9-17.8-61.6-32.1-22-16.8-38.7-37.4-47.2-64.1-2.3-7-.7-10.2 6.4-11.8 23-5.1 45.7-12.1 69.8-10 9.9.9 19.9 1.1 29.8 1.2.2.3.4.6.5.9l.5 1.1.7.9c1.3 1.6 2.7 3.3 4 4.9 4.8 5.9 9.7 12 14.7 17.8 12.2 14.5 24.4 28.6 37.9 44.2 1.4 1.6 2.9 3 4.2 4.2 1.5 1.4 2.9 2.7 3.6 3.8 9.9 14.9 22.7 27.1 38.1 36.3 5 3.1 11 3.2 14.1 3 4.9-.4 8.9-2.5 11.4-6 2.4-3.5 3.1-8 1.8-12.6-1.4-5.1-2.8-10.3-4.2-15.3-3.5-12.7-7.1-25.8-9.7-38.8-1.7-8.7-2.3-17.6-2.9-27.1-.3-4.2-.5-8.4-.9-12.7 5.9.2 11.6 1.7 17.4 3.3 10 2.7 20.6 3.4 30.8 5.6 18.2 3.9 36.6 7.3 54.4 12.6 15.1 4.4 29.6 10.9 44.1 17.1 4.8 2 8.9 5.5 12.6 9" style="fill:#fff"/></svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB