Merge branch 'webv2' into fix/ImplementPasswordRules

This commit is contained in:
Jambaldorj Ochirpurev 2023-01-29 11:31:36 +01:00 committed by GitHub
commit dd936b6605
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
519 changed files with 6047 additions and 3281 deletions

View File

@ -11,7 +11,7 @@ jobs:
issues: write
steps:
- name: Add comment
uses: peter-evans/create-or-update-comment@66af80548887a02b37dfc2ddd9531512ee489557
uses: peter-evans/create-or-update-comment@e0e8aa00752bbac08c4393c1f7834e6ee753c159
with:
issue-number: ${{ github.event.issue.number }}
body: |

View File

@ -3,7 +3,7 @@ on:
push:
branches:
- webv2
paths: ['web/stories/**', 'web/components/**'] # Trigger the action only when files change in the folders defined here
paths: ['web/stories/**', 'web/components/**', 'web/.storybook/**'] # Trigger the action only when files change in the folders defined here
jobs:
build-and-deploy:
@ -20,8 +20,22 @@ jobs:
run: | # Install npm packages and build the Storybook files
cd web
npm install --include-dev --force
cd .storybook/tools
./generate-stories.sh
cd -
npm run build-storybook -- -o ../docs/components
- name: Commit changes
uses: EndBug/add-and-commit@v9
with:
author_name: Owncast
author_email: owncast@owncast.online
message: 'Commit updated Storybook stories'
add: '*.stories.*'
pull: '--rebase --autostash'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Dispatch event to web site
uses: peter-evans/repository-dispatch@v2
with:

View File

@ -51,6 +51,10 @@ jobs:
EARTHLY_PUSH: true
run: ./build/develop/container.sh
- name: Build
if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }}
run: ./build/develop/container.sh
- name: Build and push
if: ${{ github.event_name == 'schedule' && env.GH_CR_PAT != null }}
uses: nick-fields/retry@v2
with:
timeout_minutes: 10
max_attempts: 3
command: ./build/develop/container.sh

View File

@ -28,5 +28,10 @@ jobs:
- uses: actions/setup-go@v3
with:
go-version: '1.18.8'
- name: Run HLS tests
run: cd test/automated/hls && ./run.sh
uses: nick-fields/retry@v2
with:
timeout_minutes: 10
max_attempts: 3
command: cd test/automated/hls && ./run.sh

View File

@ -77,7 +77,6 @@ build:
RUN go build -a -installsuffix cgo -ldflags "$([ "$GOOS"z != darwinz ] && echo "-linkmode external -extldflags -static ") -s -w -X github.com/owncast/owncast/config.GitCommit=$EARTHLY_GIT_HASH -X github.com/owncast/owncast/config.VersionNumber=$version -X github.com/owncast/owncast/config.BuildPlatform=$NAME" -tags sqlite_omit_load_extension -o owncast main.go
SAVE ARTIFACT owncast owncast
SAVE ARTIFACT README.md README.md
package:
RUN apk add --update --no-cache zip >> /dev/null
@ -98,14 +97,14 @@ package:
END
COPY (+build/owncast --platform $TARGETPLATFORM) /build/dist/owncast
COPY (+build/README.md --platform $TARGETPLATFORM) /build/dist/README.md
ENV ZIPNAME owncast-$version-$NAME.zip
RUN cd /build/dist && zip -r -q -8 /build/dist/owncast.zip .
SAVE ARTIFACT /build/dist/owncast.zip owncast.zip AS LOCAL dist/$ZIPNAME
docker:
ARG image=ghcr.io/owncast/owncast
ARG tag=develop
# Multiple image names can be tagged at once. They should all be passed
# in as space separated strings using the full account/repo:tag format.
# https://github.com/earthly/earthly/blob/aea38448fa9c0064b1b70d61be717ae740689fb9/docs/earthfile/earthfile.md#assigning-multiple-image-names
ARG TARGETPLATFORM
FROM --platform=$TARGETPLATFORM alpine:3.15.5
RUN apk update && apk add --no-cache ffmpeg ffmpeg-libs ca-certificates unzip && update-ca-certificates
@ -120,11 +119,25 @@ docker:
ENTRYPOINT ["/app/owncast"]
EXPOSE 8080 1935
SAVE IMAGE --push $image:$tag
ARG images=ghcr.io/owncast/owncast:testing
RUN echo "Saving images: ${images}"
# Tag this image with the list of names
# passed along.
FOR --no-cache i IN ${images}
SAVE IMAGE --push "${i}"
END
dockerfile:
FROM DOCKERFILE -f Dockerfile .
testing:
ARG images
FOR i IN ${images}
RUN echo "Testing ${i}"
END
unit-tests:
FROM --platform=linux/amd64 bdwyertech/go-crosscompile
COPY . /build
@ -138,3 +151,11 @@ api-tests:
WORKDIR /build/test/automated/api
RUN npm install
RUN ./run.sh
hls-tests:
FROM --platform=linux/amd64 bdwyertech/go-crosscompile
RUN apk add npm font-noto && fc-cache -f
COPY . /build
WORKDIR /build/test/automated/hls
RUN npm install
RUN ./run.sh

View File

@ -80,7 +80,11 @@ Owncast consists of two projects.
1. The Owncast backend written in Go.
1. The frontend written in React.
[Read more about running from source](https://owncast.online/docs/building/).
[Read more about running from source](https://owncast.online/development/).
### Important note about source code and the develop branch
The `develop` branch is always the most up-to-date state of development and this may not be what you always want. If you want to run the latest released stable version, check out the tag related to that release. For example, if you'd only like the source prior to the v0.1.0 development cycle you can check out the `v0.0.13` tag.
### Backend

View File

@ -4,24 +4,21 @@ set -e
# Development container builder
#
# Must authenticate first: https://docs.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages
# env vars:
# env vars:
# $EARTHLY_BUILD_BRANCH: git branch to checkout
# $EARTHLY_BUILD_TAG: tag for container image
EARTHLY_IMAGE_NAME="owncast"
BUILD_TAG=${EARTHLY_BUILD_TAG:-webv2}
DATE=$(date +"%Y%m%d")
VERSION="${DATE}-${BUILD_TAG}"
echo "Building container image ${EARTHLY_IMAGE_NAME}:${BUILD_TAG} ..."
# Change to the root directory of the repository
cd "$(git rev-parse --show-toplevel)" || exit
if [ -n "${EARTHLY_BUILD_BRANCH}" ]; then
git checkout "${EARTHLY_BUILD_BRANCH}" || exit
git checkout "${EARTHLY_BUILD_BRANCH}" || exit
fi
earthly --ci +docker-all --image="ghcr.io/owncast/${EARTHLY_IMAGE_NAME}" --tag="${BUILD_TAG}" --version="${VERSION}"
earthly --ci +dockerfile
earthly --ci +docker-all --images="ghcr.io/owncast/${EARTHLY_IMAGE_NAME}:${BUILD_TAG}" --version="${VERSION}"

View File

@ -27,4 +27,7 @@ var (
// CustomEmojiPath is the emoji directory.
CustomEmojiPath = filepath.Join(DataDirectory, "emoji")
// PublicFilesPath is the optional directory for hosting public files.
PublicFilesPath = filepath.Join(DataDirectory, "public")
)

View File

@ -63,7 +63,7 @@ func GetDefaults() Defaults {
<hr/>
<video id="video" controls preload="metadata" width="40%" poster="https://videos.owncast.online/t/xaJ3xNn9Y6pWTdB25m9ai3">
<video id="video" controls preload="metadata" style="width: 60vw; max-width: 600px; min-width: 200px;" poster="https://videos.owncast.online/t/xaJ3xNn9Y6pWTdB25m9ai3">
<source src="https://assets.owncast.tv/video/owncast-embed.mp4" type="video/mp4" />
</video>
`,

View File

@ -650,6 +650,22 @@ func SetCustomStyles(w http.ResponseWriter, r *http.Request) {
controllers.WriteSimpleResponse(w, true, "custom styles updated")
}
// SetCustomJavascript will set the Javascript string we insert into the page.
func SetCustomJavascript(w http.ResponseWriter, r *http.Request) {
customJavascript, success := getValueFromRequest(w, r)
if !success {
controllers.WriteSimpleResponse(w, false, "unable to update custom javascript")
return
}
if err := data.SetCustomJavascript(customJavascript.Value.(string)); err != nil {
controllers.WriteSimpleResponse(w, false, err.Error())
return
}
controllers.WriteSimpleResponse(w, true, "custom styles updated")
}
// SetForbiddenUsernameList will set the list of usernames we do not allow to use.
func SetForbiddenUsernameList(w http.ResponseWriter, r *http.Request) {
type forbiddenUsernameListRequest struct {

View File

@ -58,28 +58,3 @@ func SetBrowserNotificationConfiguration(w http.ResponseWriter, r *http.Request)
controllers.WriteSimpleResponse(w, true, "updated browser push config with provided values")
}
// SetTwitterConfiguration will set the browser notification configuration.
func SetTwitterConfiguration(w http.ResponseWriter, r *http.Request) {
if !requirePOST(w, r) {
return
}
type request struct {
Value models.TwitterConfiguration `json:"value"`
}
decoder := json.NewDecoder(r.Body)
var config request
if err := decoder.Decode(&config); err != nil {
controllers.WriteSimpleResponse(w, false, "unable to update twitter config with provided values")
return
}
if err := data.SetTwitterConfiguration(config.Value); err != nil {
controllers.WriteSimpleResponse(w, false, "unable to update twitter config with provided values")
return
}
controllers.WriteSimpleResponse(w, true, "updated twitter config with provided values")
}

View File

@ -46,6 +46,7 @@ func GetServerConfig(w http.ResponseWriter, r *http.Request) {
SocialHandles: data.GetSocialHandles(),
NSFW: data.GetNSFW(),
CustomStyles: data.GetCustomStyles(),
CustomJavascript: data.GetCustomJavascript(),
AppearanceVariables: data.GetCustomColorVariableValues(),
},
FFmpegPath: ffmpeg,
@ -84,7 +85,6 @@ func GetServerConfig(w http.ResponseWriter, r *http.Request) {
Notifications: notificationsConfigResponse{
Discord: data.GetDiscordConfig(),
Browser: data.GetBrowserPushConfig(),
Twitter: data.GetTwitterConfiguration(),
},
}
@ -139,6 +139,7 @@ type webConfigResponse struct {
StreamTitle string `json:"streamTitle"` // What's going on with the current stream
SocialHandles []models.SocialHandle `json:"socialHandles"`
CustomStyles string `json:"customStyles"`
CustomJavascript string `json:"customJavascript"`
AppearanceVariables map[string]string `json:"appearanceVariables"`
}
@ -160,5 +161,4 @@ type federationConfigResponse struct {
type notificationsConfigResponse struct {
Browser models.BrowserNotificationConfiguration `json:"browser"`
Discord models.DiscordConfiguration `json:"discord"`
Twitter models.TwitterConfiguration `json:"twitter"`
}

View File

@ -0,0 +1,13 @@
package controllers
import (
"net/http"
"github.com/owncast/owncast/core/data"
)
// ServeCustomJavascript will serve optional custom Javascript.
func ServeCustomJavascript(w http.ResponseWriter, r *http.Request) {
js := data.GetCustomJavascript()
_, _ = w.Write([]byte(js))
}

View File

@ -102,7 +102,7 @@ func transitionToOfflineVideoStreamContent() {
_transcoder.SetLatencyLevel(models.GetLatencyLevel(4))
_transcoder.SetIsEvent(true)
offlineFilePath, err := saveOfflineClipToDisk("offline.ts")
offlineFilePath, err := saveOfflineClipToDisk("offline.tsclip")
if err != nil {
log.Fatalln("unable to save offline clip:", err)
}

View File

@ -44,6 +44,7 @@ const (
chatDisabledKey = "chat_disabled"
externalActionsKey = "external_actions"
customStylesKey = "custom_styles"
customJavascriptKey = "custom_javascript"
videoCodecKey = "video_codec"
blockedUsernamesKey = "blocked_usernames"
publicKeyKey = "public_key"
@ -63,7 +64,6 @@ const (
browserPushConfigurationKey = "browser_push_configuration"
browserPushPublicKeyKey = "browser_push_public_key"
browserPushPrivateKeyKey = "browser_push_private_key"
twitterConfigurationKey = "twitter_configuration"
hasConfiguredInitialNotificationsKey = "has_configured_initial_notifications"
hideViewerCountKey = "hide_viewer_count"
customOfflineMessageKey = "custom_offline_message"
@ -561,6 +561,21 @@ func GetCustomStyles() string {
return style
}
// SetCustomJavascript will save a string with Javascript to insert into the page.
func SetCustomJavascript(styles string) error {
return _datastore.SetString(customJavascriptKey, styles)
}
// GetCustomJavascript will return a string with Javascript to insert into the page.
func GetCustomJavascript() string {
style, err := _datastore.GetString(customJavascriptKey)
if err != nil {
return ""
}
return style
}
// SetVideoCodec will set the codec used for video encoding.
func SetVideoCodec(codec string) error {
return _datastore.SetString(videoCodecKey, codec)
@ -880,27 +895,6 @@ func GetBrowserPushPrivateKey() (string, error) {
return _datastore.GetString(browserPushPrivateKeyKey)
}
// SetTwitterConfiguration will set the Twitter configuration.
func SetTwitterConfiguration(config models.TwitterConfiguration) error {
configEntry := ConfigEntry{Key: twitterConfigurationKey, Value: config}
return _datastore.Save(configEntry)
}
// GetTwitterConfiguration will return the Twitter configuration.
func GetTwitterConfiguration() models.TwitterConfiguration {
configEntry, err := _datastore.Get(twitterConfigurationKey)
if err != nil {
return models.TwitterConfiguration{Enabled: false}
}
var config models.TwitterConfiguration
if err := configEntry.getObject(&config); err != nil {
return models.TwitterConfiguration{Enabled: false}
}
return config
}
// SetHasPerformedInitialNotificationsConfig sets when performed initial setup.
func SetHasPerformedInitialNotificationsConfig(hasConfigured bool) error {
return _datastore.SetBool(hasConfiguredInitialNotificationsKey, true)

View File

@ -92,7 +92,7 @@ func SetStreamAsDisconnected() {
_stats.LastConnectTime = nil
_broadcaster = nil
offlineFilename := "offline.ts"
offlineFilename := "offline.tsclip"
offlineFilePath, err := saveOfflineClipToDisk(offlineFilename)
if err != nil {

View File

@ -31,8 +31,7 @@ var supportedCodecs = map[string]string{
}
// Libx264Codec represents an instance of the Libx264 Codec.
type Libx264Codec struct {
}
type Libx264Codec struct{}
// Name returns the codec name.
func (c *Libx264Codec) Name() string {
@ -77,24 +76,26 @@ func (c *Libx264Codec) VariantFlags(v *HLSVariant) string {
// GetPresetForLevel returns the string preset for this codec given an integer level.
func (c *Libx264Codec) GetPresetForLevel(l int) string {
presetMapping := []string{
"ultrafast",
"superfast",
"veryfast",
"faster",
"fast",
presetMapping := map[int]string{
0: "ultrafast",
1: "superfast",
2: "veryfast",
3: "faster",
4: "fast",
}
if l >= len(presetMapping) {
return "superfast" //nolint:goconst
preset, ok := presetMapping[l]
if !ok {
defaultPreset := presetMapping[1]
log.Errorf("Invalid level for x264 preset %d, defaulting to %s", l, defaultPreset)
return defaultPreset
}
return presetMapping[l]
return preset
}
// OmxCodec represents an instance of the Omx codec.
type OmxCodec struct {
}
type OmxCodec struct{}
// Name returns the codec name.
func (c *OmxCodec) Name() string {
@ -135,24 +136,26 @@ func (c *OmxCodec) VariantFlags(v *HLSVariant) string {
// GetPresetForLevel returns the string preset for this codec given an integer level.
func (c *OmxCodec) GetPresetForLevel(l int) string {
presetMapping := []string{
"ultrafast",
"superfast",
"veryfast",
"faster",
"fast",
presetMapping := map[int]string{
0: "ultrafast",
1: "superfast",
2: "veryfast",
3: "faster",
4: "fast",
}
if l >= len(presetMapping) {
return "superfast"
preset, ok := presetMapping[l]
if !ok {
defaultPreset := presetMapping[1]
log.Errorf("Invalid level for omx preset %d, defaulting to %s", l, defaultPreset)
return defaultPreset
}
return presetMapping[l]
return preset
}
// VaapiCodec represents an instance of the Vaapi codec.
type VaapiCodec struct {
}
type VaapiCodec struct{}
// Name returns the codec name.
func (c *VaapiCodec) Name() string {
@ -195,24 +198,26 @@ func (c *VaapiCodec) VariantFlags(v *HLSVariant) string {
// GetPresetForLevel returns the string preset for this codec given an integer level.
func (c *VaapiCodec) GetPresetForLevel(l int) string {
presetMapping := []string{
"ultrafast",
"superfast",
"veryfast",
"faster",
"fast",
presetMapping := map[int]string{
0: "ultrafast",
1: "superfast",
2: "veryfast",
3: "faster",
4: "fast",
}
if l >= len(presetMapping) {
return "superfast"
preset, ok := presetMapping[l]
if !ok {
defaultPreset := presetMapping[1]
log.Errorf("Invalid level for vaapi preset %d, defaulting to %s", l, defaultPreset)
return defaultPreset
}
return presetMapping[l]
return preset
}
// NvencCodec represents an instance of the Nvenc Codec.
type NvencCodec struct {
}
type NvencCodec struct{}
// Name returns the codec name.
func (c *NvencCodec) Name() string {
@ -256,24 +261,26 @@ func (c *NvencCodec) VariantFlags(v *HLSVariant) string {
// GetPresetForLevel returns the string preset for this codec given an integer level.
func (c *NvencCodec) GetPresetForLevel(l int) string {
presetMapping := []string{
"p1",
"p2",
"p3",
"p4",
"p5",
presetMapping := map[int]string{
0: "p1",
1: "p2",
2: "p3",
3: "p4",
4: "p5",
}
if l >= len(presetMapping) {
return "p3"
preset, ok := presetMapping[l]
if !ok {
defaultPreset := presetMapping[2]
log.Errorf("Invalid level for nvenc preset %d, defaulting to %s", l, defaultPreset)
return defaultPreset
}
return presetMapping[l]
return preset
}
// QuicksyncCodec represents an instance of the Intel Quicksync Codec.
type QuicksyncCodec struct {
}
type QuicksyncCodec struct{}
// Name returns the codec name.
func (c *QuicksyncCodec) Name() string {
@ -312,19 +319,22 @@ func (c *QuicksyncCodec) VariantFlags(v *HLSVariant) string {
// GetPresetForLevel returns the string preset for this codec given an integer level.
func (c *QuicksyncCodec) GetPresetForLevel(l int) string {
presetMapping := []string{
"ultrafast",
"superfast",
"veryfast",
"faster",
"fast",
presetMapping := map[int]string{
0: "ultrafast",
1: "superfast",
2: "veryfast",
3: "faster",
4: "fast",
}
if l >= len(presetMapping) {
return "superfast"
preset, ok := presetMapping[l]
if !ok {
defaultPreset := presetMapping[1]
log.Errorf("Invalid level for quicksync preset %d, defaulting to %s", l, defaultPreset)
return defaultPreset
}
return presetMapping[l]
return preset
}
// Video4Linux represents an instance of the V4L Codec.
@ -367,24 +377,25 @@ func (c *Video4Linux) VariantFlags(v *HLSVariant) string {
// GetPresetForLevel returns the string preset for this codec given an integer level.
func (c *Video4Linux) GetPresetForLevel(l int) string {
presetMapping := []string{
"ultrafast",
"superfast",
"veryfast",
"faster",
"fast",
presetMapping := map[int]string{
0: "ultrafast",
1: "superfast",
2: "veryfast",
3: "faster",
4: "fast",
}
if l >= len(presetMapping) {
return "superfast"
preset, ok := presetMapping[l]
if !ok {
defaultPreset := presetMapping[1]
log.Errorf("Invalid level for v4l preset %d, defaulting to %s", l, defaultPreset)
return defaultPreset
}
return presetMapping[l]
return preset
}
// VideoToolboxCodec represents an instance of the VideoToolbox codec.
type VideoToolboxCodec struct {
}
type VideoToolboxCodec struct{}
// Name returns the codec name.
func (c *VideoToolboxCodec) Name() string {
@ -435,19 +446,22 @@ func (c *VideoToolboxCodec) VariantFlags(v *HLSVariant) string {
// GetPresetForLevel returns the string preset for this codec given an integer level.
func (c *VideoToolboxCodec) GetPresetForLevel(l int) string {
presetMapping := []string{
"ultrafast",
"superfast",
"veryfast",
"faster",
"fast",
presetMapping := map[int]string{
0: "ultrafast",
1: "superfast",
2: "veryfast",
3: "faster",
4: "fast",
}
if l >= len(presetMapping) {
return "superfast"
preset, ok := presetMapping[l]
if !ok {
defaultPreset := presetMapping[1]
log.Errorf("Invalid level for videotoolbox preset %d, defaulting to %s", l, defaultPreset)
return defaultPreset
}
return presetMapping[l]
return preset
}
// GetCodecs will return the supported codecs available on the system.

40
docs/Release.md Normal file
View File

@ -0,0 +1,40 @@
# Build + Distribute Official Owncast Releases
Owncast is released both as standalone archives that can be downloaded and installed themselves, as well as Docker images that can be pulled from Docker Hub.
The original Docker Hub image was [gabekangas/owncast](https://hub.docker.com/repository/docker/gabekangas/owncast) but it has been deprecated in favor of [owncast/owncast](https://hub.docker.com/repository/docker/owncast/owncast). In the short term both images will need to be updated with new releases and in the future we can deprecate the old one.
## Dependencies
1. Install [Earthly](https://earthly.dev/get-earthly), a build automation tool. It uses our [Earthfile](https://github.com/owncast/owncast/blob/develop/Earthfile) to reproducably build the release files and Docker images.
2. Be [logged into Docker Hub](https://docs.docker.com/engine/reference/commandline/login/) with an account that has access to `gabekangas/owncast` and `owncast/owncast` so the images can be pushed to Docker Hub.
## Build release files
1. Create the release archive files for all the different architectures. Specify the human readable version number in the `version` flag such as `v0.1.0`, `nightly`, `develop`, etc. It will be used to identify this binary when running Owncast. You'll find the archives for this release in the `dist` directory when it's complete.
**Run**: `earthly +package-all --version="v0.1.0"`
2. Create a release on GitHub with release notes and Changelog for the version.
3. Upload the release archive files to the release on GitHub via the web interface.
## Build and upload Docker images
Specify the human readable version number in the `version` flag such as `v0.1.0`, `nightly`, `develop`, etc. It will be used to identify this binary when running Owncast.
Create and push the image to Docker Hub with a list of tags. You'll want to tag the image with both the new version number and `latest`.
**Run**: `earthly --push +docker-all --images="owncast/owncast:0.1.0 owncast/owncast:latest gabekangas/owncast:0.1.0 gabekangas/owncast:latest" --version="webv2"`
Omit `--push` if you don't want to push the image to Docker Hub and want to just build and test the image locally first.
## Update installer script
Once you have uploaded the release archive files and made the new files public and are confident the release is working and available you can update the installer script to point to the new release.
Edit the `OWNCAST_VERSION` in [`install.sh`](https://github.com/owncast/owncast.github.io/blob/master/static/install.sh).
## Final
Once the installer is pointing to the new release number and Docker Hub has new images tagged as `latest` the new version is released to the public.

File diff suppressed because one or more lines are too long

View File

@ -56,7 +56,6 @@ Owncast Dependencies
- HTTP routing https://github.com/gorilla/mux
- Mastodon API https://github.com/mattn/go-mastodon
- Twitter API https://github.com/ChimeraCoder/anaconda
- Go ORM https://gorm.io/gorm
- ID string generator https://github.com/teris-io/shortid
- Slug generator https://github.com/metal3d/go-slugify

8
go.mod
View File

@ -3,7 +3,7 @@ module github.com/owncast/owncast
go 1.18
require (
github.com/aws/aws-sdk-go v1.44.175
github.com/aws/aws-sdk-go v1.44.181
github.com/go-fed/activity v1.0.1-0.20210803212804-d866ba75dd0f
github.com/go-fed/httpsig v1.1.0
github.com/go-ole/go-ole v1.2.6 // indirect
@ -11,7 +11,7 @@ require (
github.com/grafov/m3u8 v0.11.1
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
github.com/mattn/go-sqlite3 v1.14.16
github.com/microcosm-cc/bluemonday v1.0.21
github.com/microcosm-cc/bluemonday v1.0.22
github.com/nareix/joy5 v0.0.0-20210317075623-2c912ca30590
github.com/oschwald/geoip2-golang v1.8.0
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5
@ -69,15 +69,13 @@ require (
require (
github.com/nakabonne/tstorage v0.3.5
github.com/shirou/gopsutil/v3 v3.22.11
github.com/shirou/gopsutil/v3 v3.22.12
)
require github.com/SherClockHolmes/webpush-go v1.2.0
require (
github.com/aymerick/douceur v0.2.0 // indirect
github.com/dghubble/oauth1 v0.7.2
github.com/g8rswimmer/go-twitter/v2 v2.1.5
github.com/go-test/deep v1.0.4 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/gorilla/css v1.0.0 // indirect

15
go.sum
View File

@ -42,8 +42,8 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/aws/aws-sdk-go v1.44.175 h1:c0NzHHnPXV5kJoTUFQxFN5cUPpX1SxO635XnwL5/oIY=
github.com/aws/aws-sdk-go v1.44.175/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go v1.44.181 h1:w4OzE8bwIVo62gUTAp/uEFO2HSsUtf1pjXpSs36cluY=
github.com/aws/aws-sdk-go v1.44.181/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
@ -64,14 +64,10 @@ github.com/dave/jennifer v1.3.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhr
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dghubble/oauth1 v0.7.2 h1:pwcinOZy8z6XkNxvPmUDY52M7RDPxt0Xw1zgZ6Cl5JA=
github.com/dghubble/oauth1 v0.7.2/go.mod h1:9erQdIhqhOHG/7K9s/tgh9Ks/AfoyrO5mW/43Lu2+kE=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/g8rswimmer/go-twitter/v2 v2.1.5 h1:Uj9Yuof2UducrP4Xva7irnUJfB9354/VyUXKmc2D5gg=
github.com/g8rswimmer/go-twitter/v2 v2.1.5/go.mod h1:/55xWb313KQs25X7oZrNSEwLQNkYHhPsDwFstc45vhc=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.7.4 h1:QmUZXrvJ9qZ3GfWvQ+2wnW/1ePrTEJqPKMYEU3lD/DM=
@ -226,6 +222,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0j
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/microcosm-cc/bluemonday v1.0.21 h1:dNH3e4PSyE4vNX+KlRGHT5KrSvjeUkoNPwEORjffHJg=
github.com/microcosm-cc/bluemonday v1.0.21/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM=
github.com/microcosm-cc/bluemonday v1.0.22 h1:p2tT7RNzRdCi0qmwxG+HbqD6ILkmwter1ZwVZn1oTxA=
github.com/microcosm-cc/bluemonday v1.0.22/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@ -293,8 +291,8 @@ github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XF
github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
github.com/schollz/sqlite3dump v1.3.1 h1:QXizJ7XEJ7hggjqjZ3YRtF3+javm8zKtzNByYtEkPRA=
github.com/schollz/sqlite3dump v1.3.1/go.mod h1:mzSTjZpJH4zAb1FN3iNlhWPbbdyeBpOaTW0hukyMHyI=
github.com/shirou/gopsutil/v3 v3.22.11 h1:kxsPKS+Eeo+VnEQ2XCaGJepeP6KY53QoRTETx3+1ndM=
github.com/shirou/gopsutil/v3 v3.22.11/go.mod h1:xl0EeL4vXJ+hQMAGN8B9VFpxukEMA0XdevQOe5MZ1oY=
github.com/shirou/gopsutil/v3 v3.22.12 h1:oG0ns6poeUSxf78JtOsfygNWuEHYYz8hnnNg7P04TJs=
github.com/shirou/gopsutil/v3 v3.22.12/go.mod h1:Xd7P1kwZcp5VW52+9XsirIKd/BROzbb2wdX3Kqlz9uI=
github.com/signalsciences/ac v1.2.0 h1:6UcueKRSJn7iHhq1vKU7R0EVhzCJf77tD6HjAGcGDSs=
github.com/signalsciences/ac v1.2.0/go.mod h1:jnlGjtNM8dyGcnOdZjY35vHmUtOn5M5K4U+BzcVPjN0=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
@ -492,6 +490,7 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=

View File

@ -14,14 +14,3 @@ type BrowserNotificationConfiguration struct {
Enabled bool `json:"enabled"`
GoLiveMessage string `json:"goLiveMessage,omitempty"`
}
// TwitterConfiguration represents the configuration for Twitter access.
type TwitterConfiguration struct {
Enabled bool `json:"enabled"`
APIKey string `json:"apiKey"` // aka consumer key
APISecret string `json:"apiSecret"` // aka consumer secret
AccessToken string `json:"accessToken"`
AccessTokenSecret string `json:"accessTokenSecret"`
BearerToken string `json:"bearerToken"`
GoLiveMessage string `json:"goLiveMessage,omitempty"`
}

View File

@ -2,15 +2,12 @@ package notifications
import (
"fmt"
"strings"
"github.com/owncast/owncast/config"
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/models"
"github.com/owncast/owncast/notifications/browser"
"github.com/owncast/owncast/notifications/discord"
"github.com/owncast/owncast/notifications/twitter"
"github.com/owncast/owncast/utils"
"github.com/pkg/errors"
log "github.com/sirupsen/logrus"
)
@ -20,7 +17,6 @@ type Notifier struct {
datastore *data.Datastore
browser *browser.Browser
discord *discord.Discord
twitter *twitter.Twitter
}
// Setup will perform any pre-use setup for the notifier.
@ -68,9 +64,6 @@ func New(datastore *data.Datastore) (*Notifier, error) {
if err := notifier.setupDiscord(); err != nil {
log.Error(err)
}
if err := notifier.setupTwitter(); err != nil {
log.Errorln(err)
}
return &notifier, nil
}
@ -147,36 +140,6 @@ func (n *Notifier) notifyDiscord() {
}
}
func (n *Notifier) setupTwitter() error {
if twitterConfig := data.GetTwitterConfiguration(); twitterConfig.Enabled {
if t, err := twitter.New(twitterConfig.APIKey, twitterConfig.APISecret, twitterConfig.AccessToken, twitterConfig.AccessTokenSecret, twitterConfig.BearerToken); err == nil {
n.twitter = t
} else if err != nil {
return errors.Wrap(err, "error creating twitter notifier")
}
}
return nil
}
func (n *Notifier) notifyTwitter() {
goLiveMessage := data.GetTwitterConfiguration().GoLiveMessage
streamTitle := data.GetStreamTitle()
if streamTitle != "" {
goLiveMessage += "\n" + streamTitle
}
tagString := ""
for _, tag := range utils.ShuffleStringSlice(data.GetServerMetadataTags()) {
tagString = fmt.Sprintf("%s #%s", tagString, tag)
}
tagString = strings.TrimSpace(tagString)
message := fmt.Sprintf("%s\n%s\n\n%s", goLiveMessage, data.GetServerURL(), tagString)
if err := n.twitter.Notify(message); err != nil {
log.Errorln("error sending twitter message", err)
}
}
// Notify will fire the different notification channels.
func (n *Notifier) Notify() {
if n.browser != nil {
@ -186,8 +149,4 @@ func (n *Notifier) Notify() {
if n.discord != nil {
n.notifyDiscord()
}
if n.twitter != nil {
n.notifyTwitter()
}
}

View File

@ -1,78 +0,0 @@
package twitter
import (
"context"
"errors"
"fmt"
"net/http"
"github.com/dghubble/oauth1"
"github.com/g8rswimmer/go-twitter/v2"
)
/*
1. developer.twitter.com. Apply to be a developer if needed.
2. Projects and apps -> Your project name
3. Settings.
4. Scroll down to"User authentication settings" Edit
5. Enable OAuth 1.0a with Read/Write permissions.
6. Fill out the form with your information. Callback can be anything.
7. Go to your project "Keys and tokens"
8. Generate API key and secret.
9. Generate access token and secret. Verify it says "Read and write permissions."
10. Generate bearer token.
*/
type authorize struct {
Token string
}
func (a authorize) Add(req *http.Request) {
req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", a.Token))
}
// Twitter is an instance of the Twitter notifier.
type Twitter struct {
apiKey string
apiSecret string
accessToken string
accessTokenSecret string
bearerToken string
}
// New returns a new instance of the Twitter notifier.
func New(apiKey, apiSecret, accessToken, accessTokenSecret, bearerToken string) (*Twitter, error) {
if apiKey == "" || apiSecret == "" || accessToken == "" || accessTokenSecret == "" || bearerToken == "" {
return nil, errors.New("missing some or all of the required twitter configuration values")
}
return &Twitter{
apiKey: apiKey,
apiSecret: apiSecret,
accessToken: accessToken,
accessTokenSecret: accessTokenSecret,
bearerToken: bearerToken,
}, nil
}
// Notify will send a notification to Twitter with the supplied text.
func (t *Twitter) Notify(text string) error {
config := oauth1.NewConfig(t.apiKey, t.apiSecret)
token := oauth1.NewToken(t.accessToken, t.accessTokenSecret)
httpClient := config.Client(oauth1.NoContext, token)
client := &twitter.Client{
Authorizer: authorize{
Token: t.bearerToken,
},
Client: httpClient,
Host: "https://api.twitter.com",
}
req := twitter.CreateTweetRequest{
Text: text,
}
_, err := client.CreateTweet(context.Background(), req)
return err
}

View File

@ -1,8 +1,8 @@
openapi: 3.0.1
info:
title: Owncast
description: Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software.
version: '0.0.13'
description: Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software. <br/><br/>Take note that only APIs listed specifically for external use, 3rd parties or for integration purposes are encouraged for external use. Internal APIs may change at any time and are used by the server and frontend itself.
version: '0.1.0'
contact:
name: Gabe Kangas
email: gabek@real-ity.com
@ -43,6 +43,16 @@ components:
items:
$ref: '#/components/schemas/Follower'
StreamKeyArray:
type: array
items:
$ref: '#/components/schemas/StreamKey'
ChatMessageArray:
type: array
items:
$ref: '#/components/schemas/ChatMessage'
Client:
type: object
description: A single representation of a client.
@ -96,6 +106,7 @@ components:
type: boolean
message:
type: string
InstanceDetails:
type: object
description: User-facing details about this server.
@ -240,6 +251,7 @@ components:
message:
type: string
description: 'The log entry contents'
Webhook:
type: object
properties:
@ -341,11 +353,43 @@ components:
FEDIVERSE_ENGAGEMENT_REPOST,
]
StreamKey:
type: object
properties:
id:
type: string
description: The key used for authing a stream.
example: yklw5Imng
comment:
type: string
description: The user-facing description or explanation of this single key
example: Used by Tim.
ChatMessage:
type: array
items:
type: object
properties:
user:
$ref: '#/components/schemas/User'
body:
type: string
description: Escaped HTML of the chat message content.
id:
type: string
description: Unique ID of the chat message.
visible:
type: boolean
description: 'Should chat message be visibly rendered.'
timestamp:
type: string
format: date-time
securitySchemes:
AdminBasicAuth:
type: http
scheme: basic
description: The username for admin basic auth is `admin` and the password is the stream key.
description: The username for admin basic auth is `admin`. Defaults to abc123.
AccessToken:
type: http
scheme: bearer
@ -512,6 +556,20 @@ paths:
sessionMaxViewerCount: 12
viewerCount: 7
/api/customjavascript:
get:
summary: Custom Javascript to execute.
description: Returns custom Javascript that was set in the Owncast admin to be run in the Owncast frontend.
tags: ['Server']
responses:
'200':
description: ''
content:
application/javascript:
schema:
type: string
example: console.log("Hello World");
/api/chat/register:
post:
summary: Register a chat user
@ -560,24 +618,7 @@ paths:
content:
application/json:
schema:
type: array
items:
type: object
properties:
user:
$ref: '#/components/schemas/User'
body:
type: string
description: Escaped HTML of the chat message content.
id:
type: string
description: Unique ID of the chat message.
visible:
type: boolean
description: 'Should chat message be visibly rendered.'
timestamp:
type: string
format: date-time
$ref: '#/components/schemas/ChatMessageArray'
/api/yp:
get:
@ -617,6 +658,23 @@ paths:
nullable: true
format: date-time
/img/emoji/:
get:
parameters:
- name: name
in: path
description: Emoji image name
required: true
schema:
type: string
example: test.svg
summary: Get Emoji Image
description: Get an emoji image.
tags: ['Chat']
responses:
'200':
description: 'Returns a single image'
/api/emoji:
get:
summary: Get Custom Emoji
@ -1000,10 +1058,9 @@ paths:
'200':
$ref: '#/components/responses/BasicResponse'
/api/admin/config/key:
/api/admin/config/adminpass:
post:
summary: Set the stream key.
description: Set the stream key. Also used as the admin password.
summary: Set the admin password.
tags: ['Admin']
security:
- AdminBasicAuth: []
@ -1016,6 +1073,21 @@ paths:
schema:
$ref: '#/components/schemas/ConfigValue'
/api/admin/config/streamkeys:
post:
summary: Set the stream keys.
tags: ['Admin']
security:
- AdminBasicAuth: []
responses:
'200':
$ref: '#/components/responses/BasicResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StreamKeyArray'
/api/admin/config/pagecontent:
post:
summary: Set the custom page content.
@ -1085,6 +1157,24 @@ paths:
example:
value: The best in Desert Bus Streaming
/api/admin/config/offlinemessage:
post:
summary: Set the offline message.
description: Set the message that is displayed when a stream is not live.
tags: ['Admin']
security:
- AdminBasicAuth: []
responses:
'200':
$ref: '#/components/responses/BasicResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigValue'
example:
value: Come back on Friday at 2pm, I'll be streaming then.
/api/admin/config/logo:
post:
summary: Set the server logo.
@ -1349,6 +1439,7 @@ paths:
url: https://github.com/owncast/owncast
- platform: mastodon
url: https://mastodon.social/@gabek
/api/admin/config/customstyles:
post:
summary: Custom CSS styles to be used in the web front endpoints.
@ -1365,6 +1456,43 @@ paths:
example:
value: 'body { color: orange; background: black; }'
/api/admin/config/customjavascript:
post:
summary: Custom Javascript to be inserted into the frontend
description: Save a string containing Javascript to be inserted in to the web frontend page.
tags: ['Admin']
responses:
'200':
$ref: '#/components/responses/BasicResponse'
requestBody:
content:
application/javascript:
schema:
$ref: '#/components/schemas/ConfigValue'
example:
value: console.log('Hello world.');
/api/admin/config/appearance:
post:
summary: Save a map of variables and values to be used in the frontend.
description: These values will override the default values in the frontend.
tags: ['Admin']
responses:
'200':
$ref: '#/components/responses/BasicResponse'
requestBody:
content:
application/json:
schema:
type: object
properties:
value:
type: object
example:
value:
theme-color-components-primary-button-background: '#ff0000'
theme-color-components-chat-background: '#000000'
/api/admin/viewersOverTime:
get:
summary: Viewers Over Time
@ -1441,6 +1569,21 @@ paths:
- time: '2020-10-03T21:43:00.381996-05:00'
value: 11
/api/admin/config/hideviewercount:
post:
summary: Enable or disable showing the viewer count.
tags: ['Admin']
security:
- AdminBasicAuth: []
responses:
'200':
$ref: '#/components/responses/BasicResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BooleanValue'
/api/admin/config/federation/enable:
post:
summary: Enable or disable federated social features.
@ -1568,6 +1711,33 @@ paths:
items:
$ref: '#/components/schemas/FederatedAction'
/api/admin/emoji/upload:
post:
summary: Upload a single emoji image.
tags: ['Admin']
security:
- AdminBasicAuth: []
responses:
'200':
$ref: '#/components/responses/BasicResponse'
/api/admin/emoji/delete:
post:
summary: Delete a single emoji image.
tags: ['Admin']
security:
- AdminBasicAuth: []
responses:
'200':
$ref: '#/components/responses/BasicResponse'
requestBody:
content:
application/json:
schema:
type: object
example:
name: test.svg
/api/integrations/streamtitle:
post:
summary: Set the stream title.
@ -2050,6 +2220,34 @@ paths:
items:
$ref: '#/components/schemas/User'
/api/moderation/chat/user/:
get:
tags: ['Moderation']
parameters:
- name: name
in: path
description: User ID
required: true
schema:
type: string
example: USER-ID
responses:
'200':
description: User
content:
application/json:
schema:
type: object
properties:
user:
$ref: '#/components/schemas/User'
connectClients:
type: array
items:
$ref: '#/components/schemas/Client'
messages:
$ref: '#/components/schemas/ChatMessageArray'
/api/admin/followers:
get:
tags: ['Admin']

View File

@ -39,6 +39,9 @@ func Start() error {
http.HandleFunc("/preview.gif", controllers.GetPreview)
http.HandleFunc("/logo", controllers.GetLogo)
// Custom Javascript
http.HandleFunc("/customjavascript", controllers.ServeCustomJavascript)
// Return a single emoji image.
http.HandleFunc(config.EmojiDir, controllers.GetCustomEmojiImage)
@ -315,6 +318,9 @@ func Start() error {
// set custom style css
http.HandleFunc("/api/admin/config/customstyles", middleware.RequireAdminAuth(admin.SetCustomStyles))
// set custom style javascript
http.HandleFunc("/api/admin/config/customjavascript", middleware.RequireAdminAuth(admin.SetCustomJavascript))
// Video playback metrics
http.HandleFunc("/api/admin/metrics/video", middleware.RequireAdminAuth(admin.GetVideoPlaybackMetrics))
@ -366,7 +372,6 @@ func Start() error {
// Configure outbound notification channels.
http.HandleFunc("/api/admin/config/notifications/discord", middleware.RequireAdminAuth(admin.SetDiscordNotificationConfiguration))
http.HandleFunc("/api/admin/config/notifications/browser", middleware.RequireAdminAuth(admin.SetBrowserNotificationConfiguration))
http.HandleFunc("/api/admin/config/notifications/twitter", middleware.RequireAdminAuth(admin.SetTwitterConfiguration))
// Auth
@ -387,7 +392,7 @@ func Start() error {
})
// Optional public static files
http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("./public"))))
http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir(config.PublicFilesPath))))
port := config.WebServerPort
ip := config.WebServerIP

View File

@ -1 +0,0 @@
self.__MIDDLEWARE_MANIFEST=[];self.__MIDDLEWARE_MANIFEST_CB&&self.__MIDDLEWARE_MANIFEST_CB()

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><circle cx="16" cy="16" r="16"/><path d="m15.469 2.01c.176-.007.353-.01.531-.01 7.727 0 14 6.273 14 14s-6.273 14-14 14-14-6.273-14-14c0-.178.003-.355.01-.531 2.255.371 13.83-11.204 13.459-13.459z" fill="#333"/><path d="m15.469 2.01c.371 2.255-1.34 5.861-4.469 8.99s-6.735 4.84-8.99 4.469c.273-7.305 6.154-13.186 13.459-13.459z" fill="#4c4c4c"/><path d="m25 16c0 4.967-4.033 9-9 9s-9-4.033-9-9 4.033-9 9-9 9 4.033 9 9z" fill="#fff"/><path d="m16 21.958c-1.216 0-2.187-.309-2.912-.929-.725-.619-1.088-1.459-1.088-2.519v-.234c0-.558.142-1.063.427-1.514.284-.452.683-.801 1.196-1.047-.424-.212-.758-.518-1.004-.92-.245-.402-.368-.859-.368-1.372v-.185c0-.624.151-1.179.452-1.665.301-.485.736-.862 1.305-1.129.569-.268 1.239-.402 2.009-.402s1.439.134 2.008.402c.569.267 1.004.644 1.306 1.129.301.486.451 1.041.451 1.665v.185c0 .502-.125.956-.376 1.364-.251.407-.589.716-1.013.928.514.257.91.611 1.189 1.063s.418.946.418 1.481v.235c0 1.071-.363 1.916-1.088 2.535-.725.62-1.696.929-2.912.929zm.017-7.113c.513 0 .909-.125 1.188-.376s.418-.595.418-1.03v-.184c0-.424-.142-.756-.426-.996-.285-.239-.678-.359-1.18-.359-.514 0-.912.12-1.197.359-.284.24-.427.572-.427.996v.184c0 .435.14.779.419 1.03s.68.376 1.205.376zm0 5.255c.58 0 1.032-.142 1.355-.426.324-.285.486-.684.486-1.197v-.251c0-.491-.162-.876-.486-1.155-.323-.279-.775-.418-1.355-.418s-1.035.139-1.364.418-.494.664-.494 1.155v.251c0 .513.162.912.485 1.197.324.284.781.426 1.373.426z" fill-rule="nonzero"/></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,11 @@
Mutant Remix emoji
April 2021 (Release v1.0)
mutant.revolt.chat
Published 2021.04.30 (GMT)
----------------------------------------------------------------------
Mutant Standard made by Dzuk (noct.zone), stylistic changes by nizune.
Mutant Remix emoji are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. (creativecommons.org/licenses/by-nc-sa/4.0/)

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 .017h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m18.46 19.556v-.433c0-1.763.701-3.453 1.947-4.699 1.246-1.247 2.937-1.947 4.699-1.947h.434v.433c0 1.763-.701 3.453-1.947 4.7-1.246 1.246-2.937 1.946-4.699 1.946z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m13.625 19.642v-.604c0-1.763-.7-3.453-1.947-4.7-1.246-1.246-2.937-1.946-4.699-1.946h-.604v.604c0 1.762.7 3.453 1.947 4.699 1.246 1.246 2.937 1.947 4.699 1.947z"/></clipPath><path d="m0 .017h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m3.812 11.317c-1.113 4.73.505 9.685 4.194 12.848 1.886 1.616 3.871 3.318 5.391 4.62 1.498 1.284 3.708 1.284 5.206 0 1.52-1.302 3.505-3.004 5.391-4.62 3.689-3.163 5.307-8.118 4.194-12.848-.004-.016-.007-.033-.011-.049-1.276-5.42-6.113-9.251-11.681-9.251h-.992c-5.568 0-10.405 3.831-11.681 9.251-.004.016-.007.033-.011.049z" fill="none" stroke="#000" stroke-width="4"/><path d="m3.812 11.317c-1.113 4.73.505 9.685 4.194 12.848 1.886 1.616 3.871 3.318 5.391 4.62 1.498 1.284 3.708 1.284 5.206 0 1.52-1.302 3.505-3.004 5.391-4.62 3.689-3.163 5.307-8.118 4.194-12.848-.004-.016-.007-.033-.011-.049-1.276-5.42-6.113-9.251-11.681-9.251h-.992c-5.568 0-10.405 3.831-11.681 9.251-.004.016-.007.033-.011.049z" fill="#89c794"/><path d="m18.46 19.556v-.433c0-1.763.701-3.453 1.947-4.699 1.246-1.247 2.937-1.947 4.699-1.947h.434v.433c0 1.763-.701 3.453-1.947 4.7-1.246 1.246-2.937 1.946-4.699 1.946z"/><g clip-path="url(#b)"><path d="m17 19.017h1c2.761 0 5-2.239 5-5 0-2.072 0-4 0-4h-6z" fill="#666"/></g><path d="m13.625 19.642v-.604c0-1.763-.7-3.453-1.947-4.7-1.246-1.246-2.937-1.946-4.699-1.946h-.604v.604c0 1.762.7 3.453 1.947 4.699 1.246 1.246 2.937 1.947 4.699 1.947z"/><g clip-path="url(#c)"><path d="m6 13.017h.002c1.326 0 2.597.526 3.534 1.464.937.937 1.464 2.208 1.464 3.534v3.002h-5z" fill="#666"/></g><path d="m19.354 20.017h-1.354v-1.354c0-3.671 2.976-6.646 6.646-6.646h1.354v1.354c0 3.67-2.976 6.646-6.646 6.646zm5.646-7h-.354c-3.118 0-5.646 2.527-5.646 5.646v.354h.354c3.118 0 5.646-2.528 5.646-5.646z"/><path d="m7.354 12.017c3.67 0 6.646 2.975 6.646 6.646v1.354h-1.354c-3.67 0-6.646-2.976-6.646-6.646v-1.354zm0 1h-.354v.354c0 3.118 2.528 5.646 5.646 5.646h.354v-.354c0-3.119-2.528-5.646-5.646-5.646z"/><path d="m13 25.017 3-3 3 3" fill="none" stroke="#3f854b" stroke-width="2"/></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m4 30c-.53 0-1.039-.211-1.414-.586s-.586-.884-.586-1.414c0-.811 0-1.833 0-3 0-12.703 10.297-23 23-23h3c.53 0 1.039.211 1.414.586s.586.884.586 1.414v3c0 12.703-10.297 23-23 23-1.167 0-2.189 0-3 0z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m4 30c-.53 0-1.039-.211-1.414-.586s-.586-.884-.586-1.414c0-.811 0-1.833 0-3 0-12.703 10.297-23 23-23h3c.53 0 1.039.211 1.414.586s.586.884.586 1.414v3c0 12.703-10.297 23-23 23-1.167 0-2.189 0-3 0z" fill="none" stroke="#000" stroke-width="4"/><path d="m4 30c-.53 0-1.039-.211-1.414-.586s-.586-.884-.586-1.414c0-.811 0-1.833 0-3 0-12.703 10.297-23 23-23h3c.53 0 1.039.211 1.414.586s.586.884.586 1.414v3c0 12.703-10.297 23-23 23-1.167 0-2.189 0-3 0z" fill="#a65c2f"/><g clip-path="url(#b)"><path d="m21 0v.001c-2.451 10.416-10.583 18.548-20.999 20.999-.001 0-.001 0-.001 0v-21z" fill="#b96d3e"/><g fill="none"><path d="m1 31 30-30" stroke="#7f4724" stroke-width="2"/><path d="m7.918 24.082c4.412 4.412 5.402 10.586 2.21 13.779-3.193 3.193-9.367 2.203-13.78-2.209-4.412-4.413-5.402-10.587-2.209-13.78 3.193-3.192 9.367-2.202 13.779 2.21z" stroke="#fff" stroke-width="3"/><path d="m35.652-3.652c4.412 4.413 5.402 10.587 2.209 13.78-3.193 3.192-9.367 2.202-13.779-2.21s-5.402-10.586-2.21-13.779c3.193-3.193 9.367-2.203 13.78 2.209z" stroke="#fff" stroke-width="3"/></g></g><path d="m19.293 11.293-.939-.939c-.094-.094-.147-.221-.147-.354s.053-.26.147-.354c.095-.095.197-.197.292-.292.094-.094.221-.147.354-.147s.26.053.354.147c.758.758 2.534 2.534 3.292 3.292.094.094.147.221.147.354s-.053.26-.147.354c-.095.095-.197.197-.292.292-.094.094-.221.147-.354.147s-.26-.053-.354-.147l-.939-.939-2 2 .939.939c.094.094.147.221.147.354s-.053.26-.147.354c-.095.095-.197.197-.292.292-.094.094-.221.147-.354.147s-.26-.053-.354-.147l-.939-.939-2 2 .939.939c.094.094.147.221.147.354s-.053.26-.147.354c-.095.095-.197.197-.292.292-.094.094-.221.147-.354.147s-.26-.053-.354-.147l-.939-.939-2 2 .939.939c.094.094.147.221.147.354s-.053.26-.147.354c-.095.095-.197.197-.292.292-.094.094-.221.147-.354.147s-.26-.053-.354-.147c-.758-.758-2.534-2.534-3.292-3.292-.094-.094-.147-.221-.147-.354s.053-.26.147-.354l.292-.292c.094-.094.221-.147.354-.147s.26.053.354.147l.939.939 2-2-.939-.939c-.094-.094-.147-.221-.147-.354s.053-.26.147-.354c.095-.095.197-.197.292-.292.094-.094.221-.147.354-.147s.26.053.354.147l.939.939 2-2-.939-.939c-.094-.094-.147-.221-.147-.354s.053-.26.147-.354l.292-.292c.094-.094.221-.147.354-.147s.26.053.354.147l.939.939z" fill="#fff"/></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m16 11h12v19h-12z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m18 15c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z"/></clipPath><clipPath id="d"><path clip-rule="evenodd" d="m24 18c-1.657 0-3 1.343-3 3v3c1.657 0 3-1.343 3-3 0-1.5 0-3 0-3z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m14 9h16v23h-16z" fill-rule="nonzero"/><path d="m16 11h12v19h-12z" fill="#fff"/><g clip-path="url(#b)"><path d="m23 14c.343 0 .685-.003 1.028.001.075.003.15.007.225.014.323.036.636.115.934.246.757.336 1.355.98 1.635 1.759.092.258.149.528.17.802.005.073.008.146.008.22 0 .065-.001.128.004.193.005.041.012.082.022.123.073.279.281.508.556.599.08.026.162.04.246.043h.027 1.145v8.5h-3v-4.514c.005-.198.031-.391.09-.581.148-.477.477-.889.91-1.137v-.398c-.06-.018-.118-.039-.177-.061-.064-.026-.128-.053-.191-.082-.21-.102-.408-.224-.589-.372-.47-.386-.809-.92-.957-1.51-.046-.181-.073-.366-.083-.553-.005-.107.001-.214-.006-.322-.004-.043-.009-.085-.017-.127-.024-.109-.061-.214-.116-.311-.127-.225-.337-.398-.583-.479-.098-.032-.2-.049-.303-.053h-.032-2.946v-6h2z" fill="#a746ec" fill-rule="nonzero"/></g><path d="m7.043 23.279c-.167-.132-.329-.271-.486-.416-.769-.714-1.395-1.579-1.831-2.533-.326-.712-.546-1.471-.652-2.246-.045-.327-.067-.655-.073-.985-.005-.733-.005-1.465 0-2.198.005-.264.019-.527.048-.79.069-.616.21-1.224.419-1.808.431-1.204 1.153-2.297 2.089-3.166.815-.757 1.787-1.339 2.838-1.701.807-.278 1.652-.42 2.506-.435.099-.001.099-.001.198 0 .854.015 1.699.157 2.506.435 1.302.449 2.48 1.236 3.391 2.268.671.759 1.194 1.645 1.535 2.598.3.835.452 1.712.468 2.598.005.733.005 1.467 0 2.2-.005.296-.023.592-.06.886-.005.04-.01.079-.016.119.185-.261.395-.503.627-.724.495-.473 1.088-.842 1.731-1.077.35-.128.715-.217 1.085-.264.168-.021.337-.032.506-.039l2.128-.026v5.038c-.002.165-.009.33-.026.496-.037.372-.117.74-.237 1.094-.181.536-.455 1.04-.804 1.485-.27.343-.585.65-.933.911v7.001h-22c0-.725-.011-1.45.002-2.175.023-.746.156-1.483.408-2.186.523-1.463 1.537-2.728 2.849-3.557.433-.273.897-.499 1.379-.672.134-.048.269-.092.405-.131z"/><path d="m19 27c.628.835 1 1.874 1 3h-1l-1-1.5z" fill="#333"/><path d="m19 30h-15c0-2.47 1.791-4.522 4.146-4.927.469 1.687 7.239 1.687 7.708 0 1.282.22 2.396.929 3.146 1.927z" fill="#999"/><path d="m8.146 25.073c.277-.048.563-.073.854-.073h6c.291 0 .577.025.854.073-.469 1.687-2.018 2.927-3.854 2.927s-3.385-1.24-3.854-2.927z" fill="#5963ef"/><path d="m18 15c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z" fill="#5963ef"/><g clip-path="url(#c)"><path d="m16 15c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1zm-6 0c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1z"/></g><path d="m21 23h1v7h-1z" fill="#705c32"/><path d="m24 18c-1.657 0-3 1.343-3 3v3c1.657 0 3-1.343 3-3 0-1.5 0-3 0-3z" fill="#bfaf91"/><g clip-path="url(#d)"><path d="m19.5 17.143h5.25v3.429h-5.25z" fill="#7731a6"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m22.229 24.523c1.643.819 2.771 2.516 2.771 4.477v1h-18s0-.403 0-1c0-1.96 1.128-3.657 2.771-4.477.621.381 11.872.36 12.458 0z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m25 14c0-2.122-.843-4.157-2.343-5.657s-3.535-2.343-5.657-2.343c-.664 0-1.336 0-2 0-2.122 0-4.157.843-5.657 2.343s-2.343 3.535-2.343 5.657v2c0 2.122.843 4.157 2.343 5.657s3.535 2.343 5.657 2.343h2c2.122 0 4.157-.843 5.657-2.343s2.343-3.535 2.343-5.657c0-.664 0-1.336 0-2z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><path d="m8.068 23.208c-.017-.017-.034-.033-.051-.05-1.084-1.057-1.921-2.36-2.431-3.786-.248-.692-.419-1.41-.51-2.139-.046-.368-.068-.738-.075-1.109-.005-.749-.005-1.499 0-2.248.007-.371.029-.741.075-1.109.091-.729.262-1.448.51-2.139.51-1.426 1.347-2.729 2.431-3.786 1.054-1.028 2.334-1.817 3.726-2.297.695-.239 1.416-.402 2.146-.483.328-.037.657-.055.987-.061.749-.005 1.499-.005 2.248 0 .33.006.659.024.987.061.77.086 1.531.262 2.261.524 1.465.524 2.8 1.393 3.872 2.521.987 1.036 1.745 2.284 2.211 3.636.239.695.402 1.416.483 2.146.037.328.055.657.061.987.005.749.005 1.499 0 2.248-.006.33-.024.659-.061.987-.081.73-.244 1.451-.483 2.146-.466 1.352-1.224 2.6-2.211 3.636-.102.108-.206.212-.312.315.179.122.354.253.521.391 1.135.936 1.96 2.228 2.327 3.653.146.57.216 1.154.22 1.742v3.006h-22c0-1.06-.017-2.12.002-3.18.01-.296.034-.59.079-.883.095-.627.277-1.241.538-1.819.53-1.172 1.386-2.187 2.449-2.91z"/><path d="m22.229 24.523c1.643.819 2.771 2.516 2.771 4.477v1h-18s0-.403 0-1c0-1.96 1.128-3.657 2.771-4.477.621.381 11.872.36 12.458 0z" fill="#fff"/><g clip-path="url(#a)"><path d="m14 25h4v6h-4z" fill="#878787"/></g><path d="m9.771 24.523c.671-.335 1.428-.523 2.229-.523h8c.801 0 1.558.188 2.229.523-.586.36-1.209.659-1.857.891-.73.262-1.491.438-2.261.524-.328.037-.657.055-.987.061-.749.005-1.499.005-2.248 0-.33-.006-.659-.024-.987-.061-.73-.081-1.451-.244-2.146-.483-.689-.238-1.351-.551-1.972-.932z" fill="#5f5f5f"/><path d="m25 14c0-2.122-.843-4.157-2.343-5.657s-3.535-2.343-5.657-2.343c-.664 0-1.336 0-2 0-2.122 0-4.157.843-5.657 2.343s-2.343 3.535-2.343 5.657v2c0 2.122.843 4.157 2.343 5.657s3.535 2.343 5.657 2.343h2c2.122 0 4.157-.843 5.657-2.343s2.343-3.535 2.343-5.657c0-.664 0-1.336 0-2z" fill="#333"/><g clip-path="url(#b)"><path d="m10 16.472.5-2.472 2.5-3h6l2.5 3 .5 2.465v.535c0 1.591-.632 3.117-1.757 4.243-1.126 1.125-2.652 1.757-4.243 1.757-1.591 0-3.117-.632-4.243-1.757-1.125-1.126-1.757-2.652-1.757-4.243z" fill="#a3a9ff"/><path d="m10 16.472v-1.472c0-1.591.632-3.117 1.757-4.243 1.126-1.125 2.652-1.757 4.243-1.757 1.591 0 3.117.632 4.243 1.757 1.125 1.126 1.757 2.652 1.757 4.243v1.465c-.296-.595-.592-1.189-.895-1.78-.205-.386-.453-.745-.749-1.068-.658-.717-1.526-1.232-2.47-1.468-.369-.092-.744-.138-1.123-.148-.509-.005-1.017-.005-1.526 0-.379.01-.754.056-1.123.148-.973.243-1.862.783-2.528 1.533-.293.33-.535.697-.736 1.09z" fill="#343394"/><path d="m20 15c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1zm-6 0c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1z"/><path d="m8 16s.485-.97 1.065-2.13c1.186-2.372 3.61-3.87 6.261-3.87h1.348c2.651 0 5.075 1.498 6.261 3.87.58 1.16 1.065 2.13 1.065 2.13h3v-12h-22v12z" fill="#ababab"/></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m24 0v5.172l3.061-3.062c.313.13.626.259.939.389v12.001c0 2.158.013 4.315 0 6.473v.027l-.001.117c-.003.142-.007.283-.013.424-.021.372-.057.742-.113 1.111-.124.809-.338 1.604-.638 2.366-.602 1.526-1.549 2.91-2.749 4.028-1.073.999-2.344 1.78-3.72 2.284-.946.347-1.94.562-2.945.638-.262.02-.525.029-.787.032h-1.032-.004c-.16-.001-.159-.001-.32-.006-.271-.012-.542-.031-.813-.064-.533-.066-1.06-.178-1.574-.335-1.731-.53-3.29-1.569-4.444-2.964-.449-.542-.827-1.134-1.148-1.76l-6.359-12.719 1.753-.935.162-.078c.15-.069.301-.135.455-.193.353-.134.718-.237 1.089-.307.977-.185 1.994-.139 2.951.13.425.119.834.283 1.227.484-.005-2.175-.003-4.349.024-6.524.004-.099.004-.098.01-.198.023-.261.064-.519.135-.772.13-.471.348-.917.639-1.31.115-.156.242-.302.378-.44l4.009-4.009h1.828v1.172l1.172-1.172h2.828v2.172l2.172-2.172h1.828z"/><path d="m26 20.975c0 4.984-4.041 9.025-9.025 9.025h-.968c-2.762 0-5.287-1.561-6.523-4.031-2.221-4.443-5.484-10.969-5.484-10.969l.013-.007c1.693-.839 3.663-.507 4.987.689l.786 2.318 1.214 1v-12.172c.001-.164.02-.328.06-.487.088-.349.271-.672.526-.927.805-.805 1.609-1.609 2.414-2.414v11h1v-8.172c.001-.164.02-.328.06-.487.088-.349.271-.672.526-.927.805-.805 1.609-1.609 2.414-2.414v13h1v-8.172c.001-.164.02-.328.06-.487.088-.349.271-.672.526-.927.805-.805 1.609-1.609 2.414-2.414v13h1v-6.172c.001-.164.02-.328.06-.487.088-.349.271-.672.526-.927.805-.805 1.609-1.609 2.414-2.414z" fill="#a3a9ff"/><path d="m11 20c0 .14-.029.278-.086.406-.053.119-.13.228-.224.318-.09.086-.197.155-.312.202-.106.043-.219.068-.333.073-.109.005-.219-.008-.325-.039-.093-.027-.182-.068-.264-.121-.181-.117-.321-.293-.395-.495-.041-.11-.061-.227-.061-.344v-4.318c.401.362.743.805 1 1.318.551 1.101 1 2 1 2z" fill="#8484f6"/></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m31 19c0 3.448-1.37 6.754-3.808 9.192s-5.744 3.808-9.192 3.808h-1.789c-5.154 0-9.967-2.566-12.841-6.84l-.034-.051-.009-.014-.019-.029-.018-.029-.008-.013-.01-.016s-.697-1.195-1.469-2.519c-1.538-2.637-2.166-5.707-1.788-8.736 0-.001 0-.001 0-.001.075-.595.412-1.125.919-1.444s1.13-.395 1.698-.205h.001c1.573.524 3.047 1.298 4.367 2.288v-2.735c0-4.152 1.649-8.134 4.586-11.07.475-.476 1.158-.68 1.816-.545.659.135 1.205.592 1.455 1.216l.643 1.608.643-1.608c.25-.624.796-1.081 1.455-1.216.658-.135 1.341.069 1.816.545 1.009 1.009 1.866 2.141 2.557 3.362l.068-.34c.144-.723.675-1.308 1.381-1.522s1.473-.022 1.994.5c0 0 .652.652 1.486 1.485 2.625 2.626 4.1 6.187 4.1 9.9z"/><path d="m2 14.001v-.001c1.973.658 3.765 1.765 5.236 3.236.437.437.764.764.764.764v4l-3 2s-.697-1.195-1.469-2.519c-1.317-2.258-1.855-4.886-1.531-7.48zm21-.001v-3.317c0-1.119.111-2.236.33-3.334.291-1.456.67-3.349.67-3.349s.652.652 1.485 1.485c2.251 2.251 3.515 5.303 3.515 8.486v.029l-3.5 2.5zm-14-1v-1.344c0-3.621 1.439-7.095 4-9.656s.382.955.812 2.031c.785 1.961 1.188 4.054 1.188 6.167v2.802l-3.5 2zm7 0v-2.802c0-2.113.403-4.206 1.188-6.167.43-1.076.812-2.031.812-2.031 2.561 2.561 4 6.035 4 9.656v1.344l-3.5 1.5z" fill="#5c56bc"/><path d="m29 19c0 2.917-1.159 5.715-3.222 7.778s-4.861 3.222-7.778 3.222c-.604 0-1.204 0-1.789 0-4.496 0-8.695-2.243-11.196-5.978l-.015-.022 3-6 1 1v-6h6v2h1v-2h6v2h1v-1h6z" fill="#a3a9ff"/></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m17.035 31.996h-1.035v.004h-.133c-3.159 0-6.189-1.255-8.423-3.489-2.371-2.371-5.979-5.979-5.979-5.979-1.952-1.952-1.952-5.12 0-7.071 1.484-1.485 3.674-1.84 5.496-1.065l-1.701-6.805c-.602-2.409.865-4.854 3.275-5.457 1.354-.338 2.721-.023 3.764.747.65-1.687 2.287-2.885 4.201-2.885 1.81 0 3.372 1.071 4.086 2.613.9-.523 1.984-.739 3.087-.532 2.164.406 3.675 2.301 3.671 4.427.291.015.584.057.877.131 2.409.603 3.875 3.048 3.272 5.457 0 0-1.49 5.956-2.68 10.71-1.352 5.404-6.207 9.194-11.778 9.194z"/><path d="m14 13v-8.504c.002-.314.058-.624.174-.916.283-.718.9-1.278 1.642-1.489.263-.075.539-.106.813-.092.279.015.556.076.816.182.288.118.554.291.78.506.232.221.422.488.554.781.146.322.218.671.221 1.025v9.507c.001.067.013.133.039.195.081.191.279.315.487.304.058-.003.115-.016.169-.038.055-.024.106-.058.15-.099.046-.044.084-.098.111-.156.029-.065.043-.135.044-.206v-5.899l.387-2.062c.254-1.356 1.561-2.25 2.917-1.996 1.062.199 1.84 1.043 2.007 2.05l-1.554 9.325c-.01.066-.009.133.007.198.048.203.223.357.429.381.058.006.117.003.173-.011.059-.014.115-.038.165-.072.053-.036.099-.083.135-.136.039-.059.065-.126.077-.196l1.123-6.734c.546-.323 1.215-.439 1.879-.273 1.339.336 2.153 1.695 1.817 3.033 0 0-1.494 5.959-2.687 10.714-1.131 4.511-5.186 7.674-9.836 7.674h-1.039v.004h-.133c-2.629 0-5.15-1.044-7.009-2.903-2.371-2.371-5.979-5.98-5.979-5.98-1.171-1.17-1.171-3.071 0-4.242s3.072-1.171 4.242 0l2.879 2.878v-1.449l-2.799-11.198c-.084-.344-.099-.702-.035-1.051.057-.316.176-.621.348-.892.167-.264.383-.495.634-.68.226-.166.48-.292.748-.374.262-.08.537-.117.81-.108.772.024 1.506.418 1.955 1.046.182.255.312.543.39.847l.949 3.794v3.812c.001.067.013.133.039.195.081.191.279.315.487.304.058-.003.115-.016.169-.038.055-.024.106-.058.15-.099.046-.044.084-.098.111-.156.029-.065.043-.135.044-.206z" fill="#a3a9ff"/></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m28.327 8.65c-.841-2.314-2.663-4.136-4.977-4.977-.507-.185-1.038-.378-1.572-.572-3.732-1.357-7.824-1.357-11.556 0-.534.194-1.065.387-1.572.572-2.314.841-4.136 2.663-4.977 4.977-.185.507-.378 1.038-.572 1.572-1.357 3.732-1.357 7.824 0 11.556.194.534.387 1.065.572 1.572.841 2.314 2.663 4.136 4.977 4.977.507.185 1.038.378 1.572.572 3.732 1.357 7.824 1.357 11.556 0 .534-.194 1.065-.387 1.572-.572 2.314-.841 4.136-2.663 4.977-4.977.185-.507.378-1.038.572-1.572 1.357-3.732 1.357-7.824 0-11.556-.194-.534-.387-1.065-.572-1.572z"/></clipPath><path d="m0 0v32h32v-32z" fill="none"/><path d="m28.327 8.65c-.841-2.314-2.663-4.136-4.977-4.977-.507-.185-1.038-.378-1.572-.572-3.732-1.357-7.824-1.357-11.556 0-.534.194-1.065.387-1.572.572-2.314.841-4.136 2.663-4.977 4.977-.185.507-.378 1.038-.572 1.572-1.357 3.732-1.357 7.824 0 11.556.194.534.387 1.065.572 1.572.841 2.314 2.663 4.136 4.977 4.977.507.185 1.038.378 1.572.572 3.732 1.357 7.824 1.357 11.556 0 .534-.194 1.065-.387 1.572-.572 2.314-.841 4.136-2.663 4.977-4.977.185-.507.378-1.038.572-1.572 1.357-3.732 1.357-7.824 0-11.556-.194-.534-.387-1.065-.572-1.572z" fill="none" stroke="#000" stroke-width="4"/><path d="m28.327 8.65c-.841-2.314-2.663-4.136-4.977-4.977-.507-.185-1.038-.378-1.572-.572-3.732-1.357-7.824-1.357-11.556 0-.534.194-1.065.387-1.572.572-2.314.841-4.136 2.663-4.977 4.977-.185.507-.378 1.038-.572 1.572-1.357 3.732-1.357 7.824 0 11.556.194.534.387 1.065.572 1.572.841 2.314 2.663 4.136 4.977 4.977.507.185 1.038.378 1.572.572 3.732 1.357 7.824 1.357 11.556 0 .534-.194 1.065-.387 1.572-.572 2.314-.841 4.136-2.663 4.977-4.977.185-.507.378-1.038.572-1.572 1.357-3.732 1.357-7.824 0-11.556-.194-.534-.387-1.065-.572-1.572z" fill="#f1f1f1"/><g clip-path="url(#a)"><path d="m.76.712c4.967-4.968 11.795-6.205 15.238-2.763 3.443 3.443 2.205 10.271-2.762 15.238-4.967 4.968-11.795 6.205-15.238 2.762-3.443-3.442-2.205-10.27 2.762-15.237z" fill="#fff"/><g fill="none" stroke="#ff5757" stroke-width="3"><ellipse cx="27.5" cy="16" rx="7.5" ry="10.778"/><ellipse cx="4.5" cy="16" rx="7.5" ry="10.778"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><circle clip-rule="evenodd" cx="16" cy="16" r="14"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m0 16c0-8.831 7.169-16 16-16s16 7.169 16 16-7.169 16-16 16-16-7.169-16-16z"/><circle cx="16" cy="16" fill="#e86932" r="14"/><g clip-path="url(#b)"><path d="m4.378 4.378c5.02-5.019 11.229-6.96 13.858-4.331 2.63 2.629.689 8.839-4.331 13.858-5.019 5.02-11.229 6.961-13.858 4.331-2.629-2.629-.688-8.838 4.331-13.858z" fill="#ff8f44"/><g fill="none" stroke="#81310e" stroke-width="2"><path d="m16 31v-30"/><path d="m31 16h-30"/><path d="m31 24s-12-1.896-12-8 12-8 12-8"/><path d="m1 24s12-1.896 12-8-12-8-12-8"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 965 B

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m19.491 4.051 2.537-1.926c1.816-1.379 4.033-2.125 6.312-2.125h.001c1.469 0 2.659 1.19 2.659 2.659v1.68c0 1.951-.272 3.893-.808 5.769l-.719 2.516c1.962 5.118.761 10.971-3.175 14.906-.432.432-.853.853-1.248 1.248-2.063 2.063-4.861 3.222-7.778 3.222-.831 0-1.713 0-2.544 0-2.917 0-5.715-1.159-7.778-3.222-.395-.395-.816-.816-1.248-1.248-3.936-3.935-5.137-9.788-3.175-14.906l-.719-2.516c-.536-1.876-.808-3.818-.808-5.769 0-.626 0-1.239 0-1.68 0-1.469 1.19-2.659 2.659-2.659h.001c2.279 0 4.496.746 6.312 2.125l2.537 1.926c.348-.034.699-.051 1.053-.051h4.876c.354 0 .705.017 1.053.051z"/><path d="m3.045 2.418c.097-.245.335-.418.614-.418h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115l-4.5 2.215z" fill="#353535"/><path d="m3.045 2.418 1.668.667c1.509.604 2.88 1.508 4.029 2.657 1.078 1.078 2.258 2.258 2.258 2.258v3.048l-6 2.952s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.085.016-.166.045-.241z" fill="#4b4b4b"/><path d="m28.955 2.418c-.097-.245-.335-.418-.614-.418 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115l4.5 2.215z" fill="#353535"/><path d="m28.955 2.418-1.668.667c-1.509.604-2.88 1.508-4.029 2.657-1.078 1.078-2.258 2.258-2.258 2.258v3.048l6 2.952s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.085-.016-.166-.045-.241z" fill="#4b4b4b"/><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m6.965 15.036c.293.293.767.293 1.059 0 .005-.004.007-.007.007-.007.523-.522 1.231-.815 1.969-.815s1.446.293 1.969.815c0 0 .002.003.007.007.292.293.766.293 1.059 0h.001c.14-.141.219-.332.219-.531s-.079-.389-.219-.53c-.005-.004-.007-.006-.007-.006-.803-.804-1.893-1.255-3.029-1.255s-2.226.451-3.029 1.255c0 0-.002.002-.007.006-.14.141-.219.331-.219.53s.079.39.219.531zm18.07 0c-.293.293-.767.293-1.059 0-.005-.004-.007-.007-.007-.007-.523-.522-1.231-.815-1.969-.815s-1.446.293-1.969.815c0 0-.002.003-.007.007-.292.293-.766.293-1.059 0 0 0 0 0-.001 0-.14-.141-.219-.332-.219-.531s.079-.389.219-.53c.005-.004.007-.006.007-.006.803-.804 1.893-1.255 3.029-1.255s2.226.451 3.029 1.255c0 0 .002.002.007.006.14.141.219.331.219.53s-.079.39-.219.531c-.001 0-.001 0-.001 0z" fill="#fbe844"/><path d="m13 16.829c0-.22.087-.431.243-.586.155-.156.366-.243.586-.243h4.342c.22 0 .431.087.586.243.156.155.243.366.243.586 0 .107-.053.207-.142.266-.595.397-2.858 1.905-2.858 1.905s-2.263-1.508-2.858-1.905c-.089-.059-.142-.159-.142-.266z" fill="#666"/><path d="m20 23-4-2-4 2v1c0 2.209 1.791 4 4 4 2.209 0 4-1.791 4-4 0-.588 0-1 0-1z" fill="#666"/><path d="m9 21s.082.165.2.399c.49.981 1.493 1.601 2.589 1.601h.334c.572 0 1.131-.169 1.606-.486.888-.592 2.271-1.514 2.271-1.514s1.383.922 2.271 1.514c.475.317 1.034.486 1.606.486h.334c1.096 0 2.099-.62 2.589-1.601.118-.234.2-.399.2-.399" fill="none" stroke="#808080" stroke-width="1.5"/></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m24.251 26.749-.615.615c-1.688 1.688-3.977 2.636-6.364 2.636-.831 0-1.713 0-2.544 0-2.387 0-4.676-.948-6.364-2.636-.395-.395-.816-.816-1.248-1.248-3.527-3.527-4.492-8.851-2.475-13.372l-.91-3.185c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718l3.196 2.426c.524-.095 1.06-.144 1.604-.144h4.876c.544 0 1.08.049 1.604.144l3.196-2.426c1.467-1.115 3.26-1.718 5.102-1.718h.001c.364 0 .659.295.659.659v1.68c0 1.765-.246 3.522-.731 5.22l-.91 3.185c1.07 2.398 1.301 5.023.755 7.485l1.328 2.655c.632 1.264.384 2.79-.615 3.789 0 0 0 0-.001.001-.617.617-1.453.963-2.326.963-.836 0-1.64-.318-2.249-.888z" fill="none" stroke="#000" stroke-width="4"/><path d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z" fill="#353535"/><g clip-path="url(#b)"><path d="m21 8s1.18-1.18 2.258-2.258c1.149-1.149 2.52-2.053 4.029-2.657 1.317-.527 2.713-1.085 2.713-1.085v12h-9z" fill="#4b4b4b"/></g><path d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z" fill="#353535"/><g clip-path="url(#c)"><path d="m11 8s-1.18-1.18-2.258-2.258c-1.149-1.149-2.52-2.053-4.029-2.657-1.317-.527-2.713-1.085-2.713-1.085v12h9z" fill="#4b4b4b"/></g><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m10.865 11.119c1.255.532 2.135 1.775 2.135 3.223v1.16c0 .928-.369 1.817-1.025 2.473s-1.545 1.025-2.473 1.025h-.002c-1.933 0-3.5-1.567-3.5-3.5 0-.384 0-.775 0-1.16 0-.241.025-.479.073-.712z" fill="#fbe844"/><path d="m9 12.841c0-.264.105-.519.293-.706.187-.187.441-.293.706-.293h.002c.265 0 .519.106.706.293.188.187.293.442.293.706v4.16c0 .265-.105.519-.293.706-.187.188-.441.293-.706.293-.001 0-.001 0-.002 0-.265 0-.519-.105-.706-.293-.188-.187-.293-.441-.293-.706 0-1.146 0-3.014 0-4.16z"/><path d="m21.191 11.095 4.691 2.346c.078.291.118.593.118.899v1.16c0 1.933-1.567 3.5-3.5 3.5h-.002c-.928 0-1.817-.369-2.473-1.025s-1.025-1.545-1.025-2.473c0-.384 0-.775 0-1.16 0-1.47.907-2.728 2.191-3.247z" fill="#fbe844"/><path d="m23 12.841c0-.264-.105-.519-.293-.706-.187-.187-.441-.293-.706-.293-.001 0-.001 0-.002 0-.265 0-.519.106-.706.293-.188.187-.293.442-.293.706v4.16c0 .265.105.519.293.706.187.188.441.293.706.293h.002c.265 0 .519-.105.706-.293.188-.187.293-.441.293-.706 0-1.146 0-3.014 0-4.16z"/><path d="m13 19.829c0-.22.087-.431.243-.586.155-.156.366-.243.586-.243h4.342c.22 0 .431.087.586.243.156.155.243.366.243.586 0 .107-.053.207-.142.266-.595.397-2.858 1.905-2.858 1.905s-2.263-1.508-2.858-1.905c-.089-.059-.142-.159-.142-.266z" fill="#666"/><path d="m12 27 4-3 4 3" fill="none" stroke="#808080" stroke-linejoin="miter" stroke-width="1.5"/><path d="m26.5 17s-1.757 3.514-2.942 5.884c-.632 1.264-.384 2.79.615 3.789 0 0 0 0 .001.001.617.617 1.453.963 2.326.963s1.709-.346 2.326-.963c.001-.001.001-.001.001-.001.999-.999 1.247-2.525.615-3.789-1.185-2.37-2.942-5.884-2.942-5.884z" fill="#00bafe"/></g></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m19.491 4.051 2.537-1.926c1.816-1.379 4.033-2.125 6.312-2.125h.001c1.469 0 2.659 1.19 2.659 2.659v1.68c0 1.951-.272 3.893-.808 5.769l-.719 2.516c1.962 5.118.761 10.971-3.175 14.906-.432.432-.853.853-1.248 1.248-2.063 2.063-4.861 3.222-7.778 3.222-.831 0-1.713 0-2.544 0-2.917 0-5.715-1.159-7.778-3.222-.395-.395-.816-.816-1.248-1.248-3.936-3.935-5.137-9.788-3.175-14.906l-.719-2.516c-.536-1.876-.808-3.818-.808-5.769 0-.626 0-1.239 0-1.68 0-1.469 1.19-2.659 2.659-2.659h.001c2.279 0 4.496.746 6.312 2.125l2.537 1.926c.348-.034.699-.051 1.053-.051h4.876c.354 0 .705.017 1.053.051z"/><path d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z" fill="#353535"/><g clip-path="url(#b)"><path d="m21 8s1.18-1.18 2.258-2.258c1.149-1.149 2.52-2.053 4.029-2.657 1.317-.527 2.713-1.085 2.713-1.085v12h-9z" fill="#4b4b4b"/></g><path d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z" fill="#353535"/><g clip-path="url(#c)"><path d="m11 8s-1.18-1.18-2.258-2.258c-1.149-1.149-2.52-2.053-4.029-2.657-1.317-.527-2.713-1.085-2.713-1.085v12h9z" fill="#4b4b4b"/></g><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m23 13 1.518-1.518c.162.114.315.243.457.385.656.656 1.025 1.546 1.025 2.473v1.16c0 1.933-1.567 3.5-3.5 3.5h-.002c-.928 0-1.817-.369-2.473-1.025-.348-.347-.615-.761-.789-1.211l1.764-1.764.963-.42z" fill="#fbe844"/><path d="m23 17.001c0 .123-.023.245-.067.36-.038.099-.092.191-.159.273-.063.076-.137.143-.219.198-.095.063-.2.11-.31.138-.206.052-.426.036-.623-.044-.115-.047-.221-.115-.312-.201-.095-.091-.171-.2-.224-.319-.057-.128-.086-.266-.086-.405v-2.001l2-2z"/><path d="m9 13-1.518-1.518c-.162.114-.315.243-.457.385-.656.656-1.025 1.546-1.025 2.473v1.16c0 1.933 1.567 3.5 3.5 3.5h.002c.928 0 1.817-.369 2.473-1.025.348-.347.615-.761.789-1.211l-1.764-1.764-.963-.42z" fill="#fbe844"/><path d="m9 17.001c0 .123.023.245.067.36.038.099.092.191.159.273.063.076.137.143.219.198.095.063.2.11.31.138.206.052.426.036.623-.044.115-.047.221-.115.312-.201.095-.091.171-.2.224-.319.057-.128.086-.266.086-.405v-2.001l-2-2z"/><path d="m13 19.829c0-.22.087-.431.243-.586.155-.156.366-.243.586-.243h4.342c.22 0 .431.087.586.243.156.155.243.366.243.586 0 .107-.053.207-.142.266-.595.397-2.858 1.905-2.858 1.905s-2.263-1.508-2.858-1.905c-.089-.059-.142-.159-.142-.266z" fill="#666"/><path d="m10 24s.385.385.879.879c.562.562 1.325.878 2.121.878s1.559-.316 2.121-.878c.494-.494.879-.879.879-.879s.385.385.879.879c.562.562 1.325.878 2.121.878s1.559-.316 2.121-.878c.494-.494.879-.879.879-.879" fill="none" stroke="#808080" stroke-width="1.5"/></g></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m19.491 4.051 2.537-1.926c1.816-1.379 4.033-2.125 6.312-2.125h.001c1.469 0 2.659 1.19 2.659 2.659v1.68c0 1.951-.272 3.893-.808 5.769l-.719 2.516c1.962 5.118.761 10.971-3.175 14.906-.432.432-.853.853-1.248 1.248-2.063 2.063-4.861 3.222-7.778 3.222-.831 0-1.713 0-2.544 0-2.917 0-5.715-1.159-7.778-3.222-.395-.395-.816-.816-1.248-1.248-3.936-3.935-5.137-9.788-3.175-14.906l-.719-2.516c-.536-1.876-.808-3.818-.808-5.769 0-.626 0-1.239 0-1.68 0-1.469 1.19-2.659 2.659-2.659h.001c2.279 0 4.496.746 6.312 2.125l2.537 1.926c.348-.034.699-.051 1.053-.051h4.876c.354 0 .705.017 1.053.051z"/><path d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z" fill="#353535"/><g clip-path="url(#b)"><path d="m21 8s1.18-1.18 2.258-2.258c1.149-1.149 2.52-2.053 4.029-2.657 1.317-.527 2.713-1.085 2.713-1.085v12h-9z" fill="#4b4b4b"/></g><path d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z" fill="#353535"/><g clip-path="url(#c)"><path d="m11 8s-1.18-1.18-2.258-2.258c-1.149-1.149-2.52-2.053-4.029-2.657-1.317-.527-2.713-1.085-2.713-1.085v12h9z" fill="#4b4b4b"/></g><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m6.965 17.036c.293.293.767.293 1.059 0 .005-.004.007-.007.007-.007.523-.522 1.231-.815 1.969-.815s1.446.293 1.969.815c0 0 .002.003.007.007.292.293.766.293 1.059 0h.001c.14-.141.219-.332.219-.531s-.079-.389-.219-.53c-.005-.004-.007-.006-.007-.006-.803-.804-1.893-1.255-3.029-1.255s-2.226.451-3.029 1.255c0 0-.002.002-.007.006-.14.141-.219.331-.219.53s.079.39.219.531zm18.07 0c-.293.293-.767.293-1.059 0-.005-.004-.007-.007-.007-.007-.523-.522-1.231-.815-1.969-.815s-1.446.293-1.969.815c0 0-.002.003-.007.007-.292.293-.766.293-1.059 0 0 0 0 0-.001 0-.14-.141-.219-.332-.219-.531s.079-.389.219-.53c.005-.004.007-.006.007-.006.803-.804 1.893-1.255 3.029-1.255s2.226.451 3.029 1.255c0 0 .002.002.007.006.14.141.219.331.219.53s-.079.39-.219.531c-.001 0-.001 0-.001 0z" fill="#fbe844"/><path d="m13 19.829c0-.22.087-.431.243-.586.155-.156.366-.243.586-.243h4.342c.22 0 .431.087.586.243.156.155.243.366.243.586 0 .107-.053.207-.142.266-.595.397-2.858 1.905-2.858 1.905s-2.263-1.508-2.858-1.905c-.089-.059-.142-.159-.142-.266z" fill="#666"/><path d="m10 24s.385.385.879.879c.562.562 1.325.878 2.121.878s1.559-.316 2.121-.878c.494-.494.879-.879.879-.879s.385.385.879.879c.562.562 1.325.878 2.121.878s1.559-.316 2.121-.878c.494-.494.879-.879.879-.879" fill="none" stroke="#808080" stroke-width="1.5"/></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m19.491 4.051 2.537-1.926c1.816-1.379 4.033-2.125 6.312-2.125h.001c1.469 0 2.659 1.19 2.659 2.659v1.68c0 1.951-.272 3.893-.808 5.769l-.295 1.031c.593.815.918 1.802.92 2.823.002.753-.172 1.489-.5 2.151.45 4.134-.957 8.356-4.019 11.417-.432.432-.853.853-1.248 1.248-2.063 2.063-4.861 3.222-7.778 3.222-.831 0-1.713 0-2.544 0-2.917 0-5.715-1.159-7.778-3.222-.395-.395-.816-.816-1.248-1.248-3.048-3.047-4.456-7.245-4.025-11.361-.803-1.599-.661-3.551.427-5.024l-.296-1.037c-.536-1.876-.808-3.818-.808-5.769 0-.626 0-1.239 0-1.68 0-1.469 1.19-2.659 2.659-2.659h.001c2.279 0 4.496.746 6.312 2.125l2.537 1.926c.348-.034.699-.051 1.053-.051h4.876c.354 0 .705.017 1.053.051z"/><path d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z" fill="#353535"/><g clip-path="url(#b)"><path d="m21 8s1.18-1.18 2.258-2.258c1.149-1.149 2.52-2.053 4.029-2.657 1.317-.527 2.713-1.085 2.713-1.085v12h-9z" fill="#4b4b4b"/></g><path d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z" fill="#353535"/><g clip-path="url(#c)"><path d="m11 8s-1.18-1.18-2.258-2.258c-1.149-1.149-2.52-2.053-4.029-2.657-1.317-.527-2.713-1.085-2.713-1.085v12h9z" fill="#4b4b4b"/></g><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m9 23s.077.231.189.566c.484 1.453 1.845 2.434 3.377 2.434h.234c1.348 0 2.581-.762 3.184-1.968.01-.021.016-.032.016-.032s.006.011.016.032c.603 1.206 1.836 1.968 3.184 1.968h.234c1.532 0 2.893-.981 3.377-2.434.112-.335.189-.566.189-.566" fill="none" stroke="#808080" stroke-width="1.5"/><path d="m22.964 21s-2.919-2.934-4.978-5.003c-1.097-1.104-1.095-2.888.006-3.989 0 0 .001-.001.002-.002.531-.531 1.252-.829 2.004-.828s1.472.302 2.002.835c.533.537.964.971.964.971s.476-.468 1.051-1.033c1.101-1.082 2.866-1.078 3.962.008 0 0 .001.001.001.001.535.531.837 1.253.839 2.007s-.297 1.477-.83 2.01c-2.079 2.08-5.023 5.023-5.023 5.023z" fill="#d92020"/><path d="m8.964 21s-2.919-2.934-4.978-5.003c-1.097-1.104-1.095-2.888.006-3.989 0 0 .001-.001.002-.002.531-.531 1.252-.829 2.004-.828s1.472.302 2.002.835c.533.537.964.971.964.971s.476-.468 1.051-1.033c1.101-1.082 2.866-1.078 3.962.008 0 0 .001.001.001.001.535.531.837 1.253.839 2.007s-.297 1.477-.83 2.01c-2.079 2.08-5.023 5.023-5.023 5.023z" fill="#d92020"/><path d="m13 19.829c0-.22.087-.431.243-.586.155-.156.366-.243.586-.243h4.342c.22 0 .431.087.586.243.156.155.243.366.243.586 0 .107-.053.207-.142.266-.595.397-2.858 1.905-2.858 1.905s-2.263-1.508-2.858-1.905c-.089-.059-.142-.159-.142-.266z" fill="#666"/></g></svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m19.491 4.051 2.537-1.926c1.816-1.379 4.033-2.125 6.312-2.125h.001c1.469 0 2.659 1.19 2.659 2.659v1.68c0 1.951-.272 3.893-.808 5.769l-.719 2.517c.954 2.488 1.16 5.149.667 7.68l.395.503c1.486 1.891 1.415 4.572-.168 6.382-.01.011-.02.022-.03.033-1.329 1.52-3.389 2.05-5.222 1.49l-.065.065c-2.063 2.063-4.861 3.222-7.778 3.222-.831 0-1.713 0-2.544 0-2.917 0-5.715-1.159-7.778-3.222l-.065-.065c-1.833.56-3.893.03-5.222-1.49-.01-.011-.02-.022-.03-.033-1.583-1.81-1.654-4.491-.168-6.382l.395-.503c-.493-2.53-.287-5.192.667-7.68l-.719-2.517c-.536-1.876-.808-3.818-.808-5.769 0-.626 0-1.239 0-1.68 0-1.469 1.19-2.659 2.659-2.659h.001c2.279 0 4.496.746 6.312 2.125l2.537 1.926c.348-.034.699-.051 1.053-.051h4.876c.354 0 .705.017 1.053.051z"/><path d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z" fill="#353535"/><g clip-path="url(#b)"><path d="m21 8s1.18-1.18 2.258-2.258c1.149-1.149 2.52-2.053 4.029-2.657 1.317-.527 2.713-1.085 2.713-1.085v12h-9z" fill="#4b4b4b"/></g><path d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z" fill="#353535"/><g clip-path="url(#c)"><path d="m11 8s-1.18-1.18-2.258-2.258c-1.149-1.149-2.52-2.053-4.029-2.657-1.317-.527-2.713-1.085-2.713-1.085v12h9z" fill="#4b4b4b"/></g><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m10.453 14.662-2.441-2.093c-.314-.269-.351-.743-.081-1.057.269-.314.743-.351 1.057-.081l4.559 3.907-4.841 1.383c-.398.114-.813-.117-.927-.515s.117-.813.515-.927zm11.094 0 2.159.617c.398.114.629.529.515.927s-.529.629-.927.515l-4.841-1.383 4.559-3.907c.314-.27.788-.233 1.057.081.27.314.233.788-.081 1.057z" fill="#fbe844"/><path d="m11.967 26.736c-.808-.561-1.502-1.294-2.025-2.166-.196-.327-.377-.629-.528-.879-.084-.141-.086-.317-.005-.46s.232-.231.396-.231h1.681c.987 0 1.952-.292 2.774-.84.821-.547 1.74-1.16 1.74-1.16s.919.613 1.74 1.16c.822.548 1.787.84 2.774.84h1.681c.164 0 .315.088.396.231s.079.319-.005.46c-.151.25-.332.552-.528.879-.523.872-1.217 1.605-2.025 2.166-1.026-1.084-7.04-1.084-8.066 0z" fill="#808080"/><path d="m11.967 26.736c1.026-1.084 2.472-1.736 4.032-1.736h.002c1.56 0 3.006.652 4.032 1.736-1.166.81-2.567 1.264-4.033 1.264-1.466 0-2.867-.454-4.033-1.264z" fill="#b3b3b3"/><path d="m25 17s2.336 2.973 3.963 5.044c.891 1.134.849 2.743-.101 3.829-.01.011-.02.022-.03.033-1.033 1.181-2.802 1.366-4.058.425-.06-.046-.121-.091-.18-.136-.966-.724-1.404-1.956-1.111-3.127.592-2.368 1.517-6.068 1.517-6.068z" fill="#00bafe"/><path d="m7 17s-2.336 2.973-3.963 5.044c-.891 1.134-.849 2.743.101 3.829l.03.033c1.033 1.181 2.802 1.366 4.058.425.06-.046.121-.091.18-.136.966-.724 1.404-1.956 1.111-3.127-.592-2.368-1.517-6.068-1.517-6.068z" fill="#00bafe"/><path d="m13 17.829c0-.22.087-.431.243-.586.155-.156.366-.243.586-.243h4.342c.22 0 .431.087.586.243.156.155.243.366.243.586 0 .107-.053.207-.142.266-.595.397-2.858 1.905-2.858 1.905s-2.263-1.508-2.858-1.905c-.089-.059-.142-.159-.142-.266z" fill="#666"/></g></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m19.491 4.051 2.537-1.926c1.816-1.379 4.033-2.125 6.312-2.125h.001c1.469 0 2.659 1.19 2.659 2.659v1.68c0 1.951-.272 3.893-.808 5.769l-.719 2.516c1.962 5.118.761 10.971-3.175 14.906-.432.432-.853.853-1.248 1.248-2.063 2.063-4.861 3.222-7.778 3.222-.831 0-1.713 0-2.544 0-2.917 0-5.715-1.159-7.778-3.222-.395-.395-.816-.816-1.248-1.248-3.936-3.935-5.137-9.788-3.175-14.906l-.719-2.516c-.536-1.876-.808-3.818-.808-5.769 0-.626 0-1.239 0-1.68 0-1.469 1.19-2.659 2.659-2.659h.001c2.279 0 4.496.746 6.312 2.125l2.537 1.926c.348-.034.699-.051 1.053-.051h4.876c.354 0 .705.017 1.053.051z"/><path d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z" fill="#353535"/><g clip-path="url(#b)"><path d="m21 8s1.18-1.18 2.258-2.258c1.149-1.149 2.52-2.053 4.029-2.657 1.317-.527 2.713-1.085 2.713-1.085v12h-9z" fill="#4b4b4b"/></g><path d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z" fill="#353535"/><g clip-path="url(#c)"><path d="m11 8s-1.18-1.18-2.258-2.258c-1.149-1.149-2.52-2.053-4.029-2.657-1.317-.527-2.713-1.085-2.713-1.085v12h9z" fill="#4b4b4b"/></g><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m19.165 14.171 4 2c.37.185.821.035 1.006-.336.185-.37.035-.821-.336-1.006l-4-2c-.37-.185-.821-.035-1.006.336-.185.37-.035.821.336 1.006z" fill="#fbe844"/><path d="m12.165 12.829-4 2c-.371.185-.521.636-.336 1.006.185.371.636.521 1.006.336l4-2c.371-.185.521-.636.336-1.006-.185-.371-.636-.521-1.006-.336z" fill="#fbe844"/><path d="m18.033 22.906-2.715-.678c-.401-.101-.646-.508-.546-.91.101-.401.508-.646.91-.546l4 1c.262.066.469.267.541.528.072.26-.002.539-.193.73l-1.469 1.47 1.469 1.47c.191.191.265.47.193.73-.072.261-.279.462-.541.528l-4 1c-.402.1-.809-.145-.91-.546-.1-.402.145-.809.546-.91l2.715-.678-1.063-1.064c-.287-.302-.287-.758 0-1.06z" fill="#808080"/><path d="m13 17.829c0-.22.087-.431.243-.586.155-.156.366-.243.586-.243h4.352c.217 0 .426.086.579.24.154.153.24.362.24.579v.001c0 .112-.056.218-.15.28-.607.405-2.85 1.9-2.85 1.9s-2.263-1.508-2.858-1.905c-.089-.059-.142-.159-.142-.266z" fill="#666"/></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m19.491 4.051 2.537-1.926c1.816-1.379 4.033-2.125 6.312-2.125h.001c1.469 0 2.659 1.19 2.659 2.659v1.68c0 1.951-.272 3.893-.808 5.769l-.719 2.516c1.962 5.118.761 10.971-3.175 14.906-.432.432-.853.853-1.248 1.248-2.063 2.063-4.861 3.222-7.778 3.222-.831 0-1.713 0-2.544 0-2.917 0-5.715-1.159-7.778-3.222-.395-.395-.816-.816-1.248-1.248-3.936-3.935-5.137-9.788-3.175-14.906l-.719-2.516c-.536-1.876-.808-3.818-.808-5.769 0-.626 0-1.239 0-1.68 0-1.469 1.19-2.659 2.659-2.659h.001c2.279 0 4.496.746 6.312 2.125l2.537 1.926c.348-.034.699-.051 1.053-.051h4.876c.354 0 .705.017 1.053.051z"/><path d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z" fill="#353535"/><g clip-path="url(#b)"><path d="m21 8s1.18-1.18 2.258-2.258c1.149-1.149 2.52-2.053 4.029-2.657 1.317-.527 2.713-1.085 2.713-1.085v12h-9z" fill="#4b4b4b"/></g><path d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z" fill="#353535"/><g clip-path="url(#c)"><path d="m11 8s-1.18-1.18-2.258-2.258c-1.149-1.149-2.52-2.053-4.029-2.657-1.317-.527-2.713-1.085-2.713-1.085v12h9z" fill="#4b4b4b"/></g><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m23 13 1.518-1.518c.162.114.315.243.457.385.656.656 1.025 1.546 1.025 2.473v1.16c0 1.933-1.567 3.5-3.5 3.5h-.002c-.928 0-1.817-.369-2.473-1.025-.348-.347-.615-.761-.789-1.211l1.764-1.764.963-.42z" fill="#fbe844"/><path d="m23 17.001c0 .123-.023.245-.067.36-.038.099-.092.191-.159.273-.063.076-.137.143-.219.198-.095.063-.2.11-.31.138-.206.052-.426.036-.623-.044-.115-.047-.221-.115-.312-.201-.095-.091-.171-.2-.224-.319-.057-.128-.086-.266-.086-.405v-2.001l2-2z"/><path d="m9 13-1.518-1.518c-.162.114-.315.243-.457.385-.656.656-1.025 1.546-1.025 2.473v1.16c0 1.933 1.567 3.5 3.5 3.5h.002c.928 0 1.817-.369 2.473-1.025.348-.347.615-.761.789-1.211l-1.764-1.764-.963-.42z" fill="#fbe844"/><path d="m9 17.001c0 .123.023.245.067.36.038.099.092.191.159.273.063.076.137.143.219.198.095.063.2.11.31.138.206.052.426.036.623-.044.115-.047.221-.115.312-.201.095-.091.171-.2.224-.319.057-.128.086-.266.086-.405v-2.001l-2-2z"/><path d="m13 19.829c0-.22.087-.431.243-.586.155-.156.366-.243.586-.243h4.342c.22 0 .431.087.586.243.156.155.243.366.243.586 0 .107-.053.207-.142.266-.595.397-2.858 1.905-2.858 1.905s-2.263-1.508-2.858-1.905c-.089-.059-.142-.159-.142-.266z" fill="#666"/><path d="m12 27 4-3 4 3" fill="none" stroke="#808080" stroke-width="1.5"/></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m19.491 4.051 2.537-1.926c1.816-1.379 4.033-2.125 6.312-2.125h.001c1.469 0 2.659 1.19 2.659 2.659v1.68c0 1.951-.272 3.893-.808 5.769l-.719 2.516c1.962 5.118.761 10.971-3.175 14.906-.432.432-.853.853-1.248 1.248-2.063 2.063-4.861 3.222-7.778 3.222-.831 0-1.713 0-2.544 0-2.917 0-5.715-1.159-7.778-3.222-.395-.395-.816-.816-1.248-1.248-3.936-3.935-5.137-9.788-3.175-14.906l-.719-2.516c-.536-1.876-.808-3.818-.808-5.769 0-.626 0-1.239 0-1.68 0-1.469 1.19-2.659 2.659-2.659h.001c2.279 0 4.496.746 6.312 2.125l2.537 1.926c.348-.034.699-.051 1.053-.051h4.876c.354 0 .705.017 1.053.051z"/><path d="m27 14s.698-2.442 1.269-4.441c.485-1.698.731-3.455.731-5.22 0-.626 0-1.239 0-1.68 0-.364-.295-.659-.659-.659 0 0 0 0-.001 0-1.842 0-3.635.603-5.102 1.718-2.666 2.024-6.738 5.115-6.738 5.115z" fill="#353535"/><g clip-path="url(#b)"><path d="m21 8s1.18-1.18 2.258-2.258c1.149-1.149 2.52-2.053 4.029-2.657 1.317-.527 2.713-1.085 2.713-1.085v12h-9z" fill="#4b4b4b"/></g><path d="m5 14s-.698-2.442-1.269-4.441c-.485-1.698-.731-3.455-.731-5.22 0-.626 0-1.239 0-1.68 0-.364.295-.659.659-.659h.001c1.842 0 3.635.603 5.102 1.718 2.666 2.024 6.738 5.115 6.738 5.115z" fill="#353535"/><g clip-path="url(#c)"><path d="m11 8s-1.18-1.18-2.258-2.258c-1.149-1.149-2.52-2.053-4.029-2.657-1.317-.527-2.713-1.085-2.713-1.085v12h9z" fill="#4b4b4b"/></g><path d="m13.562 6c-3.409 0-6.525 1.926-8.05 4.975-.21.421-.426.853-.644 1.289-2.31 4.62-1.404 10.2 2.248 13.852.432.432.853.853 1.248 1.248 1.688 1.688 3.977 2.636 6.364 2.636h2.544c2.387 0 4.676-.948 6.364-2.636l1.248-1.248c3.652-3.652 4.558-9.232 2.248-13.852-.218-.436-.434-.868-.644-1.289-1.525-3.049-4.641-4.975-8.05-4.975-1.579 0-3.297 0-4.876 0z" fill="#353535"/><path d="m9.502 19c.928 0 1.817-.369 2.473-1.025s1.025-1.545 1.025-2.473c0-.384 0-.775 0-1.16 0-1.933-1.567-3.5-3.5-3.5h-.002c-.928 0-1.817.369-2.473 1.025s-1.025 1.546-1.025 2.473v1.16c0 1.933 1.567 3.5 3.5 3.5z" fill="#fbe844"/><path d="m9 12.841c0-.264.105-.519.293-.706.187-.187.441-.293.706-.293h.002c.265 0 .519.106.706.293.188.187.293.442.293.706v4.16c0 .265-.105.519-.293.706-.187.188-.441.293-.706.293-.001 0-.001 0-.002 0-.265 0-.519-.105-.706-.293-.188-.187-.293-.441-.293-.706 0-1.146 0-3.014 0-4.16z"/><path d="m22.498 19c-.928 0-1.817-.369-2.473-1.025s-1.025-1.545-1.025-2.473c0-.384 0-.775 0-1.16 0-1.933 1.567-3.5 3.5-3.5h.002c.928 0 1.817.369 2.473 1.025s1.025 1.546 1.025 2.473v1.16c0 1.933-1.567 3.5-3.5 3.5z" fill="#fbe844"/><path d="m23 12.841c0-.264-.105-.519-.293-.706-.187-.187-.441-.293-.706-.293-.001 0-.001 0-.002 0-.265 0-.519.106-.706.293-.188.187-.293.442-.293.706v4.16c0 .265.105.519.293.706.187.188.441.293.706.293h.002c.265 0 .519-.105.706-.293.188-.187.293-.441.293-.706 0-1.146 0-3.014 0-4.16z"/><path d="m11.534 27.409c-.624-.509-1.165-1.127-1.592-1.839-.524-.873-.942-1.57-.942-1.57s.905.226 1.854.464c1.367.341 2.814.091 3.986-.691.621-.414 1.16-.773 1.16-.773s.539.359 1.16.773c1.172.782 2.619 1.032 3.986.691.949-.238 1.854-.464 1.854-.464s-.418.697-.942 1.57c-.427.712-.968 1.33-1.592 1.839-1.066-.897-7.866-.897-8.932 0z" fill="#808080"/><path d="m11.534 27.409c1.066-.897 2.429-1.409 3.863-1.409h1.206c1.434 0 2.797.512 3.863 1.409-1.242 1.014-2.814 1.591-4.466 1.591-1.652 0-3.224-.577-4.466-1.591z" fill="#b3b3b3"/><path d="m13 19.819c0-.217.086-.426.24-.579.153-.154.362-.24.579-.24h4.352c.22 0 .431.087.586.243.156.155.243.366.243.586 0 .107-.053.207-.142.266-.595.397-2.858 1.905-2.858 1.905s-2.243-1.495-2.85-1.9c-.094-.062-.15-.168-.15-.28 0-.001 0-.001 0-.001z" fill="#666"/></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m19.854 25.073c2.355.405 4.146 2.457 4.146 4.927h-16c0-2.47 1.791-4.522 4.146-4.927.469 1.687 7.239 1.687 7.708 0z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m22 15c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m22 9c1.105 0 2-.895 2-2s-.895-2-2-2c-3.074 0-8.926 0-12 0-1.105 0-2 .895-2 2s.895 2 2 2v3h12z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><path d="m8 12h16v3.002c.004.699.004 1.398-.001 2.097-.006.363-.033.724-.087 1.082-.11.742-.326 1.467-.638 2.149-.437.954-1.062 1.819-1.831 2.533-.156.145-.318.283-.485.415.315.092.624.206.924.341.564.255 1.094.586 1.572.98 1.089.899 1.894 2.126 2.28 3.486.177.622.262 1.263.266 1.909v2.006h-20c0-.727-.012-1.453.002-2.18.026-.818.181-1.632.486-2.393.21-.523.477-1.021.804-1.481.717-1.007 1.7-1.817 2.826-2.327.3-.135.61-.25.926-.341-.478-.377-.913-.808-1.294-1.285-.489-.611-.887-1.295-1.178-2.022-.254-.636-.427-1.305-.511-1.985-.037-.294-.055-.59-.06-.887-.005-.7-.005-1.399-.001-2.099z"/><path d="m19.854 25.073c2.355.405 4.146 2.457 4.146 4.927h-16c0-2.47 1.791-4.522 4.146-4.927.469 1.687 7.239 1.687 7.708 0z" fill="#fff"/><g clip-path="url(#a)"><path d="m13 26h2v5h-2z" fill="#666"/></g><path d="m12.146 25.073c.277-.048.563-.073.854-.073h6c.291 0 .577.025.854.073-.469 1.687-2.018 2.927-3.854 2.927s-3.385-1.24-3.854-2.927z" fill="#740d0d"/><path d="m22 15c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z" fill="#5963ef"/><g clip-path="url(#b)"><path d="m20 15c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1zm-6 0c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1z"/></g><path d="m22.102 3.001c.169.007.337.019.505.045.39.06.772.178 1.128.349.962.464 1.713 1.312 2.055 2.323.128.38.199.779.209 1.18.01.403-.041.808-.151 1.196-.133.468-.352.911-.644 1.301-.326.435-.737.793-1.204 1.07v3.535h-16v-3.535c-.08-.047-.079-.047-.157-.096-.081-.053-.081-.053-.16-.108-.129-.094-.254-.193-.373-.3-.284-.259-.531-.557-.73-.885-.238-.392-.407-.823-.499-1.272-.081-.397-.102-.807-.061-1.21.037-.364.124-.721.258-1.061.367-.931 1.086-1.704 1.987-2.138.356-.171.738-.289 1.128-.349.168-.026.336-.038.505-.045 4.068-.052 8.136-.052 12.204 0z" fill-rule="nonzero"/><path d="m22 9c1.105 0 2-.895 2-2s-.895-2-2-2c-3.074 0-8.926 0-12 0-1.105 0-2 .895-2 2s.895 2 2 2v3h12z" fill="#ebebeb"/><g clip-path="url(#c)"><path d="m7 8h18v2h-18z" fill="#9d9d9d"/></g></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m12 30c-1.326 0-2.598-.527-3.536-1.464-.937-.938-1.464-2.21-1.464-3.536 0-3.742 0-8.974 0-13.502 0-2.519 1.001-4.935 2.782-6.716s4.197-2.782 6.716-2.782h.786c2.577 0 5.048 1.024 6.87 2.846s2.846 4.293 2.846 6.87v.001c0 3.344-1.501 6.511-4.089 8.628-3.129 2.56-6.911 5.655-6.911 5.655 0 2.209-1.791 4-4 4z" fill="none" stroke="#000" stroke-width="4"/><path d="m12 30c-1.326 0-2.598-.527-3.536-1.464-.937-.938-1.464-2.21-1.464-3.536 0-3.742 0-8.974 0-13.502 0-2.519 1.001-4.935 2.782-6.716s4.197-2.782 6.716-2.782h.786c2.577 0 5.048 1.024 6.87 2.846s2.846 4.293 2.846 6.87v.001c0 3.344-1.501 6.511-4.089 8.628-3.129 2.56-6.911 5.655-6.911 5.655 0 2.209-1.791 4-4 4z" fill="#a3a9ff"/><path d="m10 12v8c0 1.061.421 2.078 1.172 2.828.75.751 1.767 1.172 2.828 1.172h1s4.753-4.753 7.351-7.351c1.056-1.056 1.649-2.488 1.649-3.981 0-.514 0-1.082 0-1.668 0-3.314-2.686-6-6-6-.333 0-.667 0-1 0-3.314 0-6 2.686-6 6z" fill="#8484f6"/><path d="m13 17c0-.796-.316-1.559-.879-2.121-.562-.563-1.325-.879-2.121-.879-.574 0-1 0-1 0v6h1c.796 0 1.559-.316 2.121-.879.563-.562.879-1.325.879-2.121z" fill="#a3a9ff"/><g fill="none" stroke-width="2"><path d="m15 23s2.864-2.228 5.361-4.17c2.296-1.785 3.639-4.531 3.639-7.44 0-.001 0-.001 0-.002 0-3.528-2.86-6.388-6.388-6.388-.037 0-.075 0-.112 0-3.59 0-6.5 2.91-6.5 6.5v2.5s.808.808 1.586 1.586c.781.781.781 2.047 0 2.828-.778.778-1.586 1.586-1.586 1.586" stroke="#343394"/><path d="m15 10c2.761 0 5 2.239 5 5" stroke="#a3a9ff"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m2 16s1.796-1.796 4.1-4.1c2.626-2.626 6.187-4.101 9.9-4.101s7.274 1.475 9.9 4.101c2.304 2.304 4.1 4.1 4.1 4.1s-1.796 1.796-4.1 4.1c-2.626 2.626-6.187 4.101-9.9 4.101s-7.274-1.475-9.9-4.101c-2.304-2.304-4.1-4.1-4.1-4.1z" fill="none" stroke="#000" stroke-width="4"/><path d="m11.083 8.691c-1.876 1.465 11.462 1.271 9.834 0 1.853.695 3.556 1.782 4.983 3.209 2.304 2.304 4.1 4.1 4.1 4.1s-1.796 1.796-4.1 4.1c-2.626 2.626-6.187 4.101-9.9 4.101s-7.274-1.475-9.9-4.101c-2.304-2.304-4.1-4.1-4.1-4.1s1.796-1.796 4.1-4.1c1.427-1.427 3.13-2.514 4.983-3.209z" fill="#fff"/><path d="m11.083 8.691c1.558-.584 3.221-.892 4.917-.892s3.36.308 4.917.892c1.628 1.271 2.752 3.158 3.021 5.309l-2.938 6-6 2.938c-3.944-.493-7-3.861-7-7.938 0-2.562 1.207-4.844 3.083-6.309z" fill="#666"/><path d="m23.938 14c.041.328.062.661.062 1 0 4.415-3.585 8-8 8-.339 0-.672-.021-1-.062v-1.938c0-.265.105-.52.293-.707.187-.188.442-.293.707-.293 2.761 0 5-2.239 5-5 0-.265.105-.52.293-.707.187-.188.442-.293.707-.293z" fill="#454545"/><circle cx="16" cy="15" r="4"/><circle cx="13" cy="12" fill="#fff" fill-opacity=".498039" r="3"/></g></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><ellipse cx="8.5" cy="16" fill="none" rx="6.5" ry="13" stroke="#000" stroke-width="4"/><ellipse cx="23.5" cy="16" fill="none" rx="6.5" ry="13" stroke="#000" stroke-width="4"/><path d="m28 6.623c1.232 2.366 2 5.694 2 9.377 0 7.062-2.822 12.817-6.332 12.996 1.15-4.239 3.285-22.672 4.332-22.373z" fill="#d9d9d9"/><path d="m23.668 28.996c-.056.003-.112.004-.168.004-3.587 0-6.5-5.825-6.5-13s2.913-13 6.5-13c1.746 0 3.332 1.379 4.5 3.623v9.264c0 4.749-1.535 9.34-4.332 13.109z" fill="#fff"/><path d="m13 6.623c1.232 2.366 2 5.694 2 9.377 0 7.062-2.822 12.817-6.332 12.996 1.15-4.239 3.285-22.672 4.332-22.373z" fill="#d9d9d9"/><path d="m8.668 28.996c-.056.003-.112.004-.168.004-3.587 0-6.5-5.825-6.5-13s2.913-13 6.5-13c1.746 0 3.332 1.379 4.5 3.623v9.264c0 4.749-1.535 9.34-4.332 13.109z" fill="#fff"/><ellipse cx="4.857" cy="16.75" rx="4.643" ry="5"/><ellipse cx="19.857" cy="16.75" rx="4.643" ry="5"/></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h32v32h-32z" fill="none"/><path d="m6.448 19.968c-.146-.474-.258-.958-.333-1.448-.07-.461-.105-.925-.114-1.391-.007-1.086-.007-2.172 0-3.258.006-.34.025-.679.064-1.017.085-.741.253-1.473.501-2.177.469-1.33 1.222-2.556 2.196-3.577 1.055-1.107 2.363-1.967 3.8-2.493.739-.27 1.51-.453 2.292-.542.338-.039.677-.058 1.017-.064.129-.001.128-.001.258 0 .34.006.679.025 1.017.064.782.089 1.553.272 2.292.542 1.437.526 2.745 1.386 3.8 2.493.974 1.021 1.727 2.247 2.196 3.577.248.704.416 1.436.501 2.177.039.338.058.677.064 1.017.007 1.086.007 2.172 0 3.258-.007.382-.031.763-.079 1.142-.063.491-.161.976-.296 1.452.614.304 1.184.698 1.685 1.167.69.646 1.248 1.432 1.628 2.299.195.445.343.91.441 1.386.044.212.076.425.103.64l.754 6.785h-27.235c0-2.06-.037-4.12.002-6.18.01-.296.034-.591.079-.884.095-.626.277-1.24.538-1.818.509-1.126 1.32-2.109 2.327-2.826.163-.115.331-.224.502-.324z"/><path d="m24.885 21.591c1.409.756 2.422 2.169 2.609 3.857.252 2.267.506 4.552.506 4.552l-2-2h-9l-2 2h-10s0-1.928 0-4c0-1.742.891-3.276 2.242-4.171.512.926 16.893 1.208 17.643-.238z" fill="#999"/><path d="m24 22.038v7.962h-9l-.275-1.101c-3.443-.552-6.152-3.3-6.645-6.762 2.97.571 12.859.696 15.92-.099z" fill="#737373"/><path d="m7.242 21.829c.79-.524 1.739-.829 2.758-.829h12.525c.85 0 1.654.213 2.36.591-.75 1.446-1.852 2.703-3.193 3.632-.9.624-1.902 1.098-2.955 1.397-1.013.288-2.07.413-3.122.373-1.123-.043-2.237-.275-3.282-.687-1.161-.458-2.232-1.135-3.146-1.985-.774-.722-1.433-1.566-1.945-2.492z" fill="#333"/><path d="m15.545 24.987c-4.207-.236-7.545-3.722-7.545-7.987v-3c0-4.418 3.582-8 8-8 4.418 0 8 3.582 8 8 0 .993-8.455 10.987-8.455 10.987z" fill="#a3a9ff"/><path d="m16.979 9h4v14.262c-1.367 1.088-3.097 1.738-4.979 1.738-.153 0-.305-.004-.455-.013l-2.405-5.61c-.106-.249-.161-.517-.161-.788 0-.953 0-3.404 0-5.589 0-1.061.421-2.078 1.171-2.828.75-.751 1.768-1.172 2.829-1.172z" fill="#8484f6"/><path d="m16.266 18c.338.008.673.05 1.002.133.776.196 1.493.609 2.053 1.181.183.187.355.391.497.611.003.005-.012-.018-.009-.013.027.04.054.08.076.123.068.128.107.271.114.416.005.113-.008.226-.041.334-.117.394-.475.682-.885.712-.113.009-.226-.002-.335-.032-.187-.051-.358-.157-.486-.302-.072-.08-.127-.173-.193-.258-.045-.057-.093-.113-.143-.166-.319-.332-.725-.569-1.174-.675-.166-.04-.336-.06-.507-.064-.181-.001-.363-.004-.544.003-.558.03-1.094.251-1.504.633-.089.083-.171.173-.246.269-.051.064-.096.132-.143.198-.03.037-.03.037-.062.074-.124.129-.272.227-.445.28-.107.032-.221.047-.334.042-.41-.017-.777-.294-.906-.685-.041-.122-.057-.252-.049-.381.01-.145.051-.287.121-.414.047-.085.104-.162.162-.241.121-.164.252-.319.394-.464.56-.572 1.277-.985 2.053-1.181.329-.083.664-.125 1.002-.133.177-.001.355-.001.532 0zm5.769-4.999c.15.007.296.043.43.114.112.058.213.139.295.235.075.087.134.188.175.295.037.097.058.2.064.303.019.374-.179.736-.504.921-.142.081-.298.122-.46.13-1.023.018-2.047.018-3.07 0-.162-.008-.318-.049-.46-.13-.325-.185-.523-.547-.504-.921.006-.103.027-.206.064-.303.041-.107.1-.208.175-.295.082-.096.183-.177.295-.235.134-.071.28-.107.43-.114 1.023-.018 2.047-.018 3.07 0zm-9 0c.15.007.296.043.43.114.112.058.213.139.295.235.075.087.134.188.175.295.133.35.055.755-.198 1.031-.07.076-.152.142-.242.193-.142.081-.298.122-.46.13-1.023.018-2.047.018-3.07 0-.15-.007-.296-.043-.43-.114-.112-.058-.213-.139-.295-.235-.075-.087-.134-.188-.175-.295-.133-.35-.055-.755.198-1.031.07-.076.152-.142.242-.193.142-.081.298-.122.46-.13 1.023-.018 2.047-.018 3.07 0z"/><path d="m20.124 8.001c.165.007.329.017.493.037.404.05.803.15 1.183.297.688.266 1.314.684 1.822 1.218.507.533.894 1.178 1.125 1.876.115.349.192.711.229 1.077.016.162.022.325.024.488v1.006h2.281l-.707 2.828c-.127.491-.283.972-.479 1.44-.452 1.076-1.093 2.063-1.882 2.922l5.405 10.81h-10.005l-3.487-10.46c-.158-.158-.318-.314-.473-.475-.068-.072-.134-.145-.199-.22-.382-.449-.701-.946-.94-1.485-.319-.721-.488-1.496-.512-2.282-.025-1.361-.002-2.723-.002-4.084.002-.163.008-.326.024-.488.037-.366.114-.728.229-1.077.231-.698.618-1.343 1.125-1.876.508-.534 1.134-.952 1.822-1.218.38-.147.779-.247 1.183-.297.164-.02.328-.03.493-.037.416-.005.832-.005 1.248 0z" fill-rule="nonzero"/><path d="m19.006 10c-.348.004-.689.058-1.017.176-.839.3-1.513.974-1.813 1.813-.108.302-.163.616-.175.936-.017 1.384-.041 2.769.002 4.153.019.442.106.877.265 1.291.196.506.493.963.869 1.353l.037.037.7.701 3.18 9.54h5.328l-4.599-9.197c.281-.281.564-.561.842-.844.094-.099.094-.098.186-.198.179-.203.352-.411.512-.629.399-.543.728-1.137.978-1.763.101-.251.189-.508.263-.768.057-.199.105-.4.155-.601h-1.719c0-1.025.012-2.05-.001-3.075-.003-.074-.007-.147-.014-.222-.035-.317-.113-.626-.242-.918-.341-.768-1.003-1.369-1.801-1.633-.281-.093-.572-.14-.867-.151-.357-.004-.713-.001-1.069-.001z" fill="#a3a9ff"/></svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><circle cx="16" cy="16" r="16"/><path d="m4.512 24c-.969-1.388-1.692-2.96-2.108-4.652 3.03.438 16.771-13.227 16.953-16.725l.054-.107.167-.054c3.578.945 6.597 3.272 8.45 6.374l1.842 5.249c.086.626.13 1.265.13 1.915 0 2.974-.929 5.732-2.512 8l-7.225 5.338c-1.344.43-2.777.662-4.263.662s-2.919-.232-4.263-.662z" fill="#ebebeb"/><path d="m4.641 7.818c1.878-2.6 4.625-4.531 7.815-5.365l6.918.157c.331 3.092-1.702 7.528-5.469 11.295-3.851 3.852-8.404 5.891-11.501 5.443-.264-1.073-.404-2.194-.404-3.348 0-.379.015-.755.045-1.126z" fill="#fff"/><path d="m17 14.49 11.332-3.966.66 1.888-11.381 3.983 6.841 9.235-1.607 1.191-6.845-9.242-6.741 9.102-1.607-1.191 6.737-9.095-11.407-3.992.661-1.888 11.357 3.975v-11.948h2z" fill="#ccc" fill-rule="nonzero"/><g fill="#303030"><path d="m28.028 8.836c.941 1.576 1.582 3.352 1.842 5.249l-2.282-1.658c-.351-.255-.497-.706-.363-1.118z"/><path d="m27.488 24c-1.74 2.492-4.27 4.393-7.225 5.338l1.51-4.647c.134-.412.518-.691.951-.691z"/><path d="m4.512 24h4.764c.433 0 .817.279.951.691l1.51 4.647c-2.955-.945-5.485-2.846-7.225-5.338z"/><path d="m12.456 2.453c1.132-.296 2.32-.453 3.544-.453 1.237 0 2.436.161 3.578.462l-2.967 2.156c-.351.255-.825.255-1.176 0z"/><path d="m4.641 7.818 1.134 3.491c.134.412-.012.863-.363 1.118l-3.367 2.447c.209-2.621 1.141-5.039 2.596-7.056z"/><path d="m15.412 8.866c.351-.255.825-.255 1.176 0 1.319.958 4.505 3.273 5.824 4.231.351.255.497.706.363 1.118-.504 1.552-1.72 5.296-2.224 6.847-.134.412-.518.691-.951.691-1.631 0-5.569 0-7.2 0-.433 0-.817-.279-.951-.691-.504-1.551-1.72-5.295-2.224-6.847-.134-.412.012-.863.363-1.118 1.319-.958 4.505-3.273 5.824-4.231z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 .017h32v32h-32z"/></clipPath><path d="m0 .017h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m32 8.017c0-4.419-3.582-8-8-8h-16c-4.418 0-8 3.581-8 8v16c0 4.418 3.582 8 8 8h16c4.418 0 8-3.582 8-8z"/><path d="m30 8.017c0-1.592-.632-3.118-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757h-16c-1.591 0-3.117.632-4.243 1.757-1.125 1.125-1.757 2.651-1.757 4.243v16c0 1.591.632 3.117 1.757 4.242 1.126 1.126 2.652 1.758 4.243 1.758h16c1.591 0 3.117-.632 4.243-1.758 1.125-1.125 1.757-2.651 1.757-4.242z" fill="#808080"/><g fill="none" stroke="#000" stroke-width="3"><path d="m7 9.017 4 4"/><path d="m21 13.017 4-4"/><path d="m8 24.017s1.841-1.842 3.757-3.758c1.126-1.125 2.652-1.757 4.243-1.757s3.117.632 4.243 1.757c1.916 1.916 3.757 3.758 3.757 3.758"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 .017h32v32h-32z"/></clipPath><path d="m0 .017h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m25 5.015c0-2.761 2.238-4.998 4.998-4.998h2.002v5.716c0 1.257-.464 2.406-1.232 3.284h1.232v7.412c0 3.638-2.949 6.588-6.587 6.588h-4.413v-3.786h-2v-5.048c-.835.266-1.715.405-2.608.405h-2.392v-5.106c0-2.283.907-4.473 2.521-6.087 1.615-1.614 3.804-2.521 6.087-2.521h2.392z"/><path d="m16.002 2.017c1.591 0 3.116.632 4.241 1.756.921.921 1.511 2.109 1.695 3.383 1.454.283 2.803.994 3.866 2.057 1.406 1.406 2.196 3.313 2.196 5.302v.004c0 .502-.05 1-.149 1.485.657.361 1.266.816 1.806 1.356 1.488 1.488 2.33 3.503 2.343 5.607v.05c0 2.121-.843 4.156-2.343 5.657-1.5 1.5-3.535 2.343-5.657 2.343 0 0-16 0-16.006 0-.884-.003-1.763-.148-2.599-.436-1.35-.465-2.564-1.294-3.488-2.381-.677-.795-1.195-1.723-1.517-2.717-.258-.794-.387-1.625-.39-2.46v-.056c.013-2.104.855-4.119 2.343-5.607.54-.54 1.149-.995 1.806-1.356-.099-.485-.149-.983-.149-1.485v-.004c0-1.989.79-3.896 2.196-5.302.799-.799 1.759-1.399 2.804-1.768v-3.428c.027-1.071.828-1.916 1.897-1.998l.103-.002z"/><path d="m21 10.716c-1.233 1.199-2.886 1.872-4.608 1.872h-.392s0-1.384 0-3.106c0-1.753.696-3.434 1.935-4.673 1.24-1.239 2.92-1.935 4.673-1.935h.392v3.106c0 .428-.041.851-.122 1.265.362-.149.754-.228 1.154-.228h1.968v4.282c.495-.183 1.029-.282 1.587-.282h2.413v5.412c0 2.534-2.054 4.588-4.587 4.588h-2.413v-3.786h-.032-1.968zm9-8.699v3.716c0 1.656-1.342 2.998-2.998 2.998h-.002s0-1.927 0-3.716c0-1.656 1.342-2.998 2.998-2.998z" fill="#f08c00"/><path d="m21.032 6.017h.968v3.18c.322-.117.669-.18 1.032-.18h.968v4.781c.538-.486 1.25-.781 2.032-.781h1.968v3.968c0 1.674-1.357 3.032-3.032 3.032h-1.968v-3.782c-.538.486-1.25.782-2.032.782h-.968v-4.18c-.322.116-.669.18-1.032.18h-.968s0-2.077 0-3.969c0-1.674 1.357-3.031 3.032-3.031z" fill="#ffbf36"/><path d="m16.002 4.017c1.06 0 2.077.421 2.827 1.171.75.749 1.171 1.766 1.171 2.827v.004c0 .339-.043.674-.127.998h.629c1.458 0 2.857.579 3.888 1.61s1.61 2.43 1.61 3.888v.004c0 .933-.237 1.841-.678 2.645 1.097.248 2.112.802 2.921 1.61 1.116 1.116 1.747 2.628 1.757 4.205v.038c0 1.591-.632 3.117-1.757 4.242-1.126 1.126-2.652 1.758-4.243 1.758h-16c-.664-.002-1.326-.111-1.954-.327-1.012-.349-1.923-.97-2.616-1.786-.508-.596-.896-1.292-1.138-2.037-.193-.598-.29-1.223-.292-1.85v-.038c.01-1.577.641-3.089 1.757-4.205.809-.808 1.824-1.362 2.921-1.61-.441-.804-.678-1.712-.678-2.645v-.004c0-1.458.579-2.857 1.61-3.888.975-.974 2.277-1.545 3.648-1.605l-.004-.01c-.167-.481-.252-.986-.254-1.495v-3.5h5.002z" fill="#9a6f42"/><path d="m10.731 25.852c-.071-.048-.136-.105-.195-.172-.279-.321-.324-.783-.113-1.153.353-.618.733-1.283 1.089-1.906.92-1.611 2.633-2.604 4.487-2.604h.002c1.854 0 3.567.993 4.487 2.604.356.623.736 1.288 1.089 1.906.211.37.166.832-.113 1.153-.059.067-.124.124-.195.172l-5.269-1.835z" fill="#352412"/><path d="m16.107 23.017c1.828 0 3.558.831 4.7 2.259l.462.576c-.271.183-.619.225-.931.1-.379-.152-.753-.301-1.086-.435-.827-.33-1.71-.5-2.6-.5h-1.304c-.89 0-1.773.17-2.6.5-.333.134-.707.283-1.086.435-.312.125-.66.083-.931-.1l.462-.576c1.142-1.428 2.872-2.259 4.7-2.259z" fill="#1f140a"/><path d="m11 12.017c.271 0 .534.036.784.103.216.88 1.799 4.711 2.216 4.398v.501c0 .795-.316 1.557-.878 2.12-.562.562-1.325.878-2.12.878-.001 0-.001 0-.002 0-1.657 0-3-1.343-3-3 0-.655 0-1.348 0-2.002 0-.795.316-1.558.878-2.12s1.325-.878 2.12-.878z" fill="#fff"/><path d="m11.784 12.12c1.277.345 2.216 1.511 2.216 2.897v1.501c-.417.313-.936.499-1.498.499h-.004c-1.38 0-2.498-1.119-2.498-2.498v-.004c0-1.132.752-2.088 1.784-2.395z"/><path d="m21 12.017c.271 0 .534.036.784.103.216.88 1.799 4.711 2.216 4.398v.501c0 .795-.316 1.557-.878 2.12-.562.562-1.325.878-2.12.878-.001 0-.001 0-.002 0-1.657 0-3-1.343-3-3 0-.655 0-1.348 0-2.002 0-.795.316-1.558.878-2.12s1.325-.878 2.12-.878z" fill="#fff"/><path d="m21.784 12.12c1.277.345 2.216 1.511 2.216 2.897v1.501c-.417.313-.936.499-1.498.499h-.004c-1.38 0-2.498-1.119-2.498-2.498v-.004c0-1.132.752-2.088 1.784-2.395z"/></g></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m20.465 7.069c.161.017.322.037.483.061 1.116.163 2.208.482 3.237.944 1.403.629 2.684 1.524 3.758 2.624.981 1.006 1.786 2.18 2.371 3.457.52 1.135.863 2.348 1 3.589.148 1.335.06 2.693-.257 3.998-.07.287-.151.572-.243.853-.094.29-.202.575-.306.86-.401 1.101-.95 2.146-1.63 3.1-.903 1.266-2.035 2.365-3.325 3.233-1.395.939-2.972 1.603-4.619 1.944-.783.161-1.577.246-2.375.266-1.663.024-3.327.009-4.99.001-.423-.006-.845-.028-1.266-.074-.826-.088-1.644-.257-2.438-.502-1.406-.434-2.736-1.109-3.917-1.987-1.084-.806-2.041-1.781-2.826-2.881-.657-.922-1.185-1.927-1.588-2.985-.09-.244-.179-.488-.266-.734-.138-.4-.259-.805-.354-1.217-.199-.859-.299-1.74-.298-2.621.001-1.05.147-2.099.431-3.11.621-2.206 1.89-4.219 3.594-5.749 1.115-1.002 2.415-1.796 3.815-2.331.911-.349 1.863-.588 2.831-.71.083-.011.166-.02.249-.029l2.022-6.069h4.884l2.023 6.069z"/><path d="m12 12 3-9h2l3 9z" fill="#219555"/><path d="m28.801 15.729c-1.482-4.042-5.33-6.729-9.635-6.729-2.049 0-4.283 0-6.332 0-4.305 0-8.153 2.687-9.635 6.729v.001c-.774 2.112-.777 4.429-.009 6.543.059.162.119.327.18.494 1.579 4.342 5.706 7.233 10.326 7.233h4.608c4.62 0 8.747-2.891 10.326-7.233.061-.167.121-.332.18-.494.768-2.114.765-4.431-.009-6.543 0 0 0 0 0-.001z" fill="#ec6c10"/><g fill="#ffec70"><path d="m5 17 4 6 3-2 2 2 2-2 2 2 2-2 3 2 4-6v3.528c0 2.741-1.549 5.246-4 6.472l-3-2-2 2-2-2-1.624 2-2.376-2-3 2c-2.451-1.226-4-3.731-4-6.472 0-1.831 0-3.528 0-3.528z"/><path d="m7 13 6 5s-.926.309-2.051.684c-.915.305-1.921.151-2.703-.413-.782-.563-1.246-1.469-1.246-2.433 0-1.504 0-2.838 0-2.838z"/><path d="m25 13-6 5s.926.309 2.051.684c.915.305 1.921.151 2.703-.413.782-.563 1.246-1.469 1.246-2.433 0-1.504 0-2.838 0-2.838z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m6 30c-1.657 0-3-1.343-3-3 0-2.684 0-6.737 0-10.317 0-4.531 3.046-8.495 7.423-9.663 5.051-1.347 11.657-3.108 16.417-4.377.844-.225 1.737.124 2.205.862.467.738.401 1.695-.163 2.362-2.624 3.101-5.697 6.733-6.612 7.814-.18.213-.354.43-.521.653-.601.803-2.178 2.904-3.528 4.705-1.472 1.962-3.237 3.687-5.233 5.113-1.897 1.354-3.988 2.848-3.988 2.848 0 1.657-1.343 3-3 3z" fill="none" stroke="#000" stroke-width="4"/><path d="m6 30c-1.657 0-3-1.343-3-3 0-2.684 0-6.737 0-10.317 0-4.531 3.046-8.495 7.423-9.663 5.051-1.347 11.657-3.108 16.417-4.377.844-.225 1.737.124 2.205.862.467.738.401 1.695-.163 2.362-2.624 3.101-5.697 6.733-6.612 7.814-.18.213-.354.43-.521.653-.601.803-2.178 2.904-3.528 4.705-1.472 1.962-3.237 3.687-5.233 5.113-1.897 1.354-3.988 2.848-3.988 2.848 0 1.657-1.343 3-3 3z" fill="#a3a9ff"/><path d="m5 17v3c0 2.209 1.791 4 4 4h1l6-6 2-3 8-9-2-1-16 6-3 4z" fill="#8484f6"/><path d="m8 18c0-.796-.316-1.559-.879-2.121-.562-.563-1.325-.879-2.121-.879-.574 0-1 0-1 0v6h1c.796 0 1.559-.316 2.121-.879.563-.562.879-1.325.879-2.121z" fill="#a3a9ff"/><g fill="none" stroke-width="2"><path d="m10 23s3.994-3.328 5.465-4.554c.356-.297.686-.624.985-.978.95-1.122 3.07-3.628 3.07-3.628s4.474-5.288 6.502-7.684c.128-.152.142-.37.033-.537-.109-.166-.315-.241-.505-.184-3.06.918-10.26 3.078-14.736 4.421-2.365.709-4.181 2.612-4.78 5.007-.022.088-.034.137-.034.137s.808.808 1.586 1.586c.781.781.781 2.047 0 2.828-.778.778-1.586 1.586-1.586 1.586" stroke="#343394" stroke-linejoin="round"/><path d="m11 13c1.657 0 3 1.343 3 3" stroke="#a3a9ff"/><path d="m17 11h.001c.552 0 .999.447.999.999v.001" stroke="#a3a9ff"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m10.008 29.799c-.971.825-2.262 1.186-3.532.975-1.75-.292-4.805-.801-4.805-.801-.964-.161-1.671-.995-1.671-1.973 0 0 0-2.958 0-5.277 0-2.092.471-4.158 1.378-6.044 1.874-3.896 5.32-11.059 5.32-11.059.192-.4.511-.724.908-.922l8.655-4.328c.831-.416 1.793-.484 2.675-.19.881.294 1.61.926 2.025 1.757.74 1.478 1.917 3.833 2.627 5.253.826 1.652.156 3.66-1.496 4.486-.655.328-1.483.742-2.232 1.116-1.003.502-2.164.584-3.228.23-.395-.132-.765-.32-1.099-.556l-1.533.768v3.766h5.929c.411 0 .818.036 1.216.107.955-.715 2.121-1.107 3.327-1.107h1.974c1.473 0 2.886.585 3.927 1.627 1.042 1.041 1.627 2.454 1.627 3.927v4.892c0 1.473-.585 2.886-1.627 3.927-1.041 1.042-2.454 1.627-3.927 1.627h-1.974c-1.206 0-2.372-.392-3.327-1.107-.398.071-.805.107-1.216.107h-5.436c-.655-.002-1.308-.072-1.947-.215-.89-.198-1.748-.532-2.538-.986z"/><path d="m25 22s-.774-.774-1.536-1.536c-.937-.937-2.209-1.464-3.535-1.464-1.737 0-4.258 0-6.325 0-2.152 0-4.063 1.377-4.744 3.419-.449 1.348-.86 2.581-.86 2.581s.396.528.9 1.2c1.322 1.763 3.397 2.8 5.6 2.8h5.429c1.326 0 2.598-.527 3.535-1.464.762-.762 1.536-1.536 1.536-1.536z" fill="#595959"/><path d="m12 17.275c0 .483.04.964.119 1.44.104.622.261 1.566.414 2.485.293 1.757-.281 3.548-1.54 4.807-.744.744-1.549 1.549-2.137 2.137-.537.537-1.301.782-2.051.657-1.75-.292-4.805-.801-4.805-.801v-5.277c0-1.792.403-3.562 1.18-5.177l4.341-9.025 2.479 1.479 2 3z" fill="#323232"/><path d="m8.5 6.486 2.5 1.514 1 4v1l-4.479-4.479z" fill="#818181"/><path d="m14.32 10.834-2.32 1.166-3.5-5.514s5.928-2.963 8.656-4.327c.356-.179.769-.208 1.147-.082s.691.397.869.754l2.231 4.461-.399.671-4.087 1.902-.941.141-.762.381-.594-.044zm7.526-2.645c.256.642-.019 1.384-.648 1.699-.655.327-1.483.741-2.232 1.116-.529.264-1.141.307-1.701.12-.229-.076-.441-.188-.63-.329l.347-.746 4.198-2.052z" fill="#595959"/><path d="m15.976 10.006-1.656.828-1.014-2.028c.298-.149.596-.299.894-.448l1.014 2.029 1.609-.804-1.017-2.034c.298-.149.596-.298.894-.447l1.017 2.033 1.608-.804-1.019-2.039c.298-.149.596-.298.894-.447l1.02 2.039 1.183-.592.396.792c.015.031.029.063.043.095l.004.01-5.211 2.606-.02-.015c-.268-.208-.487-.471-.639-.774z" fill="#1e1e1e"/><path d="m26.446 30c.943 0 1.847-.374 2.513-1.041.667-.667 1.041-1.571 1.041-2.513 0-1.544 0-3.348 0-4.892 0-.942-.374-1.846-1.041-2.513-.666-.667-1.57-1.041-2.513-1.041-.698 0-1.393 0-1.974 0-.942 0-1.846.374-2.513 1.041-.848.848-2.067 2.067-3.084 3.084-1.036 1.036-1.036 2.714 0 3.75l3.084 3.084c.667.667 1.571 1.041 2.513 1.041z" fill="#323232"/><path d="m6 22c1.104 0 2 .896 2 2s-.896 2-2 2-2-.896-2-2 .896-2 2-2zm0 1c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1z" fill="#2176ff"/></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m22 10c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m8.005 12.271c-.002-.057-.003-.114-.004-.172-.005-.733-.005-1.465 0-2.198.015-.854.157-1.699.435-2.506.395-1.145 1.051-2.195 1.907-3.052.833-.833 1.85-1.477 2.96-1.875.835-.299 1.712-.451 2.598-.467.099-.001.099-.001.198 0 .886.016 1.763.168 2.598.467 1.204.431 2.297 1.153 3.166 2.089.757.815 1.339 1.787 1.701 2.838.278.807.42 1.652.435 2.506.005.733.005 1.465 0 2.198-.001.058-.002.115-.004.172.015-.009.031-.018.047-.027.205-.112.43-.187.661-.222.103-.015.129-.015.232-.021.117 0 .117 0 .234.006.117.013.231.03.345.06.226.06.44.16.632.294.097.067.183.144.268.225l1 1c.071.075.091.093.155.174.097.122.179.256.245.397.231.498.246 1.081.041 1.59-.073.183-.175.346-.293.502l-2.462 3.077c.121.087.239.178.354.273 1.112.918 1.927 2.177 2.303 3.569.162.596.239 1.209.243 1.826v7.006h-24c0-2.393-.044-4.787.002-7.18.026-.818.181-1.632.486-2.393.21-.523.478-1.021.804-1.481.444-.623.99-1.171 1.608-1.619l-2.462-3.078c-.062-.082-.08-.102-.135-.19-.082-.132-.149-.274-.199-.422-.175-.52-.125-1.101.135-1.584.093-.174.212-.324.347-.467l1-1c.085-.081.171-.158.268-.225.192-.134.406-.234.632-.294.114-.03.228-.047.345-.06.117-.006.117-.006.234-.006.103.006.129.006.232.021.231.035.456.11.661.222.016.009.032.018.047.027z"/><path d="m8.57 20.629c.104.124 4.518 2.58 4.518 2.58l-1.399 6.791h-5.689v-5c0-1.88 1.037-3.517 2.57-4.371zm9.309 9.371h-3.758l1.879-4.879zm5.542-9.376c1.538.853 2.579 2.493 2.579 4.376v5h-4.939l-2.149-6.791z" fill="#999"/><path d="m8.57 20.629c.72-.401 1.548-.629 2.43-.629h10c.878 0 1.704.227 2.421.624l-.25.313c-.053.063-.053.063-.11.124l-2.149 2.148 2.025 1.62-1.874 2.342-.002 2.829h-3.182l-1.879-1.879-1.879 1.879h-2.432l-.752-2.829-1.874-2.342 2.025-1.62-2.149-2.148-.057-.061c-.104-.123-.208-.247-.312-.371z" fill="#333"/><path d="m12.155 24.276 2.845-.276-.061 3.061-2.939 2.939h-2v-4zm5.046-4.036 2.799-2.24 5-4 1 1-4 5-2.266 2.266-2.533-.106z" fill="#a3a9ff"/><path d="m19.734 22.266-4.795 4.795-2.784-2.785 5.046-4.036z" fill="#343394"/><path d="m22 26v4h-2l-10-10-4-5 1-1z" fill="#a3a9ff"/><path d="m22 10c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z" fill="#a3a9ff"/><g clip-path="url(#b)"><path d="m20.041 9.001c.141.008.278.041.405.104.109.054.207.128.29.218.244.265.327.651.213.993-.033.098-.081.19-.141.273-.089.122-.204.22-.336.293-.687.355-1.37.72-2.076 1.036-.13.054-.268.084-.409.082-.131-.002-.262-.03-.382-.081-.112-.048-.214-.117-.302-.201-.073-.072-.136-.155-.185-.246-.179-.335-.15-.754.074-1.061.089-.122.204-.22.336-.293.687-.355 1.37-.72 2.076-1.036.087-.036.176-.061.269-.074.056-.006.112-.009.168-.007zm-8.026-.001c.142.004.277.035.407.093.696.336 1.398.664 2.075 1.039.121.072.227.164.311.279.077.105.133.226.164.354.029.118.035.241.02.362-.013.102-.042.202-.085.295-.161.345-.514.573-.894.578-.151.002-.298-.032-.435-.093-.696-.336-1.398-.664-2.075-1.039-.121-.072-.227-.164-.311-.279-.206-.283-.249-.663-.11-.985.037-.086.086-.167.146-.239.077-.094.171-.174.277-.234.123-.07.258-.111.398-.126.037-.003.074-.005.112-.005z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m20 30c0-2.761-2.239-5-5-5-1.912 0-4.091 0-6.002 0-1.326 0-2.597.527-3.534 1.464s-1.464 2.208-1.464 3.534v.002z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m18 15c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m14 9h16v23h-16z" fill-rule="nonzero"/><path d="m16 11h12v19h-12z" fill="#fff"/><path d="m27 29h-11v-1h11zm0-3h-11v-1h11zm0-3h-11v-1h11zm0-3h-11v-1h11zm0-3h-11v-1h11zm0-3h-11v-1h11z" fill="#b4d7ec"/><path d="m26.97 12.243-1.97 7.88v1.412l-6.799 6.678-1.402-1.426 6.201-6.091v-.819l2.03-8.12c.647.162 1.293.324 1.94.486z" fill="#00a513" fill-rule="nonzero"/><path d="m27 22v2h-2.598l-2.524-5.004-2.004 2.988-1.768-3.537-2-4 1.788-.894 2.232 4.463 1.996-2.976 3.512 6.96z" fill="#e50000" fill-rule="nonzero"/><path d="m7.043 23.279c-.167-.132-.329-.271-.486-.416-.769-.714-1.394-1.579-1.831-2.533-.326-.712-.546-1.471-.652-2.246-.045-.327-.067-.655-.073-.985-.005-.733-.005-1.465 0-2.198.005-.264.019-.527.048-.79.069-.616.21-1.224.419-1.808.386-1.078 1.006-2.069 1.805-2.889.869-.891 1.945-1.573 3.122-1.978.807-.278 1.652-.42 2.506-.435.099-.001.099-.001.198 0 .886.016 1.763.168 2.598.467 1.047.375 2.012.97 2.818 1.736.902.859 1.597 1.927 2.017 3.099.209.584.35 1.192.419 1.808.029.263.043.526.048.79.005.733.005 1.465 0 2.198-.006.33-.028.658-.073.985-.088.646-.256 1.281-.498 1.887-.279.697-.656 1.353-1.117 1.945-.394.506-.849.965-1.353 1.362.316.092.624.206.924.341.564.255 1.094.586 1.572.98 1.134.937 1.959 2.228 2.325 3.653.147.569.217 1.154.221 1.742v2.006h-20c0-.725-.011-1.45.002-2.175.023-.746.156-1.483.408-2.186.523-1.463 1.537-2.728 2.849-3.557.433-.273.897-.499 1.379-.672.134-.048.269-.092.405-.131z"/><path d="m20 30c0-2.761-2.239-5-5-5-1.912 0-4.091 0-6.002 0-1.326 0-2.597.527-3.534 1.464s-1.464 2.208-1.464 3.534v.002z" fill="#303030"/><g clip-path="url(#b)"><path d="m9 26h6v4h-6z" fill="#fff"/><circle cx="12" cy="24" fill="#a3a9ff" r="4"/></g><path d="m18 15c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z" fill="#a3a9ff"/><g clip-path="url(#c)"><path d="m16 15c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1zm-6 0c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m24 12c0-4.418-3.582-8-8-8-4.418 0-8 3.582-8 8v3c0 4.418 3.582 8 8 8 4.418 0 8-3.582 8-8z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><path d="m10.083 23.062c-.313-.23-.612-.477-.895-.741-.94-.875-1.71-1.931-2.253-3.094-.4-.858-.677-1.771-.82-2.707-.07-.461-.105-.925-.114-1.391-.007-1.086-.007-2.172 0-3.258.006-.34.025-.679.064-1.017.089-.782.272-1.553.542-2.292.513-1.399 1.341-2.677 2.407-3.717 1.067-1.042 2.366-1.841 3.779-2.319.708-.24 1.443-.399 2.187-.475.337-.034.675-.049 1.014-.051.045 0 .09 0 .135.001.34.006.679.025 1.017.064.782.089 1.553.272 2.292.542 1.324.485 2.539 1.253 3.548 2.238 1.095 1.069 1.94 2.388 2.448 3.832.248.704.416 1.436.501 2.177.039.338.058.677.064 1.017.007 1.086.007 2.172 0 3.258-.007.382-.031.763-.079 1.142-.104.82-.311 1.627-.614 2.396-.689 1.747-1.876 3.281-3.386 4.393.019.003.037.005.056.008.657.092 1.301.278 1.906.551.564.255 1.094.586 1.572.98 1.112.918 1.927 2.177 2.303 3.569.162.596.239 1.209.243 1.826v2.006h-24c0-.717-.012-1.454.002-2.18.01-.296.034-.591.079-.884.095-.626.277-1.24.538-1.818.509-1.126 1.32-2.109 2.327-2.826.46-.326.958-.594 1.481-.804.532-.213 1.089-.353 1.656-.426z"/><path d="m21.709 25.05c2.425.344 4.291 2.429 4.291 4.95h-20s0-.001 0-.002c0-1.326.527-2.597 1.464-3.534.769-.769 1.763-1.262 2.828-1.414 1.269 1.785 10.148 1.785 11.417 0z" fill="#999"/><path d="m10.292 25.05c.232-.033.468-.05.706-.05h10.002c.241 0 .477.017.709.05-1.269 1.785-3.354 2.95-5.709 2.95s-4.439-1.165-5.708-2.95z" fill="#a3a9ff"/><path d="m24 12c0-4.418-3.582-8-8-8-4.418 0-8 3.582-8 8v3c0 4.418 3.582 8 8 8 4.418 0 8-3.582 8-8z" fill="#a3a9ff"/><g clip-path="url(#a)"><path d="m16.266 16.001c.338.007.673.049 1.002.132.798.202 1.533.632 2.1 1.23.124.131.24.269.346.414.063.086.128.173.176.267.066.13.104.273.109.418.005.129-.015.258-.059.38-.039.106-.095.205-.167.292-.26.318-.702.445-1.092.314-.171-.058-.316-.16-.436-.293-.031-.037-.059-.075-.087-.116-.002-.003.009.015.007.011-.042-.059-.083-.117-.129-.174-.324-.393-.763-.679-1.258-.804-.178-.045-.36-.067-.543-.072-.181-.001-.363-.004-.544.003-.194.01-.386.042-.573.098-.525.159-.977.498-1.284.951l.006-.009c-.027.04-.027.039-.056.078-.031.037-.031.037-.064.073-.127.126-.277.221-.451.269-.109.03-.222.042-.335.035-.41-.027-.77-.313-.89-.706-.038-.123-.052-.254-.04-.382s.048-.254.108-.369c.048-.093.111-.179.174-.264.12-.163.251-.318.393-.463.56-.572 1.277-.985 2.053-1.181.329-.083.664-.125 1.002-.132.177-.002.355-.002.532 0zm-3.266-6.001v2.5c0 .398-.158.779-.439 1.061-.282.281-.663.439-1.061.439s-.779-.158-1.061-.439c-.281-.282-.439-.663-.439-1.061v-.5l2-2zm7 0 2 2v.5c0 .398-.158.779-.439 1.061-.282.281-.663.439-1.061.439s-.779-.158-1.061-.439c-.281-.282-.439-.663-.439-1.061v-2.5z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m24 14c0-2.761-2.239-5-5-5-2.761 0-5 2.239-5 5v2c0 2.761 2.239 5 5 5 2.761 0 5-2.239 5-5 0-.661 0-1.339 0-2z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m7.153 1.003.151.012.15.019.149.026.145.034.143.041.14.047.138.054.133.06.129.067.126.072.122.078.117.084.113.088.109.094.104.099.099.104.094.109.089.113.083.117.078.122.072.125.067.13.06.134.054.137.047.14.041.143.034.146.026.147.019.151.012.152.003.127v4.05l-.003.124-.011.147-.018.147-.026.145-.032.143-.039.142-.046.139-.053.136-.059.134-.066.131-.072.128-.078.124-.085.12-.091.117-.097.112-.089.093.764 6.872 4.825 4.021h8.288l.112.001.124.005.123.008.123.01.122.014.122.017.122.019.12.023.12.025.119.029.118.031.117.034.117.037.115.04.114.042.113.045.113.049.11.05.11.054.109.056.107.059.105.061.104.064.103.067.101.069.1.072.098.074.096.077.094.08.093.082.091.084.089.086.086.089.084.091.082.093.08.094.077.096.074.098.072.1.069.101.067.103.064.104.061.105.059.108.056.108.054.11.05.11.049.113.045.113.042.114.04.116.037.116.034.117.031.118.029.119.025.12.023.121.019.121.017.121.014.123.01.123.008.123.005.124.001.112v6.012h-17.149l-7.174-12.299-.037-.065-.04-.072-.039-.073-.037-.074-.036-.074-.035-.075-.034-.075-.033-.076-.031-.077-.03-.077-.028-.077-.027-.077-.027-.079-.024-.078-.024-.079-.022-.079-.021-.08-.019-.079-.018-.081-.017-.081-.016-.08-.014-.081-.013-.082-.011-.082-.011-.081-.008-.082-.008-.082-.006-.083-.005-.083-.003-.082-.002-.083-.001-.075v-13.222l.003-.128.012-.151.019-.15.026-.148.034-.146.041-.144.047-.139.054-.137.06-.134.067-.129.072-.126.078-.122.083-.117.089-.113.094-.109.099-.104.104-.099.109-.094.112-.088.118-.084.122-.078.125-.072.13-.067.133-.06.137-.054.141-.047.143-.041.145-.034.149-.026.15-.019.151-.012.128-.003h1.05l.128.003zm5.996 26.997h10.851v-1.988-.037l-.001-.025-.002-.024-.002-.025-.003-.024-.003-.025-.004-.024-.005-.024-.005-.024-.005-.024-.007-.023-.006-.024-.008-.023-.008-.023-.008-.023-.009-.023-.01-.022-.01-.022-.011-.022-.011-.022-.012-.021-.012-.021-.013-.021-.013-.021-.014-.02-.014-.02-.015-.02-.016-.019-.015-.018-.017-.019-.017-.018-.017-.018-.018-.017-.018-.017-.018-.017-.019-.015-.02-.016-.019-.015-.02-.014-.02-.014-.021-.013-.02-.013-.022-.012-.021-.012-.022-.011-.022-.011-.022-.01-.022-.01-.023-.009-.023-.008-.023-.008-.023-.008-.024-.006-.023-.007-.024-.005-.024-.005-.024-.005-.024-.004-.025-.003-.024-.003-.025-.002-.024-.002-.025-.001h-.037-9.712l-3.653-3.044 3.526 6.044z"/><path d="m24 14c0-2.761-2.239-5-5-5-2.761 0-5 2.239-5 5v2c0 2.761 2.239 5 5 5 2.761 0 5-2.239 5-5 0-.661 0-1.339 0-2z" fill="none" stroke="#000" stroke-width="4"/><path d="m23 23c.796 0 1.559.316 2.121.879.563.562.879 1.325.879 2.121v4h-14s-5.095-8.734-6.591-11.299c-.129-.221-.229-.457-.297-.701l.297-1h1.591l1 1 6 5h1.536c.692 1.195 6.236 1.195 6.928 0z" fill="#999"/><g fill="#a3a9ff"><path d="m5.112 18c-.074-.263-.112-.536-.112-.811 0-2.213 0-8.189 0-8.189v-5c0-.552.448-1 1-1h1c.552 0 1 .448 1 1v4c0 .265-.105.52-.293.707-.187.188-.442.293-.707.293l1 9z"/><path d="m15.536 23h6.928c-.692 1.195-1.985 2-3.464 2s-2.772-.805-3.464-2z"/><path d="m24 14c0-2.761-2.239-5-5-5-2.761 0-5 2.239-5 5v2c0 2.761 2.239 5 5 5 2.761 0 5-2.239 5-5 0-.661 0-1.339 0-2z"/></g><g clip-path="url(#b)"><path d="m22.02 13c.113.004.224.024.33.063.276.103.496.328.593.605.036.101.054.206.057.312.003.366.022.734-.003 1.099-.013.14-.051.275-.118.398-.06.111-.141.21-.238.29-.092.077-.197.137-.309.176-.107.038-.219.057-.332.057-.391 0-.755-.237-.914-.594-.054-.122-.082-.253-.086-.386-.003-.366-.022-.734.003-1.099.009-.1.031-.197.068-.29.095-.242.286-.44.523-.545.098-.043.201-.069.307-.081.039-.004.079-.005.119-.005zm-6 0c.113.004.224.024.33.063.276.103.496.328.593.605.036.101.054.206.057.312.003.366.022.734-.003 1.099-.013.14-.051.275-.118.398-.06.111-.141.21-.238.29-.092.077-.197.137-.309.176-.107.038-.219.057-.332.057-.391 0-.755-.237-.914-.594-.054-.122-.082-.253-.086-.386-.003-.366-.022-.734.003-1.099.009-.1.031-.197.068-.29.095-.242.286-.44.523-.545.098-.043.201-.069.307-.081.039-.004.079-.005.119-.005z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 .017h32v32h-32z"/></clipPath><path d="m0 .017h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m28 30.017h-24v-3c0-.531.211-1.039.586-1.415.375-.375.884-.585 1.414-.585h.757c.796 0 1.559.316 2.122.878.181.182.368.368.535.536.375.375.884.586 1.414.586h10.344c.53 0 1.039-.211 1.414-.586.167-.168.354-.354.535-.536.563-.562 1.326-.878 2.122-.878h.757c.53 0 1.039.21 1.414.585.375.376.586.884.586 1.415zm-1-22.286v-5.714h2v6.586c.614.354 1 1.012 1 1.732v8.363c0 .8-.477 1.523-1.212 1.838-.912.391-2.253.966-3.728 1.598-5.785 2.479-12.335 2.479-18.12 0-1.475-.632-2.816-1.207-3.728-1.598-.735-.315-1.212-1.038-1.212-1.838 0-2.116 0-6.246 0-8.363 0-.8.477-1.523 1.212-1.838.912-.39 2.253-.965 3.728-1.597 5.785-2.48 12.335-2.48 18.12 0z" fill="none" stroke="#000" stroke-width="4"/><path d="m8.879 25.895c.181.182.368.368.535.536.375.375.884.586 1.414.586h10.344c.53 0 1.039-.211 1.414-.586l.46-.46v3.546h-14.167z" fill="#404040"/><path d="m28 30.017h-24v-3c0-.531.211-1.039.586-1.415.375-.375.884-.585 1.414-.585h.757c.769 0 1.508.295 2.122.878l1.364 1.364c1.125 1.126 2.651 1.758 4.242 1.758h3.03c1.591 0 3.117-.632 4.242-1.758l1.364-1.364c.563-.562 1.326-.878 2.122-.878h.757c.53 0 1.039.21 1.414.585.375.376.586.884.586 1.415z" fill="#737373"/><path d="m27 2.017h2v10h-2z" fill="#4d4d4d"/><path d="m28 8.16.788.337c.735.315 1.212 1.038 1.212 1.838v8.363c0 .8-.477 1.523-1.212 1.838-.912.391-2.253.966-3.728 1.598-5.785 2.479-12.335 2.479-18.12 0-1.475-.632-2.816-1.207-3.728-1.598-.735-.315-1.212-1.038-1.212-1.838 0-2.116 0-6.246 0-8.363 0-.8.477-1.523 1.212-1.838l.788-.337z" fill="#8a8a8a"/><path d="m4 8.16 2.94-1.26c5.785-2.48 12.335-2.48 18.12 0l2.94 1.26v8.523c0 .808-.485 1.536-1.231 1.847-.788.328-1.884.784-3.077 1.282-4.923 2.051-10.461 2.051-15.384 0-1.193-.498-2.289-.954-3.077-1.282-.746-.311-1.231-1.039-1.231-1.847z" fill="#333"/><path d="m11 9.517c0-.398-.158-.78-.439-1.061-.282-.281-.663-.439-1.061-.439s-.779.158-1.061.439c-.281.281-.439.663-.439 1.061v2c0 .398.158.779.439 1.06.282.282.663.44 1.061.44s.779-.158 1.061-.44c.281-.281.439-.662.439-1.06z" fill="#58d3d7"/><path d="m24 9.517c0-.398-.158-.78-.439-1.061-.282-.281-.663-.439-1.061-.439s-.779.158-1.061.439c-.281.281-.439.663-.439 1.061v2c0 .398.158.779.439 1.06.282.282.663.44 1.061.44s.779-.158 1.061-.44c.281-.281.439-.662.439-1.06z" fill="#58d3d7"/><path d="m11 16.017h.001c1.296 1.281 3.045 2 4.868 2h.303c1.811 0 3.547-.72 4.828-2" fill="none" stroke="#58d3d7" stroke-width="1.5"/><path d="m18 7.017c0-.553-.448-1-1-1-.611 0-1.389 0-2 0-.552 0-1 .447-1 1 0 .552.448 1 1 1h2c.552 0 1-.448 1-1z" fill="#121212"/></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m7 21 1.447-2.894c.339-.678 1.032-1.106 1.789-1.106h11.528c.757 0 1.45.428 1.789 1.106.592 1.183 1.447 2.894 1.447 2.894l1 1v2l-1 1c-.618 0-1.215-.287-1.6-.8-1.275-1.701-2.4-3.2-2.4-3.2v9h-10v-9s-1.125 1.499-2.4 3.2c-.385.513-.982.8-1.6.8l-1-1v-2z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m21 10c0-2.761-2.239-5-5-5-2.761 0-5 2.239-5 5v3c0 2.761 2.239 5 5 5 2.761 0 5-2.239 5-5 0-.984 0-2.016 0-3z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><path d="m8.991 12c-.001-.697.005-1.393.01-2.09.015-.819.163-1.63.454-2.397.291-.765.717-1.476 1.252-2.095.662-.764 1.49-1.382 2.411-1.799.578-.261 1.192-.443 1.819-.538.292-.045.587-.069.883-.079.09-.001.18-.002.27-.001.848.016 1.694.171 2.483.487.523.21 1.021.477 1.481.804 1.007.717 1.818 1.7 2.327 2.827.249.551.426 1.134.525 1.731.053.321.081.645.092.97.013.727.013 1.453.009 2.18h1.53c.035-.02.07-.039.105-.057l5.512-2.756.846.522v3.573c-.005.275-.03.547-.088.817-.162.762-.55 1.469-1.106 2.016-.232.229-.492.421-.769.592l-.037.021c0 2.117.021 4.235-.001 6.353-.002.079-.006.159-.012.238-.047.522-.184 1.028-.422 1.495-.162.32-.368.618-.61.883-.279.306-.606.567-.965.773-.777.446-1.698.619-2.584.486-.497-.075-.969-.245-1.406-.492v5.536h-14v-5.536l-.099.056-.137.071c-.14.065-.28.127-.425.179-.29.103-.592.172-.898.206-.891.1-1.805-.11-2.564-.586-.35-.219-.666-.493-.933-.809-.264-.312-.475-.662-.635-1.038-.197-.463-.293-.961-.308-1.462l-.001-.071v-6.282c-.078-.044-.076-.045-.156-.095-.271-.18-.523-.38-.746-.616-.505-.532-.857-1.201-1.01-1.918-.058-.27-.083-.542-.088-.818v-3.572l.846-.522 5.511 2.756c.036.018.071.037.106.057z"/><path d="m7 21 1.447-2.894c.339-.678 1.032-1.106 1.789-1.106h11.528c.757 0 1.45.428 1.789 1.106.592 1.183 1.447 2.894 1.447 2.894l1 1v2l-1 1c-.618 0-1.215-.287-1.6-.8-1.275-1.701-2.4-3.2-2.4-3.2v9h-10v-9s-1.125 1.499-2.4 3.2c-.385.513-.982.8-1.6.8l-1-1v-2z" fill="#999"/><g clip-path="url(#a)"><path d="m24.072 14.003c.114.011.223.035.327.08.253.11.453.325.544.585.033.092.049.187.056.284.049 2.031.049 4.065 0 6.096-.012.163-.054.318-.137.459-.191.325-.559.518-.934.49-.097-.007-.192-.028-.283-.062-.105-.04-.204-.098-.29-.171-.098-.083-.181-.185-.24-.299-.069-.131-.103-.271-.114-.417-.049-2.031-.049-4.065 0-6.096.008-.114.03-.223.073-.329.104-.256.314-.46.571-.558.092-.035.186-.053.283-.062.048-.003.096-.003.144 0zm-16 0c.114.011.223.035.327.08.253.11.453.325.544.585.033.092.049.187.056.284.049 2.031.049 4.065 0 6.096-.012.163-.054.318-.137.459-.049.083-.11.159-.181.225-.276.257-.684.337-1.036.203-.105-.04-.204-.098-.29-.171-.098-.083-.181-.185-.24-.299-.069-.131-.103-.271-.114-.417-.049-2.031-.049-4.065 0-6.096.007-.097.023-.192.056-.284.091-.26.291-.475.544-.585.104-.045.213-.069.327-.08.048-.003.096-.003.144 0z" fill="#737373"/><path d="m9.002 13.18c-.02-1.09 14.005-1.18 13.997-.09-.005.268-.021.534-.055.799-.088.688-.278 1.361-.563 1.992-.347.769-.835 1.473-1.431 2.069-.516.516-1.112.951-1.762 1.283-.587.301-1.217.518-1.865.642-1.355.259-2.778.112-4.048-.426-.623-.263-1.207-.618-1.729-1.048-.735-.607-1.345-1.364-1.779-2.213-.328-.639-.555-1.329-.673-2.038-.053-.321-.081-.645-.092-.97z" fill="#333" fill-rule="nonzero"/><circle cx="16" cy="16" fill="#343394" r="4"/></g><path d="m7 25c-.211 0-.424-.033-.632-.103-.817-.272-1.368-1.036-1.368-1.897 0-3.605 0-7.5 0-7.5s-.432-.216-.894-.447c-.678-.339-1.106-1.032-1.106-1.789 0-.63 0-1.264 0-1.264s2.35 1.175 3.447 1.724c.339.169.553.515.553.894zm18-4v-6.382c0-.379.214-.725.553-.894 1.097-.549 3.447-1.724 3.447-1.724v1.264c0 .757-.428 1.45-1.106 1.789-.462.231-.894.447-.894.447v7.5c0 .861-.551 1.625-1.368 1.897-.208.07-.421.103-.632.103z" fill="#a3a9ff"/><path d="m21 10c0-2.761-2.239-5-5-5-2.761 0-5 2.239-5 5v3c0 2.761 2.239 5 5 5 2.761 0 5-2.239 5-5 0-.984 0-2.016 0-3z" fill="#a3a9ff"/><g clip-path="url(#b)"><path d="m15.835 16h-2.835v-2c.968 0 1.936.011 2.904-.001.175-.007.348-.024.519-.058.388-.077.76-.232 1.089-.451.169-.112.322-.242.467-.383l.814-.814c.471.471.943.943 1.414 1.414l-.822.823c-.088.085-.087.084-.177.167-.248.22-.51.419-.794.589-.564.337-1.193.562-1.842.659-.245.036-.49.052-.737.055zm-.691-3.947-1.788.894-1.75-3.5 1.788-.894c.584 1.166 1.167 2.333 1.75 3.5zm4-1-1.788.894-1.75-3.5 1.788-.894c.584 1.166 1.167 2.333 1.75 3.5z"/></g></svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m7.043 23.279c-.142-.112-.279-.228-.413-.349-.778-.704-1.414-1.562-1.863-2.512-.32-.677-.545-1.4-.664-2.14-.058-.357-.089-.717-.101-1.079-.014-.766-.006-1.532-.001-2.298.015-.854.157-1.699.435-2.506.384-1.114 1.015-2.138 1.837-2.981.846-.867 1.889-1.537 3.03-1.946.835-.299 1.712-.451 2.598-.467.099-.001.099-.001.198 0 .886.016 1.763.168 2.598.467 1.141.409 2.184 1.078 3.03 1.946.822.843 1.453 1.867 1.837 2.981.226.657.362 1.34.414 2.032.402-.178.828-.303 1.263-.37.209-.032.419-.047.631-.056.129-.001.128-.001.256 0 .212.009.422.024.631.056.528.081 1.043.248 1.518.491.381.195.734.439 1.051.722l4.672 1.168v5.124l-1 .25v10.188h-6v-8.101c-.329.067-.664.101-1 .101-.667 0-1.332-.134-1.947-.394-.555-.235-1.066-.571-1.503-.987-.153-.146-.297-.302-.43-.466-.348.413-.738.79-1.162 1.125.316.092.624.206.924.341.564.255 1.094.586 1.572.98 1.089.899 1.894 2.126 2.28 3.486.177.622.262 1.263.266 1.909v2.006h-20c0-.725-.012-1.451.002-2.176.023-.746.156-1.482.408-2.186.172-.482.399-.945.672-1.379.829-1.312 2.094-2.326 3.556-2.849.134-.048.269-.092.405-.131z"/><path d="m15.854 25.073c2.355.405 4.146 2.457 4.146 4.927h-16c0-2.47 1.791-4.522 4.146-4.927.469 1.687 7.239 1.687 7.708 0z" fill="#999"/><path d="m8.146 25.073c.277-.048.563-.073.854-.073h6c.291 0 .577.025.854.073-.469 1.687-2.018 2.927-3.854 2.927s-3.385-1.24-3.854-2.927z" fill="#a3a9ff"/><path d="m17.126 20.118c-.247.406-.542.784-.883 1.125-1.126 1.125-2.652 1.757-4.243 1.757-1.591 0-3.117-.632-4.243-1.757-1.125-1.126-1.757-2.652-1.757-4.243 0-.663 0-1.337 0-2 0-1.591.632-3.117 1.757-4.243 1.126-1.125 2.652-1.757 4.243-1.757 1.591 0 3.117.632 4.243 1.757 1.125 1.126 1.757 2.652 1.757 4.243v1.002c-.195.259-.901 3.997-.874 4.116z" fill="#a3a9ff"/><path d="m18 16.002v.998c0 1.109-.307 2.186-.874 3.118-.027-.119-.05-.238-.069-.359-.076-.502-.076-1.016 0-1.518.075-.488.223-.965.437-1.41.142-.293.311-.57.506-.829z" fill="#343394"/><path d="m16 19c0-1.105-.895-2-2-2s-2 .895-2 2 .895 2 2 2 2-.895 2-2zm3-4.001c0-.265-.105-.519-.293-.706-.187-.188-.441-.293-.706-.293-.611 0-1.391 0-2.002 0-.265 0-.519.105-.706.293-.188.187-.293.441-.293.706v.002c0 .265.105.519.293.706.187.188.441.293.706.293h2.002c.265 0 .519-.105.706-.293.188-.187.293-.441.293-.706 0-.001 0-.001 0-.002zm-6 0c0-.265-.105-.519-.293-.706-.187-.188-.441-.293-.706-.293-.611 0-1.391 0-2.002 0-.265 0-.519.105-.706.293-.188.187-.293.441-.293.706v.002c0 .265.105.519.293.706.187.188.441.293.706.293h2.002c.265 0 .519-.105.706-.293.188-.187.293-.441.293-.706 0-.001 0-.001 0-.002z"/><path d="m25 19h2v11h-2z" fill="#808080"/><path d="m22 16.5v5l6-1.5v-2z" fill="#333"/><circle cx="22" cy="19" fill="#a5a5a5" r="3"/></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m6 19.991-.024-.022c-.268-.248-.517-.512-.74-.802-.507-.663-.873-1.43-1.069-2.241-.099-.411-.148-.827-.165-1.248-.026-1.936-.013-3.871-.001-5.807.007-.382.031-.763.079-1.142.094-.739.271-1.468.527-2.167.54-1.475 1.432-2.813 2.581-3.883 1.003-.933 2.196-1.658 3.489-2.113.704-.248 1.436-.416 2.177-.501.338-.039.677-.058 1.017-.064 1.419-.009 2.839-.009 4.258 0 .34.006.679.025 1.017.064.741.085 1.473.253 2.177.501 1.293.455 2.486 1.18 3.489 2.113 1.149 1.07 2.041 2.408 2.581 3.883.256.699.433 1.428.527 2.167.048.379.072.76.079 1.142.012 1.887.001 3.774.001 5.661-.005.365-.035.728-.102 1.087-.153.82-.478 1.606-.95 2.294-.239.348-.515.663-.817.957-.044.041-.087.081-.131.12v6.01h-.028c-.001.01-.003.019-.004.029-.065.435-.227.855-.472 1.222-.105.158-.226.301-.357.439-1.07 1.069-2.127 2.152-3.21 3.208-.145.134-.295.261-.457.375-.427.3-.912.515-1.421.629-.257.058-.517.087-.78.097-2.181.027-4.361.027-6.542 0-.263-.01-.523-.039-.78-.097-.509-.114-.994-.329-1.421-.629-.162-.114-.312-.241-.457-.375-1.083-1.056-2.14-2.139-3.21-3.208-.131-.138-.252-.281-.357-.439-.245-.367-.407-.787-.472-1.222-.001-.01-.003-.019-.004-.029h-.028z"/><path d="m6 10c0-4.418 3.582-8 8-8h4c4.418 0 8 3.582 8 8v5.519c0 1.134-.481 2.214-1.324 2.973-.179.16-.36.324-.535.481-.735.661-1.688 1.027-2.676 1.027-2.693 0-8.237 0-10.93 0-.988 0-1.941-.366-2.676-1.027-.175-.157-.356-.321-.535-.481-.843-.759-1.324-1.839-1.324-2.973 0-1.394 0-3.439 0-5.519z" fill="#d9d9d9"/><path d="m20 23h-2l-.5-.5-.5.5h-2l-.5-.5-.5.5h-2v-4h8z" fill="#d9d9d9"/><path d="m14 20h1v3h-1z" fill="#5b5b5b"/><path d="m17 20h1v3h-1z" fill="#5b5b5b"/><path d="m8 21v4.586c0 .265.105.519.293.707.656.656 2.253 2.253 3.121 3.121.375.375.884.586 1.414.586h6.344c.53 0 1.039-.211 1.414-.586l3.121-3.121c.188-.188.293-.442.293-.707 0-1.199 0-4.586 0-4.586h-1v4l-4 2h-6l-4-2v-4z" fill="#d9d9d9"/><path d="m20 25h-2l-.5.5-.5-.5h-2l-.5.5-.5-.5h-2v3h8z" fill="#d9d9d9"/><path d="m14 25h1v3h-1z" fill="#5b5b5b"/><path d="m17 25h1v3h-1z" fill="#5b5b5b"/><path d="m8 14c0-1.657 1.343-3 3-3h1c1.105 0 2 .895 2 2v1c0 1.657-1.343 3-3 3-.339 0-.678 0-1 0-1.105 0-2-.895-2-2 0-.322 0-.661 0-1z"/><path d="m18 13c0-1.105.895-2 2-2h1c1.657 0 3 1.343 3 3v1c0 1.105-.895 2-2 2-.322 0-.661 0-1 0-1.657 0-3-1.343-3-3 0-.339 0-.678 0-1z"/><path d="m14 18 2-2 2 2v1h-4z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m28.327 8.65c-.841-2.314-2.663-4.136-4.977-4.977-.507-.185-1.038-.378-1.572-.572-3.732-1.357-7.824-1.357-11.556 0-.534.194-1.065.387-1.572.572-2.314.841-4.136 2.663-4.977 4.977-.185.507-.378 1.038-.572 1.572-1.357 3.732-1.357 7.824 0 11.556.194.534.387 1.065.572 1.572.841 2.314 2.663 4.136 4.977 4.977.507.185 1.038.378 1.572.572 3.732 1.357 7.824 1.357 11.556 0 .534-.194 1.065-.387 1.572-.572 2.314-.841 4.136-2.663 4.977-4.977.185-.507.378-1.038.572-1.572 1.357-3.732 1.357-7.824 0-11.556-.194-.534-.387-1.065-.572-1.572z"/></clipPath><path d="m0 0v32h32v-32z" fill="none"/><path d="m28.327 8.65c-.841-2.314-2.663-4.136-4.977-4.977-.507-.185-1.038-.378-1.572-.572-3.732-1.357-7.824-1.357-11.556 0-.534.194-1.065.387-1.572.572-2.314.841-4.136 2.663-4.977 4.977-.185.507-.378 1.038-.572 1.572-1.357 3.732-1.357 7.824 0 11.556.194.534.387 1.065.572 1.572.841 2.314 2.663 4.136 4.977 4.977.507.185 1.038.378 1.572.572 3.732 1.357 7.824 1.357 11.556 0 .534-.194 1.065-.387 1.572-.572 2.314-.841 4.136-2.663 4.977-4.977.185-.507.378-1.038.572-1.572 1.357-3.732 1.357-7.824 0-11.556-.194-.534-.387-1.065-.572-1.572z" fill="none" stroke="#000" stroke-width="4"/><path d="m28.327 8.65c-.841-2.314-2.663-4.136-4.977-4.977-.507-.185-1.038-.378-1.572-.572-3.732-1.357-7.824-1.357-11.556 0-.534.194-1.065.387-1.572.572-2.314.841-4.136 2.663-4.977 4.977-.185.507-.378 1.038-.572 1.572-1.357 3.732-1.357 7.824 0 11.556.194.534.387 1.065.572 1.572.841 2.314 2.663 4.136 4.977 4.977.507.185 1.038.378 1.572.572 3.732 1.357 7.824 1.357 11.556 0 .534-.194 1.065-.387 1.572-.572 2.314-.841 4.136-2.663 4.977-4.977.185-.507.378-1.038.572-1.572 1.357-3.732 1.357-7.824 0-11.556-.194-.534-.387-1.065-.572-1.572z" fill="#e2f10a"/><g clip-path="url(#a)"><path d="m.76.712c4.967-4.968 11.795-6.205 15.238-2.763 3.443 3.443 2.205 10.271-2.762 15.238-4.967 4.968-11.795 6.205-15.238 2.762-3.443-3.442-2.205-10.27 2.762-15.237z" fill="#fff" fill-opacity=".466667"/><g fill="none" stroke="#ff5757" stroke-width="3"><ellipse cx="27.5" cy="16" rx="7.5" ry="10.778"/><ellipse cx="4.5" cy="16" rx="7.5" ry="10.778"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m9.06 11.021-4.834-3.021 11.774-7.358c3.925 2.452 7.849 4.905 11.774 7.358l-4.834 3.021c.234.409.433.838.592 1.281.198.554.335 1.129.407 1.712.037.294.055.59.06.887.005.732.005 1.466 0 2.198-.006.363-.033.724-.087 1.082-.11.742-.326 1.467-.638 2.149-.437.954-1.062 1.819-1.831 2.533-.156.145-.318.283-.485.415.315.092.624.206.924.341.564.255 1.094.586 1.572.98 1.089.899 1.894 2.126 2.28 3.486.177.622.262 1.263.266 1.909v2.006h-20c0-.725-.012-1.451.002-2.176.023-.746.156-1.482.408-2.186.172-.482.399-.945.672-1.379.829-1.312 2.094-2.326 3.556-2.849.134-.048.269-.092.405-.131-.504-.398-.96-.856-1.354-1.363-.461-.591-.838-1.248-1.117-1.945-.242-.605-.41-1.241-.498-1.887-.045-.327-.067-.655-.073-.985-.005-.732-.005-1.466 0-2.198.015-.854.157-1.699.435-2.506.164-.477.374-.937.624-1.374z"/><path d="m19.854 25.073c2.355.405 4.146 2.457 4.146 4.927h-16c0-2.47 1.791-4.522 4.146-4.927.469 1.687 7.239 1.687 7.708 0z" fill="#333"/><path d="m12.146 25.073c.277-.048.563-.073.854-.073h6c.291 0 .577.025.854.073-.469 1.687-2.018 2.927-3.854 2.927s-3.385-1.24-3.854-2.927z" fill="#a3a9ff"/><path d="m21.657 13c.225.636.343 1.312.343 2v2c0 1.591-.632 3.117-1.757 4.243-1.126 1.125-2.652 1.757-4.243 1.757-1.591 0-3.117-.632-4.243-1.757-1.125-1.126-1.757-2.652-1.757-4.243 0-.663 0-1.337 0-2 0-.688.118-1.364.343-2z" fill="#a3a9ff"/><path d="m10.269 9.418-2.269-1.418 8-5 8 5-2.269 1.418z" fill="#333"/><path d="m10.269 9.418c.847-.869 1.891-1.54 3.034-1.95.835-.299 1.712-.451 2.598-.467.099-.001.099-.001.198 0 .854.015 1.699.157 2.506.435 1.145.395 2.196 1.051 3.052 1.907.025.025.049.05.074.075l-5.498 3.436c-.152.003-.303.005-.455.007z" fill="#1e1e1e"/><path d="m10.343 13c.296-.836.776-1.604 1.414-2.243 1.126-1.125 2.652-1.757 4.243-1.757 1.591 0 3.117.632 4.243 1.757.638.639 1.118 1.407 1.414 2.243z" fill="#333"/><path d="m20 15c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1zm-6 0c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1z"/><path d="m9 12h14v2h-14z"/><path d="m13 4.875v5.625c0 .265-.105.52-.293.707-.187.188-.442.293-.707.293s-.52-.105-.707-.293c-.188-.187-.293-.442-.293-.707v-4.375z" fill="#b89d43"/></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="3" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0v32h32v-32z"/></clipPath><path d="m0 0v32h32v-32z" fill="none"/><g clip-path="url(#a)"><path d="m7.394 15.814c-3.091-.726-5.394-3.503-5.394-6.814 0-3.863 3.137-7 7-7 3.311 0 6.088 2.303 6.815 5.394l13.851 18.274c.654.719.321 2.153-.762 3.236-1.082 1.082-2.514 1.415-3.234.764z" fill="none" stroke="#000" stroke-width="4"/><path d="m8.6 10.4 3.4.6 16 15 1.271 2.487c-.11.143-.233.283-.367.417-1.082 1.082-2.514 1.415-3.234.764l-20.67-15.668z" fill="#737373"/><path d="m8.6 10.4 5.4-5.4 15.666 20.668c.573.63.388 1.809-.395 2.819z" fill="#808080"/><circle cx="9" cy="9" fill="#313131" r="7"/><path d="m15.354 17.354c-.094-.094-.147-.221-.147-.354s.053-.26.147-.354l1.292-1.292c.094-.094.221-.147.354-.147s.26.053.354.147c.577.577 1.715 1.715 2.292 2.292.094.094.147.221.147.354s-.053.26-.147.354c-.364.364-.928.928-1.292 1.292-.094.094-.221.147-.354.147s-.26-.053-.354-.147c-.577-.577-1.715-1.715-2.292-2.292z" fill="#212121"/></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m22 14c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z"/></clipPath><clipPath id="c"><path clip-rule="evenodd" d="m25 20c0-1.105-.895-2-2-2-3.463 0-10.537 0-14 0-1.105 0-2 .895-2 2v10h18s0-6.586 0-10z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><path d="m16.099 6.001c.854.015 1.699.157 2.506.435 1.177.405 2.253 1.087 3.122 1.978.799.82 1.419 1.811 1.805 2.889.209.584.35 1.192.419 1.808.029.263.043.526.048.79.005.733.005 1.465 0 2.198-.006.33-.028.658-.073.985-.106.775-.326 1.534-.652 2.246-.437.954-1.062 1.819-1.831 2.533-.719.668-1.561 1.201-2.472 1.565-.85.34-1.758.532-2.673.566-1.672.063-3.345-.41-4.736-1.338-.712-.475-1.347-1.064-1.873-1.74-.461-.592-.838-1.248-1.117-1.945-.242-.606-.41-1.241-.498-1.887-.045-.327-.067-.655-.073-.985-.005-.733-.005-1.465 0-2.198.005-.264.019-.527.048-.79.069-.616.21-1.224.419-1.808.42-1.172 1.115-2.24 2.017-3.099.806-.766 1.771-1.361 2.818-1.736.835-.299 1.712-.451 2.598-.467.099-.001.099-.001.198 0z" fill-rule="nonzero"/><path d="m22 14c0-1.591-.632-3.117-1.757-4.243-1.126-1.125-2.652-1.757-4.243-1.757-1.591 0-3.117.632-4.243 1.757-1.125 1.126-1.757 2.652-1.757 4.243v2c0 1.591.632 3.117 1.757 4.243 1.126 1.125 2.652 1.757 4.243 1.757 1.591 0 3.117-.632 4.243-1.757 1.125-1.126 1.757-2.652 1.757-4.243 0-.663 0-1.337 0-2z" fill="#a3a9ff"/><g clip-path="url(#b)"><path d="m9 14h14v6h-14z" fill="#fff" fill-opacity=".266667"/><path d="m20 14c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1zm-6 0c0-.552-.448-1-1-1s-1 .448-1 1v1c0 .552.448 1 1 1s1-.448 1-1c0-.322 0-.678 0-1z"/></g><path d="m23.102 16.001c.136.005.27.014.405.031.329.042.652.124.96.246.539.212 1.029.543 1.429.962.4.42.707.927.894 1.477.138.411.205.838.21 1.27v12.013h-22c0-4.034-.049-8.069.001-12.103.005-.135.014-.27.031-.404.042-.329.125-.652.246-.96.416-1.055 1.282-1.9 2.347-2.29.41-.15.837-.225 1.273-.242 4.734-.059 9.47-.059 14.204 0z" fill-rule="nonzero"/><path d="m25 20c0-1.105-.895-2-2-2-3.463 0-10.537 0-14 0-1.105 0-2 .895-2 2v10h18s0-6.586 0-10z" fill="#252525"/><g clip-path="url(#c)"><path d="m5 27h22v2h-22z"/></g><g fill-rule="nonzero"><path d="m19 20.332v4.668h-2v-1.586l-.586.586h-.828l-.586-.586v1.586h-2v-4.668l1.235-.512 1.765 1.766 1.765-1.766c.412.171.823.341 1.235.512z" fill="#656565"/><path d="m29.048 28.001c.111.008.219.029.324.071.267.107.479.329.573.601.037.106.052.215.055.327v1h2v2c-1.016 0-2.032.023-3.048-.001-.047-.004-.047-.004-.094-.009-.095-.016-.186-.04-.273-.08-.247-.113-.441-.326-.53-.583-.037-.106-.052-.215-.055-.327v-1h-2v-2c1.016 0 2.032-.023 3.048.001z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m30 16c0 7.727-6.273 14-14 14s-14-6.273-14-14 6.273-14 14-14 14 6.273 14 14z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><circle cx="16" cy="16" r="16"/><path d="m30 16c0 7.727-6.273 14-14 14s-14-6.273-14-14 6.273-14 14-14 14 6.273 14 14z" fill="#e2f10a"/><g clip-path="url(#b)"><path d="m26 1s-.179 12-10 12-10-12-10-12" fill="none" stroke="#fff" stroke-width="3"/><path d="m26 31s-.179-12-10-12-10 12-10 12" fill="none" stroke="#fff" stroke-width="3"/><path d="m.76.712c4.967-4.968 11.795-6.205 15.238-2.763 3.443 3.443 2.205 10.271-2.762 15.238-4.967 4.968-11.795 6.205-15.238 2.762-3.443-3.442-2.205-10.27 2.762-15.237z" fill="#fff" fill-opacity=".466667"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path clip-rule="evenodd" d="m0 0h32v32h-32z"/></clipPath><clipPath id="b"><path clip-rule="evenodd" d="m30 16c0 7.727-6.273 14-14 14s-14-6.273-14-14 6.273-14 14-14 14 6.273 14 14z"/></clipPath><path d="m0 0h32v32h-32z" fill="none"/><g clip-path="url(#a)"><circle cx="16" cy="16" r="16"/><path d="m30 16c0 7.727-6.273 14-14 14s-14-6.273-14-14 6.273-14 14-14 14 6.273 14 14z" fill="#f3f3f3"/><g clip-path="url(#b)"><path d="m4.378 4.378c5.02-5.019 11.229-6.96 13.858-4.331 2.63 2.629.689 8.839-4.331 13.858-5.019 5.02-11.229 6.961-13.858 4.331-2.629-2.629-.688-8.838 4.331-13.858z" fill="#fff"/><g fill="none" stroke="#ccc" stroke-width="2"><path d="m16 16s.353.084.928.219c5.788 1.369 11.88-.165 16.33-4.111"/><path d="m21.605 16.293s-.011-.363-.029-.953c-.176-5.946-3.234-11.433-8.198-14.71"/><path d="m27.345 15.305s-.01-.363-.028-.953c-.176-5.945-3.235-11.433-8.198-14.71"/><path d="m16 16s-.249.264-.654.694c-4.079 4.329-5.797 10.371-4.604 16.198"/><path d="m12.944 20.707s.32.172.84.452c5.237 2.82 11.518 2.915 16.838.255"/><path d="m10.929 26.173s.32.172.84.452c5.237 2.82 11.518 2.915 16.838.255"/><path d="m16 16s-.104-.348-.274-.913c-1.709-5.697-6.083-10.206-11.726-12.087"/><path d="m13.451 11s-.309.191-.811.501c-5.061 3.125-8.284 8.518-8.64 14.455"/><path d="m9.726 6.522s-.309.191-.812.501c-5.06 3.125-8.283 8.518-8.64 14.455"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

4
static/static.go vendored
View File

@ -51,12 +51,12 @@ func GetWebIndexTemplate() (*template.Template, error) {
return tmpl, err
}
//go:embed offline.ts
//go:embed offline.tsclip
var offlineVideoSegment []byte
// GetOfflineSegment will return the offline video segment data.
func GetOfflineSegment() []byte {
return getFileSystemStaticFileOrDefault("offline.ts", offlineVideoSegment)
return getFileSystemStaticFileOrDefault("offline.tsclip", offlineVideoSegment)
}
//go:embed img/logo.png

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1559],{51559:function(e,t,r){r.r(t),r.d(t,{EmojiPicker:function(){return s}});var n=r(85893),c=r(67294),o=r(57741);let s=e=>{let{onEmojiSelect:t,onCustomEmojiSelect:r}=e,[s,a]=(0,c.useState)([]),u=(0,c.useRef)(),i=async()=>{try{let e=await fetch("/api/emoji"),t=await e.json();a(t)}catch(r){console.error("cannot fetch custom emoji",r)}};return(0,c.useEffect)(()=>{i()},[]),(0,c.useEffect)(()=>{let e=s.map(e=>({emoji:e.name,label:e.name,url:e.url})),n=(0,o.wU)({rootElement:u.current,custom:e,initialCategory:"custom",showPreview:!1,showRecents:!0});n.addEventListener("emoji:select",e=>{e.url?r(e.name,e.url):t(e.emoji)})},[s]),(0,n.jsx)("div",{ref:u})}}}]);
//# sourceMappingURL=1559.2e58e7c39b343623.js.map
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1559],{51559:function(e,t,r){r.r(t),r.d(t,{EmojiPicker:function(){return s}});var n=r(85893),c=r(67294),o=r(57741);let s=e=>{let{onEmojiSelect:t,onCustomEmojiSelect:r}=e,[s,a]=(0,c.useState)([]),u=(0,c.useRef)(),i=async()=>{try{let e=await fetch("/api/emoji"),t=await e.json();a(t)}catch(e){console.error("cannot fetch custom emoji",e)}};return(0,c.useEffect)(()=>{i()},[]),(0,c.useEffect)(()=>{let e=s.map(e=>({emoji:e.name,label:e.name,url:e.url})),n=(0,o.wU)({rootElement:u.current,custom:e,initialCategory:"custom",showPreview:!1,showRecents:!0});n.addEventListener("emoji:select",e=>{e.url?r(e.name,e.url):t(e.emoji)})},[s]),(0,n.jsx)("div",{ref:u})}}}]);
//# sourceMappingURL=1559.6f5bd14ccd571646.js.map

View File

@ -1 +1 @@
{"version":3,"file":"static/chunks/1559.2e58e7c39b343623.js","mappings":"yLASO,IAAMA,EAAoC,GAA4C,IAA3C,CAAEC,cAAAA,CAAAA,CAAeC,oBAAAA,CAAAA,CAAqB,CAAAC,EAChF,CAACC,EAAaC,EAAe,CAAGC,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,EAAE,EAC3CC,EAAMC,CAAAA,EAAAA,EAAAA,MAAAA,IAENC,EAAiB,SAAY,CACjC,GAAI,CACF,IAAMC,EAAW,MAAMC,MAZJ,cAabC,EAAQ,MAAMF,EAASG,IAAI,GACjCR,EAAeO,EACjB,CAAE,MAAOE,EAAG,CACVC,QAAQC,KAAK,CAAC,4BAA6BF,EAC7C,CACF,EA+BA,MA5BAG,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,IAAM,CACdR,GACF,EAAG,EAAE,EAGLQ,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,IAAM,CACd,IAAMH,EAAIV,EAAYc,GAAG,CAACN,GAAU,EAClCA,MAAOA,EAAMO,IAAI,CACjBC,MAAOR,EAAMO,IAAI,CACjBE,IAAKT,EAAMS,GAAG,CAChB,GAEMC,EAASC,CAAAA,EAAAA,EAAAA,EAAAA,EAAa,CAC1BC,YAAajB,EAAIkB,OAAO,CACxBC,OAAQZ,EACRa,gBAAiB,SACjBC,YAAa,GACbC,YAAa,EACf,GACAP,EAAOQ,gBAAgB,CAAC,eAAgBC,GAAS,CAC3CA,EAAMV,GAAG,CACXnB,EAAoB6B,EAAMZ,IAAI,CAAEY,EAAMV,GAAG,EAEzCpB,EAAc8B,EAAMnB,KAAK,CAE7B,EACF,EAAG,CAACR,EAAY,EAET,GAAA4B,EAAAC,GAAA,EAACC,MAAAA,CAAI3B,IAAKA,GACnB","sources":["webpack://_N_E/./components/chat/ChatTextField/EmojiPicker.tsx","webpack://_N_E/<anon>"],"sourcesContent":["import React, { FC, useEffect, useRef, useState } from 'react';\nimport { createPicker } from 'picmo';\n\nconst CUSTOM_EMOJI_URL = '/api/emoji';\nexport type EmojiPickerProps = {\n onEmojiSelect: (emoji: string) => void;\n onCustomEmojiSelect: (name: string, url: string) => void;\n};\n\nexport const EmojiPicker: FC<EmojiPickerProps> = ({ onEmojiSelect, onCustomEmojiSelect }) => {\n const [customEmoji, setCustomEmoji] = useState([]);\n const ref = useRef();\n\n const getCustomEmoji = async () => {\n try {\n const response = await fetch(CUSTOM_EMOJI_URL);\n const emoji = await response.json();\n setCustomEmoji(emoji);\n } catch (e) {\n console.error('cannot fetch custom emoji', e);\n }\n };\n\n // Fetch the custom emoji on component mount.\n useEffect(() => {\n getCustomEmoji();\n }, []);\n\n // Recreate the emoji picker when the custom emoji changes.\n useEffect(() => {\n const e = customEmoji.map(emoji => ({\n emoji: emoji.name,\n label: emoji.name,\n url: emoji.url,\n }));\n\n const picker = createPicker({\n rootElement: ref.current,\n custom: e,\n initialCategory: 'custom',\n showPreview: false,\n showRecents: true,\n });\n picker.addEventListener('emoji:select', event => {\n if (event.url) {\n onCustomEmojiSelect(event.name, event.url);\n } else {\n onEmojiSelect(event.emoji);\n }\n });\n }, [customEmoji]);\n\n return <div ref={ref} />;\n};\n"],"names":["EmojiPicker","onEmojiSelect","onCustomEmojiSelect","param","customEmoji","setCustomEmoji","useState","ref","useRef","getCustomEmoji","response","fetch","emoji","json","e","console","error","useEffect","map","name","label","url","picker","createPicker","rootElement","current","custom","initialCategory","showPreview","showRecents","addEventListener","event","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","div"],"sourceRoot":""}
{"version":3,"file":"static/chunks/1559.6f5bd14ccd571646.js","mappings":"yLASO,IAAMA,EAAoC,GAA4C,IAA3C,CAAEC,cAAAA,CAAAA,CAAeC,oBAAAA,CAAAA,CAAqB,CAAAC,EAChF,CAACC,EAAaC,EAAe,CAAGC,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,EAAE,EAC3CC,EAAMC,CAAAA,EAAAA,EAAAA,MAAAA,IAENC,EAAiB,SAAY,CACjC,GAAI,CACF,IAAMC,EAAW,MAAMC,MAZJ,cAabC,EAAQ,MAAMF,EAASG,IAAI,GACjCR,EAAeO,EACjB,CAAE,MAAOE,EAAG,CACVC,QAAQC,KAAK,CAAC,4BAA6BF,EAC7C,CACF,EA+BA,MA5BAG,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,IAAM,CACdR,GACF,EAAG,EAAE,EAGLQ,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,IAAM,CACd,IAAMH,EAAIV,EAAYc,GAAG,CAACN,GAAU,EAClCA,MAAOA,EAAMO,IAAI,CACjBC,MAAOR,EAAMO,IAAI,CACjBE,IAAKT,EAAMS,GAAG,CAChB,GAEMC,EAASC,CAAAA,EAAAA,EAAAA,EAAAA,EAAa,CAC1BC,YAAajB,EAAIkB,OAAO,CACxBC,OAAQZ,EACRa,gBAAiB,SACjBC,YAAa,GACbC,YAAa,EACf,GACAP,EAAOQ,gBAAgB,CAAC,eAAgBC,GAAS,CAC3CA,EAAMV,GAAG,CACXnB,EAAoB6B,EAAMZ,IAAI,CAAEY,EAAMV,GAAG,EAEzCpB,EAAc8B,EAAMnB,KAAK,CAE7B,EACF,EAAG,CAACR,EAAY,EAET,GAAA4B,EAAAC,GAAA,EAACC,MAAAA,CAAI3B,IAAKA,GACnB","sources":["webpack://_N_E/./components/chat/ChatTextField/EmojiPicker.tsx","webpack://_N_E/<anon>"],"sourcesContent":["import React, { FC, useEffect, useRef, useState } from 'react';\nimport { createPicker } from 'picmo';\n\nconst CUSTOM_EMOJI_URL = '/api/emoji';\nexport type EmojiPickerProps = {\n onEmojiSelect: (emoji: string) => void;\n onCustomEmojiSelect: (name: string, url: string) => void;\n};\n\nexport const EmojiPicker: FC<EmojiPickerProps> = ({ onEmojiSelect, onCustomEmojiSelect }) => {\n const [customEmoji, setCustomEmoji] = useState([]);\n const ref = useRef();\n\n const getCustomEmoji = async () => {\n try {\n const response = await fetch(CUSTOM_EMOJI_URL);\n const emoji = await response.json();\n setCustomEmoji(emoji);\n } catch (e) {\n console.error('cannot fetch custom emoji', e);\n }\n };\n\n // Fetch the custom emoji on component mount.\n useEffect(() => {\n getCustomEmoji();\n }, []);\n\n // Recreate the emoji picker when the custom emoji changes.\n useEffect(() => {\n const e = customEmoji.map(emoji => ({\n emoji: emoji.name,\n label: emoji.name,\n url: emoji.url,\n }));\n\n const picker = createPicker({\n rootElement: ref.current,\n custom: e,\n initialCategory: 'custom',\n showPreview: false,\n showRecents: true,\n });\n picker.addEventListener('emoji:select', event => {\n if (event.url) {\n onCustomEmojiSelect(event.name, event.url);\n } else {\n onEmojiSelect(event.emoji);\n }\n });\n }, [customEmoji]);\n\n return <div ref={ref} />;\n};\n"],"names":["EmojiPicker","onEmojiSelect","onCustomEmojiSelect","param","customEmoji","setCustomEmoji","useState","ref","useRef","getCustomEmoji","response","fetch","emoji","json","e","console","error","useEffect","map","name","label","url","picker","createPicker","rootElement","current","custom","initialCategory","showPreview","showRecents","addEventListener","event","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","div"],"sourceRoot":""}

File diff suppressed because one or more lines are too long

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