feat: include passkey icons based on AAGUID (#1756)

This commit is contained in:
Mike Beaumont
2026-09-19 09:41:53 -07:00
committed by GitHub
parent c22003f6de
commit b5a07a29ef
90 changed files with 2934 additions and 49 deletions
+7 -9
View File
@@ -17,15 +17,13 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v6
- name: Fetch JSON data
run: |
curl -o data.json https://raw.githubusercontent.com/pocket-id/passkey-aaguids/refs/heads/main/combined_aaguid.json
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: stable
- name: Process JSON data
run: |
mkdir -p backend/resources
jq -c 'map_values(.name)' data.json > backend/resources/aaguids.json
rm data.json
- name: Update AAGUIDs and authenticator icons
run: go run scripts/update-aaguids.go
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
@@ -33,7 +31,7 @@ jobs:
commit-message: "chore: update AAGUIDs"
title: "chore: update AAGUIDs"
body: |
This PR updates the AAGUIDs file with the latest data from the [passkey-aaguids](https://github.com/pocket-id/passkey-aaguids) repository.
This PR updates the AAGUID metadata and authenticator icons with the latest data from the [passkey-aaguids](https://github.com/pocket-id/passkey-aaguids) repository.
branch: update-aaguids
base: main
delete-branch: true
+3
View File
@@ -15,6 +15,9 @@ type WebauthnCredentialDto struct {
BackupEligible bool `json:"backupEligible"`
BackupState bool `json:"backupState"`
AAGUID string `json:"aaguid"`
HasIcon bool `json:"hasIcon"`
CreatedAt datatype.DateTime `json:"createdAt"`
}
+55
View File
@@ -0,0 +1,55 @@
package dto
import (
"encoding/json"
"os"
"testing"
"github.com/stretchr/testify/require"
"github.com/pocket-id/pocket-id/backend/internal/model"
"github.com/pocket-id/pocket-id/backend/internal/utils"
)
func TestWebauthnCredentialDto_iconFields(t *testing.T) {
withIcon := anyAAGUIDWithIcon(t)
credentials := []model.WebauthnCredential{
{Name: "With icon", AAGUID: withIcon},
{Name: "Unknown authenticator", AAGUID: "ffffffff-ffff-ffff-ffff-ffffffffffff"},
{Name: "Authenticator that does not identify itself", AAGUID: utils.ZeroAAGUID},
}
var dtos []WebauthnCredentialDto
require.NoError(t, MapStructList(credentials, &dtos))
require.Len(t, dtos, len(credentials))
require.Equal(t, withIcon, dtos[0].AAGUID)
require.True(t, dtos[0].HasIcon)
require.False(t, dtos[1].HasIcon)
require.Equal(t, utils.ZeroAAGUID, dtos[2].AAGUID)
require.False(t, dtos[2].HasIcon)
}
func anyAAGUIDWithIcon(t *testing.T) string {
t.Helper()
data, err := os.ReadFile("../../resources/aaguids.json")
require.NoError(t, err)
var metadata map[string]struct {
IconLight string `json:"icon_light"`
}
require.NoError(t, json.Unmarshal(data, &metadata))
for aaguid, entry := range metadata {
if entry.IconLight != "" && utils.HasAuthenticatorIcon(aaguid) {
return aaguid
}
}
t.Skip("no authenticator icons are embedded")
return ""
}
+8
View File
@@ -20,9 +20,17 @@ type WebauthnCredential struct {
BackupEligible bool `json:"backupEligible"`
BackupState bool `json:"backupState"`
AAGUID string `gorm:"column:aaguid;default:00000000-0000-0000-0000-000000000000"`
UserID string
}
// HasIcon reports whether an icon is embedded for this credential's authenticator
// It is mapped onto the DTO so the frontend knows upfront whether an icon is worth requesting
func (c WebauthnCredential) HasIcon() bool {
return utils.HasAuthenticatorIcon(c.AAGUID)
}
type AuthenticatorTransportList []protocol.AuthenticatorTransport //nolint:recvcheck
// Scan and Value methods for GORM to handle the custom type
+83 -11
View File
@@ -4,19 +4,39 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
"io/fs"
"log/slog"
"os"
"path"
"sync"
"uuid"
"github.com/pocket-id/pocket-id/backend/resources"
)
var (
aaguidMap map[string]string
aaguidMapOnce *sync.Once
const (
aaguidIconsDir = "aaguid-icons"
authenticatorIconHashBytes = 8
)
// ZeroAAGUID is the AAGUID reported by authenticators that do not want to identify themselves, and it is also the column default for credentials that were registered before AAGUIDs were tracked
var ZeroAAGUID = uuid.Nil().String()
var (
aaguidMetadata map[string]authenticatorMetadata
aaguidMetadataOnce *sync.Once
)
// authenticatorMetadata records the display name and content-addressed icon files for an AAGUID
// IconDark is empty when the authenticator uses its light icon in both themes
type authenticatorMetadata struct {
Name string `json:"name"`
IconLight string `json:"icon_light"`
IconDark string `json:"icon_dark"`
}
func init() {
aaguidMapOnce = &sync.Once{}
aaguidMetadataOnce = &sync.Once{}
}
// FormatAAGUID converts an AAGUID byte slice to UUID string format
@@ -42,18 +62,18 @@ func GetAuthenticatorName(aaguid []byte) string {
return ""
}
// Then check JSON-sourced map
aaguidMapOnce.Do(loadAAGUIDsFromFile)
// Then check the embedded metadata manifest
aaguidMetadataOnce.Do(loadAAGUIDMetadataFromFile)
if name, ok := aaguidMap[aaguidStr]; ok {
return name + " Passkey"
if metadata, ok := aaguidMetadata[aaguidStr]; ok && metadata.Name != "" {
return metadata.Name + " Passkey"
}
return ""
}
// loadAAGUIDsFromFile loads AAGUID data from the embedded file system
func loadAAGUIDsFromFile() {
// loadAAGUIDMetadataFromFile loads AAGUID names and icon references from the embedded manifest
func loadAAGUIDMetadataFromFile() {
// Read from embedded file system
data, err := resources.FS.ReadFile("aaguids.json")
if err != nil {
@@ -61,9 +81,61 @@ func loadAAGUIDsFromFile() {
return
}
err = json.Unmarshal(data, &aaguidMap)
err = json.Unmarshal(data, &aaguidMetadata)
if err != nil {
slog.Error("Error unmarshalling AAGUID data", slog.Any("error", err))
return
}
}
// HasAuthenticatorIcon reports whether an icon is embedded for the given AAGUID
// Callers use this to avoid pointing clients at an icon endpoint that would only answer with a 404
func HasAuthenticatorIcon(aaguid string) bool {
aaguidMetadataOnce.Do(loadAAGUIDMetadataFromFile)
metadata, ok := aaguidMetadata[aaguid]
return ok && validAuthenticatorIconName(metadata.IconLight)
}
// OpenAuthenticatorIcon opens the embedded icon for the given AAGUID and returns it together with its size
// It returns os.ErrNotExist for every AAGUID without an icon, which is also what keeps caller-controlled input from ever reaching the embedded file system
func OpenAuthenticatorIcon(aaguid string, light bool) (fs.File, int64, error) {
aaguidMetadataOnce.Do(loadAAGUIDMetadataFromFile)
// Only AAGUIDs with a valid generated light reference are served, so caller input never becomes an embedded file path
metadata, ok := aaguidMetadata[aaguid]
if !ok || !validAuthenticatorIconName(metadata.IconLight) {
return nil, 0, os.ErrNotExist
}
// Fall back to the light icon when the authenticator does not ship a dark variant
name := metadata.IconLight
if !light && validAuthenticatorIconName(metadata.IconDark) {
name = metadata.IconDark
}
file, err := resources.FS.Open(path.Join(aaguidIconsDir, name))
if err != nil {
return nil, 0, err
}
// The size is resolved upfront so the caller can stream the icon with a Content-Length instead of buffering it
stat, err := file.Stat()
if err != nil {
_ = file.Close()
return nil, 0, err
}
return file, stat.Size(), nil
}
// validAuthenticatorIconName accepts only the truncated SHA-256 file names emitted by the updater
func validAuthenticatorIconName(name string) bool {
const extension = ".svg"
if len(name) != authenticatorIconHashBytes*2+len(extension) || name[len(name)-len(extension):] != extension {
return false
}
_, err := hex.DecodeString(name[:authenticatorIconHashBytes*2])
return err == nil
}
+121 -23
View File
@@ -1,9 +1,18 @@
package utils
import (
"crypto/sha256"
"encoding/hex"
"fmt"
"io"
"os"
"path"
"sync"
"testing"
"github.com/stretchr/testify/require"
"github.com/pocket-id/pocket-id/backend/resources"
)
func TestFormatAAGUID(t *testing.T) {
@@ -45,21 +54,21 @@ func TestFormatAAGUID(t *testing.T) {
}
func TestGetAuthenticatorName(t *testing.T) {
// Reset the aaguidMap for testing
originalMap := aaguidMap
originalOnce := aaguidMapOnce
// Preserve the package-level metadata cache so this test does not affect other tests
originalMetadata := aaguidMetadata
originalOnce := aaguidMetadataOnce
defer func() {
aaguidMap = originalMap
aaguidMapOnce = originalOnce
aaguidMetadata = originalMetadata
aaguidMetadataOnce = originalOnce
}()
// Inject a test AAGUID map
aaguidMap = map[string]string{
"adce0002-35bc-c60a-648b-0b25f1f05503": "Test Authenticator",
"00000000-0000-0000-0000-000000000000": "Zero Authenticator",
// Inject test metadata without loading the embedded manifest
aaguidMetadata = map[string]authenticatorMetadata{
"adce0002-35bc-c60a-648b-0b25f1f05503": {Name: "Test Authenticator"},
"00000000-0000-0000-0000-000000000000": {Name: "Zero Authenticator"},
}
aaguidMapOnce = &sync.Once{}
aaguidMapOnce.Do(func() {}) // Mark as done to avoid loading from file
aaguidMetadataOnce = &sync.Once{}
aaguidMetadataOnce.Do(func() {})
tests := []struct {
name string
@@ -98,25 +107,22 @@ func TestGetAuthenticatorName(t *testing.T) {
}
}
func TestLoadAAGUIDsFromFile(t *testing.T) {
// Reset the map and once flag for clean testing
aaguidMap = nil
aaguidMapOnce = &sync.Once{}
func TestLoadAAGUIDMetadataFromFile(t *testing.T) {
// Reset the metadata cache so this test exercises the embedded manifest
aaguidMetadata = nil
aaguidMetadataOnce = &sync.Once{}
// Trigger loading of AAGUIDs by calling GetAuthenticatorName
// Trigger loading by resolving an arbitrary AAGUID
GetAuthenticatorName([]byte{0x01, 0x02, 0x03, 0x04})
if len(aaguidMap) == 0 {
t.Error("loadAAGUIDsFromFile() failed to populate aaguidMap")
if len(aaguidMetadata) == 0 {
t.Error("loadAAGUIDMetadataFromFile() failed to populate aaguidMetadata")
}
// Check for a few known entries that should be in the embedded file
// This test will be more brittle as it depends on the content of aaguids.json,
// but it helps verify that the loading actually worked
t.Log("AAGUID map loaded with", len(aaguidMap), "entries")
t.Log("AAGUID metadata loaded with", len(aaguidMetadata), "entries")
}
// Helper function to convert hex string to bytes
// mustDecodeHex keeps the table fixtures readable
func mustDecodeHex(s string) []byte {
bytes, err := hex.DecodeString(s)
if err != nil {
@@ -124,3 +130,95 @@ func mustDecodeHex(s string) []byte {
}
return bytes
}
func TestAuthenticatorIcons(t *testing.T) {
aaguidMetadataOnce.Do(loadAAGUIDMetadataFromFile)
if len(aaguidMetadata) == 0 {
t.Skip("no authenticator icons are embedded")
}
var withDark, withoutDark string
referencedIcons := make(map[string]struct{})
for aaguid, metadata := range aaguidMetadata {
if metadata.IconLight == "" {
continue
}
require.True(t, validAuthenticatorIconName(metadata.IconLight), "icon %q has an invalid light reference", aaguid)
referencedIcons[metadata.IconLight] = struct{}{}
if metadata.IconDark != "" {
require.True(t, validAuthenticatorIconName(metadata.IconDark), "icon %q has an invalid dark reference", aaguid)
referencedIcons[metadata.IconDark] = struct{}{}
}
if metadata.IconDark != "" && withDark == "" {
withDark = aaguid
}
if metadata.IconDark == "" && withoutDark == "" {
withoutDark = aaguid
}
}
require.NotEmpty(t, withDark, "expected at least one authenticator with a separate dark icon")
require.NotEmpty(t, withoutDark, "expected at least one authenticator with a single icon")
readIcon := func(t *testing.T, aaguid string, light bool) []byte {
t.Helper()
file, size, err := OpenAuthenticatorIcon(aaguid, light)
require.NoError(t, err)
defer file.Close()
data, err := io.ReadAll(file)
require.NoError(t, err)
require.Len(t, data, int(size))
require.Contains(t, string(data), "<svg")
return data
}
t.Run("known AAGUID", func(t *testing.T) {
require.True(t, HasAuthenticatorIcon(withDark))
require.NotEqual(t, readIcon(t, withDark, true), readIcon(t, withDark, false))
})
t.Run("dark falls back to the light icon", func(t *testing.T) {
require.Equal(t, readIcon(t, withoutDark, true), readIcon(t, withoutDark, false))
})
t.Run("unknown AAGUID", func(t *testing.T) {
tests := []string{
"",
"ffffffff-ffff-ffff-ffff-ffffffffffff",
"../aaguids.json",
"..%2faaguids.json",
"a/b",
".",
}
for _, aaguid := range tests {
t.Run(aaguid, func(t *testing.T) {
require.False(t, HasAuthenticatorIcon(aaguid))
_, _, err := OpenAuthenticatorIcon(aaguid, true)
require.ErrorIs(t, err, os.ErrNotExist)
})
}
})
t.Run("manifest references every content-addressed icon", func(t *testing.T) {
entries, err := resources.FS.ReadDir(aaguidIconsDir)
require.NoError(t, err)
require.Len(t, entries, len(referencedIcons))
for _, entry := range entries {
name := entry.Name()
require.Contains(t, referencedIcons, name)
data, err := resources.FS.ReadFile(path.Join(aaguidIconsDir, name))
require.NoError(t, err)
digest := sha256.Sum256(data)
require.Equal(t, fmt.Sprintf("%x.svg", digest[:authenticatorIconHashBytes]), name)
}
})
}
+27
View File
@@ -1,8 +1,12 @@
package webauthn
import (
"errors"
"fmt"
"net/http"
"os"
"strconv"
"time"
"github.com/gin-gonic/gin"
"github.com/go-webauthn/webauthn/protocol"
@@ -11,6 +15,7 @@ import (
"github.com/pocket-id/pocket-id/backend/internal/apperror"
"github.com/pocket-id/pocket-id/backend/internal/dto"
"github.com/pocket-id/pocket-id/backend/internal/httpserver"
"github.com/pocket-id/pocket-id/backend/internal/utils"
"github.com/pocket-id/pocket-id/backend/internal/utils/cookie"
)
@@ -206,3 +211,25 @@ func (h *handler) reauthenticate(c *gin.Context) error {
c.Status(http.StatusNoContent)
return nil
}
// getThemedAuthenticatorIcon serves the embedded icon of the authenticator behind an AAGUID
// The route needs no authentication because the icons are static vendor branding that ships with the binary and reveals nothing about the instance or its users
func (h *handler) getThemedAuthenticatorIcon(c *gin.Context) error {
// An unparsable light parameter falls back to the light icon, which every authenticator with an icon has
light, _ := strconv.ParseBool(c.DefaultQuery("light", "true"))
file, size, err := utils.OpenAuthenticatorIcon(c.Param("aaguid"), light)
if errors.Is(err, os.ErrNotExist) {
return apperror.ImageNotFound()
}
if err != nil {
return err
}
defer file.Close()
// Icons only change when a new version is deployed, so they can be cached aggressively
utils.SetCacheControlHeader(c, 24*time.Hour, 7*24*time.Hour)
c.DataFromReader(http.StatusOK, size, "image/svg+xml", file, nil)
return nil
}
+2
View File
@@ -91,6 +91,8 @@ func (m *Module) RegisterRoutes(apiGroup *gin.RouterGroup, userAuth, browserAuth
apiGroup.GET("/webauthn/credentials", userAuth, httpserver.Handle(m.handler.listCredentials))
apiGroup.PATCH("/webauthn/credentials/:id", userAuth, httpserver.Handle(m.handler.updateCredential))
apiGroup.DELETE("/webauthn/credentials/:id", userAuth, httpserver.Handle(m.handler.deleteCredential))
apiGroup.GET("/webauthn/authenticator-icons/:aaguid", httpserver.Handle(m.handler.getThemedAuthenticatorIcon))
}
// ConsumeReauthenticationToken implements the OIDC module's ReauthenticationTokenConsumer interface
+2
View File
@@ -183,6 +183,7 @@ func (s *Service) VerifyRegistration(ctx context.Context, dbConfig *appconfig.Ap
// Determine passkey name using AAGUID and User-Agent
passkeyName := s.determinePasskeyName(credential.Authenticator.AAGUID)
aaguid := utils.FormatAAGUID(credential.Authenticator.AAGUID)
credentialToStore := model.WebauthnCredential{
Name: passkeyName,
@@ -193,6 +194,7 @@ func (s *Service) VerifyRegistration(ctx context.Context, dbConfig *appconfig.Ap
UserID: user.ID,
BackupEligible: credential.Flags.BackupEligible,
BackupState: credential.Flags.BackupState,
AAGUID: aaguid,
}
err = tx.
WithContext(ctx).
+34
View File
@@ -375,3 +375,37 @@ func TestConsumeReauthenticationTokenReturnsTokenCreationTime(t *testing.T) {
require.Equal(t, storedToken.CreatedAt.UTC(), reauthenticatedAt)
}
func TestUpdateCredentialKeepsAAGUID(t *testing.T) {
const (
userID = "icon-user"
aaguid = "bada5566-a7aa-401f-bd96-45619a55120d"
)
db := testutils.NewDatabaseForTest(t)
require.NoError(t, db.Create(&model.User{
Base: model.Base{ID: userID},
Username: userID,
}).Error)
credential := model.WebauthnCredential{
Name: "Original name",
CredentialID: []byte("test-credential"),
PublicKey: []byte("test-public-key"),
UserID: userID,
AAGUID: aaguid,
}
require.NoError(t, db.Create(&credential).Error)
service := &Service{db: db}
updated, err := service.UpdateCredential(t.Context(), userID, credential.ID, "New name")
require.NoError(t, err)
assert.Equal(t, "New name", updated.Name)
assert.Equal(t, aaguid, updated.AAGUID)
var stored model.WebauthnCredential
require.NoError(t, db.First(&stored, "id = ?", credential.ID).Error)
assert.Equal(t, "New name", stored.Name)
assert.Equal(t, aaguid, stored.AAGUID)
}
@@ -0,0 +1,5 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1024" height="1024" fill="#577FFF"/>
<path d="M512 396C556.735 396 593 359.735 593 315C593 270.265 556.735 234 512 234C467.265 234 431 270.265 431 315C431 359.735 467.265 396 512 396Z" stroke="white" stroke-width="16"/>
<path d="M590 458H434V798H590V458Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 395 B

@@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" fill="none">
<rect width="1024" height="1024" fill="#0E4D5A"/>
<g transform="translate(64, 22) scale(14)">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#F9A8D4"/>
<stop offset=".55" stop-color="#EC4899"/>
<stop offset="1" stop-color="#BE1865"/>
</linearGradient>
<radialGradient id="h" cx=".35" cy=".25" r=".5">
<stop offset="0" stop-color="#fff" stop-opacity=".55"/>
<stop offset="1" stop-color="#fff" stop-opacity="0"/>
</radialGradient>
</defs>
<path d="M32 56s-22-12-22-29c0-7 5-12 12-12 4 0 7.5 2 10 6 2.5-4 6-6 10-6 7 0 12 5 12 12 0 17-22 29-22 29z" fill="url(#g)"/>
<rect x="22" y="27" width="20" height="16" rx="3" fill="#fff" fill-opacity="0.16"/>
<rect x="22" y="27" width="20" height="16" rx="3" fill="none" stroke="#fff" stroke-width="2.5"/>
<path d="M26 27v-4a6 6 0 0 1 12 0v4" fill="none" stroke="#fff" stroke-width="2.5" stroke-linecap="round"/>
<circle cx="32" cy="34" r="1.75" fill="#fff"/>
<path d="M32 34v3.5" stroke="#fff" stroke-width="2" stroke-linecap="round"/>
<path d="M32 56s-22-12-22-29c0-7 5-12 12-12 4 0 7.5 2 10 6 2.5-4 6-6 10-6 7 0 12 5 12 12 0 17-22 29-22 29z" fill="url(#h)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,15 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_10172_13705)">
<path d="M0 10.7445C0 4.81047 4.81049 0 10.7445 0H37.2555C43.1895 0 48 4.81049 48 10.7445V37.2555C48 43.1895 43.1895 48 37.2555 48H10.7445C4.81047 48 0 43.1895 0 37.2555V10.7445Z" fill="#FEEB29"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.4356 23.2245C27.1822 23.1453 26.921 23.2878 26.8418 23.5412C26.8418 23.5491 26.8418 23.5491 26.8339 23.557C26.7626 23.8103 26.921 24.0716 27.1743 24.1428L27.7443 24.2932L27.3485 24.7912C27.3406 24.7999 27.3406 24.8078 27.3326 24.8157C27.1822 25.0295 27.2297 25.3303 27.4435 25.4807C27.4514 25.4887 27.4593 25.4887 27.4593 25.4966C27.681 25.6391 27.9818 25.5757 28.1243 25.3533L28.4885 24.7912L28.8526 25.3533C28.8606 25.362 28.8606 25.3699 28.8685 25.3699C29.0189 25.5829 29.3197 25.6391 29.5335 25.4807C29.5414 25.4728 29.5493 25.4728 29.5572 25.4649C29.7631 25.2987 29.7947 24.9978 29.6285 24.7999L29.2326 24.3012L29.8106 24.1507C29.8185 24.1507 29.8185 24.1507 29.8264 24.1428C30.0797 24.0637 30.2222 23.8016 30.1431 23.5491C30.1431 23.5412 30.1431 23.5412 30.1351 23.5332C30.0481 23.2799 29.7789 23.1532 29.5256 23.2324L28.9239 23.4382L28.9714 22.8366V22.797C28.9714 22.5278 28.7497 22.3062 28.4806 22.3062H28.4489C28.1797 22.322 27.9739 22.5595 27.9897 22.8366L28.0293 23.4382L27.4435 23.2324C27.4514 23.2324 27.4435 23.2324 27.4356 23.2245Z" fill="#242424"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.6384 23.5251C25.5513 23.2717 25.2822 23.1458 25.0288 23.2242L24.4272 23.4301L24.4747 22.8284V22.7888C24.4747 22.5196 24.253 22.298 23.9838 22.298H23.9522C23.683 22.3138 23.4772 22.5521 23.493 22.8284L23.5326 23.4301L22.9468 23.2242C22.9388 23.2242 22.9309 23.2163 22.9309 23.2163C22.6776 23.1371 22.4163 23.2796 22.3372 23.533C22.3372 23.5417 22.3372 23.5417 22.3293 23.5488C22.258 23.8021 22.4163 24.0634 22.6697 24.1354L23.2397 24.2851L22.8438 24.7838C22.8359 24.7917 22.8359 24.7996 22.828 24.8076C22.6776 25.0213 22.7251 25.3229 22.9388 25.4726C22.9468 25.4805 22.9547 25.4805 22.9547 25.4884C23.1763 25.6309 23.4772 25.5676 23.6197 25.3459L23.9838 24.7838L24.348 25.3459C24.3559 25.3538 24.3559 25.3617 24.3638 25.3617C24.5143 25.5755 24.8151 25.6309 25.0368 25.4726C25.0447 25.4646 25.0526 25.4646 25.0605 25.4567C25.2663 25.2905 25.298 24.9896 25.1318 24.7917L24.7359 24.293L25.3138 24.1426C25.3218 24.1426 25.3218 24.1426 25.3297 24.1354C25.583 24.0555 25.7255 23.7942 25.6463 23.5417C25.6384 23.5417 25.6384 23.533 25.6384 23.5251Z" fill="#242424"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.8249 24.1428C21.0782 24.0629 21.2207 23.8016 21.1416 23.5491C21.1416 23.5412 21.1416 23.5412 21.1337 23.5324C21.0466 23.2799 20.7774 23.1532 20.5241 23.2324L19.9224 23.4374L19.9699 22.8366V22.797C19.9699 22.5278 19.7482 22.3062 19.4791 22.3062H19.4474C19.1782 22.322 18.9724 22.5595 18.9882 22.8366L19.0278 23.4374L18.442 23.2324C18.4341 23.2324 18.4262 23.2245 18.4262 23.2245C18.1728 23.1453 17.9116 23.2878 17.8324 23.5412C17.8324 23.5491 17.8324 23.5491 17.8245 23.557C17.7532 23.8103 17.9116 24.0716 18.1649 24.1428L18.7349 24.2924L18.3391 24.7912C18.3312 24.7999 18.3312 24.8078 18.3232 24.8157C18.1728 25.0295 18.2203 25.3303 18.4341 25.4799C18.442 25.4887 18.4499 25.4887 18.4499 25.4966C18.6716 25.6391 18.9724 25.5757 19.1149 25.3533L19.4791 24.7912L19.8432 25.3533C19.8512 25.362 19.8512 25.3699 19.8591 25.3699C20.0095 25.5829 20.3103 25.6391 20.532 25.4799C20.5399 25.4728 20.5478 25.4728 20.5557 25.4649C20.7616 25.2987 20.7932 24.9978 20.627 24.7999L20.2312 24.3012L20.8091 24.1507C20.8091 24.1428 20.817 24.1428 20.8249 24.1428Z" fill="#242424"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.9998 8.1665C15.2678 8.1665 8.1665 15.3081 8.1665 24.0798C8.1665 30.2706 11.7923 35.9469 17.4053 38.5348C17.5636 38.6061 17.7378 38.6457 17.904 38.6457C18.3553 38.6457 18.7828 38.3931 18.9886 37.9577C19.2657 37.364 19.0044 36.6507 18.4107 36.3823C13.629 34.1735 10.5494 29.3436 10.5494 24.0798C10.5494 16.6144 16.5819 10.5415 23.9998 10.5415C31.4178 10.5415 37.4582 16.6144 37.4582 24.0798C37.4582 29.3436 34.3786 34.1735 29.6048 36.3823C29.0111 36.6586 28.7498 37.364 29.0269 37.9577C29.304 38.5515 30.0086 38.8119 30.6023 38.5348C36.2073 35.9469 39.8332 30.2706 39.8332 24.0798C39.8332 15.3081 32.7319 8.1665 23.9998 8.1665Z" fill="#242424"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M35.1383 23.9766C35.1383 17.8016 30.1429 12.7816 23.9996 12.7816C17.8563 12.7816 12.8608 17.8016 12.8608 23.9766C12.8608 28.5682 15.6 32.6453 19.8354 34.3632C19.9858 34.4179 20.1363 34.4495 20.2788 34.4495C20.7458 34.4495 21.1971 34.1732 21.3792 33.7062C21.6246 33.0966 21.3317 32.3999 20.7221 32.1545C17.3892 30.8007 15.2358 27.5937 15.2358 23.9766C15.2358 19.1149 19.1625 15.1566 23.9996 15.1566C28.8367 15.1566 32.7633 19.1149 32.7633 23.9766C32.7633 27.5866 30.6258 30.8007 27.3088 32.1624C26.6992 32.4157 26.4142 33.1037 26.6596 33.7141C26.9129 34.3229 27.6017 34.6087 28.2113 34.3632C32.4229 32.6295 35.1383 28.5516 35.1383 23.9766Z" fill="#242424"/>
</g>
<defs>
<clipPath id="clip0_10172_13705">
<rect width="48" height="48" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="b" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><g id="c"><rect width="128" height="128" style="fill:none; stroke-width:0px;"/><g id="d"><rect x="57.0112" y="56.5771" width="3.558" height="35.2061" style="fill:#ffffff; stroke-width:0px;"/><path d="m64,28.4885c4.8287,0,8.7679-3.94,8.7679-8.7698,0-.6355-.1271-1.2709-.2542-1.9064-2.7956-.5084-5.5911-.8897-8.5138-.7626-2.7956,0-5.7182.2542-8.5138.7626-.1271.6355-.2542,1.271-.2542,1.9064,0,4.8297,3.9392,8.7698,8.7679,8.7698Z" style="fill:#ffffff; stroke-width:0px;"/><path d="m88.1436,23.6587c.3812,1.6523.5083,3.1775.5083,4.8297,0,9.7865-5.8453,18.3021-14.1049,22.2421l-.6354,10.422,7.4972,7.4988-7.4972,7.4988,4.9558,4.9568-4.9558,4.9568.6354,9.2781-10.5469,10.5491-10.5469-10.5491v-44.6113c-8.3867-3.94-14.1049-12.4556-14.1049-22.2421,0-1.6523.2541-3.1775.5083-4.8297-14.2319,8.5155-22.8728,23.7673-22.8728,40.29,0,26.055,21.0938,47.0261,47.0163,47.0261,26.0496,0,47.0163-21.0982,47.0163-47.0261-.1271-16.5227-8.7679-31.7744-22.8728-40.29Z" style="fill:#ffffff; stroke-width:0px;"/><path d="m64,3.1001C30.4195,3.1001,3.0999,30.4196,3.0999,64s27.3196,60.9,60.9001,60.9,60.8999-27.3198,60.8999-60.9S97.5806,3.1001,64,3.1001Zm0,116.6759c-30.7415,0-55.7514-25.0212-55.7514-55.7759S33.2586,8.2241,64,8.2241s55.7512,25.0209,55.7512,55.7759-25.0097,55.7759-55.7512,55.7759Z" style="fill:#ffffff; stroke-width:0px;"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,3 @@
<svg width="124" height="124" viewBox="-5 0 124 124" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M101.493 21.7475L69.8628 3.4003C65.9588 1.12943 61.5848 0 57.2109 0C52.8369 0 48.5835 1.1054 44.7035 3.3162L12.9532 21.4591C6.55499 25.1118 2.16899 31.3356 0.783307 38.4006C0.361576 40.2149 0.120588 42.0892 0.120588 43.9997L9.1082e-05 80.4898C-0.0240078 89.4531 4.73552 97.7436 12.5074 102.249L44.1372 120.597C51.9091 125.102 61.5005 125.138 69.2965 120.681L101.047 102.538C107.445 98.8851 111.831 92.6612 113.217 85.5963C113.638 83.782 113.879 81.9076 113.879 79.9972L114 43.507C114.024 34.5437 109.264 26.2532 101.493 21.7475ZM85.021 64.5697L73.5138 84.2866C72.4655 86.0889 70.5255 87.1943 68.4409 87.1823L45.5711 87.1102C43.4865 87.1102 41.5586 85.9808 40.5224 84.1785L29.1477 64.3895C28.1115 62.5872 28.1114 60.3644 29.1718 58.5621L40.679 38.8451C41.7273 37.0429 43.6673 35.9375 45.7518 35.9495L68.6217 36.0216C70.7062 36.0216 72.6342 37.151 73.6704 38.9533L85.0451 58.7423C86.0813 60.5446 86.0813 62.7674 85.021 64.5697Z" fill="#FFFFFF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="none"><path d="m217.36,90.69c-15.58,9.54-25.17,26.41-25.38,44.68.06,20.67,12.43,39.32,31.46,47.41-3.67,11.84-9.1,23.06-16.11,33.28-10.03,14.44-20.52,28.87-36.47,28.87s-20.06-9.27-38.45-9.27-24.32,9.57-38.9,9.57-24.77-13.37-36.47-29.79c-15.46-22.99-23.95-49.96-24.47-77.66,0-45.59,29.63-69.75,58.81-69.75,15.5,0,28.42,10.18,38.15,10.18s23.71-10.79,41.34-10.79c18.41-.47,35.84,8.24,46.5,23.25Zm-54.86-42.55c7.77-9.14,12.17-20.67,12.46-32.67.01-1.58-.14-3.16-.46-4.71-13.35,1.3-25.69,7.67-34.5,17.78-7.85,8.78-12.41,20-12.92,31.76,0,1.43.16,2.86.46,4.26,1.05.2,2.12.3,3.19.3,12.43-.99,23.91-7.04,31.76-16.73Z" fill="#000"/></svg>

After

Width:  |  Height:  |  Size: 694 B

@@ -0,0 +1,3 @@
<svg viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.6134 70C2.82435 63.352 0 55.1722 0 46.3273C0 24.0552 17.9086 6 40 6C62.0914 6 80 24.0552 80 46.3273C80 55.1721 77.1757 63.3518 72.3867 69.9999L53.1747 38.5466L51.3195 41.7046L53.2018 50.4877L40 27.7147L31.8334 41.6161L33.7346 50.4877L26.8147 38.5646L7.6134 70Z" fill="#0CAAAB"/>
</svg>

After

Width:  |  Height:  |  Size: 413 B

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by Pixelmator Pro 3.8 -->
<svg width="818" height="818" viewBox="0 0 818 818" xmlns="http://www.w3.org/2000/svg">
<g id="Group">
<path id="Path" fill="#326add" fill-rule="evenodd" stroke="#000000" stroke-width="1.170381" stroke-linecap="round" stroke-linejoin="round" d="M 330.924622 310.296814 L 163.887589 364.291138 L 0.668407 495.078125 L 140.706589 470.047363 L 330.924622 310.296814 Z"/>
</g>
<g id="g1">
<path id="path1" fill="none" stroke="none" d="M 189.658234 15.081848 L 353.666351 15.081848 L 353.666351 40.035461 L 189.658234 40.035461 Z"/>
</g>
<g id="g2">
<path id="path2" fill="#8ab1ff" fill-rule="evenodd" stroke="#000000" stroke-width="0.974347" stroke-linecap="round" stroke-linejoin="round" d="M 330.924072 310.296814 L 672.670532 310.296814 L 672.670532 602.654907 L 330.924072 602.654907 Z"/>
</g>
<g id="g3">
<path id="path3" fill="#6b9afa" fill-rule="evenodd" stroke="#000000" stroke-width="0.999509" stroke-linecap="round" stroke-linejoin="round" d="M 140.705414 470.307922 L 330.924438 310.299072 L 330.924438 602.655396 L 140.705414 794.748474 L 140.705414 470.307922 Z"/>
</g>
<g id="g4">
<path id="path4" fill="#b81b1c" fill-rule="evenodd" stroke="none" d="M 307.403168 523.615723 L 291.360626 537.379333 L 249.992859 490.060791 L 217.546844 543.485901 L 199.317856 532.557739 L 231.764282 479.13269 L 170.343262 464.833801 L 175.119339 444.318024 L 236.540375 458.616913 L 231.026794 396.351074 L 252.207245 394.601166 L 257.721222 456.863403 L 315.734436 432.680878 L 324.048615 452.114716 L 266.034943 476.297119 L 307.403168 523.615723 Z"/>
</g>
<g id="g5">
<path id="path5" fill="#3b5790" fill-rule="evenodd" stroke="#000000" stroke-width="0.994844" stroke-linecap="round" stroke-linejoin="round" d="M 521.143188 470.307648 L 672.670593 310.296936 L 672.670593 613.435425 L 521.143188 794.747864 L 521.143188 470.307648 Z"/>
</g>
<g id="g6">
<path id="path6" fill="#3471ee" fill-rule="evenodd" stroke="none" d="M 140.705322 470.307922 L 521.143372 470.307922 L 521.143372 794.747498 L 140.705322 794.747498 Z"/>
</g>
<g id="g7">
<path id="path7" fill="#326add" fill-rule="evenodd" stroke="#000000" stroke-width="0.982747" stroke-linecap="round" stroke-linejoin="round" d="M 672.668762 310.296814 L 816.106384 358.018097 L 672.673523 522.779663 L 521.146362 470.045441"/>
</g>
<g id="g8">
<path id="path8" fill="#b81b1c" fill-rule="evenodd" stroke="none" d="M 404.446259 206.613708 L 438.708008 228.499878 L 401.184784 285.499512 L 467.715454 302.981018 L 457.139801 341.896027 L 390.604248 324.414795 L 394.201843 392.218689 L 353.406586 394.38327 L 349.80899 326.579346 L 285.496826 351.003265 L 270.862488 313.425842 L 335.169739 289.002197 L 291.8255 236.293335 L 323.578857 210.90448 L 366.923126 263.613892 L 404.446259 206.613708 Z"/>
</g>
<g id="g9">
<path id="path9" fill="#b81b1c" fill-rule="evenodd" stroke="none" d="M 708.898987 109.22052 L 712.208679 166.765564 L 635.927856 169.733765 L 663.69635 241.741882 L 610.271484 261.641602 L 582.500244 189.629089 L 523.378479 237.097778 L 487.049866 191.850769 L 546.171631 144.382141 L 481.860718 101.707153 L 512.833862 53.844055 L 577.141052 96.515381 L 596.521118 22.677734 L 651.991699 38.343018 L 632.614929 112.184692 L 708.898987 109.22052 Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,81 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-121 0 1260 1260">
<g transform="translate(0.000000,1260.000000) scale(0.100000,-0.100000)" stroke="none">
<g fill="#f3a020">
<path d="M4750 12129 c-398 -33 -721 -94 -1305 -249 -248 -66 -463 -122 -825
-214 -162 -41 -338 -87 -390 -101 -52 -14 -102 -27 -110 -29 -254 -64 -870
-223 -952 -247 -40 -11 -87 -24 -104 -28 -95 -24 -231 -107 -328 -200 -126
-122 -205 -257 -249 -428 l-22 -88 0 -2830 0 -2830 23 -164 c35 -251 87 -484
147 -662 14 -39 22 -75 20 -79 -3 -5 -2 -10 3 -12 4 -1 34 -68 66 -148 104
-257 255 -523 432 -761 89 -119 96 -127 215 -258 136 -150 206 -214 394 -365
39 -31 75 -59 80 -64 6 -4 44 -33 85 -63 41 -31 111 -82 155 -115 80 -59 157
-113 290 -202 39 -26 72 -49 75 -52 14 -14 570 -384 667 -445 27 -16 104 -65
173 -110 97 -63 370 -233 490 -306 8 -5 60 -37 115 -71 762 -471 900 -535
1162 -545 180 -7 328 24 478 100 84 43 349 200 353 209 2 5 8 8 12 8 5 0 91
50 192 110 221 134 180 109 378 231 90 56 170 102 177 102 7 0 10 3 8 6 -2 4
59 45 136 91 76 47 139 88 139 93 0 4 5 7 11 7 6 0 25 10 42 23 17 12 39 27
49 32 128 73 850 559 856 576 2 5 8 9 14 9 8 0 93 55 108 70 3 3 34 25 70 50
294 202 618 481 795 685 103 120 279 360 336 460 191 337 265 499 337 732 81
262 112 399 144 628 l23 170 0 2855 0 2855 -23 80 c-62 212 -194 399 -360 508
-135 89 -178 104 -682 232 -444 114 -790 203 -850 219 -30 8 -163 42 -295 76
-132 34 -274 70 -315 82 -41 11 -181 46 -310 79 -129 33 -269 69 -310 80 -439
119 -793 181 -1175 209 -163 11 -494 11 -645 -1z"/>
</g>
<g fill="#12171d">
<path d="M2280 10500 c-15 -10 -87 -207 -126 -348 -161 -583 -104 -1204 166
-1808 112 -252 207 -408 379 -628 140 -177 127 -145 134 -318 10 -250 40 -390
138 -656 92 -251 184 -413 358 -632 94 -117 240 -265 346 -350 161 -128 384
-260 556 -330 l57 -23 -58 -221 c-207 -796 -335 -1283 -451 -1721 -100 -376
-101 -386 -49 -468 16 -25 48 -59 71 -74 l43 -28 617 -3 617 -3 11 33 c72 226
4 501 -211 850 -125 202 -177 306 -216 428 -42 133 -54 207 -54 341 0 145 31
269 103 417 111 226 247 365 594 609 68 48 150 122 255 229 86 88 185 185 221
216 63 55 232 168 252 168 5 0 -18 -29 -51 -64 -89 -96 -149 -185 -198 -296
-52 -118 -78 -213 -94 -345 -19 -143 -7 -262 51 -533 81 -383 90 -446 92 -637
1 -188 -11 -296 -53 -490 -59 -272 -167 -513 -360 -807 l-78 -118 472 0 c259
0 488 5 510 9 21 5 55 22 75 38 45 36 91 124 91 175 0 21 -47 215 -104 431
-57 215 -145 550 -195 742 -276 1072 -277 1078 -285 1102 -5 17 -2 23 16 29
62 19 295 144 407 217 359 237 613 526 802 912 144 295 228 644 229 948 0 58
2 61 68 145 430 546 635 1055 683 1696 15 190 3 414 -31 603 -24 131 -96 388
-138 488 l-29 70 -74 -1 c-207 -3 -523 -115 -787 -278 -211 -131 -444 -325
-687 -571 l-150 -153 -30 20 c-66 43 -248 123 -385 169 -224 75 -484 119 -699
119 -320 0 -699 -89 -998 -235 -73 -36 -135 -65 -137 -65 -3 0 -94 89 -203
198 -369 369 -703 600 -1044 720 -135 48 -411 99 -439 82z m273 -294 c171 -44
329 -124 562 -286 182 -127 352 -277 557 -492 275 -289 456 -498 658 -763 170
-223 333 -426 369 -460 l32 -30 -8 45 c-4 25 -8 68 -8 95 l0 50 53 18 c29 9
83 22 120 27 87 12 320 13 396 0 85 -14 166 -39 166 -51 0 -6 -23 -67 -50
-136 -28 -69 -49 -130 -48 -135 2 -6 45 31 96 82 88 88 176 196 397 485 332
434 822 958 1105 1181 94 74 320 219 420 269 100 50 232 100 304 115 74 15 74
15 110 -118 56 -206 67 -285 73 -522 8 -356 -20 -548 -135 -895 -45 -138 -87
-242 -134 -334 -127 -251 -332 -534 -554 -770 -101 -107 -351 -323 -415 -358
-27 -14 -49 -30 -49 -35 0 -5 13 -62 30 -126 40 -160 60 -290 60 -394 l0 -87
-32 -5 c-18 -3 -80 -10 -138 -16 -58 -6 -139 -18 -180 -26 -139 -28 -354 -125
-515 -232 l-90 -60 -12 72 c-17 98 -35 140 -100 237 -75 111 -103 170 -103
213 0 30 5 40 33 56 29 18 43 20 142 14 175 -9 250 27 312 152 43 88 63 101
169 111 35 3 64 9 64 12 0 12 -112 75 -168 94 -30 10 -91 21 -136 24 -150 10
-265 -28 -363 -119 -54 -51 -56 -52 -49 -23 26 113 140 264 251 331 l60 36
-50 -7 c-278 -39 -469 -282 -452 -575 6 -110 32 -178 115 -299 36 -53 81 -130
101 -171 33 -69 36 -83 36 -165 0 -112 -19 -155 -91 -204 -46 -31 -53 -33
-114 -28 -58 4 -151 32 -189 56 -25 16 -3 57 54 100 104 79 113 166 22 200
-81 31 -272 19 -322 -21 -51 -40 -23 -118 66 -183 51 -38 70 -75 49 -99 -13
-17 -170 -56 -222 -56 -49 0 -121 49 -153 104 -67 114 -37 241 110 466 67 102
85 137 100 198 19 70 19 221 1 288 -35 133 -147 274 -263 332 -63 32 -220 78
-230 68 -7 -7 -12 -4 60 -40 111 -56 231 -209 253 -323 l6 -32 -45 44 c-117
112 -262 148 -441 110 -67 -14 -171 -57 -211 -88 -18 -14 -14 -16 57 -27 102
-17 128 -34 152 -100 27 -74 85 -131 159 -154 48 -15 76 -17 165 -11 l108 7
32 -30 c52 -48 39 -107 -49 -227 -88 -119 -119 -193 -119 -287 0 -32 -4 -58
-10 -58 -5 0 -47 26 -92 59 -157 110 -361 205 -508 235 -70 14 -225 33 -315
39 l-40 2 1 130 c1 105 8 160 34 285 18 85 35 167 37 181 4 22 -3 31 -59 65
-245 154 -590 525 -808 868 -202 320 -338 683 -396 1061 -26 165 -26 512 -1
674 28 178 86 391 107 391 4 0 50 -11 103 -24z m2720 -4297 c42 -7 77 -16 77
-19 0 -4 -33 -22 -72 -41 -70 -32 -78 -34 -188 -34 -106 0 -120 2 -177 29 -35
16 -68 34 -73 42 -12 13 -12 13 140 34 75 10 182 6 293 -11z"/>
<path d="M2595 9960 c-9 -14 -42 -131 -55 -190 -18 -88 -24 -323 -11 -455 38
-388 197 -830 401 -1115 141 -197 311 -381 460 -499 64 -51 241 -171 286 -194
l31 -16 37 70 c72 141 206 300 351 417 39 32 39 32 26 69 -106 301 -412 836
-689 1208 -235 314 -487 546 -720 664 -86 43 -110 52 -117 41z"/>
<path d="M7560 9957 c-192 -82 -312 -168 -506 -362 -208 -208 -265 -279 -509
-640 -198 -292 -475 -825 -475 -914 0 -22 19 -47 91 -117 106 -104 218 -249
272 -351 21 -40 42 -75 48 -78 5 -4 53 21 107 56 449 288 784 719 950 1224
136 411 165 748 92 1071 -25 111 -35 126 -70 111z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,11 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1024" height="1024" rx="176" fill="url(#paint0_linear_202_3)"/>
<path d="M769.175 452.118L370.579 451.678C339.658 451.685 310.006 463.963 288.144 485.812C266.282 507.662 254 537.294 254 568.19V798.71C254 807.537 257.509 816.004 263.755 822.247C270.002 828.49 278.474 831.998 287.308 832H652.94C683.864 831.998 713.52 819.722 735.386 797.872C757.252 776.022 769.536 746.388 769.536 715.488L770 459.631V423.853C769.788 376.523 755.149 330.382 728.034 291.575C700.919 252.767 662.614 223.136 618.222 206.627C573.83 190.118 525.458 187.516 479.548 199.167C433.639 210.817 392.372 236.168 361.243 271.842" stroke="white" stroke-width="32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M512.001 692C539.615 692 562.001 669.614 562.001 642C562.001 614.386 539.615 592 512.001 592C484.387 592 462.001 614.386 462.001 642C462.001 669.614 484.387 692 512.001 692Z" stroke="white" stroke-width="32"/>
<defs>
<linearGradient id="paint0_linear_202_3" x1="0" y1="0" x2="1024" y2="1024" gradientUnits="userSpaceOnUse">
<stop stop-color="#006DE6"/>
<stop offset="1" stop-color="#00A6FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" viewBox="0 0 2048 2048" width="128" height="128" xmlns="http://www.w3.org/2000/svg">
<path transform="translate(991)" d="m0 0h71l24 8 20 6 12 5 15 8 16 11 16 12 15 12 11 9 28 24 12 11 11 9 12 11 8 7 15 13 14 11 12 10 18 13 17 12 11 7 24 14 32 17 24 11 21 9 28 11 28 9 33 10 22 6 27 6 53 9 43 7 34 7 23 6 16 6 19 10 15 10 14 11 20 20 13 17 10 16 8 15 7 19 5 25 11 89 4 34 3 37 1 25v119l-2 38-3 34-5 36-5 35-6 50-5 29-12 55-16 66-15 49-16 50-19 51-18 43-12 28-17 36-15 31-24 44-10 18-11 18-15 25-15 23-10 16-14 20-10 14-15 22-16 21-11 14-13 16-8 11-11 13-9 11-12 13-7 8-9 10-7 8-16 17-8 9h-2l-2 4-49 49-8 7-7 7-8 7-7 7-11 9-3 3h-2v2l-11 9-11 10-9 7-11 10-14 11-18 13-11 9-11 8-18 13-35 24-21 14-24 15-19 11-18 10-28 14-21 8-27 7-12 3-1 1h-48l-44-11-20-7-20-9-16-8-24-13-21-13-15-10-20-14-16-11-12-9-19-14-13-10-16-12-17-14-10-8-17-14-26-22-13-12-8-7-16-15-17-16-57-57-7-8-10-10-7-8-11-12-10-11-9-11-28-34-13-16-13-17-11-15-14-19-13-18-13-19-10-15-13-20-13-21-19-32-14-25-15-28-21-42-15-33-16-38-14-36-10-29-7-18-14-45-18-64-6-26-11-52-12-63-4-29-6-62-6-72-3-52-1-30v-59l2-61 3-47 5-45 6-35 6-18 9-19 10-18 10-15 8-10 5-6h2l2-4 8-8 11-9 10-7 21-13 16-8 17-6 34-8 32-7 64-11 49-9 30-8 23-8 42-14 21-9 33-15 23-11 21-12 18-10 21-14 20-13 11-8 13-10 14-11 11-9 13-11 8-7 9-9h2v-2l8-7 10-10h2l1-3 8-7 13-13 11-9 7-7 19-14 14-9 19-11 19-7 23-7 10-3z" fill="#F18429"/>
<path transform="translate(1021,622)" d="m0 0 21 1 28 4 21 6 21 8 20 11 16 11 15 13 14 14v2h2l18 24 10 18 5 11 5 13 7 26 3 14 1 10v32l-4 25-7 26-7 18-10 19-14 21-9 10-7 8-13 13-11 9-13 9-16 9-13 5 1 12 8 36 15 63 19 85 14 63 4 25 2 14v25l-3 14-7 10-9 8-11 5-6 2-21 2h-68l-83 1h-32l-14-3-7-4-13-11-8-10-4-8-2-8v-15l5-30 7-32 15-60 16-72 12-52 7-36 3-25-6-2-16-8-12-7-12-9-10-9-8-7-9-9-11-14-11-17-10-19-8-20-6-20-3-17-1-9v-30l3-20 6-27 7-21 17-33 11-15 7-8 11-12 15-13 16-12 21-12 18-8 22-6 19-3z" fill="#FEFFFE"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 666.66669 666.66669"
height="666.66669"
width="666.66669"
xml:space="preserve"
id="svg2"
version="1.1"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
id="clipPath18"
clipPathUnits="userSpaceOnUse"><path
id="path16"
d="M 0,500 H 500 V 0 H 0 Z" /></clipPath></defs><g
transform="matrix(1.3333333,0,0,-1.3333333,0,666.66667)"
id="g10"><g
id="g12"><g
clip-path="url(#clipPath18)"
id="g14"><g
transform="translate(271.9302,161.9868)"
id="g20"><path
id="path22"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -1.609,22.325 8.191,35.961 27.969,45.722 38.251,18.878 60.677,49.906 65.954,92.756 5.87,47.664 -19.012,94.411 -62.555,117.173 -43.086,22.523 -96.23,15.726 -131.639,-16.836 -62.664,-57.626 -49.156,-155.026 27.378,-192.975 20.369,-10.099 29.516,-24.409 28.827,-47.051 l -0.665,-90.956 c -0.154,-5.22 -0.105,-15.164 -9.272,-15.164 -10.152,0 -9.378,9.864 -9.541,15.055 l -0.2,89.461 c 0.529,15.971 -4.733,25.223 -19.548,32.458 -54.064,26.399 -81.764,81.218 -74.085,143.239 6.547,52.882 50.489,99.204 105.937,111.678 C 14.723,299.443 82.008,262.772 105.332,199.118 129.124,134.186 102.615,62.173 41.647,31.314 23.796,22.279 17.162,11.385 18.236,-8.142 l 0.322,-82.006 c -0.04,-7.051 1.518,-17.418 -8.73,-17.113 -10.808,0.322 -9.425,10.388 -9.563,17.791 z" /></g><g
transform="translate(354.3853,314.251)"
id="g24"><path
id="path26"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -1.877,-44.525 -21.488,-76.549 -60.95,-95.686 -6.669,-3.234 -14.311,-8.59 -20.382,0.667 -3.59,11.012 4.853,13.019 11.948,16.465 33.822,16.422 53.208,49.665 50.033,85.561 -2.976,33.635 -27.851,64.073 -60.433,73.944 -42.422,12.852 -86.942,-8.275 -104.044,-49.374 -16.916,-40.654 0.188,-87.586 39.473,-108.164 3.501,-1.835 7.268,-3.689 10.525,-5.195 4.814,-2.225 9.273,-6.64 6.214,-13.096 -3.773,-5.949 -10.158,-4.928 -13.83,-3.574 -34.05,12.559 -56.148,37.094 -65.057,71.953 -14.43,56.457 20.322,113.537 76.31,127.515 C -73.479,115.174 -16.533,80.27 -2.776,22.613 -0.949,14.958 -0.808,6.9 0,0" /></g><g
transform="translate(302.9429,313.7275)"
id="g28"><path
id="path30"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 0,0 C -0.126,30.031 -24.61,54.312 -54.134,53.687 -82.835,53.078 -107.289,28.589 -107.649,0.095 -108.016,-28.884 -82.791,-54.14 -53.497,-54.124 -23.44,-54.107 0.128,-30.263 0,0 m -52.069,72.649 c 39.811,-0.439 72.627,-34.098 72.046,-73.897 -0.592,-40.524 -34.503,-73.023 -75.363,-72.225 -39.888,0.779 -71.077,33.777 -70.68,74.78 0.389,40.156 33.202,71.793 73.997,71.342" /></g><g
transform="translate(240.2246,214.3433)"
id="g32"><path
id="path34"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 0.214,5.411 -1.726,15.9 9.05,15.9 10.049,0 9.444,-10.235 9.519,-15.42 l -0.014,-181.282 c -0.077,-5.364 0.544,-15.174 -9.096,-15.149 -9.831,-0.56 -10.001,8.324 -9.952,16.165 z" /></g><g
transform="translate(180.2505,475.8945)"
id="g36"><path
id="path38"
style="fill:none;stroke:#231f20;stroke-width:17.90200043;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="M 0,0 C -47.839,0 -84.575,-35.961 -84.575,-82.561" /></g><g
transform="translate(407.0049,393.334)"
id="g40"><path
id="path42"
style="fill:none;stroke:#231f20;stroke-width:17.90200043;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="M 0,0 C 0,53.183 -40.61,82.561 -84.575,82.561" /></g><g
transform="translate(322.4302,26.4619)"
id="g44"><path
id="path46"
style="fill:none;stroke:#231f20;stroke-width:17.90200043;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="M 0,0 C 47.839,0 84.575,35.961 84.575,82.561" /></g><g
transform="translate(95.6753,109.0225)"
id="g48"><path
id="path50"
style="fill:none;stroke:#231f20;stroke-width:17.90200043;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="M 0,0 C 0,-53.183 40.61,-82.561 84.575,-82.561" /></g><g
transform="translate(273.1763,313.354)"
id="g52"><path
id="path54"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 0,-13.019 -10.554,-23.572 -23.572,-23.572 -13.019,0 -23.573,10.553 -23.573,23.572 0,13.019 10.554,23.572 23.573,23.572 C -10.554,23.572 0,13.019 0,0" /></g><g
transform="translate(249.6035,289.7817)"
id="g56"><path
id="path58"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -13.019,0 -23.572,10.554 -23.572,23.572 0,13.019 10.553,23.573 23.572,23.573 13.019,0 23.573,-10.554 23.573,-23.573 C 23.573,10.554 13.019,0 0,0 M 1.402,64.452 C -22.017,64.884 -40.659,47.335 -41.213,24.336 -41.76,1.626 -23.248,-17.143 -0.132,-17.313 23.614,-17.489 41.229,-0.094 41.225,23.53 41.222,46.621 24.28,64.029 1.402,64.452" /></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

@@ -0,0 +1,3 @@
<svg width="240" height="240" viewBox="0 0 240 240" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M239.257 120.417C239.257 54.4193 185.755 0.916504 119.757 0.916504C53.7601 0.916504 0.257324 54.4193 0.257324 120.417C0.257324 186.417 53.7601 239.917 119.757 239.917C185.755 239.917 239.257 186.417 239.257 120.417ZM98.0069 54.0276C97.0674 55.8714 97.0674 58.2851 97.0674 63.1126V90.4729C97.0674 91.6788 97.0674 92.2817 97.2196 92.8392C97.3545 93.3331 97.5763 93.799 97.8746 94.215C98.2113 94.6847 98.6792 95.0648 99.6152 95.8251L106.536 101.447C107.664 102.364 108.228 102.822 108.433 103.374C108.613 103.857 108.613 104.39 108.433 104.873C108.228 105.425 107.664 105.883 106.536 106.8L99.6152 112.422C98.6793 113.182 98.2113 113.562 97.8746 114.032C97.5763 114.448 97.3545 114.914 97.2196 115.408C97.0674 115.965 97.0674 116.568 97.0674 117.774V177.719C97.0674 182.547 97.0674 184.961 98.0069 186.805C98.8333 188.426 100.152 189.745 101.774 190.571C103.618 191.511 106.031 191.511 110.859 191.511H128.656C133.483 191.511 135.897 191.511 137.741 190.571C139.363 189.745 140.681 188.426 141.508 186.805C142.447 184.961 142.447 182.547 142.447 177.719V150.359C142.447 149.153 142.447 148.55 142.295 147.993C142.16 147.499 141.938 147.033 141.64 146.617C141.303 146.147 140.835 145.767 139.899 145.007L132.978 139.385C131.85 138.468 131.286 138.01 131.082 137.459C130.902 136.975 130.902 136.443 131.082 135.959C131.286 135.407 131.85 134.949 132.978 134.033L139.899 128.41C140.835 127.65 141.303 127.27 141.64 126.8C141.938 126.384 142.16 125.918 142.295 125.424C142.447 124.867 142.447 124.264 142.447 123.058V63.1126C142.447 58.2851 142.447 55.8714 141.508 54.0276C140.681 52.4057 139.363 51.087 137.741 50.2606C135.897 49.3211 133.483 49.3211 128.656 49.3211H110.859C106.031 49.3211 103.618 49.3211 101.774 50.2606C100.152 51.087 98.8333 52.4057 98.0069 54.0276Z" fill="#FFFEFB"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg version="1.1" viewBox="0 0 2048 2048" width="128" height="128" xmlns="http://www.w3.org/2000/svg">
<path d="M 0 0 L -5 1 L -15 4 L -38 11 L -57 18 L -76 29 L -90 38 L -109 52 L -116 59 L -127 68 L -140 81 L -148 88 L -149 91 L -151 91 L -161 101 L -169 108 L -169 110 L -171 110 L -180 119 L -188 126 L -201 137 L -212 146 L -226 157 L -239 167 L -250 175 L -270 188 L -291 202 L -309 212 L -330 224 L -353 235 L -386 250 L -407 259 L -449 273 L -472 281 L -502 289 L -551 298 L -615 309 L -647 316 L -681 324 L -698 330 L -714 338 L -735 351 L -745 358 L -756 367 L -764 375 L -766 379 L -768 379 L -773 385 L -781 395 L -791 410 L -801 428 L -810 447 L -816 465 L -822 500 L -827 545 L -830 592 L -832 653 L -832 712 L -831 742 L -828 794 L -822 866 L -816 928 L -812 957 L -800 1020 L -789 1072 L -783 1098 L -765 1162 L -751 1207 L -744 1225 L -734 1254 L -720 1290 L -704 1328 L -689 1361 L -668 1403 L -653 1431 L -639 1456 L -620 1488 L -607 1509 L -594 1529 L -584 1544 L -571 1563 L -558 1581 L -544 1600 L -533 1615 L -520 1632 L -507 1648 L -479 1682 L -470 1693 L -460 1704 L -449 1716 L -442 1724 L -432 1734 L -425 1742 L -368 1799 L -351 1815 L -335 1830 L -327 1837 L -314 1849 L -288 1871 L -271 1885 L -261 1893 L -244 1907 L -228 1919 L -215 1929 L -196 1943 L -184 1952 L -168 1963 L -148 1977 L -133 1987 L -112 2000 L -88 2013 L -72 2021 L -52 2030 L -32 2037 L 12 2048 L 60 2048 L 61 2047 L 73 2044 L 100 2037 L 121 2029 L 149 2015 L 167 2005 L 186 1994 L 210 1979 L 231 1965 L 266 1941 L 284 1928 L 295 1920 L 306 1911 L 324 1898 L 338 1887 L 349 1877 L 358 1870 L 369 1860 L 380 1851 L 380 1849 L 382 1849 L 385 1846 L 396 1837 L 403 1830 L 411 1823 L 418 1816 L 426 1809 L 475 1760 L 477 1756 L 479 1756 L 487 1747 L 503 1730 L 510 1722 L 519 1712 L 526 1704 L 538 1691 L 547 1680 L 558 1667 L 566 1656 L 579 1640 L 590 1626 L 606 1605 L 621 1583 L 631 1569 L 645 1549 L 655 1533 L 670 1510 L 685 1485 L 696 1467 L 706 1449 L 730 1405 L 745 1374 L 762 1338 L 774 1310 L 792 1267 L 811 1216 L 827 1166 L 842 1117 L 858 1051 L 870 996 L 875 967 L 881 917 L 886 882 L 891 846 L 894 812 L 896 774 L 896 655 L 895 630 L 892 593 L 888 559 L 877 470 L 872 445 L 865 426 L 857 411 L 847 395 L 834 378 L 814 358 L 800 347 L 785 337 L 766 327 L 750 321 L 727 315 L 693 308 L 650 301 L 597 292 L 570 286 L 548 280 L 515 270 L 487 261 L 459 250 L 438 241 L 414 230 L 382 213 L 358 199 L 347 192 L 330 180 L 312 167 L 300 157 L 286 146 L 271 133 L 263 126 L 251 115 L 240 106 L 228 95 L 200 71 L 189 62 L 174 50 L 158 38 L 142 27 L 127 19 L 115 14 L 95 8 L 71 0 L 0 0 z M 30 622 L 51 623 L 79 627 L 100 633 L 121 641 L 141 652 L 157 663 L 172 676 L 186 690 L 186 692 L 188 692 L 206 716 L 216 734 L 221 745 L 226 758 L 233 784 L 236 798 L 237 808 L 237 840 L 233 865 L 226 891 L 219 909 L 209 928 L 195 949 L 186 959 L 179 967 L 166 980 L 155 989 L 142 998 L 126 1007 L 113 1012 L 114 1024 L 122 1060 L 137 1123 L 156 1208 L 170 1271 L 174 1296 L 176 1310 L 176 1335 L 173 1349 L 166 1359 L 157 1367 L 146 1372 L 140 1374 L 119 1376 L 51 1376 L -32 1377 L -64 1377 L -78 1374 L -85 1370 L -98 1359 L -106 1349 L -110 1341 L -112 1333 L -112 1318 L -107 1288 L -100 1256 L -85 1196 L -69 1124 L -57 1072 L -50 1036 L -47 1011 L -53 1009 L -69 1001 L -81 994 L -93 985 L -103 976 L -111 969 L -120 960 L -131 946 L -142 929 L -152 910 L -160 890 L -166 870 L -169 853 L -170 844 L -170 814 L -167 794 L -161 767 L -154 746 L -137 713 L -126 698 L -119 690 L -108 678 L -93 665 L -77 653 L -56 641 L -38 633 L -16 627 L 3 624 L 30 622 z " transform="translate(991)" style="fill:#ffffff" />
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.8 KiB

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="1023.9999"
height="1023.9999"
viewBox="0 0 270.93333 270.93333"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<g
id="layer1">
<rect
style="fill:#1a2332;fill-opacity:1;stroke:#ffffff;stroke-width:10.5723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke fill markers"
id="rect1-8"
width="260"
height="260"
x="4.7742004"
y="5.8167515"
ry="60" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.73551;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="path9"
cx="189.89941"
cy="76.238014"
rx="9.259469"
ry="9.8423595" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.73551;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="circle9"
cx="132.08908"
cy="-189.40054"
transform="rotate(90)"
rx="9.8423595"
ry="9.259469" />
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.74178;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="circle10"
cx="-2.7947109"
cy="-269.53699"
r="9.5553598"
transform="matrix(-0.68521017,0.7283454,-0.68521093,-0.72834468,0,0)" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.73551;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="circle11"
cx="-131.84821"
cy="-194.32492"
transform="scale(-1)"
rx="9.259469"
ry="9.8423595" />
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.74178;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="circle12"
cx="-191.27057"
cy="-75.471619"
r="9.5553598"
transform="matrix(-0.68521042,-0.72834516,0.68521068,-0.72834492,0,0)" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.73551;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="circle13"
cx="-76.21656"
cy="78.785728"
transform="rotate(-90)"
rx="9.8423595"
ry="9.259469" />
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.74178;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="circle14"
cx="45.708427"
cy="149.80536"
r="9.5553598"
transform="matrix(0.68521084,-0.72834477,0.68521026,0.72834532,0,0)" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.73551;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="circle15"
cx="78.785728"
cy="131.98999"
rx="9.259469"
ry="9.8423595" />
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.74178;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
id="circle16"
cx="188.22224"
cy="-7.2915931"
r="9.5553598"
transform="matrix(0.68521027,0.7283453,-0.68521083,0.72834478,0,0)" />
<path
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:11.0968;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="M 221.8944,44.132803 H 48.522174 V 227.39621 H 221.8944 Z"
id="path16" />
<path
style="fill:none;stroke:#ffffff;stroke-width:10.5833;stroke-dasharray:none;stroke-opacity:1"
d="M 80.057285,76.239981 V 196.23997 H 190.05727 V 76.239981 Z"
id="path1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48">
<defs>
<linearGradient id="a" x1="3.2173" y1="15" x2="44.7812" y2="15" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#d93025"/>
<stop offset="1" stop-color="#ea4335"/>
</linearGradient>
<linearGradient id="b" x1="20.7219" y1="47.6791" x2="41.5039" y2="11.6837" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fcc934"/>
<stop offset="1" stop-color="#fbbc04"/>
</linearGradient>
<linearGradient id="c" x1="26.5981" y1="46.5015" x2="5.8161" y2="10.506" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#1e8e3e"/>
<stop offset="1" stop-color="#34a853"/>
</linearGradient>
<path id="p" d="M13.6086 30.0031 3.218 12.006A23.994 23.994 0 0 0 24.0025 48l10.3906-17.9971-.0067-.0068a11.9852 11.9852 0 0 1-20.7778.007Z"/>
</defs>
<use xlink:href="#p" fill="url(#a)" transform="rotate(120 24 24)"/>
<use xlink:href="#p" fill="url(#b)" transform="rotate(-120 24 24)"/>
<use xlink:href="#p" fill="url(#c)"/>
<circle cx="24" cy="24" r="12" style="fill:#fff"/>
<circle cx="24" cy="24" r="9.5" style="fill:#1a73e8"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,18 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6034_33627)">
<circle cx="12" cy="12" r="12" fill="white"/>
<path d="M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" fill="black"/>
<path d="M10.1218 3.27325H11.6666V9.51527H14.8575L18.696 6.46317L19.6607 7.66821L15.3989 11.0564H10.1218V3.27325Z" fill="#FFC700"/>
<path d="M13.1438 3.48366L14.6887 3.87694V6.03492L16.4173 4.61811L17.7008 5.56097L14.407 8.26013L13.1438 8.25341V3.48366Z" fill="#FFC700"/>
<path d="M4.0387 15.0849L5.58354 16.3958V7.81427L4.0387 9.22772V15.0849Z" fill="#FFC700"/>
<path d="M8.61257 18.2411L7.06604 19.5806V4.49485L8.61257 5.83434V18.2411Z" fill="#FFC700"/>
<path d="M14.6887 18.1174L16.4173 19.5342L17.7008 18.5897L14.407 15.8922L13.1438 15.8989V20.6687L14.6887 20.2754V18.1174Z" fill="#FFC700"/>
<path d="M18.696 17.4786L14.8575 14.4248H11.6666V20.6668H10.1218V12.8853H15.3989L19.6607 16.2735L18.696 17.4786Z" fill="#FFC700"/>
<path d="M16.7376 11.9706L19.8981 14.5706L20.883 13.3823L19.1661 11.9706L20.883 10.5588L19.8981 9.37056L16.7376 11.9706Z" fill="#FFC700"/>
</g>
<defs>
<clipPath id="clip0_6034_33627">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,3 @@
<svg viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.6134 70C2.82435 63.352 0 55.1722 0 46.3273C0 24.0552 17.9086 6 40 6C62.0914 6 80 24.0552 80 46.3273C80 55.1721 77.1757 63.3518 72.3867 69.9999L53.1747 38.5466L51.3195 41.7046L53.2018 50.4877L40 27.7147L31.8334 41.6161L33.7346 50.4877L26.8147 38.5646L7.6134 70Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 411 B

@@ -0,0 +1 @@
<svg width="512" height="512" version="1.1" id="Capa_1" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <style type="text/css"> .st0{fill:#EC6608;} .st1{fill:#FFFFFF;} </style> <sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview892" inkscape:current-layer="Capa_1" inkscape:cx="256" inkscape:cy="256" inkscape:document-rotation="0" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="1403" inkscape:window-maximized="1" inkscape:window-width="2488" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="0.5" objecttolerance="10" pagecolor="#ffffff" showgrid="false"> </sodipodi:namedview> <path id="path887" class="st0" d="M512,35.3v408.2c-17.7,26.2-39,49.3-63,68.5H104.9c-22.2-17.8-42.1-38.8-58.9-62.6V421h-18 C16.5,400.8,7.1,379.2,0,356.4v-33.3c0-6.3,4.7-11.5,10.5-11.5H46V200.3H10.5c-5.8,0-10.5-5.1-10.5-11.5v-86.3 C0,96.2,4.7,91,10.5,91H46V35.3C46,15.8,60.3,0,78,0h401.9C497.6,0,512,15.8,512,35.3z"/> <path class="st1" d="M200.5,417.3h-57.7c-9.5,0-15.4-8.5-10.6-15.2l81.9-116.3l-81.9-116c-4.8-6.8,1.1-15.3,10.6-15.3h50.5 c4.4,0,8.4,1.9,10.6,5.1l89,126.2"/> <g> <g> <g> <g> <g> <path class="st1" d="M365.6,340.2L274,210l87.7-124.3c2.4-3.4,6.9-5.6,11.8-5.6h46.8c10.5,0,17,9.4,11.8,16.9L352.1,210 L432,323.4c5.3,7.5-1.3,16.8-11.8,16.8"/> </g> </g> </g> </g> </g> </svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<defs>
<linearGradient id="ipassDark" x1="8" y1="2" x2="24" y2="30" gradientUnits="userSpaceOnUse">
<stop stop-color="#5EC8FF"/>
<stop offset="1" stop-color="#4B7CFF"/>
</linearGradient>
</defs>
<rect width="32" height="32" rx="8" fill="#0B1220"/>
<path fill="url(#ipassDark)" d="M16 4.8c4.1 1.6 7.8 1.9 9.7 1.9.4 0 .8.3.8.8v9.4c0 5.3-3.5 9.1-10.5 12.3C8.9 26 5.5 22.2 5.5 16.9V7.5c0-.5.4-.8.8-.8 1.9 0 5.6-.3 9.7-1.9z"/>
<circle cx="16" cy="12.15" r="1.65" fill="#0B1220"/>
<path fill="#0B1220" d="M14.55 14.3h2.9c.4 0 .75.35.75.75v5.5c0 .8-.45 1.5-1.15 1.85l-.3.14c-.6.26-1.3.26-1.9 0l-.3-.14c-.7-.35-1.15-1.05-1.15-1.85v-5.5c0-.4.35-.75.75-.75z"/>
</svg>

After

Width:  |  Height:  |  Size: 751 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 77.6 77.6" style="enable-background:new 0 0 77.6 77.6;"><g><path fill="#2C2F73" d="M77.6,55.1c-4.9,1.4-11.4,1.9-16.2,2l-22.7-45.8h-1.3l-22.6,45.8c-4.8-0.1-10.5-0.6-15.4-2l28.7-53.7h20.5 L77.6,55.1z"></path><path fill="#5EBFD4" d="M47.7,41.4c0,5.3-4.3,9.5-9.6,9.5c-5.3,0-9.5-4.3-9.5-9.5c0-5.3,4.3-9.5,9.5-9.5 C43.4,31.9,47.7,36.1,47.7,41.4"></path></g></svg>

After

Width:  |  Height:  |  Size: 410 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><rect x="8" y="8" width="112" height="112" rx="22" fill="#303236" stroke="#17181a" stroke-width="2"/><path fill="#f8f9fa" d="M64 18c13 7 26 11 38 13v27c0 24-15 43-38 54-23-11-38-30-38-54V31c12-2 25-6 38-13Z"/><path fill="#303236" d="M64 33c9 5 18 8 27 10v16c0 16-10 29-27 38-17-9-27-22-27-38V43c9-2 18-5 27-10Z"/><path d="M48 60a18 18 0 0 1 28-10" fill="none" stroke="#f8f9fa" stroke-width="6" stroke-linecap="round"/><path fill="#f8f9fa" d="m77 43 1 13-12-5Z"/><path d="M80 68a18 18 0 0 1-28 10" fill="none" stroke="#f8f9fa" stroke-width="6" stroke-linecap="round"/><path fill="#f8f9fa" d="m51 85-1-13 12 5Z"/><circle cx="64" cy="64" r="10" fill="#f8f9fa"/><path fill="#303236" d="M64 57a5 5 0 0 1 3 9v8h-6v-8a5 5 0 0 1 3-9Z"/></svg>

After

Width:  |  Height:  |  Size: 796 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 192 192" height="24px" viewBox="0 0 192 192" width="24px"><rect fill="none" height="192" width="192" y="0"/><g><path d="M69.29,106c-3.46,5.97-9.91,10-17.29,10c-11.03,0-20-8.97-20-20s8.97-20,20-20 c7.38,0,13.83,4.03,17.29,10h25.55C90.3,66.54,72.82,52,52,52C27.74,52,8,71.74,8,96s19.74,44,44,44c20.82,0,38.3-14.54,42.84-34 H69.29z" fill="#4285F4"/><rect fill="#FBBC04" height="24" width="44" x="94" y="84"/><path d="M94.32,84H68v0.05c2.5,3.34,4,7.47,4,11.95s-1.5,8.61-4,11.95V108h26.32 c1.08-3.82,1.68-7.84,1.68-12S95.41,87.82,94.32,84z" fill="#EA4335"/><path d="M184,106v26h-16v-8c0-4.42-3.58-8-8-8s-8,3.58-8,8v8h-16v-26H184z" fill="#34A853"/><rect fill="#188038" height="24" width="48" x="136" y="84"/></g></svg>

After

Width:  |  Height:  |  Size: 779 B

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<defs>
<style>
.cls-1 {
fill: #226eb3;
}
.cls-2 {
fill: #fff;
}
.cls-3 {
opacity: .9;
}
.cls-4 {
fill: #e42528;
}
</style>
</defs>
<path class="cls-2" d="M26.1,3.62H5.9c-1.24,0-2.25,1.01-2.25,2.25v16.94c0,1.24,1.01,2.25,2.25,2.25h.1c.3.07.67.29.67.91v2.11c0,.15.12.27.27.27h2.75c.15,0,.27-.12.27-.27v-1.23s.07-1.56,1.75-1.79h8.58c1.68.23,1.75,1.79,1.75,1.79v1.23c0,.15.12.27.27.27h2.75c.15,0,.27-.12.27-.27v-2.11c0-.62.37-.83.67-.91h.09c1.24,0,2.25-1.01,2.25-2.25V5.87c0-1.24-1.01-2.25-2.25-2.25Z"/>
<g>
<g class="cls-3">
<path class="cls-1" d="M25.06,30h-2.75c-1.06,0-1.92-.86-1.92-1.92v-1.13c0-.15-.12-.27-.27-.27h-8.24c-.15,0-.27.12-.27.27v1.13c0,1.06-.86,1.92-1.92,1.92h-2.75c-1.06,0-1.92-.86-1.92-1.92v-1.49c-1.72-.38-3.02-1.92-3.02-3.76V5.84c0-2.12,1.72-3.84,3.84-3.84h20.31c2.12,0,3.84,1.72,3.84,3.84v16.99c0,1.84-1.3,3.38-3.02,3.76v1.49c0,1.06-.86,1.92-1.92,1.92ZM11.88,25.03h8.24c1.06,0,1.92.86,1.92,1.92v1.13c0,.15.12.27.27.27h2.75c.15,0,.27-.12.27-.27v-2.22c0-.46.37-.82.82-.82,1.21,0,2.2-.99,2.2-2.2V5.84c0-1.21-.99-2.2-2.2-2.2H5.84c-1.21,0-2.2.99-2.2,2.2v16.99c0,1.21.99,2.2,2.2,2.2.46,0,.82.37.82.82v2.22c0,.15.12.27.27.27h2.75c.15,0,.27-.12.27-.27v-1.13c0-1.06.86-1.92,1.92-1.92Z"/>
</g>
<g class="cls-3">
<path class="cls-4" d="M10.77,19.25c-.17,0-.34-.05-.48-.16-.37-.27-.45-.78-.18-1.15l2.67-3.68c.27-.37.78-.45,1.15-.18.37.27.45.78.18,1.15l-2.67,3.68c-.16.22-.41.34-.67.34Z"/>
</g>
<g class="cls-3">
<path class="cls-4" d="M16.12,19.25c-.26,0-.51-.12-.67-.34l-2.67-3.68c-.27-.37-.19-.88.18-1.15.37-.27.88-.19,1.15.18l2.67,3.68c.27.37.19.88-.18,1.15-.15.11-.32.16-.48.16Z"/>
</g>
<g class="cls-3">
<path class="cls-4" d="M13.44,15.57c-.46,0-.82-.37-.82-.82v-4.51c0-.46.37-.82.82-.82s.82.37.82.82v4.51c0,.46-.37.82-.82.82Z"/>
</g>
<g class="cls-3">
<path class="cls-4" d="M13.44,15.58c-.35,0-.67-.22-.78-.57-.14-.43.1-.9.53-1.04l4.32-1.39c.43-.14.9.1,1.04.53.14.43-.1.9-.53,1.04l-4.32,1.39c-.09.03-.17.04-.26.04Z"/>
</g>
<g class="cls-3">
<path class="cls-4" d="M13.44,15.58c-.09,0-.17-.01-.25-.04l-4.32-1.39c-.43-.14-.67-.6-.53-1.04.14-.43.6-.67,1.04-.53l4.32,1.39c.43.14.67.6.53,1.04-.11.35-.43.57-.78.57Z"/>
</g>
<g class="cls-3">
<path class="cls-1" d="M22.85,19.23c-.46,0-.82-.37-.82-.82v-8.15c0-.46.37-.82.82-.82s.82.37.82.82v8.15c0,.46-.37.82-.82.82Z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.cls-1{fill:url(#linear-gradient);}.cls-2{opacity:0.35;fill:url(#radial-gradient);}.cls-2,.cls-4{isolation:isolate;}.cls-3{fill:url(#linear-gradient-2);}.cls-4{opacity:0.41;fill:url(#radial-gradient-2);}.cls-5{fill:url(#radial-gradient-3);}.cls-6{fill:url(#radial-gradient-4);}</style><linearGradient id="linear-gradient" x1="63.33" y1="84.03" x2="241.67" y2="84.03" gradientTransform="matrix(1, 0, 0, -1, 0, 266)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0c59a4"/><stop offset="1" stop-color="#114a8b"/></linearGradient><radialGradient id="radial-gradient" cx="161.83" cy="68.91" r="95.38" gradientTransform="matrix(1, 0, 0, -0.95, 0, 248.84)" gradientUnits="userSpaceOnUse"><stop offset="0.72" stop-opacity="0"/><stop offset="0.95" stop-opacity="0.53"/><stop offset="1"/></radialGradient><linearGradient id="linear-gradient-2" x1="157.35" y1="161.39" x2="45.96" y2="40.06" gradientTransform="matrix(1, 0, 0, -1, 0, 266)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1b9de2"/><stop offset="0.16" stop-color="#1595df"/><stop offset="0.67" stop-color="#0680d7"/><stop offset="1" stop-color="#0078d4"/></linearGradient><radialGradient id="radial-gradient-2" cx="-340.29" cy="62.99" r="143.24" gradientTransform="matrix(0.15, -0.99, -0.8, -0.12, 176.64, -125.4)" gradientUnits="userSpaceOnUse"><stop offset="0.76" stop-opacity="0"/><stop offset="0.95" stop-opacity="0.5"/><stop offset="1"/></radialGradient><radialGradient id="radial-gradient-3" cx="113.37" cy="570.21" r="202.43" gradientTransform="matrix(-0.04, 1, 2.13, 0.08, -1179.54, -106.69)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#35c1f1"/><stop offset="0.11" stop-color="#34c1ed"/><stop offset="0.23" stop-color="#2fc2df"/><stop offset="0.31" stop-color="#2bc3d2"/><stop offset="0.67" stop-color="#36c752"/></radialGradient><radialGradient id="radial-gradient-4" cx="376.52" cy="567.97" r="97.34" gradientTransform="matrix(0.28, 0.96, 0.78, -0.23, -303.76, -148.5)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#66eb6e"/><stop offset="1" stop-color="#66eb6e" stop-opacity="0"/></radialGradient></defs><title>Edge_Logo_265x265</title><path class="cls-1" d="M235.68,195.46a93.73,93.73,0,0,1-10.54,4.71,101.87,101.87,0,0,1-35.9,6.46c-47.32,0-88.54-32.55-88.54-74.32A31.48,31.48,0,0,1,117.13,105c-42.8,1.8-53.8,46.4-53.8,72.53,0,73.88,68.09,81.37,82.76,81.37,7.91,0,19.84-2.3,27-4.56l1.31-.44A128.34,128.34,0,0,0,241,201.1,4,4,0,0,0,235.68,195.46Z" transform="translate(-4.63 -4.92)"/><path class="cls-2" d="M235.68,195.46a93.73,93.73,0,0,1-10.54,4.71,101.87,101.87,0,0,1-35.9,6.46c-47.32,0-88.54-32.55-88.54-74.32A31.48,31.48,0,0,1,117.13,105c-42.8,1.8-53.8,46.4-53.8,72.53,0,73.88,68.09,81.37,82.76,81.37,7.91,0,19.84-2.3,27-4.56l1.31-.44A128.34,128.34,0,0,0,241,201.1,4,4,0,0,0,235.68,195.46Z" transform="translate(-4.63 -4.92)"/><path class="cls-3" d="M110.34,246.34A79.2,79.2,0,0,1,87.6,225,80.72,80.72,0,0,1,117.13,105c3.12-1.47,8.45-4.13,15.54-4a32.35,32.35,0,0,1,25.69,13,31.88,31.88,0,0,1,6.36,18.66c0-.21,24.46-79.6-80-79.6-43.9,0-80,41.66-80,78.21a130.15,130.15,0,0,0,12.11,56,128,128,0,0,0,156.38,67.11,75.55,75.55,0,0,1-62.78-8Z" transform="translate(-4.63 -4.92)"/><path class="cls-4" d="M110.34,246.34A79.2,79.2,0,0,1,87.6,225,80.72,80.72,0,0,1,117.13,105c3.12-1.47,8.45-4.13,15.54-4a32.35,32.35,0,0,1,25.69,13,31.88,31.88,0,0,1,6.36,18.66c0-.21,24.46-79.6-80-79.6-43.9,0-80,41.66-80,78.21a130.15,130.15,0,0,0,12.11,56,128,128,0,0,0,156.38,67.11,75.55,75.55,0,0,1-62.78-8Z" transform="translate(-4.63 -4.92)"/><path class="cls-5" d="M156.94,153.78c-.81,1.05-3.3,2.5-3.3,5.66,0,2.61,1.7,5.12,4.72,7.23,14.38,10,41.49,8.68,41.56,8.68A59.56,59.56,0,0,0,230.19,167a61.38,61.38,0,0,0,30.43-52.88c.26-22.41-8-37.31-11.34-43.91C228.09,28.76,182.35,4.92,132.61,4.92a128,128,0,0,0-128,126.2c.48-36.54,36.8-66.05,80-66.05,3.5,0,23.46.34,42,10.07,16.34,8.58,24.9,18.94,30.85,29.21,6.18,10.67,7.28,24.15,7.28,29.52S162,147.2,156.94,153.78Z" transform="translate(-4.63 -4.92)"/><path class="cls-6" d="M156.94,153.78c-.81,1.05-3.3,2.5-3.3,5.66,0,2.61,1.7,5.12,4.72,7.23,14.38,10,41.49,8.68,41.56,8.68A59.56,59.56,0,0,0,230.19,167a61.38,61.38,0,0,0,30.43-52.88c.26-22.41-8-37.31-11.34-43.91C228.09,28.76,182.35,4.92,132.61,4.92a128,128,0,0,0-128,126.2c.48-36.54,36.8-66.05,80-66.05,3.5,0,23.46.34,42,10.07,16.34,8.58,24.9,18.94,30.85,29.21,6.18,10.67,7.28,24.15,7.28,29.52S162,147.2,156.94,153.78Z" transform="translate(-4.63 -4.92)"/></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 108 108"
width="108"
height="108"
version="1.1"
id="svg5"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<title>Sticky Password Manager</title>
<defs
id="defs5" />
<circle
style="fill:#ffffff;stroke-width:1.76201"
id="path6"
cx="54"
cy="54"
r="54" />
<g
id="g6"
transform="matrix(1.3433243,0,0,1.3433243,-18.540607,-18.527594)">
<path
d="m 64.35,53.11 -9.5,-9.5 c -0.48,-0.48 -1.26,-0.48 -1.75,0 l -9.5,9.5 c -0.48,0.48 -0.48,1.26 0,1.74 l 9.5,9.5 c 0.24,0.24 0.56,0.36 0.87,0.36 0.31,0 0.63,-0.12 0.87,-0.36 l 9.5,-9.5 c 0.23,-0.23 0.36,-0.54 0.36,-0.87 0,-0.33 -0.13,-0.64 -0.36,-0.87 z"
fill="#000000"
fill-rule="evenodd"
stroke="#000000"
stroke-width="3.62"
stroke-opacity="0"
id="path1" />
<path
d="m 50.11,67.34 -9.5,-9.5 c -0.48,-0.48 -1.26,-0.48 -1.74,0 l -9.49,9.5 c -0.48,0.48 -0.48,1.26 0,1.75 l 9.49,9.5 c 0.24,0.24 0.56,0.36 0.87,0.36 0.31,0 0.63,-0.12 0.87,-0.36 l 9.5,-9.5 c 0.23,-0.24 0.36,-0.54 0.36,-0.87 0,-0.33 -0.13,-0.64 -0.36,-0.87"
fill="#00a9e0"
fill-rule="evenodd"
stroke="#000000"
stroke-width="3.62"
stroke-opacity="0"
id="path2" />
<path
d="m 78.57,38.88 -9.5,-9.49 c -0.48,-0.48 -1.27,-0.48 -1.74,0 l -9.5,9.5 c -0.48,0.48 -0.48,1.26 0,1.74 l 9.5,9.5 c 0.24,0.24 0.55,0.36 0.87,0.36 0.31,0 0.63,-0.12 0.87,-0.36 l 9.5,-9.5 c 0.23,-0.24 0.36,-0.54 0.36,-0.87 0,-0.33 -0.13,-0.64 -0.36,-0.87"
fill="#d61818"
fill-rule="evenodd"
stroke="#000000"
stroke-width="3.62"
stroke-opacity="0"
id="path3" />
<path
d="m 50.1,38.86 -9.5,-9.5 c -0.48,-0.48 -1.27,-0.48 -1.74,0 l -9.5,9.5 c -0.48,0.48 -0.48,1.26 0,1.75 l 9.5,9.5 c 0.24,0.24 0.55,0.36 0.87,0.36 0.32,0 0.63,-0.12 0.87,-0.36 l 9.49,-9.5 c 0.23,-0.23 0.37,-0.54 0.37,-0.88 0,-0.33 -0.13,-0.64 -0.37,-0.87"
fill="#7ab800"
fill-rule="evenodd"
stroke="#000000"
stroke-width="3.62"
stroke-opacity="0"
id="path4" />
<path
d="m 78.64,67.39 -9.5,-9.49 c -0.48,-0.48 -1.27,-0.48 -1.75,0 l -9.49,9.49 c -0.48,0.48 -0.48,1.26 0,1.75 l 9.49,9.5 c 0.24,0.24 0.55,0.36 0.87,0.36 0.32,0 0.63,-0.12 0.87,-0.36 l 9.5,-9.5 c 0.23,-0.23 0.36,-0.54 0.36,-0.87 0,-0.33 -0.13,-0.64 -0.36,-0.88"
fill="#0046ad"
fill-rule="evenodd"
stroke="#000000"
stroke-width="3.62"
stroke-opacity="0"
id="path5" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 1080 1080" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(0.983827,0,0,0.983827,13.661,-0.284699)">
<path d="M723.253,493.704C756.288,495.22 782.644,522.52 782.644,555.927L782.644,834.304C782.644,868.683 754.733,896.593 720.355,896.593L351.393,896.593C317.015,896.593 289.104,868.683 289.104,834.304L289.104,555.927C289.104,523.117 314.526,496.198 346.73,493.81L346.73,390.119C346.73,286.215 431.088,201.858 534.992,201.858C638.896,201.858 723.253,286.215 723.253,390.119L723.253,493.704ZM433.328,490.966L636.686,492.116C636.686,492.116 637.142,385.132 637.086,384.489C631.849,324.163 579.118,288.079 534.992,288.535C493.017,288.969 435.92,318.1 433.656,383.797C433.476,389.017 433.328,490.966 433.328,490.966ZM503.296,714.382L492.433,784.455C492.433,784.455 490.376,798.284 492.416,802.664C496.78,812.031 503.822,811.111 503.822,811.111L565.6,810.838C565.6,810.838 572.863,811.472 577.637,802.155C579.88,797.775 577.323,783.74 577.323,783.74L566.649,714.401C590.743,702.649 607.359,677.908 607.359,649.318C607.359,609.377 574.932,576.95 534.992,576.95C495.051,576.95 462.624,609.377 462.624,649.318C462.624,677.893 479.223,702.622 503.296,714.382Z" style="fill:rgb(0,152,248);"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,13 @@
<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="50" height="50" rx="7.84782" fill="url(#paint0_linear_284_5774)"/>
<path d="M39.3517 17.6384C38.9049 17.6384 38.5667 17.9749 38.5667 18.4289V31.5605C38.5667 32.0108 38.9013 32.3509 39.3517 32.3509C39.8021 32.3509 40.1367 32.0145 40.1367 31.5605V18.4289C40.1367 17.9785 39.8021 17.6384 39.3517 17.6384Z" fill="white"/>
<path d="M21.8918 22.545C20.3814 22.545 19.0954 23.7859 19.0954 25.307C19.0954 26.8282 20.3272 28.1233 21.8375 28.1233C23.3478 28.1233 24.6338 26.8825 24.6338 25.3613C24.6338 23.8401 23.4021 22.545 21.8918 22.545Z" fill="white"/>
<path d="M31.0694 22.545C29.5591 22.545 28.273 23.7859 28.273 25.307C28.273 26.8282 29.5048 28.1233 31.0151 28.1233C32.5254 28.1233 33.8115 26.8825 33.8115 25.3613C33.8657 23.8401 32.634 22.545 31.0694 22.545Z" fill="white"/>
<path d="M12.6597 22.545C11.1494 22.545 9.86339 23.7859 9.86339 25.307C9.86339 26.8282 11.0952 28.1233 12.6055 28.1233C14.1158 28.1233 15.4018 26.8825 15.4018 25.3613C15.4018 23.8401 14.17 22.545 12.6597 22.545Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_284_5774" x1="25" y1="0" x2="25" y2="50" gradientUnits="userSpaceOnUse">
<stop stop-color="#ED194A"/>
<stop offset="1" stop-color="#C30833"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" width="1000pt" height="1000pt" viewBox="0 0 1000 1000" version="1.2" baseProfile="tiny-ps"><title>YubiKey</title><defs id="defs1"></defs><desc id="logo-desc-v2">YubiKey</desc><g id="#76b93dff"><path fill="#76B93D" d=" M 491.78 0.00 L 511.37 0.00 C 574.24 1.38 636.67 15.16 694.57 39.58 C 717.73 50.60 741.13 61.38 762.77 75.25 C 779.69 84.71 794.83 96.89 809.98 108.88 C 825.12 120.25 839.38 132.80 852.61 146.36 C 856.92 150.72 860.78 155.50 865.23 159.73 C 879.49 173.96 892.14 189.73 903.77 206.16 C 910.61 216.29 918.36 225.81 924.67 236.30 C 934.75 252.39 943.29 269.37 951.53 286.45 C 979.45 343.28 995.28 405.80 999.29 468.92 C 999.90 481.28 1000.86 493.63 1000.62 506.02 C 999.92 530.28 998.27 554.55 994.28 578.51 C 990.71 600.50 985.66 622.25 979.40 643.62 C 974.54 659.88 969.46 676.12 962.49 691.61 C 949.88 720.01 936.37 748.21 918.72 773.87 C 915.53 778.61 911.86 783.01 908.71 787.78 C 898.94 802.36 887.86 816.03 876.17 829.11 C 862.46 844.35 848.22 859.16 832.84 872.74 C 822.70 882.04 811.43 889.96 800.96 898.85 C 784.93 911.66 767.54 922.65 749.80 932.90 C 721.00 949.90 690.64 964.30 658.92 974.98 C 613.06 990.59 564.79 998.98 516.36 1000.00 L 504.47 1000.00 C 511.75 981.42 519.01 962.82 526.11 944.17 C 537.32 919.39 545.95 893.55 556.42 868.47 C 562.86 852.73 568.51 836.67 575.21 821.04 C 582.59 805.63 588.10 789.42 594.54 773.61 C 605.97 746.81 615.42 719.19 627.74 692.77 C 643.77 653.10 659.30 613.22 676.12 573.87 C 692.91 533.90 707.98 493.23 725.31 453.49 C 732.94 435.27 740.06 416.84 747.34 398.48 C 753.89 382.51 760.21 366.44 766.50 350.37 C 774.97 332.55 781.46 313.91 788.79 295.63 C 730.56 295.64 672.33 296.00 614.10 295.47 C 600.44 332.35 588.31 369.78 574.40 406.57 C 559.72 448.61 545.43 490.78 530.66 532.79 C 524.97 546.15 520.39 559.94 515.44 573.59 C 508.03 595.34 499.38 616.64 491.75 638.31 C 487.72 622.08 482.01 606.34 476.44 590.59 C 462.53 549.76 447.48 509.33 431.80 469.15 C 425.09 452.88 419.43 436.21 413.27 419.73 C 404.83 396.70 396.42 373.65 388.53 350.42 C 386.62 344.61 384.02 339.07 381.78 333.39 C 376.47 320.42 371.13 307.43 364.99 294.82 C 306.81 296.76 248.59 295.12 190.40 295.90 C 204.79 334.07 218.81 372.38 233.78 410.33 C 250.79 452.59 266.56 495.33 283.11 537.76 C 293.49 560.74 301.47 584.68 311.01 608.00 C 319.20 628.80 326.75 649.86 335.75 670.32 C 347.17 698.67 358.08 727.21 369.24 755.66 C 377.66 776.87 386.64 797.85 394.94 819.12 C 385.00 843.03 374.52 866.71 364.56 890.62 C 359.78 902.38 354.90 914.11 349.80 925.74 C 343.36 940.74 337.11 955.86 329.50 970.32 C 302.81 960.87 277.35 948.27 252.82 934.20 C 241.07 927.41 229.30 920.61 218.24 912.72 C 144.26 861.18 83.20 790.37 46.19 707.92 C 41.31 698.44 36.89 688.71 33.49 678.59 C -16.51 550.54 -9.90 401.20 52.89 278.72 C 63.95 256.51 75.92 234.61 90.79 214.69 C 106.43 193.02 122.74 171.66 141.97 153.01 C 159.09 134.08 178.85 117.78 199.06 102.26 C 207.27 96.06 215.25 89.53 223.94 83.99 C 253.70 64.41 285.58 48.15 318.48 34.55 C 373.61 12.90 432.58 1.25 491.78 0.00 Z" id="path1"></path></g><metadata></metadata></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_7484_8745)"><g clip-path="url(#clip1_7484_8745)"><g clip-path="url(#clip2_7484_8745)"><path d="M281.964 6.96171C265.893 -2.29974 246.107 -2.29974 230.036 6.96171L46.0365 113.002C29.9271 122.286 20 139.466 20 158.06V353.972C20 372.566 29.9271 389.745 46.0365 399.029L230.036 505.07C246.107 514.331 265.893 514.331 281.964 505.07L465.964 399.029C482.073 389.745 492 372.566 492 353.972V158.06C492 139.466 482.073 122.286 465.964 113.002L281.964 6.96171Z" fill="url(#paint0_linear_7484_8745)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M453.98 133.798L269.98 27.7574C261.327 22.7704 250.673 22.7704 242.02 27.7574L58.0196 133.798C49.3453 138.797 44 148.047 44 158.06V353.972C44 363.984 49.3453 373.234 58.0196 378.233L242.02 484.274C250.673 489.261 261.327 489.261 269.98 484.274L453.98 378.233C462.655 373.234 468 363.984 468 353.972V158.06C468 148.047 462.655 138.797 453.98 133.798ZM281.964 6.96171C265.893 -2.29974 246.107 -2.29974 230.036 6.96171L46.0365 113.002C29.9271 122.286 20 139.466 20 158.06V353.972C20 372.566 29.9271 389.745 46.0365 399.029L230.036 505.07C246.107 514.331 265.893 514.331 281.964 505.07L465.964 399.029C482.073 389.745 492 372.566 492 353.972V158.06C492 139.466 482.073 122.286 465.964 113.002L281.964 6.96171Z" fill="black"/></g><path fill-rule="evenodd" clip-rule="evenodd" d="M256 140C242.745 140 232 150.745 232 164C232 177.255 242.745 188 256 188C269.255 188 280 177.255 280 164C280 150.745 269.255 140 256 140ZM248 164C248 159.582 251.582 156 256 156C260.418 156 264 159.582 264 164C264 168.418 260.418 172 256 172C251.582 172 248 168.418 248 164Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M172 192C172 145.608 209.608 108 256 108C302.392 108 340 145.608 340 192C340 227.061 318.519 257.105 288 269.69V386.67C288 392.391 284.946 397.676 279.989 400.533L263.989 409.753C259.044 412.603 252.956 412.603 248.011 409.753L232.011 400.533C227.054 397.676 224 392.391 224 386.67V372C224 369.878 224.843 367.844 226.343 366.343L236 356.686V355.314L226.343 345.657C224.843 344.157 224 342.122 224 340V332C224 329.878 224.843 327.844 226.343 326.343L236 316.686V315.314L226.343 305.657C224.843 304.157 224 302.122 224 300V269.69C193.481 257.105 172 227.061 172 192ZM256 124C218.445 124 188 154.445 188 192C188 229.555 218.445 260 256 260C293.555 260 324 229.555 324 192C324 154.445 293.555 124 256 124ZM256 276C261.471 276 266.82 275.477 272 274.478V386.67L256 395.89L240 386.67V375.314L249.657 365.657C251.157 364.157 252 362.122 252 360V352C252 349.878 251.157 347.844 249.657 346.343L240 336.686V335.314L249.657 325.657C251.157 324.157 252 322.122 252 320V312C252 309.878 251.157 307.844 249.657 306.343L240 296.686V274.478C245.18 275.477 250.529 276 256 276Z" fill="black"/></g></g><defs><linearGradient id="paint0_linear_7484_8745" x1="393.865" y1="63.2796" x2="99.2043" y2="429.998" gradientUnits="userSpaceOnUse"><stop stop-color="#4DFF88"/><stop offset="1" stop-color="#3DE8CA"/></linearGradient><clipPath id="clip0_7484_8745"><rect width="512" height="512" fill="white"/></clipPath><clipPath id="clip1_7484_8745"><rect width="512" height="512" fill="white"/></clipPath><clipPath id="clip2_7484_8745"><rect width="512" height="512" fill="white"/></clipPath></defs></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

@@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
<polygon points="126,64 95,10 33,10 2,64 33,118 95,118"
fill="#f0ecff" stroke="#c0a8f0" stroke-width="2"/>
<polygon points="116,64 90,19 38,19 12,64 38,109 90,109"
fill="#e6deff"/>
<circle cx="64" cy="46" r="15" fill="#e6deff" stroke="#1a0848" stroke-width="5"/>
<circle cx="64" cy="46" r="4" fill="#1a0848"/>
<rect x="62" y="59" width="5" height="34" rx="1.5" fill="#1a0848"/>
<rect x="53" y="68" width="9" height="5" rx="1.5" fill="#1a0848"/>
<rect x="53" y="80" width="9" height="5" rx="1.5" fill="#1a0848"/>
<circle cx="53" cy="70" r="3.5" fill="#8020d0"/>
<circle cx="53" cy="82" r="3.5" fill="#8020d0"/>
<circle cx="64" cy="46" r="4" fill="#8020d0"/>
<circle cx="64" cy="92" r="3" fill="#8020d0"/>
<line x1="53" y1="70" x2="42" y2="70" stroke="#8020d0" stroke-width="1.2" opacity="0.6"/>
<line x1="53" y1="82" x2="40" y2="82" stroke="#8020d0" stroke-width="1.2" opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 1007 B

@@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" width="72px" height="72px" viewBox="0 0 72 72"> <defs>
<filter id="a" width="200%" height="200%">
<feOffset result="offOut" in="SourceAlpha" dy="2.2"/>
<feGaussianBlur result="blurOut" in="offOut" stdDeviation="1.5"/>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4 0"/>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<path fill="#ffffff" filter="url(#a)" d="M31.059,5.395c16.89-2.727,32.817,8.772,35.545,25.662c2.727,16.89-8.772,32.817-25.662,35.545
C24.051,69.329,8.124,57.83,5.397,40.94C2.67,24.049,14.169,8.122,31.059,5.395z"/>
<path fill="#0068c3" d="M55.364,17.202c-5.047-5.197-11.802-8.109-19.02-8.2c-7.191-0.09-13.985,2.669-19.149,7.768
C11.91,21.989,9,28.955,9,36.392l0.044,1.26c0,1.181,0.961,2.142,2.142,2.142s2.141-0.96,2.142-2.14l0.01-0.913
c0-9.945,8.453-20.593,21.035-20.593c13.132,0,21.261,10.712,21.261,20.637c0,5.173-2.063,9.919-5.808,13.363
C46.17,53.509,41.26,55.36,36,55.36c-3.13,0-6.219-0.755-8.958-2.186l18.87-8.686c1.267-0.583,2.115-1.81,2.213-3.201
s-0.569-2.725-1.754-3.487l-15.706-8.415c-0.554-0.357-1.213-0.477-1.858-0.337c-0.644,0.139-1.195,0.521-1.552,1.075
c-0.737,1.144-0.406,2.673,0.721,3.397l8.454,6.923l-18.419,8.478c-1.427,0.657-2.298,2.1-2.218,3.675
c0.048,0.949,0.493,1.884,1.253,2.634C22.158,60.269,28.84,63,35.985,63c0.445,0,0.892-0.011,1.341-0.032
c14.156-0.673,25.432-12.315,25.671-26.505C63.118,29.236,60.407,22.396,55.364,17.202z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,4 @@
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="0.5" y="0.5" width="14" height="14" rx="2.10106" fill="#FF6633"/>
<path d="M8.01028 12.5H6.98972V10.9057L8.36534 9.1189H6.98972V6.95141H4.5L6.98972 3.71585V2.5H8.01028V4.09427L6.63678 5.8811H8.01028V8.04859H10.5L8.01028 11.2841V12.5Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 370 B

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" role="img" aria-labelledby="title desc"><title id="title">Password Depot</title><desc id="desc">Password Depot circular key symbol in primary blue and controlled copper.</desc><g id="password-depot-symbol"><circle cx="70" cy="70" r="63.8" fill="none" stroke="#0D4E88" stroke-width="5.4"/><g id="pd-mark-inner" fill="#B94E1F"><path d="M52.22,111.89c-.15,0-.31,0-.46,0-5.88-.22-11.7-2.36-16.45-6.4l-3.12-3.12c-3.98-4.67-6.11-10.38-6.39-16.17-.01-.25-.02-.5-.03-.75l26.45,26.45h0Z"/><path d="M65.34,108.81c-2.48,1.31-5.12,2.19-7.83,2.67l-31.34-31.34c.48-2.7,1.37-5.35,2.67-7.83l14.05,14.05c.64,4.37,4.1,7.83,8.48,8.48l13.97,13.97Z"/><path d="M48.52,75.78c-2.3,1.1-4.12,3.05-5.05,5.44l-12.43-12.42c.79-1.06,1.67-2.08,2.63-3.05.81-.82,1.67-1.57,2.57-2.26l12.28,12.28h0Z"/><path d="M74.16,101.42c-.69.89-1.44,1.75-2.26,2.56-.96.97-1.99,1.84-3.05,2.63l-12.35-12.35c2.4-.93,4.34-2.75,5.45-5.06l12.21,12.21h0Z"/><path d="M79.26,90.32c-.54,2.66-1.48,5.25-2.83,7.67l-13.51-13.51c-.21-5.24-4.42-9.45-9.66-9.66l-13.59-13.59c2.42-1.35,5.01-2.29,7.66-2.84l31.93,31.93h0Z"/><path d="M79.82,85.16l-27.32-27.32c.44,0,.89,0,1.33.02,3.67.14,7.32,1.03,10.69,2.66l12.62,12.62c.84,1.74,1.48,3.55,1.93,5.4.45,1.85.69,3.73.74,5.62v1.01h.01Z"/><polygon points="85.37 65.18 80.03 70.34 67.36 57.67 72.62 52.42 85.37 65.18"/><polygon points="106.24 69.84 101.01 75.24 88.24 62.41 75.47 49.57 80.72 44.32 106.24 69.84"/><polygon points="114.23 61.63 109.06 66.95 83.57 41.47 88.82 36.21 114.23 61.63"/><rect x="96.89" y="28.12" width="7.43" height="17.84" transform="translate(3.26 81.95) rotate(-44.98)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,17 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_10172_13610)">
<g clip-path="url(#clip1_10172_13610)">
<path d="M46.8 0H1.2C0.537258 0 0 0.537258 0 1.2V46.8C0 47.4627 0.537258 48 1.2 48H46.8C47.4627 48 48 47.4627 48 46.8V1.2C48 0.537258 47.4627 0 46.8 0Z" fill="white"/>
<path d="M23.9994 17.4376C19.8485 17.4376 15.6975 17.8786 11.9965 20.0416C11.353 22.0444 11 24.1976 11 26.4518C11 35.4004 16.538 42.8541 24 45C31.4627 42.8541 37 35.4004 37 26.4518C37 24.1976 36.6445 22.0444 36.0023 20.0416C32.3012 17.8786 28.1502 17.4376 23.9994 17.4376ZM23.9978 3C18.2635 3 14.8978 7.83261 14.8978 13.769V17.1513C16.1978 16.3632 16.1978 16.1722 18.1478 15.7883V13.769C18.1478 9.69636 20.0328 6.28124 23.8723 6.28124C23.9146 6.28124 23.9575 6.28124 24.0004 6.28124C28.2884 6.28124 29.8478 9.41417 29.8478 13.769V15.7883C31.7978 16.1722 31.7978 16.3632 33.0978 17.1513V13.769C33.0978 7.83261 29.7334 3 23.9978 3ZM23.9995 21.4516C27.0077 21.4516 29.9769 22.0691 32.6815 23.2484C32.9597 24.41 33.1001 25.5335 33.1001 26.7383C33.1001 32.9294 29.4218 38.4294 24.0001 40.4828C18.5785 38.4294 14.9001 32.9294 14.9001 26.7383C14.9001 25.5302 15.0399 24.4073 15.3168 23.2484C18.0221 22.0691 20.9913 21.4516 23.9995 21.4516Z" fill="#DB0D15"/>
<path d="M25.0321 29.8579C25.8242 29.5336 26.3789 28.9058 26.3789 28.0676C26.3789 26.9272 25.3562 26.0475 24.0961 26.0475C22.8352 26.0475 21.8133 26.9941 21.8133 28.1352C21.8133 28.9727 22.3673 29.5226 23.1594 29.8462L21.8133 32.9618H26.3789L25.0321 29.8579Z" fill="#DB0D15"/>
</g>
</g>
<defs>
<clipPath id="clip0_10172_13610">
<rect width="48" height="48" fill="white"/>
</clipPath>
<clipPath id="clip1_10172_13610">
<rect width="48" height="48" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,13 @@
<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="50" height="50" rx="7.84782" fill="url(#paint0_linear_284_5743)"/>
<path d="M39.3518 17.6383C38.905 17.6383 38.5668 17.9747 38.5668 18.4287V31.5604C38.5668 32.0108 38.9014 32.3509 39.3518 32.3509C39.8022 32.3509 40.1368 32.0144 40.1368 31.5604V18.4287C40.1368 17.9784 39.8022 17.6383 39.3518 17.6383Z" fill="white"/>
<path d="M21.8918 22.5449C20.3814 22.5449 19.0954 23.7857 19.0954 25.3069C19.0954 26.8281 20.3272 28.1232 21.8375 28.1232C23.3478 28.1232 24.6339 26.8824 24.6339 25.3612C24.6339 23.84 23.4021 22.5449 21.8918 22.5449Z" fill="white"/>
<path d="M31.0694 22.5449C29.5591 22.5449 28.2731 23.7857 28.2731 25.3069C28.2731 26.8281 29.5048 28.1232 31.0152 28.1232C32.5255 28.1232 33.8115 26.8824 33.8115 25.3612C33.8658 23.84 32.634 22.5449 31.0694 22.5449Z" fill="white"/>
<path d="M12.6596 22.5449C11.1493 22.5449 9.86328 23.7857 9.86328 25.3069C9.86328 26.8281 11.0951 28.1232 12.6054 28.1232C14.1157 28.1232 15.4017 26.8824 15.4017 25.3612C15.4017 23.84 14.17 22.5449 12.6596 22.5449Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_284_5743" x1="25" y1="0" x2="25" y2="50" gradientUnits="userSpaceOnUse">
<stop stop-color="#3C3D3D"/>
<stop offset="1" stop-color="#262626"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,8 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M257.474 359.209C257.474 356.189 254.454 353.169 250.215 351.959L199.411 333.231C190.895 329.601 181.264 333.831 181.264 339.89V475.779C181.264 478.809 184.283 482.438 187.303 483.648L239.326 502.376C247.195 505.396 257.474 501.166 257.474 494.508V359.209Z" fill="white"/>
<path d="M352.736 321.104C352.736 318.084 349.717 315.064 345.477 313.854L294.674 295.126C286.157 291.496 276.526 295.726 276.526 301.785V437.674C276.526 440.704 279.546 444.333 282.566 445.543L334.589 464.271C342.458 467.291 352.736 463.061 352.736 456.403V321.104Z" fill="white"/>
<path d="M257.474 35.3211C257.474 32.3013 254.454 29.2815 250.215 28.0717L199.411 9.34343C190.895 5.71399 181.264 9.94358 181.264 16.0022V151.892C181.264 154.921 184.283 158.551 187.303 159.76L239.326 178.489C247.195 181.509 257.474 177.279 257.474 170.62V35.3211Z" fill="white"/>
<path d="M352.736 92.4777C352.736 89.4579 349.717 86.4382 345.477 85.2283L294.674 66.5C286.157 62.8706 276.526 67.1002 276.526 73.1588V209.048C276.526 212.078 279.546 215.707 282.566 216.917L334.589 235.645C342.458 238.665 352.736 234.436 352.736 227.777V92.4777Z" fill="white"/>
<path d="M448 168.687C448 165.667 444.98 162.647 440.741 161.437L389.937 142.709C381.421 139.079 371.79 143.309 371.79 149.368V361.466C371.79 364.495 374.81 368.125 377.829 369.335L429.852 388.063C437.721 391.083 448 386.853 448 380.194V168.687Z" fill="white"/>
<path d="M162.21 35.3306C162.21 32.3108 159.19 29.2815 154.951 28.0717L104.148 9.34343C95.6787 5.71399 86 9.94358 86 16.0022V475.789C86 478.808 89.0198 482.438 92.0492 483.648L144.063 502.376C151.931 505.396 162.21 501.166 162.21 494.507V35.3306Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" version="1.1" id="svg2" width="177.77733" height="177.77733" viewBox="0 0 177.77733 177.77733" style="zoom: 1;"><defs id="defs6"><clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"><path d="M 0,132.333 H 133.333 V 0 H 0 Z" id="path14"></path></clipPath></defs><g id="g8" transform="matrix(1.3333333,0,0,-1.3333333,0,176.444)"><g id="g10"><g id="g12" clip-path="url(#clipPath16)"><g id="g18" transform="translate(113.1494,84.6616)"><path d="M0,0 c-9.621,16.264 -23.704,29.888 -37.254,40.433 c-1.042,0.812 -2.082,1.605 -3.114,2.38 c-1.811,1.355 -3.603,2.654 -5.365,3.896 c-0.518,-0.356 -1.038,-0.718 -1.561,-1.084 c-12.852,-9.012 -27.292,-21.098 -38.564,-35.836 c-2.943,-3.848 -5.67,-7.876 -8.096,-12.078 c-7.45,-12.902 -12.065,-27.441 -14.885,-41.388 c-1.582,-7.824 -2.599,-15.462 -3.235,-22.521 c18.152,-8.633 42.345,-17.26 66.54,-17.26 c23.257,0 46.514,7.972 64.407,16.259 c-1.6,20.036 -6.225,45.304 -18.322,66.257 C0.368,-0.626 0.186,-0.313 0,0 " id="path20" style="fill:#263248;fill-opacity:1;fill-rule:nonzero;stroke:none"></path></g><g id="g22" transform="translate(97.1611,74.4946)"><path d="M0,0 c-6.414,10.842 -15.803,19.925 -24.835,26.955 c-0.696,0.542 -1.388,1.069 -2.077,1.587 c-1.206,0.903 -2.401,1.769 -3.576,2.597 c-0.346,-0.238 -0.694,-0.479 -1.041,-0.723 c-8.569,-6.008 -18.196,-14.065 -25.71,-23.89 c-1.962,-2.566 -3.78,-5.251 -5.397,-8.052 c-4.967,-8.601 -8.043,-18.294 -9.924,-27.593 c-1.055,-5.216 -1.732,-10.308 -2.156,-15.013 c12.102,-5.755 28.231,-11.506 44.361,-11.506 c15.503,-0.001 31.008,5.314 42.937,10.839 C11.516,-31.442 8.433,-14.597 0.367,-0.627 C0.246,-0.418 0.124,-0.209 0,0 " id="path24" style="fill:#7f89a1;fill-opacity:1;fill-rule:nonzero;stroke:none"></path></g><g id="g26" transform="translate(81.6289,65.3379)"><path d="M0,0.75005 c-3.208,5.421 -7.902,9.962 -12.42,13.478 c-0.347,0.27 -0.693,0.534 -1.038,0.793 c-0.604,0.452 -1.2,0.885 -1.787,1.299 c-0.173,-0.12 -0.348,-0.24 -0.521,-0.362 c-4.284,-3.004 -9.097,-7.032 -12.855,-11.945 c-0.981,-1.283 -1.89,-2.626 -2.698,-4.027 c-2.483,-4.299 -4.022,-9.147 -4.962,-13.796 c-0.527,-2.608 -0.867,-5.154 -1.078,-7.506 c6.05,-2.878 14.115,-5.753 22.18,-5.753 c7.752,0 15.504,2.657 21.469,5.42 C5.758,-14.971951 4.215,-6.54795 0.182,0.43605 C0.122,0.54205 0.061,0.64605 0,0.75005 " id="path28" style="fill:#f7971d;fill-opacity:1;fill-rule:nonzero;stroke:none"></path></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="192" height="192">
<defs>
<linearGradient id="a">
<stop offset="0" stop-color="#439447"/>
<stop offset="1" stop-color="#42ab46"/>
</linearGradient>
<linearGradient xlink:href="#a" id="b" x1="0" x2="192" y1="0" y2="192" gradientUnits="userSpaceOnUse"/>
</defs>
<circle cx="96" cy="96" r="88" fill="url(#b)"/>
<path fill="#ffa726" d="M56 56v10l70 70h10v-9L65 56Z"/>
<path fill="#fff" d="m83 99-27 28v9h9l10-10h10v-9h9v-7zm25-46L95 79l21 21 25-13-4-29zm19 18c4 0 8 5 7 9s-6 7-10 5c-4-1-6-7-3-11 1-1 3-3 6-3z"/>
</svg>

After

Width:  |  Height:  |  Size: 660 B

@@ -0,0 +1,38 @@
<svg viewBox="0 0 322 322" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2">
<path d="M321.347 72.106C321.347 32.31 289.037 0 249.241 0H72.106C32.31 0 0 32.31 0 72.106v177.135c0 39.796 32.31 72.106 72.106 72.106h177.135c39.796 0 72.106-32.31 72.106-72.106V72.106Z" style="fill:#fff"/>
<path d="M126.106 266.574c.775.965.309 2.517.017 2.43l-7.773 7.741c-1.686 1.206-3.365 1.132-5.009.135l-18.424-19.268c-.452-.649-.762-1.328-.833-2.058v-94.735c-22.821-8.67-39.057-30.754-39.057-56.6 0-33.006 26.478-59.876 59.333-60.511-18.551 13.563-30.61 35.488-30.61 60.208 0 28.109 15.593 52.604 38.593 65.301v87.841h.006c-.004.137-.006.275-.006.413 0 3.551 1.699 6.535 3.763 9.103Z" style="fill:#ebebeb"/>
<clipPath id="a">
<path d="M126.106 266.574c.775.965.309 2.517.017 2.43l-7.773 7.741c-1.686 1.206-3.365 1.132-5.009.135l-18.424-19.268c-.452-.649-.762-1.328-.833-2.058v-94.735c-22.821-8.67-39.057-30.754-39.057-56.6 0-33.006 26.478-59.876 59.333-60.511-18.551 13.563-30.61 35.488-30.61 60.208 0 28.109 15.593 52.604 38.593 65.301v87.841h.006c-.004.137-.006.275-.006.413 0 3.551 1.699 6.535 3.763 9.103Z"/>
</clipPath>
<g clip-path="url(#a)">
<path d="M126.531 277.545V43.603H55.027v233.942h71.504Z" style="fill:url(#b)"/>
</g>
<path d="M167.618 266.574c.775.965.309 2.517.017 2.43l-7.773 7.741c-1.686 1.206-3.365 1.132-5.009.135l-18.424-19.268c-.452-.649-.762-1.328-.833-2.058v-94.735c-22.82-8.67-39.056-30.754-39.056-56.6 0-33.006 26.477-59.876 59.333-60.511-18.552 13.563-30.611 35.488-30.611 60.208 0 28.109 15.593 52.604 38.593 65.301v87.841h.007c-.005.137-.007.275-.007.413 0 3.551 1.699 6.535 3.763 9.103Z" style="fill:#ebebeb"/>
<clipPath id="c">
<path d="M167.618 266.574c.775.965.309 2.517.017 2.43l-7.773 7.741c-1.686 1.206-3.365 1.132-5.009.135l-18.424-19.268c-.452-.649-.762-1.328-.833-2.058v-94.735c-22.82-8.67-39.056-30.754-39.056-56.6 0-33.006 26.477-59.876 59.333-60.511-18.552 13.563-30.611 35.488-30.611 60.208 0 28.109 15.593 52.604 38.593 65.301v87.841h.007c-.005.137-.007.275-.007.413 0 3.551 1.699 6.535 3.763 9.103Z"/>
</clipPath>
<g clip-path="url(#c)">
<path d="M168.043 277.545V43.603H96.54v233.942h71.503Z" style="fill:url(#d)"/>
</g>
<path d="M177.014 160.725c-22.82-8.67-39.056-30.753-39.056-56.599 0-33.404 27.119-60.523 60.523-60.523 33.403 0 60.523 27.119 60.523 60.523 0 28.22-19.357 51.956-45.506 58.642l26.358 26.862c.994 1.581.943 3.037-.059 4.377l-25.881 26.464 18.777 18.979c1.571 2.132 1.323 4.182-.256 6.171l-31.157 31.03c-1.686 1.207-3.364 1.133-5.008.135l-18.424-19.268c-.453-.648-.763-1.327-.834-2.057v-94.736Zm21.662-93.481c8.924 0 16.169 7.245 16.169 16.169s-7.245 16.169-16.169 16.169-16.169-7.245-16.169-16.169 7.245-16.169 16.169-16.169Z" style="fill:none"/>
<clipPath id="e">
<path d="M177.014 160.725c-22.82-8.67-39.056-30.753-39.056-56.599 0-33.404 27.119-60.523 60.523-60.523 33.403 0 60.523 27.119 60.523 60.523 0 28.22-19.357 51.956-45.506 58.642l26.358 26.862c.994 1.581.943 3.037-.059 4.377l-25.881 26.464 18.777 18.979c1.571 2.132 1.323 4.182-.256 6.171l-31.157 31.03c-1.686 1.207-3.364 1.133-5.008.135l-18.424-19.268c-.453-.648-.763-1.327-.834-2.057v-94.736Zm21.662-93.481c8.924 0 16.169 7.245 16.169 16.169s-7.245 16.169-16.169 16.169-16.169-7.245-16.169-16.169 7.245-16.169 16.169-16.169Z"/>
</clipPath>
<g clip-path="url(#e)">
<path d="M259.004 277.545V43.603H137.958v233.942h121.046Z" style="fill:url(#f)"/>
</g>
<defs>
<linearGradient id="b" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 233.943 -71.5033 0 90.78 43.603)">
<stop offset="0" style="stop-color:#ffdd53;stop-opacity:1"/>
<stop offset="1" style="stop-color:#ffbf01;stop-opacity:1"/>
</linearGradient>
<linearGradient id="d" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 233.943 -71.5033 0 132.291 43.603)">
<stop offset="0" style="stop-color:#51e376;stop-opacity:1"/>
<stop offset="1" style="stop-color:#34c759;stop-opacity:1"/>
</linearGradient>
<linearGradient id="f" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 233.943 -121.046 0 198.481 43.603)">
<stop offset="0" style="stop-color:#62ccf8;stop-opacity:1"/>
<stop offset="1" style="stop-color:#0079ff;stop-opacity:1"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><style>.cls-1{fill:#f15b5c;}.cls-2{fill:#921b1d;}.cls-3{fill:#ee3025;}.cls-4{fill:#bb2026;}</style></defs><path class="cls-1" d="M341.87,100.2l-4.29-1.64c-32.31-11.81-65.36-13.27-76.92-13.4l-.89,0H120.12A23.43,23.43,0,0,0,111.6,87c-.41.21-.81.42-1.17.64l-1.85,1.76,133.35,65.8,103.38-52.89Z"/><line class="cls-2" x1="294.58" y1="137.07" x2="296.99" y2="138.27"/><line class="cls-2" x1="239.53" y1="152.11" x2="241.93" y2="153.31"/><path class="cls-3" d="M106.74,91q-2.62,4.2-2.35,11.26t.26,13.37V423.21q0,5.76-.26,14.41t1.31,12.84a14.55,14.55,0,0,0,1.14,2.19l136-299.56L110.43,87.65A11.24,11.24,0,0,0,106.74,91Z"/><path class="cls-4" d="M361.86,111.53c-2.32-1.55-4.7-3.1-7.13-4.68a93.92,93.92,0,0,0-12-6.32c-.27-.11-.55-.23-.83-.33l-99,52.89L387.63,402.31A164.07,164.07,0,0,0,397,388.12q29.82-51.21,29.82-125a284.83,284.83,0,0,0-7.08-61.25,164.16,164.16,0,0,0-26.53-59.75,134.9,134.9,0,0,0-9.05-11.38A153.2,153.2,0,0,0,361.86,111.53Z"/><path class="cls-2" d="M106.65,452.34a10.07,10.07,0,0,0,7.69,5.19l1.74.2h156c50.27,0,88.64-18.69,115.52-55.42L242.89,153.09Z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 666.66669 666.66669"
height="666.66669"
width="666.66669"
xml:space="preserve"
id="svg2"
version="1.1"
sodipodi:docname="logoQuadrato_03.svg"
inkscape:export-filename="logoQuadrato_fondo_trasparente.svg"
inkscape:export-xdpi="480.54"
inkscape:export-ydpi="480.54"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false" /><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
id="clipPath20"
clipPathUnits="userSpaceOnUse"><path
id="path18"
d="M 0,500 H 500 V 0 H 0 Z" /></clipPath></defs><g
transform="matrix(1.3333333,0,0,-1.3333333,0,666.66667)"
id="g10"><g
id="g14"><g
clip-path="url(#clipPath20)"
id="g16"><g
transform="translate(271.2935,160.3877)"
id="g22"><path
id="path24"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -1.609,22.325 8.191,35.961 27.969,45.722 38.251,18.878 60.677,49.906 65.954,92.756 5.869,47.664 -19.012,94.411 -62.555,117.173 -43.086,22.523 -96.23,15.726 -131.639,-16.836 -62.664,-57.627 -49.157,-155.027 27.378,-192.975 20.369,-10.1 29.516,-24.409 28.827,-47.051 l -0.665,-90.957 c -0.154,-5.219 -0.106,-15.163 -9.273,-15.163 -10.151,0 -9.377,9.863 -9.54,15.055 l -0.2,89.462 c 0.529,15.969 -4.733,25.222 -19.548,32.457 -54.064,26.399 -81.765,81.218 -74.085,143.239 6.547,52.882 50.489,99.204 105.937,111.678 C 14.723,299.442 82.008,262.771 105.332,199.118 129.124,134.186 102.615,62.173 41.647,31.314 23.795,22.279 17.162,11.385 18.236,-8.143 l 0.322,-82.005 c -0.04,-7.051 1.517,-17.418 -8.73,-17.113 -10.808,0.322 -9.425,10.388 -9.563,17.791 z" /></g><g
transform="translate(353.7485,312.6514)"
id="g26"><path
id="path28"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -1.877,-44.525 -21.488,-76.549 -60.95,-95.686 -6.669,-3.234 -14.311,-8.589 -20.382,0.667 -3.59,11.012 4.853,13.02 11.947,16.465 33.823,16.422 53.209,49.665 50.034,85.561 -2.976,33.636 -27.851,64.073 -60.433,73.944 -42.422,12.853 -86.942,-8.274 -104.044,-49.373 -16.916,-40.655 0.188,-87.587 39.473,-108.165 3.501,-1.835 7.268,-3.688 10.525,-5.194 4.814,-2.226 9.273,-6.641 6.214,-13.097 -3.773,-5.949 -10.158,-4.928 -13.83,-3.573 -34.05,12.558 -56.148,37.094 -65.057,71.953 -14.43,56.456 20.322,113.536 76.31,127.514 C -73.479,115.175 -16.533,80.27 -2.776,22.613 -0.949,14.958 -0.808,6.9 0,0" /></g><g
transform="translate(302.3062,312.1279)"
id="g30"><path
id="path32"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -0.127,30.031 -24.61,54.313 -54.134,53.687 -28.701,-0.609 -53.155,-25.097 -53.515,-53.591 -0.367,-28.98 24.858,-54.236 54.151,-54.22 C -23.44,-54.107 0.128,-30.263 0,0 m -52.069,72.649 c 39.811,-0.438 72.627,-34.097 72.046,-73.896 -0.592,-40.524 -34.503,-73.024 -75.363,-72.226 -39.888,0.78 -71.077,33.778 -70.68,74.781 0.389,40.156 33.202,71.792 73.997,71.341" /></g><g
transform="translate(239.5879,212.7441)"
id="g34"><path
id="path36"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 0.214,5.411 -1.726,15.9 9.05,15.9 10.048,0 9.444,-10.235 9.519,-15.42 l -0.015,-181.282 c -0.077,-5.364 0.544,-15.175 -9.095,-15.149 -9.831,-0.56 -10.001,8.323 -9.952,16.165 z" /></g><g
transform="translate(179.6133,474.2949)"
id="g38"><path
id="path40"
style="fill:none;stroke:#ffffff;stroke-width:17.902;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="M 0,0 C -47.839,0 -84.575,-35.961 -84.575,-82.561" /></g><g
transform="translate(406.3682,391.7344)"
id="g42"><path
id="path44"
style="fill:none;stroke:#ffffff;stroke-width:17.902;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="M 0,0 C 0,53.184 -40.61,82.561 -84.575,82.561" /></g><g
transform="translate(321.793,24.8623)"
id="g46"><path
id="path48"
style="fill:none;stroke:#ffffff;stroke-width:17.902;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="M 0,0 C 47.839,0 84.575,35.962 84.575,82.561" /></g><g
transform="translate(95.0386,107.4229)"
id="g50"><path
id="path52"
style="fill:none;stroke:#ffffff;stroke-width:17.902;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="M 0,0 C 0,-53.183 40.61,-82.561 84.575,-82.561" /></g><g
transform="translate(272.5391,311.7549)"
id="g54"><path
id="path56"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 0,-13.019 -10.553,-23.572 -23.572,-23.572 -13.019,0 -23.573,10.553 -23.573,23.572 0,13.019 10.554,23.572 23.573,23.572 C -10.553,23.572 0,13.019 0,0" /></g><g
transform="translate(248.9668,288.1826)"
id="g58"><path
id="path60"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -13.019,0 -23.572,10.554 -23.572,23.572 0,13.019 10.553,23.573 23.572,23.573 13.019,0 23.572,-10.554 23.572,-23.573 C 23.572,10.554 13.019,0 0,0 M 1.402,64.451 C -22.017,64.884 -40.659,47.335 -41.213,24.336 -41.76,1.626 -23.248,-17.143 -0.132,-17.313 23.614,-17.489 41.229,-0.094 41.225,23.53 41.222,46.62 24.28,64.029 1.402,64.451" /></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

@@ -0,0 +1,36 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M353.274 214.391C408.835 158.832 436.614 131.052 468.648 120.644C496.825 111.489 527.175 111.489 555.352 120.644C587.386 131.052 615.165 158.832 670.726 214.391L809.608 353.274C865.169 408.835 892.948 436.614 903.356 468.648C912.512 496.825 912.512 527.175 903.356 555.352C892.948 587.386 865.169 615.165 809.608 670.726L670.726 809.608C615.165 865.169 587.386 892.948 555.352 903.356C527.175 912.512 496.825 912.512 468.648 903.356C436.614 892.948 408.835 865.169 353.274 809.608L327.162 780.336C311.361 762.621 303.462 753.763 297.827 743.688C292.833 734.754 289.166 725.137 286.947 715.144C284.444 703.878 284.444 692.008 284.444 668.271V355.729C284.444 331.992 284.444 320.122 286.947 308.855C289.166 298.863 292.833 289.246 297.827 280.311C303.462 270.237 311.361 261.38 327.162 243.665L353.274 214.391Z" fill="url(#paint0_radial_12155_41873)"/>
<path d="M353.274 214.391C408.835 158.832 436.614 131.052 468.648 120.644C496.825 111.489 527.175 111.489 555.352 120.644C587.386 131.052 615.165 158.832 670.726 214.391L809.608 353.274C865.169 408.835 892.948 436.614 903.356 468.648C912.512 496.825 912.512 527.175 903.356 555.352C892.948 587.386 865.169 615.165 809.608 670.726L670.726 809.608C615.165 865.169 587.386 892.948 555.352 903.356C527.175 912.512 496.825 912.512 468.648 903.356C436.614 892.948 408.835 865.169 353.274 809.608L327.162 780.336C311.361 762.621 303.462 753.763 297.827 743.688C292.833 734.754 289.166 725.137 286.947 715.144C284.444 703.878 284.444 692.008 284.444 668.271V355.729C284.444 331.992 284.444 320.122 286.947 308.855C289.166 298.863 292.833 289.246 297.827 280.311C303.462 270.237 311.361 261.38 327.162 243.665L353.274 214.391Z" fill="url(#paint1_linear_12155_41873)"/>
<path d="M343.356 224.303C371.135 196.524 385.024 182.634 401.041 177.43C415.13 172.852 430.305 172.852 444.393 177.43C460.41 182.634 474.3 196.524 502.079 224.303L710.406 432.629C738.185 460.408 752.074 474.3 757.279 490.314C761.856 504.403 761.856 519.581 757.279 533.669C752.074 549.686 738.185 563.576 710.406 591.354L502.079 799.681C474.3 827.46 460.41 841.35 444.393 846.555C430.305 851.132 415.13 851.132 401.041 846.555C385.024 841.35 371.135 827.46 343.356 799.681L214.391 670.717C158.832 615.157 131.052 587.378 120.644 555.346C111.489 527.167 111.489 496.816 120.644 468.639C131.052 436.605 158.832 408.826 214.391 353.266L343.356 224.303Z" fill="url(#paint2_radial_12155_41873)"/>
<defs>
<radialGradient id="paint0_radial_12155_41873" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(354.145 925.744) rotate(-58.142) scale(664.835 1039.67)">
<stop stop-color="#FFD580"/>
<stop offset="0.09375" stop-color="#F6C592"/>
<stop offset="0.205" stop-color="#EBB6A2"/>
<stop offset="0.324466" stop-color="#DFA5AF"/>
<stop offset="0.42875" stop-color="#D397BE"/>
<stop offset="0.53375" stop-color="#C486CB"/>
<stop offset="0.64875" stop-color="#B578D9"/>
<stop offset="0.77125" stop-color="#A166E5"/>
<stop offset="0.89125" stop-color="#8B57F2"/>
<stop offset="1" stop-color="#704CFF"/>
</radialGradient>
<linearGradient id="paint1_linear_12155_41873" x1="326.713" y1="-44.3649" x2="481.598" y2="901.077" gradientUnits="userSpaceOnUse">
<stop stop-color="#6D4AFF"/>
<stop offset="0.392009" stop-color="#B39FFB" stop-opacity="0.978022"/>
<stop offset="1" stop-color="#FFE8DB" stop-opacity="0.8"/>
</linearGradient>
<radialGradient id="paint2_radial_12155_41873" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(295.746 844.786) rotate(-58.142) scale(534.758 836.255)">
<stop stop-color="#FFD580"/>
<stop offset="0.09375" stop-color="#F6C592"/>
<stop offset="0.205" stop-color="#EBB6A2"/>
<stop offset="0.324466" stop-color="#DFA5AF"/>
<stop offset="0.42875" stop-color="#D397BE"/>
<stop offset="0.53375" stop-color="#C486CB"/>
<stop offset="0.64875" stop-color="#B578D9"/>
<stop offset="0.77125" stop-color="#A166E5"/>
<stop offset="0.89125" stop-color="#8B57F2"/>
<stop offset="1" stop-color="#704CFF"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,3 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M256.483 28.0554C313.899 28.0554 371.315 27.8856 428.745 28.1405C440.68 27.9076 452.521 30.2889 463.441 35.1179C474.362 39.9469 484.099 47.1073 491.971 56.0984C504.062 69.6962 511.132 87.0387 512 105.23C512.028 121.933 510.035 138.578 506.063 154.801C498.444 198.706 490.515 242.527 482.726 286.376C476.012 324.134 469.581 361.95 462.513 399.68C457.672 420.969 446.545 440.303 430.58 455.165C414.616 470.027 394.555 479.727 373.011 483.002C367.752 483.629 362.462 483.946 357.166 483.95C290.053 484.017 222.94 484.017 155.828 483.95C130.466 483.9 105.93 474.915 86.5132 458.566C67.0965 442.218 54.0362 419.548 49.618 394.525C36.1804 319.177 22.6297 243.853 8.96597 168.553C6.28034 153.639 3.312 138.811 1.2059 123.784C-2.46105 102.729 2.31093 81.0744 14.4852 63.5244C26.6596 45.9745 45.2529 33.9462 66.2266 30.0525C73.0557 28.7451 79.9959 28.1094 86.9484 28.1546C143.46 27.9941 199.971 27.961 256.483 28.0554ZM210.926 339.643C210.926 354.67 210.926 369.697 210.926 384.738C210.773 388.205 211.343 391.665 212.597 394.899C213.852 398.134 215.764 401.071 218.213 403.525C220.662 405.979 223.593 407.895 226.821 409.152C230.049 410.409 233.503 410.979 236.962 410.826C249.387 410.826 261.812 410.826 274.236 410.826C277.922 411.183 281.642 410.717 285.127 409.462C288.612 408.208 291.777 406.196 294.394 403.57C297.012 400.945 299.017 397.772 300.265 394.278C301.514 390.785 301.975 387.058 301.615 383.364C301.615 353.919 301.616 324.46 301.474 295.015C301.311 293.331 301.67 291.637 302.502 290.165C303.334 288.692 304.599 287.512 306.125 286.786C323.79 276.298 337.551 260.314 345.313 241.266C353.075 222.219 354.413 201.151 349.123 181.272C342.356 156.853 326.286 136.075 304.376 123.414C282.466 110.754 256.469 107.225 231.987 113.586C217.669 116.544 204.289 122.959 193.007 132.274C181.726 141.588 172.884 153.522 167.249 167.038C159.027 188.686 158.548 212.521 165.893 234.484C173.238 256.447 187.954 275.181 207.533 287.495C208.67 288.038 209.613 288.917 210.237 290.013C210.861 291.109 211.136 292.37 211.025 293.627C210.841 309.008 210.926 324.333 210.926 339.671V339.643Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 86 86" width="86" height="86"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#E14D2A"/><stop offset="1" stop-color="#FD841F"/></linearGradient></defs><g transform="translate(6,0)"><path d="M37 8 L64 19 V46 c0 20 -15 30 -27 37 c-12 -7 -27 -17 -27 -37 V19 Z" fill="url(#g)"/><path d="M26.62 52.24Q24.880000000000003 52.24 23.575000000000003 51.445Q22.270000000000003 50.65 21.550000000000004 49.239999999999995Q20.830000000000002 47.83 20.830000000000002 46.0V37.120000000000005H24.61V45.7Q24.61 47.38 25.435000000000002 48.22Q26.26 49.06 27.79 49.06Q29.53 49.06 30.490000000000002 47.905Q31.450000000000003 46.75 31.450000000000003 44.68V37.120000000000005H35.230000000000004V52.0H31.51V50.05H30.97Q30.61 50.8 29.62 51.519999999999996Q28.630000000000003 52.24 26.62 52.24Z M38.589999999999996 52.0V49.48Q38.589999999999996 47.29 39.31 45.835Q40.03 44.38 41.394999999999996 43.435Q42.76 42.49 44.739999999999995 41.89L46.75 41.26Q47.86 40.9 48.61 40.375Q49.36 39.85 49.765 39.1Q50.17 38.35 50.17 37.39V37.27Q50.17 35.769999999999996 49.15 34.885Q48.129999999999995 34.0 46.36 34.0Q44.62 34.0 43.55499999999999 34.945Q42.489999999999995 35.89 42.489999999999995 37.66V38.2H38.65V37.72Q38.65 35.44 39.67 33.85Q40.69 32.260000000000005 42.44499999999999 31.42Q44.199999999999996 30.580000000000002 46.36 30.580000000000002Q48.519999999999996 30.580000000000002 50.26 31.405Q52.0 32.230000000000004 53.004999999999995 33.715Q54.01 35.2 54.01 37.21V37.51Q54.01 39.519999999999996 53.185 40.915Q52.36 42.31 50.95 43.195Q49.54 44.08 47.739999999999995 44.65L45.82 45.25Q44.53 45.64 43.81 46.105000000000004Q43.089999999999996 46.57 42.80499999999999 47.125Q42.519999999999996 47.68 42.519999999999996 48.46V48.58H53.83V52.0Z" fill="#ffffff"/></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" role="img" aria-labelledby="title desc"><title id="title">Password Depot</title><desc id="desc">Password Depot circular key symbol in primary blue and controlled copper on a white disc, for dark backgrounds.</desc><g id="password-depot-symbol"><circle cx="70" cy="70" r="68" fill="#FFFFFF"/><circle cx="70" cy="70" r="63.8" fill="none" stroke="#0D4E88" stroke-width="5.4"/><g id="pd-mark-inner" fill="#B94E1F"><path d="M52.22,111.89c-.15,0-.31,0-.46,0-5.88-.22-11.7-2.36-16.45-6.4l-3.12-3.12c-3.98-4.67-6.11-10.38-6.39-16.17-.01-.25-.02-.5-.03-.75l26.45,26.45h0Z"/><path d="M65.34,108.81c-2.48,1.31-5.12,2.19-7.83,2.67l-31.34-31.34c.48-2.7,1.37-5.35,2.67-7.83l14.05,14.05c.64,4.37,4.1,7.83,8.48,8.48l13.97,13.97Z"/><path d="M48.52,75.78c-2.3,1.1-4.12,3.05-5.05,5.44l-12.43-12.42c.79-1.06,1.67-2.08,2.63-3.05.81-.82,1.67-1.57,2.57-2.26l12.28,12.28h0Z"/><path d="M74.16,101.42c-.69.89-1.44,1.75-2.26,2.56-.96.97-1.99,1.84-3.05,2.63l-12.35-12.35c2.4-.93,4.34-2.75,5.45-5.06l12.21,12.21h0Z"/><path d="M79.26,90.32c-.54,2.66-1.48,5.25-2.83,7.67l-13.51-13.51c-.21-5.24-4.42-9.45-9.66-9.66l-13.59-13.59c2.42-1.35,5.01-2.29,7.66-2.84l31.93,31.93h0Z"/><path d="M79.82,85.16l-27.32-27.32c.44,0,.89,0,1.33.02,3.67.14,7.32,1.03,10.69,2.66l12.62,12.62c.84,1.74,1.48,3.55,1.93,5.4.45,1.85.69,3.73.74,5.62v1.01h.01Z"/><polygon points="85.37 65.18 80.03 70.34 67.36 57.67 72.62 52.42 85.37 65.18"/><polygon points="106.24 69.84 101.01 75.24 88.24 62.41 75.47 49.57 80.72 44.32 106.24 69.84"/><polygon points="114.23 61.63 109.06 66.95 83.57 41.47 88.82 36.21 114.23 61.63"/><rect x="96.89" y="28.12" width="7.43" height="17.84" transform="translate(3.26 81.95) rotate(-44.98)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
<polygon points="126,64 95,10 33,10 2,64 33,118 95,118"
fill="#1a0848" stroke="#2e1280" stroke-width="2"/>
<polygon points="116,64 90,19 38,19 12,64 38,109 90,109"
fill="#200e5c"/>
<circle cx="64" cy="46" r="15" fill="#200e5c" stroke="#c0b0f8" stroke-width="5"/>
<circle cx="64" cy="46" r="4" fill="#c0b0f8"/>
<rect x="62" y="59" width="5" height="34" rx="1.5" fill="#c0b0f8"/>
<rect x="53" y="68" width="9" height="5" rx="1.5" fill="#c0b0f8"/>
<rect x="53" y="80" width="9" height="5" rx="1.5" fill="#c0b0f8"/>
<circle cx="53" cy="70" r="3.5" fill="#b040f8"/>
<circle cx="53" cy="82" r="3.5" fill="#b040f8"/>
<circle cx="64" cy="46" r="4" fill="#b040f8"/>
<circle cx="64" cy="92" r="3" fill="#b040f8"/>
<line x1="53" y1="70" x2="42" y2="70" stroke="#b040f8" stroke-width="1.2" opacity="0.5"/>
<line x1="53" y1="82" x2="40" y2="82" stroke="#b040f8" stroke-width="1.2" opacity="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 1007 B

@@ -0,0 +1,8 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M257.474 359.209C257.474 356.189 254.454 353.169 250.215 351.959L199.411 333.231C190.895 329.601 181.264 333.831 181.264 339.89V475.779C181.264 478.809 184.283 482.438 187.303 483.648L239.326 502.376C247.195 505.396 257.474 501.166 257.474 494.508V359.209Z" fill="#09363F"/>
<path d="M352.736 321.103C352.736 318.084 349.717 315.064 345.477 313.854L294.674 295.126C286.157 291.496 276.526 295.726 276.526 301.785V437.674C276.526 440.704 279.546 444.333 282.566 445.543L334.589 464.271C342.458 467.291 352.736 463.061 352.736 456.403V321.103Z" fill="#09363F"/>
<path d="M257.474 35.3211C257.474 32.3013 254.454 29.2815 250.215 28.0717L199.411 9.34343C190.895 5.71399 181.264 9.94358 181.264 16.0022V151.892C181.264 154.921 184.283 158.551 187.303 159.76L239.326 178.489C247.195 181.508 257.474 177.279 257.474 170.62V35.3211Z" fill="#09363F"/>
<path d="M352.736 92.4777C352.736 89.4579 349.717 86.4382 345.477 85.2283L294.674 66.5C286.157 62.8706 276.526 67.1002 276.526 73.1588V209.048C276.526 212.078 279.546 215.707 282.566 216.917L334.589 235.645C342.458 238.665 352.736 234.436 352.736 227.777V92.4777Z" fill="#09363F"/>
<path d="M448 168.687C448 165.667 444.98 162.647 440.741 161.437L389.937 142.709C381.421 139.079 371.79 143.309 371.79 149.368V361.466C371.79 364.495 374.81 368.125 377.829 369.335L429.852 388.063C437.721 391.083 448 386.853 448 380.194V168.687Z" fill="#09363F"/>
<path d="M162.21 35.3306C162.21 32.3108 159.19 29.2815 154.951 28.0717L104.148 9.34343C95.6787 5.71399 86 9.94358 86 16.0022V475.789C86 478.808 89.0198 482.438 92.0492 483.648L144.063 502.376C151.931 505.396 162.21 501.166 162.21 494.507V35.3306Z" fill="#09363F"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,27 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_10172_13670)">
<g clip-path="url(#clip1_10172_13670)">
<path d="M0 17.6C0 11.4394 0 8.35913 1.19893 6.0061C2.25354 3.93632 3.93632 2.25354 6.0061 1.19893C8.35913 0 11.4394 0 17.6 0H30.4C36.5606 0 39.6409 0 41.9939 1.19893C44.0637 2.25354 45.7465 3.93632 46.8011 6.0061C48 8.35913 48 11.4394 48 17.6V30.4C48 36.5606 48 39.6409 46.8011 41.9939C45.7465 44.0637 44.0637 45.7465 41.9939 46.8011C39.6409 48 36.5606 48 30.4 48H17.6C11.4394 48 8.35913 48 6.0061 46.8011C3.93632 45.7465 2.25354 44.0637 1.19893 41.9939C0 39.6409 0 36.5606 0 30.4V17.6Z" fill="#FF7800"/>
<g filter="url(#filter0_d_10172_13670)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.1163 10C15.1052 10 11 14.1884 11 19.1953C11 24.1849 15.1208 28.3906 20.1163 28.3906C21.4991 28.3906 22.754 28.1237 23.8961 27.6004C24.2812 27.424 24.7357 27.5093 25.0306 27.8134L26.8841 29.7248H29.5332C30.0854 29.7248 30.5332 30.1725 30.5332 30.7248V32.3848C30.5332 32.8617 30.9201 33.2491 31.3983 33.2491H33.1051C33.6574 33.2491 34.1051 33.6968 34.1051 34.2491V36.1357C34.1051 36.6126 34.492 37 34.9702 37H37.1348C37.6131 37 38 36.6126 38 36.1357V33.2088C38 32.3729 37.6668 31.5714 37.0739 30.9815L29.0776 23.0257C28.8156 22.765 28.7187 22.381 28.8258 22.0272C29.0956 21.1357 29.2326 20.1935 29.2326 19.1953C29.2326 14.1838 25.1297 10 20.1163 10ZM9 19.1953C9 13.1077 13.977 8 20.1163 8C26.2577 8 31.2326 13.1028 31.2326 19.1953C31.2326 20.1678 31.1227 21.1094 30.9007 22.0183L38.4846 29.5637C39.4546 30.5288 40 31.8406 40 33.2088V36.1357C40 37.7181 38.7168 39 37.1348 39H34.9702C33.3883 39 32.1051 37.7181 32.1051 36.1357V35.2491H31.3983C29.8164 35.2491 28.5332 33.9672 28.5332 32.3848V31.7248H26.4608C26.1903 31.7248 25.9312 31.6152 25.7429 31.421L24.0686 29.6943C22.8328 30.1609 21.5128 30.3906 20.1163 30.3906C13.9923 30.3906 9 25.2654 9 19.1953ZM17.9931 15.5382C17.1745 15.5382 16.4953 16.22 16.4953 17.0556C16.4953 17.8741 17.1905 18.5729 17.9931 18.5729C18.7788 18.5729 19.491 17.8581 19.491 17.0556C19.491 16.236 18.7948 15.5382 17.9931 15.5382ZM14.4953 17.0556C14.4953 15.1393 16.0462 13.5382 17.9931 13.5382C19.9218 13.5382 21.491 15.1541 21.491 17.0556C21.491 18.9391 19.9068 20.5729 17.9931 20.5729C16.0613 20.5729 14.4953 18.9538 14.4953 17.0556ZM28.0795 24.074C28.4715 23.685 29.1047 23.6875 29.4937 24.0795L36.9622 31.6064C37.3512 31.9985 37.3488 32.6316 36.9567 33.0206C36.5647 33.4096 35.9315 33.4072 35.5425 33.0151L28.074 25.4882C27.685 25.0962 27.6874 24.463 28.0795 24.074Z" fill="white"/>
</g>
</g>
</g>
<defs>
<filter id="filter0_d_10172_13670" x="8" y="8" width="33" height="33" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feGaussianBlur stdDeviation="0.5"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.384314 0 0 0 0 0.180392 0 0 0 0 0 0 0 0 0.12 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_10172_13670"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_10172_13670" result="shape"/>
</filter>
<clipPath id="clip0_10172_13670">
<rect width="48" height="48" fill="white"/>
</clipPath>
<clipPath id="clip1_10172_13670">
<rect width="48" height="48" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<defs>
<linearGradient id="ipassLight" x1="8" y1="2" x2="24" y2="30" gradientUnits="userSpaceOnUse">
<stop stop-color="#3BB4FF"/>
<stop offset="1" stop-color="#2F5BFF"/>
</linearGradient>
</defs>
<rect width="32" height="32" rx="8" fill="url(#ipassLight)"/>
<path fill="#fff" d="M16 4.8c4.1 1.6 7.8 1.9 9.7 1.9.4 0 .8.3.8.8v9.4c0 5.3-3.5 9.1-10.5 12.3C8.9 26 5.5 22.2 5.5 16.9V7.5c0-.5.4-.8.8-.8 1.9 0 5.6-.3 9.7-1.9z"/>
<circle cx="16" cy="12.15" r="1.65" fill="url(#ipassLight)"/>
<path fill="url(#ipassLight)" d="M14.55 14.3h2.9c.4 0 .75.35.75.75v5.5c0 .8-.45 1.5-1.15 1.85l-.3.14c-.6.26-1.3.26-1.9 0l-.3-.14c-.7-.35-1.15-1.05-1.15-1.85v-5.5c0-.4.35-.75.75-.75z"/>
</svg>

After

Width:  |  Height:  |  Size: 768 B

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none">
<rect width="24" height="24" rx="6" fill="#F8F5FF"/>
<path fill="#5B21B6" d="M12 4.5c-.9 0-1.6.7-1.6 1.6v.4h-1.2c-.5 0-.9.4-.9.9v1.6c0 .5.4.9.9.9h1.2v.2c0 .9.7 1.6 1.6 1.6h.8c.9 0 1.6-.7 1.6-1.6v-.2h1.2c.5 0 .9-.4.9-.9V7.4c0-.5-.4-.9-.9-.9H13.6v-.4c0-.9-.7-1.6-1.6-1.6h-.8Z"/>
<path fill="#D4AF37" d="M8.2 8.8h7.6l-.6 1.4H8.8l-.6-1.4Z"/>
<path fill="#D4AF37" d="M9.1 10.6h5.8l-.5 1.2H9.6l-.5-1.2Z"/>
<circle cx="12" cy="14.8" r="2.1" fill="#5B21B6"/>
<rect x="11.2" y="16.7" width="1.6" height="3.2" rx=".8" fill="#5B21B6"/>
</svg>

After

Width:  |  Height:  |  Size: 639 B

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="192" height="192">
<defs>
<linearGradient id="a">
<stop offset="0" stop-color="#42ab46"/>
<stop offset="1" stop-color="#439447"/>
</linearGradient>
<linearGradient xlink:href="#a" id="b" x1="0" x2="192" y1="0" y2="192" gradientUnits="userSpaceOnUse"/>
</defs>
<circle cx="96" cy="96" r="88" fill="url(#b)"/>
<path fill="#ffa726" d="M56 56v10l70 70h10v-9L65 56Z"/>
<path fill="#fff" d="m83 99-27 28v9h9l10-10h10v-9h9v-7zm25-46L95 79l21 21 25-13-4-29zm19 18c4 0 8 5 7 9s-6 7-10 5c-4-1-6-7-3-11 1-1 3-3 6-3z"/>
</svg>

After

Width:  |  Height:  |  Size: 660 B

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 500 500" version="1.1" viewBox="0 0 500 500" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<path d="m459.87 294.95c0.016205 5.4005 0.03241 10.801-0.35022 16.873-1.111 6.3392-1.1941 12.173-2.6351 17.649-10.922 41.508-36.731 69.481-77.351 83.408-7.2157 2.4739-14.972 3.3702-22.479 4.995-23.629 0.042205-47.257 0.11453-70.886 0.12027-46.762 0.011322-93.523-0.01416-140.95-0.43411-8.59-2.0024-16.766-2.8352-24.398-5.3326-21.595-7.0666-39.523-19.656-53.708-37.552-10.227-12.903-17.579-27.17-21.28-43.221-1.475-6.3967-2.4711-12.904-3.6852-19.361-0.051849-5.747-0.1037-11.494 0.26915-17.886 4.159-42.973 27.68-71.638 63.562-92.153 0-0.70761-0.001961-1.6988 3.12e-4 -2.69 0.022484-9.8293-1.3071-19.894 0.35664-29.438 3.2391-18.579 11.08-35.272 23.763-49.773 12.098-13.832 26.457-23.989 43.609-30.029 7.813-2.7512 16.14-4.0417 24.234-5.9948 7.392-0.025734 14.784-0.05146 22.835 0.32253 4.1959 0.95392 7.7946 1.2538 11.258 2.1053 17.16 4.2192 32.287 12.176 45.469 24.104 2.2558 2.0411 4.372 6.6241 9.621 3.868 16.839-8.8419 34.718-11.597 53.603-8.594 16.791 2.6699 31.602 9.4308 44.236 20.636 11.531 10.227 19.84 22.841 25.393 37.236 6.3436 16.445 10.389 33.163 6.0798 49.389 7.9587 8.9321 15.807 16.704 22.421 25.414 9.162 12.065 15.33 25.746 18.144 40.776 0.97046 5.1848 1.9111 10.375 2.8654 15.563m-71.597 71.012c5.5615-5.2284 12.002-9.7986 16.508-15.817 10.474-13.992 14.333-29.916 11.288-47.446-2.2496-12.95-8.1973-24.076-17.243-33.063-12.746-12.663-28.865-18.614-46.786-18.569-69.912 0.17712-139.82 0.56831-209.74 0.96176-15.922 0.089599-29.168 7.4209-39.685 18.296-14.45 14.944-20.408 33.343-16.655 54.368 2.2763 12.754 8.2167 23.748 17.158 32.66 13.299 13.255 30.097 18.653 48.728 18.651 59.321-0.005188 118.64 0.042358 177.96-0.046601 9.5912-0.014374 19.181-0.86588 28.773-0.88855 10.649-0.025146 19.978-3.825 29.687-9.1074z" fill="#EEC170"/>
<path d="m162.77 293c15.654 4.3883 20.627 22.967 10.304 34.98-5.3104 6.1795-14.817 8.3208-24.278 5.0472-7.0723-2.4471-12.332-10.362-12.876-17.933-1.0451-14.542 11.089-23.176 21.705-23.046 1.5794 0.019287 3.1517 0.61566 5.1461 0.95184z" fill="#EEC170"/>
<path d="m227.18 293.64c7.8499 2.3973 11.938 8.2143 13.524 15.077 1.8591 8.0439-0.44817 15.706-7.1588 21.121-6.7633 5.4572-14.417 6.8794-22.578 3.1483-8.2972-3.7933-12.836-10.849-12.736-19.438 0.1687-14.497 14.13-25.368 28.948-19.908z" fill="#EEC170"/>
<path d="m261.57 319.07c-2.495-14.418 4.6853-22.603 14.596-26.108 9.8945-3.4995 23.181 3.4303 26.267 13.779 4.6504 15.591-7.1651 29.064-21.665 28.161-8.5254-0.53088-17.202-6.5094-19.198-15.831z" fill="#EEC170"/>
<path d="m336.91 333.41c-9.0175-4.2491-15.337-14.349-13.829-21.682 3.0825-14.989 13.341-20.304 23.018-19.585 10.653 0.79141 17.93 7.407 19.765 17.547 1.9588 10.824-4.1171 19.939-13.494 23.703-5.272 2.1162-10.091 1.5086-15.46 0.017883z" fill="#EEC170"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,3 @@
<svg width="240" height="240" viewBox="0 0 240 240" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M239.116 120.417C239.116 54.4193 185.613 0.916504 119.616 0.916504C53.619 0.916504 0.116211 54.4193 0.116211 120.417C0.116211 186.417 53.619 239.917 119.616 239.917C185.613 239.917 239.116 186.417 239.116 120.417ZM97.8658 54.0276C96.9263 55.8714 96.9263 58.2851 96.9263 63.1126V90.4729C96.9263 91.6788 96.9263 92.2817 97.0785 92.8392C97.2134 93.3331 97.4352 93.799 97.7335 94.215C98.0702 94.6847 98.5381 95.0648 99.4741 95.8251L106.395 101.447C107.523 102.364 108.087 102.822 108.292 103.374C108.471 103.857 108.471 104.39 108.292 104.873C108.087 105.425 107.523 105.883 106.395 106.8L99.4741 112.422C98.5382 113.182 98.0702 113.562 97.7335 114.032C97.4352 114.448 97.2134 114.914 97.0785 115.408C96.9263 115.965 96.9263 116.568 96.9263 117.774V177.719C96.9263 182.547 96.9263 184.961 97.8658 186.805C98.6922 188.426 100.011 189.745 101.633 190.571C103.477 191.511 105.89 191.511 110.718 191.511H128.515C133.342 191.511 135.756 191.511 137.6 190.571C139.221 189.745 140.54 188.426 141.367 186.805C142.306 184.961 142.306 182.547 142.306 177.719V150.359C142.306 149.153 142.306 148.55 142.154 147.993C142.019 147.499 141.797 147.033 141.499 146.617C141.162 146.147 140.694 145.767 139.758 145.007L132.837 139.385C131.709 138.468 131.145 138.01 130.94 137.459C130.761 136.975 130.761 136.443 130.94 135.959C131.145 135.407 131.709 134.949 132.837 134.033L139.758 128.41C140.694 127.65 141.162 127.27 141.499 126.8C141.797 126.384 142.019 125.918 142.154 125.424C142.306 124.867 142.306 124.264 142.306 123.058V63.1126C142.306 58.2851 142.306 55.8714 141.367 54.0276C140.54 52.4057 139.221 51.087 137.6 50.2606C135.756 49.3211 133.342 49.3211 128.515 49.3211H110.718C105.89 49.3211 103.477 49.3211 101.633 50.2606C100.011 51.087 98.6922 52.4057 97.8658 54.0276Z" fill="#1A285F"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,3 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M256.483 28.0554C313.899 28.0554 371.315 27.8856 428.745 28.1405C440.68 27.9076 452.521 30.2889 463.441 35.1179C474.362 39.9469 484.099 47.1073 491.971 56.0984C504.062 69.6962 511.132 87.0387 512 105.23C512.028 121.933 510.035 138.578 506.063 154.801C498.444 198.706 490.515 242.527 482.726 286.376C476.012 324.134 469.581 361.95 462.513 399.68C457.672 420.969 446.545 440.303 430.58 455.165C414.616 470.027 394.555 479.727 373.011 483.002C367.752 483.629 362.462 483.946 357.166 483.95C290.053 484.017 222.94 484.017 155.828 483.95C130.466 483.9 105.93 474.915 86.5132 458.566C67.0965 442.218 54.0362 419.548 49.618 394.525C36.1804 319.177 22.6297 243.853 8.96597 168.553C6.28034 153.639 3.312 138.811 1.2059 123.784C-2.46105 102.729 2.31093 81.0744 14.4852 63.5244C26.6596 45.9745 45.2529 33.9462 66.2266 30.0525C73.0557 28.7451 79.9959 28.1094 86.9484 28.1546C143.46 27.9941 199.971 27.961 256.483 28.0554ZM210.926 339.643C210.926 354.67 210.926 369.697 210.926 384.738C210.773 388.205 211.343 391.665 212.597 394.899C213.852 398.134 215.764 401.071 218.213 403.525C220.662 405.979 223.593 407.895 226.821 409.152C230.049 410.409 233.503 410.979 236.962 410.826C249.387 410.826 261.812 410.826 274.236 410.826C277.922 411.183 281.642 410.717 285.127 409.462C288.612 408.208 291.777 406.196 294.394 403.57C297.012 400.945 299.017 397.772 300.265 394.278C301.514 390.785 301.975 387.058 301.615 383.364C301.615 353.919 301.616 324.46 301.474 295.015C301.311 293.331 301.67 291.637 302.502 290.165C303.334 288.692 304.599 287.512 306.125 286.786C323.79 276.298 337.551 260.314 345.313 241.266C353.075 222.219 354.413 201.151 349.123 181.272C342.356 156.853 326.286 136.075 304.376 123.414C282.466 110.754 256.469 107.225 231.987 113.586C217.669 116.544 204.289 122.959 193.007 132.274C181.726 141.588 172.884 153.522 167.249 167.038C159.027 188.686 158.548 212.521 165.893 234.484C173.238 256.447 187.954 275.181 207.533 287.495C208.67 288.038 209.613 288.917 210.237 290.013C210.861 291.109 211.136 292.37 211.025 293.627C210.841 309.008 210.926 324.333 210.926 339.671V339.643Z" fill="#0D338F"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,3 @@
<svg width="124" height="124" viewBox="-5 0 124 124" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M101.493 21.7475L69.8628 3.4003C65.9588 1.12943 61.5848 0 57.2109 0C52.8369 0 48.5835 1.1054 44.7035 3.3162L12.9532 21.4591C6.55499 25.1118 2.16899 31.3356 0.783307 38.4006C0.361576 40.2149 0.120588 42.0892 0.120588 43.9997L9.1082e-05 80.4898C-0.0240078 89.4531 4.73552 97.7436 12.5074 102.249L44.1372 120.597C51.9091 125.102 61.5005 125.138 69.2965 120.681L101.047 102.538C107.445 98.8851 111.831 92.6612 113.217 85.5963C113.638 83.782 113.879 81.9076 113.879 79.9972L114 43.507C114.024 34.5437 109.264 26.2532 101.493 21.7475ZM85.021 64.5697L73.5138 84.2866C72.4655 86.0889 70.5255 87.1943 68.4409 87.1823L45.5711 87.1102C43.4865 87.1102 41.5586 85.9808 40.5224 84.1785L29.1477 64.3895C28.1115 62.5872 28.1114 60.3644 29.1718 58.5621L40.679 38.8451C41.7273 37.0429 43.6673 35.9375 45.7518 35.9495L68.6217 36.0216C70.7062 36.0216 72.6342 37.151 73.6704 38.9533L85.0451 58.7423C86.0813 60.5446 86.0813 62.7674 85.021 64.5697Z" fill="#0D181F"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,11 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_68_61)">
<path d="M300 253.125C300 279.023 279.023 300 253.125 300H46.875C20.9766 300 0 279.023 0 253.125V46.875C0 20.9766 20.9766 0 46.875 0H253.125C279.023 0 300 20.9766 300 46.875V253.125Z" fill="#175DDC"/>
<path d="M243.105 37.6758C241.201 35.7715 238.945 34.834 236.367 34.834H63.6328C61.0254 34.834 58.7988 35.7715 56.8945 37.6758C54.9902 39.5801 54.0527 41.8359 54.0527 44.4141V159.58C54.0527 168.164 55.7227 176.689 59.0625 185.156C62.4023 193.594 66.5625 201.094 71.5137 207.656C76.4648 214.189 82.3535 220.576 89.209 226.787C96.0645 232.998 102.393 238.125 108.164 242.227C113.965 246.328 120 250.195 126.299 253.857C132.598 257.52 137.08 259.98 139.717 261.27C142.354 262.559 144.492 263.584 146.074 264.258C147.275 264.844 148.564 265.166 149.971 265.166C151.377 265.166 152.666 264.873 153.867 264.258C155.479 263.555 157.588 262.559 160.254 261.27C162.891 259.98 167.373 257.49 173.672 253.857C179.971 250.195 186.006 246.328 191.807 242.227C197.607 238.125 203.936 232.969 210.791 226.787C217.646 220.576 223.535 214.219 228.486 207.656C233.438 201.094 237.568 193.623 240.938 185.156C244.277 176.719 245.947 168.193 245.947 159.58V44.4434C245.977 41.8359 245.01 39.5801 243.105 37.6758ZM220.84 160.664C220.84 202.354 150 238.271 150 238.271V59.502H220.84C220.84 59.502 220.84 118.975 220.84 160.664Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_68_61">
<rect width="300" height="300" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve">
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="511.9995" y1="0" x2="511.9995" y2="1024.0005">
<stop offset="0" style="stop-color:#50B6FC"/>
<stop offset="1" style="stop-color:#5091F9"/>
</linearGradient>
<rect fill="url(#SVGID_1_)" width="1024" height="1024"/>
<g>
<path fill="#FFFFFF" d="M289.66,474.826c6.887-15.649,25.21-22.769,40.845-15.87c15.627,6.872,22.755,25.203,15.87,40.837
c-0.199,0.441-0.426,0.818-0.641,1.259l38.354,16.887c0.207-0.427,0.441-0.818,0.641-1.259
c16.204-36.783-0.541-79.896-37.324-96.094c-36.797-16.197-79.911,0.548-96.101,37.331c-0.191,0.435-0.32,0.882-0.505,1.309"/>
<path fill="#FFFFFF" d="M513.822,410.622h-0.009v41.754h0.009c86.29,0,156.484,69.917,156.484,155.859
c0,85.943-70.194,155.853-156.484,155.853c-86.286,0-156.494-69.909-156.494-155.853c0-12.789-0.229-15.741,1.665-29.114
l-30.9-8.003l-1.863-27.172c-8.167,21.616-10.812,39.855-10.812,64.289c0,108.962,89.008,197.601,198.405,197.601
c109.395,0,198.402-88.639,198.402-197.601C712.225,499.274,623.217,410.622,513.822,410.622z"/>
<path fill="#FFFFFF" d="M593.361,427.203L593.361,427.203l-16.907,38.17l0,0c78.893,34.948,114.757,127.313,79.945,205.887
c-34.805,78.573-127.313,114.075-206.2,79.121c-78.886-34.926-114.751-127.307-79.945-205.873
c5.186-11.701,6.686-15.123,13.834-26.568l-25.536-19.206l9.297-25.607c-16.225,16.453-26.027,32.074-35.916,54.402
c-44.129,99.622,1.338,216.734,101.365,261.015c100.013,44.323,217.303-0.683,261.421-100.305
C738.855,588.609,693.388,471.504,593.361,427.203z"/>
<g>
<path fill="#FFFFFF" d="M515.329,514.497c-17.086,0-30.993-13.907-30.993-30.979c0-17.086,13.209-31.143,30.295-31.143
c0.477,0,1.622,0.007,2.099,0.021v-41.705c-0.477-0.014-0.932-0.071-1.401-0.071c-40.19,0-72.897,32.7-72.897,72.897
s32.707,72.904,72.897,72.904c0.47,0,0.925-0.063,1.401-0.079"/>
<path fill="#FFFFFF" d="M512.413,514.532h-0.008v41.912h0.008c28.126,0,50.995,22.884,50.995,50.994
c0,28.127-22.868,50.995-50.995,50.995c-17.3,0-32.6-8.677-41.826-21.894l-26.028,34.292
c16.965,18.161,41.094,29.534,67.854,29.534c51.236,0,92.914-41.697,92.914-92.928
C605.326,556.223,563.648,514.532,512.413,514.532z"/>
</g>
<path fill="#FFFFFF" d="M635.949,330.199c-32.955-14.519-67.136-22.599-101.137-24.882l-18.146,41.193
c34.286,0.292,69.069,7.363,102.388,22.044C750.559,426.463,810.409,580.551,752.5,712.047
c-57.916,131.475-212.005,191.348-343.493,133.432c-131.489-57.91-191.352-211.998-133.438-343.479
c5.221-11.887,11.274-23.168,17.996-33.853l-38.66-17.036c-6.509,10.833-12.484,22.122-17.706,33.994
c-67.22,152.644,2.27,331.515,154.914,398.742c152.643,67.235,331.515-2.276,398.728-154.913
C858.083,576.283,788.592,397.427,635.949,330.199z"/>
<path fill="#FFFFFF" d="M514.02,112.61c-96.868,0-178.116,67.903-198.816,158.577h43.32
c19.683-67.327,81.902-116.665,155.496-116.665c82.209,0,150.247,61.516,160.661,140.928c15.108,7.825,29.584,16.723,43.334,26.583
v-5.441C718.015,204.123,626.51,112.61,514.02,112.61z"/>
<path fill="#FFFFFF" d="M510.691,304.555c-36.022,0.398-70.465,7.17-102.389,19.113l0.491,45.02
c31.348-13.906,65.934-21.823,102.346-22.229c143.681-1.593,261.853,114.012,263.447,257.679
c1.58,143.666-114.004,261.832-257.671,263.434c-143.667,1.594-261.847-114.006-263.44-257.672
c-0.142-12.996,0.697-25.764,2.404-38.263l-42.239,0.478c-1.448,12.54-2.223,25.286-2.073,38.248
c1.838,166.791,139.025,300.963,305.811,299.119c166.778-1.863,300.962-139.035,299.119-305.813
C814.648,436.876,677.455,302.698,510.691,304.555z"/>
<g>
<path opacity="0.55" fill="#FFFFFF" d="M465.585,325.198c1.586-3.058,3.03-6.195,4.233-9.439h-4.233V325.198z"/>
<path fill="#FFFFFF" d="M411.354,337.198v-14.504c-5.206,2.604-11.061,4.09-17.256,4.09c-21.418,0-38.461-17.42-38.461-38.832
c0-8.415,1.743-14.276,4.552-22.108l-10.399-0.42v-44.821c-21.922,14.44-36.441,39.194-36.441,67.349
c0,44.537,36.222,80.75,80.75,80.75c25.984,0,49.089-12.37,63.834-31.504H411.354z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,14 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 23V24C15 24.5523 14.5523 25 14 25H12V26C12 27.1046 11.1046 28 10 28H6C4.89543 28 4 27.1046 4 26V23.4142C4 22.8838 4.21071 22.3751 4.58579 22L12.3244 14.2614C12.1131 13.5434 12 12.7842 12 12C12 7.58172 15.5817 4 20 4C24.4183 4 28 7.58172 28 12C28 16.4183 24.4183 20 20 20H18V22C18 22.5523 17.5523 23 17 23H15ZM22 12C23.1046 12 24 11.1046 24 10C24 8.89543 23.1046 8 22 8C20.8954 8 20 8.89543 20 10C20 11.1046 20.8954 12 22 12Z" fill="url(#paint0_linear_32_137)"/>
<path d="M25.4004 6.09863C26.9978 7.56126 28 9.66341 28 12C28 16.4183 24.4183 20 20 20H18V22C18 22.5523 17.5523 23 17 23H15V24C15 24.5523 14.5523 25 14 25H12V26C12 27.1046 11.1046 28 10 28H6C5.3196 28 4.72066 27.6588 4.35938 27.1396L20.3584 11.1396C20.7196 11.659 21.3194 12 22 12C23.1046 12 24 11.1046 24 10C24 9.3194 23.659 8.71965 23.1396 8.3584L25.4004 6.09863Z" fill="url(#paint1_radial_32_137)"/>
<defs>
<linearGradient id="paint0_linear_32_137" x1="9.33333" y1="8" x2="26.6667" y2="24" gradientUnits="userSpaceOnUse">
<stop stop-color="#29C3FF"/>
<stop offset="1" stop-color="#2052CB"/>
</linearGradient>
<radialGradient id="paint1_radial_32_137" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(4.86778 20.8826) rotate(51.7901) scale(17.2157 18.5001)">
<stop stop-color="#236FD9"/>
<stop offset="0.767782" stop-color="#236FD9" stop-opacity="0"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="none"><path d="m217.36,90.69c-15.58,9.54-25.17,26.41-25.38,44.68.06,20.67,12.43,39.32,31.46,47.41-3.67,11.84-9.1,23.06-16.11,33.28-10.03,14.44-20.52,28.87-36.47,28.87s-20.06-9.27-38.45-9.27-24.32,9.57-38.9,9.57-24.77-13.37-36.47-29.79c-15.46-22.99-23.95-49.96-24.47-77.66,0-45.59,29.63-69.75,58.81-69.75,15.5,0,28.42,10.18,38.15,10.18s23.71-10.79,41.34-10.79c18.41-.47,35.84,8.24,46.5,23.25Zm-54.86-42.55c7.77-9.14,12.17-20.67,12.46-32.67.01-1.58-.14-3.16-.46-4.71-13.35,1.3-25.69,7.67-34.5,17.78-7.85,8.78-12.41,20-12.92,31.76,0,1.43.16,2.86.46,4.26,1.05.2,2.12.3,3.19.3,12.43-.99,23.91-7.04,31.76-16.73Z" fill="#FFF"/></svg>

After

Width:  |  Height:  |  Size: 694 B

@@ -0,0 +1 @@
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"><defs><style>.cls-1{fill:#0078d4;stroke-width:0px;}</style></defs><rect class="cls-1" x="24.25" y="24.25" width="98.35" height="98.35"/><rect class="cls-1" x="133.4" y="24.25" width="98.35" height="98.35"/><rect class="cls-1" x="24.25" y="133.4" width="98.35" height="98.35"/><rect class="cls-1" x="133.4" y="133.4" width="98.35" height="98.35"/></svg>

After

Width:  |  Height:  |  Size: 427 B

@@ -0,0 +1,21 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_10172_13614)">
<g clip-path="url(#clip1_10172_13614)">
<path d="M0 4C0 1.79086 1.79086 0 4 0H44C46.2091 0 48 1.79086 48 4V44C48 46.2091 46.2091 48 44 48H4C1.79086 48 0 46.2091 0 44V4Z" fill="url(#paint0_linear_10172_13614)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.1163 10C15.1052 10 11 14.1884 11 19.1953C11 24.1849 15.1208 28.3906 20.1163 28.3906C21.4991 28.3906 22.754 28.1237 23.8961 27.6004C24.2812 27.424 24.7357 27.5093 25.0306 27.8134L26.8841 29.7248H29.5332C30.0854 29.7248 30.5332 30.1725 30.5332 30.7248V32.3848C30.5332 32.8617 30.9201 33.2491 31.3983 33.2491H33.1051C33.6574 33.2491 34.1051 33.6968 34.1051 34.2491V36.1357C34.1051 36.6126 34.492 37 34.9702 37H37.1348C37.6131 37 38 36.6126 38 36.1357V33.2088C38 32.3729 37.6668 31.5714 37.0739 30.9815L29.0776 23.0257C28.8156 22.765 28.7187 22.381 28.8258 22.0272C29.0956 21.1357 29.2326 20.1935 29.2326 19.1953C29.2326 14.1838 25.1297 10 20.1163 10ZM9 19.1953C9 13.1077 13.977 8 20.1163 8C26.2577 8 31.2326 13.1028 31.2326 19.1953C31.2326 20.1678 31.1227 21.1094 30.9007 22.0183L38.4846 29.5637C39.4546 30.5288 40 31.8406 40 33.2088V36.1357C40 37.7181 38.7168 39 37.1348 39H34.9702C33.3883 39 32.1051 37.7181 32.1051 36.1357V35.2491H31.3983C29.8164 35.2491 28.5332 33.9672 28.5332 32.3848V31.7248H26.4608C26.1903 31.7248 25.9312 31.6152 25.7429 31.421L24.0686 29.6943C22.8328 30.1609 21.5128 30.3906 20.1163 30.3906C13.9923 30.3906 9 25.2654 9 19.1953ZM17.9931 15.5382C17.1745 15.5382 16.4953 16.22 16.4953 17.0556C16.4953 17.8741 17.1905 18.5729 17.9931 18.5729C18.7788 18.5729 19.491 17.8581 19.491 17.0556C19.491 16.236 18.7948 15.5382 17.9931 15.5382ZM14.4953 17.0556C14.4953 15.1393 16.0462 13.5382 17.9931 13.5382C19.9218 13.5382 21.491 15.1541 21.491 17.0556C21.491 18.9391 19.9068 20.5729 17.9931 20.5729C16.0613 20.5729 14.4953 18.9538 14.4953 17.0556ZM35.5425 33.0151L28.074 25.4882L29.4937 24.0795L36.9622 31.6064L35.5425 33.0151Z" fill="white"/>
</g>
</g>
<defs>
<linearGradient id="paint0_linear_10172_13614" x1="0" y1="0" x2="48" y2="48" gradientUnits="userSpaceOnUse">
<stop stop-color="#00CEFF"/>
<stop offset="0.589573" stop-color="#0094E0"/>
<stop offset="1" stop-color="#006ECC"/>
</linearGradient>
<clipPath id="clip0_10172_13614">
<rect width="48" height="48" fill="white"/>
</clipPath>
<clipPath id="clip1_10172_13614">
<rect width="48" height="48" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none">
<rect width="24" height="24" rx="6" fill="#1E1B4B"/>
<path fill="#C4B5FD" d="M12 4.5c-.9 0-1.6.7-1.6 1.6v.4h-1.2c-.5 0-.9.4-.9.9v1.6c0 .5.4.9.9.9h1.2v.2c0 .9.7 1.6 1.6 1.6h.8c.9 0 1.6-.7 1.6-1.6v-.2h1.2c.5 0 .9-.4.9-.9V7.4c0-.5-.4-.9-.9-.9H13.6v-.4c0-.9-.7-1.6-1.6-1.6h-.8Z"/>
<path fill="#F5D565" d="M8.2 8.8h7.6l-.6 1.4H8.8l-.6-1.4Z"/>
<path fill="#F5D565" d="M9.1 10.6h5.8l-.5 1.2H9.6l-.5-1.2Z"/>
<circle cx="12" cy="14.8" r="2.1" fill="#C4B5FD"/>
<rect x="11.2" y="16.7" width="1.6" height="3.2" rx=".8" fill="#C4B5FD"/>
</svg>

After

Width:  |  Height:  |  Size: 639 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 77.6 77.6" style="enable-background:new 0 0 77.6 77.6;"><g><path fill="#FFF" d="M77.6,55.1c-4.9,1.4-11.4,1.9-16.2,2l-22.7-45.8h-1.3l-22.6,45.8c-4.8-0.1-10.5-0.6-15.4-2l28.7-53.7h20.5 L77.6,55.1z"></path><path fill="#FFF" d="M47.7,41.4c0,5.3-4.3,9.5-9.6,9.5c-5.3,0-9.5-4.3-9.5-9.5c0-5.3,4.3-9.5,9.5-9.5 C43.4,31.9,47.7,36.1,47.7,41.4"></path></g></svg>

After

Width:  |  Height:  |  Size: 404 B

File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -4,5 +4,5 @@ import "embed"
// Embedded file systems for the project
//go:embed email-templates/*.tmpl images default-images migrations fonts aaguids.json
//go:embed email-templates/*.tmpl images default-images migrations fonts aaguids.json aaguid-icons
var FS embed.FS
@@ -0,0 +1 @@
ALTER TABLE webauthn_credentials DROP COLUMN aaguid;
@@ -0,0 +1 @@
ALTER TABLE webauthn_credentials ADD COLUMN aaguid TEXT NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000';
@@ -0,0 +1 @@
ALTER TABLE webauthn_credentials DROP COLUMN aaguid;
@@ -0,0 +1 @@
ALTER TABLE webauthn_credentials ADD COLUMN aaguid TEXT NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000';
+23 -3
View File
@@ -7,6 +7,7 @@
let {
icon,
providerIconUrl,
onRename,
onDelete,
showRenameAction = true,
@@ -14,18 +15,37 @@
description
}: {
icon: LucideIcon;
providerIconUrl?: string;
onRename?: () => void;
onDelete: () => void;
showRenameAction?: boolean;
description?: string;
label?: string;
} = $props();
// Falls back to the generic icon when the authenticator icon cannot be loaded
let iconFailed = $state(false);
// The row is reused across passkeys and themes, so a previous failure must not hide an icon that is now a different URL
$effect(() => {
void providerIconUrl;
iconFailed = false;
});
const showProviderIcon = $derived(!!providerIconUrl && !iconFailed);
</script>
<Item.Root variant="transparent" class="hover:bg-muted transition-colors py-3 px-0 sm:px-4">
<Item.Media class="bg-primary/10 text-primary rounded-full p-3">
{#if icon}{@const Icon = icon}
<Icon class="size-5" />
<Item.Media class="bg-muted text-muted-foreground size-11 rounded-xl">
{#if showProviderIcon}
<img
src={providerIconUrl}
alt=""
class="size-7 object-contain"
onerror={() => (iconFailed = true)}
/>
{:else if icon}{@const Icon = icon}
<Icon class="size-6" />
{/if}
</Item.Media>
<Item.Content class="gap-0.5">
+2
View File
@@ -2,4 +2,6 @@ export type Passkey = {
id: string;
name: string;
createdAt: string;
aaguid: string;
hasIcon: boolean;
};
@@ -75,6 +75,17 @@ export const cachedOidcClientLogo: CachableImage = {
}
};
// Builds the URL of an authenticator icon
// Unlike the images above these are static assets that only change with a new release, so they skip the cache busting helper and rely on the backend's cache headers
export function authenticatorIconUrl(aaguid: string, light = true) {
const url = new URL(
`/api/webauthn/authenticator-icons/${encodeURIComponent(aaguid)}`,
window.location.origin
);
if (!light) url.searchParams.set('light', 'false');
return url.pathname + (url.search ? `?${url.searchParams.toString()}` : '');
}
function getCachedImageUrl(url: URL) {
const baseKey = normalizeUrlForKey(url);
const skipCacheUntil = getSkipCacheUntil(baseKey);
@@ -5,7 +5,7 @@ import { untrack } from 'svelte';
import { fromStore, type Readable } from 'svelte/store';
/**
* Registers a section of a page (e.g. a card) with the unsaved-changes bar.
* Registers a section of a page (e.g. a card) with the unsaved-changes bar.
* The section is unregistered when the calling component is destroyed.
*/
export function trackUnsavedSection(
@@ -5,8 +5,10 @@
import { m } from '$lib/paraglide/messages';
import WebauthnService from '$lib/services/webauthn-service';
import type { Passkey } from '$lib/types/passkey.type';
import { authenticatorIconUrl } from '$lib/utils/cached-image-util';
import { axiosErrorToast } from '$lib/utils/error-util';
import { LucideKeyRound } from '@lucide/svelte';
import { mode } from 'mode-watcher';
import { toast } from 'svelte-sonner';
import RenamePasskeyModal from './rename-passkey-modal.svelte';
@@ -16,6 +18,8 @@
let passkeyToRename: Passkey | null = $state(null);
const isLightMode = $derived(mode.current === 'light');
async function deletePasskey(passkey: Passkey) {
openConfirmDialog({
title: m.delete_passkey_name({ passkeyName: passkey.name }),
@@ -43,6 +47,9 @@
label={passkey.name}
description={m.added_on() + ' ' + new Date(passkey.createdAt).toLocaleDateString()}
icon={LucideKeyRound}
providerIconUrl={passkey.hasIcon
? authenticatorIconUrl(passkey.aaguid, isLightMode)
: undefined}
onRename={() => (passkeyToRename = passkey)}
onDelete={() => deletePasskey(passkey)}
/>
@@ -5,8 +5,10 @@
import { m } from '$lib/paraglide/messages';
import UserService from '$lib/services/user-service';
import type { Passkey } from '$lib/types/passkey.type';
import { authenticatorIconUrl } from '$lib/utils/cached-image-util';
import { axiosErrorToast } from '$lib/utils/error-util';
import { LucideKeyRound } from '@lucide/svelte';
import { mode } from 'mode-watcher';
import { toast } from 'svelte-sonner';
let {
@@ -19,6 +21,8 @@
const userService = new UserService();
const isLightMode = $derived(mode.current === 'light');
async function refreshPasskeys() {
passkeys = await userService.listUserPasskeys(userId);
}
@@ -50,6 +54,9 @@
label={passkey.name}
description={m.added_on() + ' ' + new Date(passkey.createdAt).toLocaleDateString()}
icon={LucideKeyRound}
providerIconUrl={passkey.hasIcon
? authenticatorIconUrl(passkey.aaguid, isLightMode)
: undefined}
showRenameAction={false}
onDelete={() => deletePasskey(passkey)}
/>
+198
View File
@@ -0,0 +1,198 @@
// Refreshes the AAGUID metadata and authenticator icons from the community AAGUID list
package main
import (
"bytes"
"crypto/sha256"
"encoding/base64"
"encoding/json"
"errors"
"fmt"
"log"
"maps"
"net/http"
"os"
"path/filepath"
"slices"
"strings"
)
const (
sourceURL = "https://raw.githubusercontent.com/pocket-id/passkey-aaguids/refs/heads/main/combined_aaguid.json"
metadataFile = "backend/resources/aaguids.json"
iconDir = "backend/resources/aaguid-icons"
svgDataPrefix = "data:image/svg+xml;base64,"
iconFilePattern = "*.svg"
iconDigestBytes = 8
)
// authenticator is the subset of an upstream entry this script cares about
// The icons are data URIs rather than links, so nothing beyond the combined JSON has to be fetched
type authenticator struct {
Name string `json:"name"`
IconLight string `json:"icon_light"`
IconDark string `json:"icon_dark"`
}
// authenticatorMetadata is the generated runtime representation of an authenticator
// Icon file names contain a 64-bit SHA-256 prefix of their decoded SVG so identical upstream icons share one asset
type authenticatorMetadata struct {
Name string `json:"name"`
IconLight string `json:"icon_light,omitempty"`
IconDark string `json:"icon_dark,omitempty"`
}
func main() {
if err := run(); err != nil {
log.Fatalln("error:", err)
}
}
// run writes the metadata manifest and its content-addressed icons from one upstream snapshot so their references stay consistent
func run() error {
authenticators, err := fetchAuthenticators(sourceURL)
if err != nil {
return fmt.Errorf("failed to fetch %s: %w", sourceURL, err)
}
if len(authenticators) == 0 {
return errors.New("upstream AAGUID list is empty")
}
metadata, icons, err := buildResources(authenticators)
if err != nil {
return fmt.Errorf("failed to build authenticator resources: %w", err)
}
if err := writeIcons(icons); err != nil {
return fmt.Errorf("failed to write icon files: %w", err)
}
if err := writeAuthenticatorMetadata(metadata); err != nil {
return fmt.Errorf("failed to write authenticator metadata: %w", err)
}
return nil
}
// fetchAuthenticators downloads the upstream authenticator list keyed by AAGUID
func fetchAuthenticators(url string) (authenticators map[string]authenticator, err error) {
resp, err := http.Get(url)
if err != nil {
return nil, fmt.Errorf("failed to get authenticator JSON: %w", err)
}
defer func() {
err = errors.Join(err, resp.Body.Close())
}()
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("expected status 200, got %s", resp.Status)
}
if err := json.NewDecoder(resp.Body).Decode(&authenticators); err != nil {
return nil, fmt.Errorf("failed to decode JSON: %w", err)
}
return authenticators, nil
}
// buildResources converts upstream data URIs into metadata references and a set of unique decoded SVGs
func buildResources(authenticators map[string]authenticator) (map[string]authenticatorMetadata, map[string][]byte, error) {
metadata := make(map[string]authenticatorMetadata, len(authenticators))
icons := make(map[string][]byte)
// The AAGUIDs are sorted so failures are deterministic when the upstream data contains an invalid icon
for _, aaguid := range slices.Sorted(maps.Keys(authenticators)) {
a := authenticators[aaguid]
entry := authenticatorMetadata{Name: a.Name}
// Entries without a usable light SVG retain their display names but do not reference any icon
lightName, err := addIcon(icons, a.IconLight)
if err != nil {
return nil, nil, fmt.Errorf("failed to process light SVG for %s: %w", aaguid, err)
}
if lightName == "" {
metadata[aaguid] = entry
continue
}
entry.IconLight = lightName
// A missing or identical dark icon falls back to the light asset at runtime
darkName, err := addIcon(icons, a.IconDark)
if err != nil {
return nil, nil, fmt.Errorf("failed to process dark SVG for %s: %w", aaguid, err)
}
if darkName != "" && darkName != lightName {
entry.IconDark = darkName
}
metadata[aaguid] = entry
}
return metadata, icons, nil
}
// addIcon decodes one SVG data URI and returns the content-addressed file name stored in icons
func addIcon(icons map[string][]byte, dataURI string) (string, error) {
payload, ok := strings.CutPrefix(dataURI, svgDataPrefix)
if !ok {
return "", nil
}
svg, err := base64.StdEncoding.DecodeString(payload)
if err != nil {
return "", fmt.Errorf("failed to decode base64: %w", err)
}
digest := sha256.Sum256(svg)
name := fmt.Sprintf("%x.svg", digest[:iconDigestBytes])
if existing, exists := icons[name]; exists && !bytes.Equal(existing, svg) {
return "", fmt.Errorf("SHA-256 prefix collision for %s", name)
}
icons[name] = svg
return name, nil
}
// writeIcons replaces the icon directory contents so assets dropped upstream do not linger
func writeIcons(icons map[string][]byte) error {
if err := os.MkdirAll(iconDir, 0o755); err != nil {
return fmt.Errorf("failed to create authenticator icons directory: %w", err)
}
existing, err := filepath.Glob(filepath.Join(iconDir, iconFilePattern))
if err != nil {
return fmt.Errorf("error gathering existing SVGs: %w", err)
}
for _, path := range existing {
if err := os.Remove(path); err != nil {
return fmt.Errorf("error clearing existing SVG: %w", err)
}
}
for _, name := range slices.Sorted(maps.Keys(icons)) {
if err := os.WriteFile(filepath.Join(iconDir, name), icons[name], 0o644); err != nil {
return fmt.Errorf("failed to write SVG %s: %w", name, err)
}
}
return nil
}
// writeAuthenticatorMetadata writes the AAGUID manifest consumed by the backend
func writeAuthenticatorMetadata(metadata map[string]authenticatorMetadata) (err error) {
if err := os.MkdirAll(filepath.Dir(metadataFile), 0o755); err != nil {
return fmt.Errorf("failed to create authenticator metadata directory: %w", err)
}
file, err := os.Create(metadataFile)
if err != nil {
return fmt.Errorf("failed to create authenticator metadata file: %w", err)
}
defer func() {
err = errors.Join(err, file.Close())
}()
encoder := json.NewEncoder(file)
encoder.SetIndent("", " ")
return encoder.Encode(metadata)
}
+5
View File
@@ -131,6 +131,11 @@ function compareExports(dir1: string, dir2: string): void {
session.extensions ??= '{}';
}
// Legacy exports gain the zero AAGUID when migrated to the current schema
for (const credential of expectedData.tables.webauthn_credentials) {
credential.aaguid ??= '00000000-0000-0000-0000-000000000000';
}
// Check special fields
validateSpecialFields(actualData);