first commit

This commit is contained in:
2023-09-12 21:41:04 +02:00
commit 3361a7f053
13284 changed files with 2116755 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2013-2014 Daniel Lowrey, Levi Morrison, Dan Ackroyd
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.

View File

@@ -0,0 +1,847 @@
# auryn [![Build Status](https://travis-ci.org/rdlowrey/auryn.svg?branch=master)](https://travis-ci.org/rdlowrey/auryn)
auryn is a recursive dependency injector. Use auryn to bootstrap and wire together
S.O.L.I.D., object-oriented PHP applications.
##### How It Works
Among other things, auryn recursively instantiates class dependencies based on the parameter
type-hints specified in class constructor signatures. This requires the use of Reflection. You may
have heard that "reflection is slow". Let's clear something up: *anything* can be "slow" if you're
doing it wrong. Reflection is an order of magnitude faster than disk access and several orders of
magnitude faster than retrieving information (for example) from a remote database. Additionally,
each reflection offers the opportunity to cache the results if you're worried about speed. auryn
caches any reflections it generates to minimize the potential performance impact.
> auryn **is NOT** a Service Locator. DO NOT turn it into one by passing the injector into your
> application classes. Service Locator is an anti-pattern; it hides class dependencies, makes code
> more difficult to maintain and makes a liar of your API! You should *only* use an injector for
> wiring together the disparate parts of your application during your bootstrap phase.
## The Guide
**Basic Usage**
* [Basic Instantiation](#basic-instantiation)
* [Injection Definitions](#injection-definitions)
* [Type-Hint Aliasing](#type-hint-aliasing)
* [Non-Class Parameters](#non-class-parameters)
* [Global Parameter Definitions](#global-parameter-definitions)
**Advanced Usage**
* [Instance Sharing](#instance-sharing)
* [Instantiation Delegates](#instantiation-delegates)
* [Prepares and Setter Injection](#prepares-and-setter-injection)
* [Injecting for Execution](#injecting-for-execution)
* [Dependency Resolution](#dependency-resolution)
**Example Use Cases**
* [Avoiding Evil Singletons](#avoiding-evil-singletons)
* [Application Bootstrapping](#app-bootstrapping)
## Requirements and Installation
- auryn requires PHP 5.3 or higher.
#### Installation
###### Github
You can clone the latest auryn iteration at anytime from the github repository:
```bash
$ git clone git://github.com/rdlowrey/auryn.git
```
###### Composer
You may also use composer to include auryn as a dependency in your projects `composer.json`. The relevant package is `rdlowrey/auryn`.
Alternatively require the package using composer cli:
```bash
composer require rdlowrey/auryn
```
##### Manual Download
Archived tagged release versions are also available for manual download on the project
[tags page](https://github.com/rdlowrey/auryn/tags)
## Basic Usage
To start using the injector, simply create a new instance of the `Auryn\Injector` ("the Injector")
class:
```php
<?php
$injector = new Auryn\Injector;
```
### Basic Instantiation
If a class doesn't specify any dependencies in its constructor signature there's little point in
using the Injector to generate it. However, for the sake of completeness consider that you can do
the following with equivalent results:
```php
<?php
$injector = new Auryn\Injector;
$obj1 = new SomeNamespace\MyClass;
$obj2 = $injector->make('SomeNamespace\MyClass');
var_dump($obj2 instanceof SomeNamespace\MyClass); // true
```
###### Concrete Type-hinted Dependencies
If a class only asks for concrete dependencies you can use the Injector to inject them without
specifying any injection definitions. For example, in the following scenario you can use the
Injector to automatically provision `MyClass` with the required `SomeDependency` and `AnotherDependency`
class instances:
```php
<?php
class SomeDependency {}
class AnotherDependency {}
class MyClass {
public $dep1;
public $dep2;
public function __construct(SomeDependency $dep1, AnotherDependency $dep2) {
$this->dep1 = $dep1;
$this->dep2 = $dep2;
}
}
$injector = new Auryn\Injector;
$myObj = $injector->make('MyClass');
var_dump($myObj->dep1 instanceof SomeDependency); // true
var_dump($myObj->dep2 instanceof AnotherDependency); // true
```
###### Recursive Dependency Instantiation
One of the Injector's key attributes is that it recursively traverses class dependency trees to
instantiate objects. This is just a fancy way of saying, "if you instantiate object A which asks for
object B, the Injector will instantiate any of object B's dependencies so that B can be instantiated
and provided to A". This is perhaps best understood with a simple example. Consider the following
classes in which a `Car` asks for `Engine` and the `Engine` class has concrete dependencies of its
own:
```php
<?php
class Car {
private $engine;
public function __construct(Engine $engine) {
$this->engine = $engine;
}
}
class Engine {
private $sparkPlug;
private $piston;
public function __construct(SparkPlug $sparkPlug, Piston $piston) {
$this->sparkPlug = $sparkPlug;
$this->piston = $piston;
}
}
$injector = new Auryn\Injector;
$car = $injector->make('Car');
var_dump($car instanceof Car); // true
```
### Injection Definitions
You may have noticed that the previous examples all demonstrated instantiation of classes with
explicit, type-hinted, concrete constructor parameters. Obviously, many of your classes won't fit
this mold. Some classes will type-hint interfaces and abstract classes. Some will specify scalar
parameters which offer no possibility of type-hinting in PHP. Still other parameters will be arrays,
etc. In such cases we need to assist the Injector by telling it exactly what we want to inject.
###### Defining Class Names for Constructor Parameters
Let's look at how to provision a class with non-concrete type-hints in its constructor signature.
Consider the following code in which a `Car` needs an `Engine` and `Engine` is an interface:
```php
<?php
interface Engine {}
class V8 implements Engine {}
class Car {
private $engine;
public function __construct(Engine $engine) {
$this->engine = $engine;
}
}
```
To instantiate a `Car` in this case, we simply need to define an injection definition for the class
ahead of time:
```php
<?php
$injector = new Auryn\Injector;
$injector->define('Car', ['engine' => 'V8']);
$car = $injector->make('Car');
var_dump($car instanceof Car); // true
```
The most important points to notice here are:
1. A custom definition is an `array` whose keys match constructor parameter names
2. The values in the definition array represent the class names to inject for the specified
parameter key
Because the `Car` constructor parameter we needed to define was named `$engine`, our definition
specified an `engine` key whose value was the name of the class (`V8`) that we want to inject.
Custom injection definitions are only necessary on a per-parameter basis. For example, in the
following class we only need to define the injectable class for `$arg2` because `$arg1` specifies a
concrete class type-hint:
```php
<?php
class MyClass {
private $arg1;
private $arg2;
public function __construct(SomeConcreteClass $arg1, SomeInterface $arg2) {
$this->arg1 = $arg1;
$this->arg2 = $arg2;
}
}
$injector = new Auryn\Injector;
$injector->define('MyClass', ['arg2' => 'SomeImplementationClass']);
$myObj = $injector->make('MyClass');
```
> **NOTE:** Injecting instances where an abstract class is type-hinted works in exactly the same way
as the above examples for interface type-hints.
###### Using Existing Instances in Injection Definitions
Injection definitions may also specify a pre-existing instance of the requisite class instead of the
string class name:
```php
<?php
interface SomeInterface {}
class SomeImplementation implements SomeInterface {}
class MyClass {
private $dependency;
public function __construct(SomeInterface $dependency) {
$this->dependency = $dependency;
}
}
$injector = new Auryn\Injector;
$dependencyInstance = new SomeImplementation;
$injector->define('MyClass', [':dependency' => $dependencyInstance]);
$myObj = $injector->make('MyClass');
var_dump($myObj instanceof MyClass); // true
```
> **NOTE:** Since this `define()` call is passing raw values (as evidenced by the colon `:` usage),
you can achieve the same result by omitting the array key(s) and relying on parameter order rather
than name. Like so: `$injector->define('MyClass', [$dependencyInstance]);`
###### Specifying Injection Definitions On the Fly
You may also specify injection definitions at call-time with `Auryn\Injector::make`. Consider:
```php
<?php
interface SomeInterface {}
class SomeImplementationClass implements SomeInterface {}
class MyClass {
private $dependency;
public function __construct(SomeInterface $dependency) {
$this->dependency = $dependency;
}
}
$injector = new Auryn\Injector;
$myObj = $injector->make('MyClass', ['dependency' => 'SomeImplementationClass']);
var_dump($myObj instanceof MyClass); // true
```
The above code shows how even though we haven't called the Injector's `define` method, the
call-time specification allows us to instantiate `MyClass`.
> **NOTE:** on-the-fly instantiation definitions will override a pre-defined definition for the
specified class, but only in the context of that particular call to `Auryn\Injector::make`.
### Type-Hint Aliasing
Programming to interfaces is one of the most useful concepts in object-oriented design (OOD), and
well-designed code should type-hint interfaces whenever possible. But does this mean we have to
assign injection definitions for every class in our application to reap the benefits of abstracted
dependencies? Thankfully the answer to this question is, "NO." The Injector accommodates this goal
by accepting "aliases". Consider:
```php
<?php
interface Engine {}
class V8 implements Engine {}
class Car {
private $engine;
public function __construct(Engine $engine) {
$this->engine = $engine;
}
}
$injector = new Auryn\Injector;
// Tell the Injector class to inject an instance of V8 any time
// it encounters an Engine type-hint
$injector->alias('Engine', 'V8');
$car = $injector->make('Car');
var_dump($car instanceof Car); // bool(true)
```
In this example we've demonstrated how to specify an alias class for any occurrence of a particular
interface or abstract class type-hint. Once an implementation is assigned, the Injector will use it
to provision any parameter with a matching type-hint.
> **IMPORTANT:** If an injection definition is defined for a parameter covered by an implementation
assignment, the definition takes precedence over the implementation.
### Non-Class Parameters
All of the previous examples have demonstrated how the Injector class instantiates parameters based
on type-hints, class name definitions and existing instances. But what happens if we want to inject
a scalar or other non-object variable into a class? First, let's establish the following behavioral
rule:
> **IMPORTANT:** The Injector assumes all named-parameter definitions are class names by default.
If you want the Injector to treat a named-parameter definition as a "raw" value and not a class name,
you must prefix the parameter name in your definition with a colon character `:`. For example,
consider the following code in which we tell the Injector to share a `PDO` database connection
instance and define its scalar constructor parameters:
```php
<?php
$injector = new Auryn\Injector;
$injector->share('PDO');
$injector->define('PDO', [
':dsn' => 'mysql:dbname=testdb;host=127.0.0.1',
':username' => 'dbuser',
':passwd' => 'dbpass'
]);
$db = $injector->make('PDO');
```
The colon character preceding the parameter names tells the Injector that the associated values ARE
NOT class names. If the colons had been omitted above, auryn would attempt to instantiate classes of
the names specified in the string and an exception would result. Also, note that we could just as
easily specified arrays or integers or any other data type in the above definitions. As long as the
parameter name is prefixed with a `:`, auryn will inject the value directly without attempting to
instantiate it.
> **NOTE:** As mentioned previously, since this `define()` call is passing raw values, you may opt to
assign the values by parameter order rather than name. Since PDO's first three parameters are `$dsn`,
`$username`, and `$password`, in that order, you could accomplish the same result by leaving out the
array keys, like so:
`$injector->define('PDO', ['mysql:dbname=testdb;host=127.0.0.1', 'dbuser', 'dbpass']);`
### Global Parameter Definitions
Sometimes applications may reuse the same value everywhere. However, it can be a hassle to manually
specify definitions for this sort of thing everywhere it might be used in the app. auryn mitigates
this problem by exposing the `Injector::defineParam()` method. Consider the following example ...
```php
<?php
$myUniversalValue = 42;
class MyClass {
public $myValue;
public function __construct($myValue) {
$this->myValue = $myValue;
}
}
$injector = new Auryn\Injector;
$injector->defineParam('myValue', $myUniversalValue);
$obj = $injector->make('MyClass');
var_dump($obj->myValue === 42); // bool(true)
```
Because we specified a global definition for `myValue`, all parameters that are not in some other
way defined (as below) that match the specified parameter name are auto-filled with the global value.
If a parameter matches any of the following criteria the global value is not used:
- A typehint
- A predefined injection definition
- A custom call time definition
## Advanced Usage
### Instance Sharing
One of the more ubiquitous plagues in modern OOP is the Singleton anti-pattern. Coders looking to
limit classes to a single instance often fall into the trap of using `static` Singleton
implementations for things like configuration classes and database connections. While it's often
necessary to prevent multiple instances of a class, the Singleton method spells death to testability
and should generally be avoided. `Auryn\Injector` makes sharing class instances across contexts a
triviality while allowing maximum testability and API transparency.
Let's consider how a typical problem facing object-oriented web applications is easily solved by
wiring together your application using auryn. Here, we want to inject a single database connection
instance across multiple layers of an application. We have a controller class that asks for a
DataMapper that requires a `PDO` database connection instance:
```php
<?php
class DataMapper {
private $pdo;
public function __construct(PDO $pdo) {
$this->pdo = $pdo;
}
}
class MyController {
private $mapper;
public function __construct(DataMapper $mapper) {
$this->mapper = $mapper;
}
}
$db = new PDO('mysql:host=localhost;dbname=mydb', 'user', 'pass');
$injector = new Auryn\Injector;
$injector->share($db);
$myController = $injector->make('MyController');
```
In the above code, the `DataMapper` instance will be provisioned with the same `PDO` database
connection instance we originally shared. This example is contrived and overly simple, but the
implication should be clear:
> By sharing an instance of a class, `Auryn\Injector` will always use that instance when
> provisioning classes that type-hint the shared class.
###### A Simpler Example
Let's look at a simple proof of concept:
```php
<?php
class Person {
public $name = 'John Snow';
}
$injector = new Auryn\Injector;
$injector->share('Person');
$person = $injector->make('Person');
var_dump($person->name); // John Snow
$person->name = 'Arya Stark';
$anotherPerson = $injector->make('Person');
var_dump($anotherPerson->name); // Arya Stark
var_dump($person === $anotherPerson); // bool(true) because it's the same instance!
```
Defining an object as shared will store the provisioned instance in the Injector's shared cache and
all future requests to the provider for an injected instance of that class will return the
originally created object. Note that in the above code, we shared the class name (`Person`)
instead of an actual instance. Sharing works with either a class name or an instance of a class.
The difference is that when you specify a class name, the Injector
will cache the shared instance the first time it is asked to create it.
> **NOTE:** Once the Injector caches a shared instance, call-time definitions passed to
`Auryn\Injector::make` will have no effect. Once shared, an instance will always be returned for
instantiations of its type until the object is un-shared or refreshed:
### Instantiation Delegates
Often factory classes/methods are used to prepare an object for use after instantiation. auryn
allows you to integrate factories and builders directly into the injection process by specifying
callable instantiation delegates on a per-class basis. Let's look at a very basic example to
demonstrate the concept of injection delegates:
```php
<?php
class MyComplexClass {
public $verification = false;
public function doSomethingAfterInstantiation() {
$this->verification = true;
}
}
$complexClassFactory = function() {
$obj = new MyComplexClass;
$obj->doSomethingAfterInstantiation();
return $obj;
};
$injector = new Auryn\Injector;
$injector->delegate('MyComplexClass', $complexClassFactory);
$obj = $injector->make('MyComplexClass');
var_dump($obj->verification); // bool(true)
```
In the above code we delegate instantiation of the `MyComplexClass` class to a closure,
`$complexClassFactory`. Once this delegation is made, the Injector will return the results of the
specified closure when asked to instantiate `MyComplexClass`.
###### Available Delegate Types
Any valid PHP callable may be registered as a class instantiation delegate using
`Auryn\Injector::delegate`. Additionally you may specify the name of a delegate class that
specifies an `__invoke` method and it will be automatically provisioned and have its `__invoke`
method called at delegation time. Instance methods from uninstantiated classes may also be specified
using the `['NonStaticClassName', 'factoryMethod']` construction. For example:
```php
<?php
class SomeClassWithDelegatedInstantiation {
public $value = 0;
}
class SomeFactoryDependency {}
class MyFactory {
private $dependency;
function __construct(SomeFactoryDependency $dep) {
$this->dependency = $dep;
}
function __invoke() {
$obj = new SomeClassWithDelegatedInstantiation;
$obj->value = 1;
return $obj;
}
function factoryMethod() {
$obj = new SomeClassWithDelegatedInstantiation;
$obj->value = 2;
return $obj;
}
}
// Works because MyFactory specifies a magic __invoke method
$injector->delegate('SomeClassWithDelegatedInstantiation', 'MyFactory');
$obj = $injector->make('SomeClassWithDelegatedInstantiation');
var_dump($obj->value); // int(1)
// This also works
$injector->delegate('SomeClassWithDelegatedInstantiation', 'MyFactory::factoryMethod');
$obj = $injector->make('SomeClassWithDelegatedInstantiation');
$obj = $injector->make('SomeClassWithDelegatedInstantiation');
var_dump($obj->value); // int(2)
```
### Prepares and Setter Injection
Constructor injection is almost always preferable to setter injection. However, some APIs require
additional post-instantiation mutations. auryn accommodates these use cases with its
`Injector::prepare()` method. Users may register any class or interface name for post-instantiation
modification. Consider:
```php
<?php
class MyClass {
public $myProperty = 0;
}
$injector->prepare('MyClass', function($myObj, $injector) {
$myObj->myProperty = 42;
});
$myObj = $injector->make('MyClass');
var_dump($myObj->myProperty); // int(42)
```
While the above example is contrived, the usefulness should be clear.
### Injecting for Execution
In addition to provisioning class instances using constructors, auryn can also recursively instantiate
the parameters of any [valid PHP callable](http://php.net/manual/en/language.types.callable.php).
The following examples all work:
```php
<?php
$injector = new Auryn\Injector;
$injector->execute(function(){});
$injector->execute([$objectInstance, 'methodName']);
$injector->execute('globalFunctionName');
$injector->execute('MyStaticClass::myStaticMethod');
$injector->execute(['MyStaticClass', 'myStaticMethod']);
$injector->execute(['MyChildStaticClass', 'parent::myStaticMethod']);
$injector->execute('ClassThatHasMagicInvoke');
$injector->execute($instanceOfClassThatHasMagicInvoke);
$injector->execute('MyClass::myInstanceMethod');
```
Additionally, you can pass in the name of a class for a non-static method and the injector will
automatically provision an instance of the class (subject to any definitions or shared instances
already stored by the injector) before provisioning and invoking the specified method:
```php
<?php
class Dependency {}
class AnotherDependency {}
class Example {
function __construct(Dependency $dep){}
function myMethod(AnotherDependency $arg1, $arg2) {
return $arg2;
}
}
$injector = new Auryn\Injector;
// outputs: int(42)
var_dump($injector->execute('Example::myMethod', $args = [':arg2' => 42]));
```
### Dependency Resolution
`Auryn\Injector` resolves dependencies in the following order:
1. If a shared instance exists for the class in question, the shared instance will always be returned
2. If a delegate callable is assigned for a class, its return result will always be used
3. If a call-time definition is passed to `Auryn\Injector::make`, that definition will be used
4. If a pre-defined definition exists, it will be used
5. If a dependency is type-hinted, the Injector will recursively instantiate it subject to any implementations or definitions
6. If no type-hint exists and the parameter has a default value, the default value is injected
7. If a global parameter value is defined that value is used
8. Throw an exception because you did something stupid
## Example Use Cases
Dependency Injection Containers (DIC) are generally misunderstood in the PHP community. One of the
primary culprits is the misuse of such containers in the mainstream application frameworks. Often,
these frameworks warp their DICs into Service Locator anti-patterns. This is a shame because a
good DIC should be the exact opposite of a Service Locator.
###### auryn Is NOT A Service Locator!
There's a galaxy of differences between using a DIC to wire together your application versus
passing the DIC as a dependency to your objects (Service Locator). Service Locator (SL) is an
anti-pattern -- it hides class dependencies, makes code difficult to maintain and makes a liar of
your API.
When you pass a SL into your constructors it makes it difficult to determine what the class dependencies
really are. A `House` object depends on `Door` and `Window` objects. A `House` object DOES NOT depend
on an instance of `ServiceLocator` regardless of whether the `ServiceLocator` can provide `Door` and
`Window` objects.
In real life you wouldn't build a house by transporting the entire hardware store (hopefully) to
the construction site so you can access any parts you need. Instead, the foreman (`__construct()`)
asks for the specific parts that will be needed (`Door` and `Window`) and goes about procuring them.
Your objects should function in the same way; they should ask only for the specific dependencies
required to do their jobs. Giving the `House` access to the entire hardware store is at best poor
OOP style and at worst a maintainability nightmare. The takeaway here is this:
> **IMPORTANT:** do not use auryn like a Service Locator!
### Avoiding Evil Singletons
A common difficulty in web applications is limiting the number of database connection instances.
It's wasteful and slow to open up new connections each time we need to talk to a database.
Unfortunately, using singletons to limit these instances makes code brittle and hard to test. Let's
see how we can use auryn to inject the same `PDO` instance across the entire scope of our application.
Say we have a service class that requires two separate data mappers to persist information to a database:
```php
<?php
class HouseMapper {
private $pdo;
public function __construct(PDO $pdo) {
$this->pdo = $pdo;
}
public function find($houseId) {
$query = 'SELECT * FROM houses WHERE houseId = :houseId';
$stmt = $this->pdo->prepare($query);
$stmt->bindValue(':houseId', $houseId);
$stmt->setFetchMode(PDO::FETCH_CLASS, 'Model\\Entities\\House');
$stmt->execute();
$house = $stmt->fetch(PDO::FETCH_CLASS);
if (false === $house) {
throw new RecordNotFoundException(
'No houses exist for the specified ID'
);
}
return $house;
}
// more data mapper methods here ...
}
class PersonMapper {
private $pdo;
public function __construct(PDO $pdo) {
$this->pdo = $pdo;
}
// data mapper methods here
}
class SomeService {
private $houseMapper;
private $personMapper;
public function __construct(HouseMapper $hm, PersonMapper $pm) {
$this->houseMapper = $hm;
$this->personMapper = $pm;
}
public function doSomething() {
// do something with the mappers
}
}
```
In our wiring/bootstrap code, we simply instantiate the `PDO` instance once and share it in the
context of the `Injector`:
```php
<?php
$pdo = new PDO('sqlite:some_sqlite_file.db');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$injector = new Auryn\Injector;
$injector->share($pdo);
$mapper = $injector->make('SomeService');
```
In the above code, the DIC instantiates our service class. More importantly, the data mapper classes
it generates to do so are injected *with the same database connection instance we originally shared*.
Of course, we don't have to manually instantiate our `PDO` instance. We could just as easily seed
the container with a definition for how to create the `PDO` object and let it handle things for us:
```php
<?php
$injector->define('PDO', [
':dsn' => 'sqlite:some_sqlite_file.db'
]);
$injector->share('PDO');
$service = $injector->make('SomeService');
```
In the above code, the injector will pass the string definition as the `$dsn` argument in the
`PDO::__construct` method and generate the shared PDO instance automatically only if one of the
classes it instantiates requires a `PDO` instance!
### App-Bootstrapping
DICs should be used to wire together the disparate objects of your application into a cohesive
functional unit (generally at the bootstrap or front-controller stage of the application). One such
usage provides an elegant solution for one of the thorny problems in object-oriented (OO) web
applications: how to instantiate classes in a routed environment where the dependencies are not
known ahead of time.
Consider the following front controller code whose job is to:
1. Load a list of application routes and pass them to the router
2. Generate a model of the client's HTTP request
3. Route the request instance given the application's route list
4. Instantiate the routed controller and invoke a method appropriate to the HTTP request
```php
<?php
define('CONTROLLER_ROUTES', '/hard/path/to/routes.xml');
$routeLoader = new RouteLoader();
$routes = $routeLoader->loadFromXml(CONTROLLER_ROUTES);
$router = new Router($routes);
$requestDetector = new RequestDetector();
$request = $requestDetector->detectFromSuperglobal($_SERVER);
$requestUri = $request->getUri();
$requestMethod = strtolower($request->getMethod());
$injector = new Auryn\Injector;
$injector->share($request);
try {
if (!$controllerClass = $router->route($requestUri, $requestMethod)) {
throw new NoRouteMatchException();
}
$controller = $injector->make($controllerClass);
$callableController = array($controller, $requestMethod);
if (!is_callable($callableController)) {
throw new MethodNotAllowedException();
} else {
$callableController();
}
} catch (NoRouteMatchException $e) {
// send 404 response
} catch (MethodNotAllowedException $e) {
// send 405 response
} catch (Exception $e) {
// send 500 response
}
```
And elsewhere we have various controller classes, each of which ask for their own individual
dependencies:
```php
<?php
class WidgetController {
private $request;
private $mapper;
public function __construct(Request $request, WidgetDataMapper $mapper) {
$this->request = $request;
$this->mapper = $mapper;
}
public function get() {
// do something for HTTP GET requests
}
public function post() {
// do something for HTTP POST requests
}
}
```
In the above example the auryn DIC allows us to write fully testable, fully OO controllers that ask
for their dependencies. Because the DIC recursively instantiates the dependencies of objects it
creates we have no need to pass around a Service Locator. Additionally, this example shows how we can
eliminate evil Singletons using the sharing capabilities of the auryn DIC. In the front controller
code, we share the request object so that any classes instantiated by the `Auryn\Injector` that ask
for a `Request` will receive the same instance. This feature not only helps eliminate Singletons,
but also the need for hard-to-test `static` properties.

View File

@@ -0,0 +1,37 @@
<?php
require __DIR__ . "/../vendor/autoload.php";
class A {
private $a;
private $b;
public function __construct(stdClass $a, stdClass $b) {
$this->a = $a;
$this->b = $b;
}
public function print() {
print $this->a->foo;
print $this->b->foo;
print PHP_EOL;
}
}
$injector = new WPML\Auryn\Injector;
$injector->define(A::class, [
"+a" => function () {
$std = new stdClass;
$std->foo = "foo";
return $std;
},
"+b" => function () {
$std = new stdClass;
$std->foo = "bar";
return $std;
},
]);
$a = $injector->make(A::class);
$a->print();

View File

@@ -0,0 +1,24 @@
<?php
use Auryn\Injector;
require __DIR__ . "/../vendor/autoload.php";
$injector = new Injector;
class A {
public $std;
public function __construct(stdClass $std) {
$this->std = $std;
}
}
$stdClass = new stdClass;
$stdClass->foo = "foobar";
$a = $injector->make(A::class, [
":std" => $stdClass,
]);
print $a->std->foo . PHP_EOL;

View File

@@ -0,0 +1,108 @@
<?php
namespace WPML\Auryn;
class CachingReflector implements Reflector
{
const CACHE_KEY_CLASSES = 'auryn.refls.classes.';
const CACHE_KEY_CTORS = 'auryn.refls.ctors.';
const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.';
const CACHE_KEY_FUNCS = 'auryn.refls.funcs.';
const CACHE_KEY_METHODS = 'auryn.refls.methods.';
private $reflector;
private $cache;
public function __construct(Reflector $reflector = null, ReflectionCache $cache = null)
{
$this->reflector = $reflector ?: new StandardReflector;
$this->cache = $cache ?: new ReflectionCacheArray;
}
public function getClass($class)
{
$cacheKey = self::CACHE_KEY_CLASSES . strtolower($class);
if (($reflectionClass = $this->cache->fetch($cacheKey)) === false) {
$this->cache->store($cacheKey, $reflectionClass = $this->reflector->getClass($class));
}
return $reflectionClass;
}
public function getCtor($class)
{
$cacheKey = self::CACHE_KEY_CTORS . strtolower($class);
if (($reflectedCtor = $this->cache->fetch($cacheKey)) === false) {
$this->cache->store($cacheKey, $reflectedCtor = $this->reflector->getCtor($class));
}
return $reflectedCtor;
}
public function getCtorParams($class)
{
$cacheKey = self::CACHE_KEY_CTOR_PARAMS . strtolower($class);
if (($reflectedCtorParams = $this->cache->fetch($cacheKey)) === false) {
$this->cache->store($cacheKey, $reflectedCtorParams = $this->reflector->getCtorParams($class));
}
return $reflectedCtorParams;
}
public function getParamTypeHint(\ReflectionFunctionAbstract $function, \ReflectionParameter $param)
{
$lowParam = strtolower($param->name);
if ($function instanceof \ReflectionMethod) {
$lowClass = strtolower($function->class);
$lowMethod = strtolower($function->name);
$paramCacheKey = self::CACHE_KEY_CLASSES . "{$lowClass}.{$lowMethod}.param-{$lowParam}";
} else {
$lowFunc = strtolower($function->name);
$paramCacheKey = (strpos($lowFunc, '{closure}') === false)
? self::CACHE_KEY_FUNCS . ".{$lowFunc}.param-{$lowParam}"
: null;
}
$typeHint = ($paramCacheKey === null) ? false : $this->cache->fetch($paramCacheKey);
if (false === $typeHint) {
$typeHint = $this->reflector->getParamTypeHint($function, $param);
if ($paramCacheKey !== null) {
$this->cache->store($paramCacheKey, $typeHint);
}
}
return $typeHint;
}
public function getFunction($functionName)
{
$lowFunc = strtolower($functionName);
$cacheKey = self::CACHE_KEY_FUNCS . $lowFunc;
if (($reflectedFunc = $this->cache->fetch($cacheKey)) === false) {
$this->cache->store($cacheKey, $reflectedFunc = $this->reflector->getFunction($functionName));
}
return $reflectedFunc;
}
public function getMethod($classNameOrInstance, $methodName)
{
$className = is_string($classNameOrInstance)
? $classNameOrInstance
: get_class($classNameOrInstance);
$cacheKey = self::CACHE_KEY_METHODS . strtolower($className) . '.' . strtolower($methodName);
if (($reflectedMethod = $this->cache->fetch($cacheKey)) === false) {
$this->cache->store($cacheKey, $reflectedMethod = $this->reflector->getMethod($classNameOrInstance, $methodName));
}
return $reflectedMethod;
}
}

View File

@@ -0,0 +1,7 @@
<?php
namespace WPML\Auryn;
class ConfigException extends InjectorException
{
}

View File

@@ -0,0 +1,82 @@
<?php
namespace WPML\Auryn;
class Executable
{
private $callableReflection;
private $invocationObject;
private $isInstanceMethod;
public function __construct(\ReflectionFunctionAbstract $reflFunc, $invocationObject = null)
{
if ($reflFunc instanceof \ReflectionMethod) {
$this->isInstanceMethod = true;
$this->setMethodCallable($reflFunc, $invocationObject);
} else {
$this->isInstanceMethod = false;
$this->callableReflection = $reflFunc;
}
}
private function setMethodCallable(\ReflectionMethod $reflection, $invocationObject)
{
if (is_object($invocationObject)) {
$this->callableReflection = $reflection;
$this->invocationObject = $invocationObject;
} elseif ($reflection->isStatic()) {
$this->callableReflection = $reflection;
} else {
throw new \InvalidArgumentException(
'ReflectionMethod callables must specify an invocation object'
);
}
}
public function __invoke()
{
$args = func_get_args();
$reflection = $this->callableReflection;
if ($this->isInstanceMethod) {
return $reflection->invokeArgs($this->invocationObject, $args);
}
return $this->callableReflection->isClosure()
? $this->invokeClosureCompat($reflection, $args)
: $reflection->invokeArgs($args);
}
/**
* @TODO Remove this extra indirection when 5.3 support is dropped
*/
private function invokeClosureCompat($reflection, $args)
{
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
$scope = $reflection->getClosureScopeClass();
$closure = \Closure::bind(
$reflection->getClosure(),
$reflection->getClosureThis(),
$scope ? $scope->name : null
);
return call_user_func_array($closure, $args);
} else {
return $reflection->invokeArgs($args);
}
}
public function getCallableReflection()
{
return $this->callableReflection;
}
public function getInvocationObject()
{
return $this->invocationObject;
}
public function isInstanceMethod()
{
return $this->isInstanceMethod;
}
}

View File

@@ -0,0 +1,67 @@
<?php
namespace WPML\Auryn;
class InjectionException extends InjectorException
{
public $dependencyChain;
public function __construct(array $inProgressMakes, $message = "", $code = 0, \Exception $previous = null)
{
$this->dependencyChain = array_flip($inProgressMakes);
ksort($this->dependencyChain);
parent::__construct($message, $code, $previous);
}
/**
* Add a human readable version of the invalid callable to the standard 'invalid invokable' message.
*/
public static function fromInvalidCallable(
array $inProgressMakes,
$callableOrMethodStr,
\Exception $previous = null
) {
$callableString = null;
if (is_string($callableOrMethodStr)) {
$callableString .= $callableOrMethodStr;
} else if (is_array($callableOrMethodStr) &&
array_key_exists(0, $callableOrMethodStr) &&
array_key_exists(0, $callableOrMethodStr)) {
if (is_string($callableOrMethodStr[0]) && is_string($callableOrMethodStr[1])) {
$callableString .= $callableOrMethodStr[0].'::'.$callableOrMethodStr[1];
} else if (is_object($callableOrMethodStr[0]) && is_string($callableOrMethodStr[1])) {
$callableString .= sprintf(
"[object(%s), '%s']",
get_class($callableOrMethodStr[0]),
$callableOrMethodStr[1]
);
}
}
if ($callableString) {
// Prevent accidental usage of long strings from filling logs.
$callableString = substr($callableString, 0, 250);
$message = sprintf(
"%s. Invalid callable was '%s'",
Injector::M_INVOKABLE,
$callableString
);
} else {
$message = Injector::M_INVOKABLE;
}
return new self($inProgressMakes, $message, Injector::E_INVOKABLE, $previous);
}
/**
* Returns the hierarchy of dependencies that were being created when
* the exception occurred.
* @return array
*/
public function getDependencyChain()
{
return $this->dependencyChain;
}
}

View File

@@ -0,0 +1,757 @@
<?php
namespace WPML\Auryn;
class Injector
{
const A_RAW = ':';
const A_DELEGATE = '+';
const A_DEFINE = '@';
const I_BINDINGS = 1;
const I_DELEGATES = 2;
const I_PREPARES = 4;
const I_ALIASES = 8;
const I_SHARES = 16;
const I_ALL = 31;
const E_NON_EMPTY_STRING_ALIAS = 1;
const M_NON_EMPTY_STRING_ALIAS = "Invalid alias: non-empty string required at arguments 1 and 2";
const E_SHARED_CANNOT_ALIAS = 2;
const M_SHARED_CANNOT_ALIAS = "Cannot alias class %s to %s because it is currently shared";
const E_SHARE_ARGUMENT = 3;
const M_SHARE_ARGUMENT = "%s::share() requires a string class name or object instance at Argument 1; %s specified";
const E_ALIASED_CANNOT_SHARE = 4;
const M_ALIASED_CANNOT_SHARE = "Cannot share class %s because it is currently aliased to %s";
const E_INVOKABLE = 5;
const M_INVOKABLE = "Invalid invokable: callable or provisional string required";
const E_NON_PUBLIC_CONSTRUCTOR = 6;
const M_NON_PUBLIC_CONSTRUCTOR = "Cannot instantiate protected/private constructor in class %s";
const E_NEEDS_DEFINITION = 7;
const M_NEEDS_DEFINITION = "Injection definition required for %s %s";
const E_MAKE_FAILURE = 8;
const M_MAKE_FAILURE = "Could not make %s: %s";
const E_UNDEFINED_PARAM = 9;
const M_UNDEFINED_PARAM = "No definition available to provision typeless parameter \$%s at position %d in %s()%s";
const E_DELEGATE_ARGUMENT = 10;
const M_DELEGATE_ARGUMENT = "%s::delegate expects a valid callable or executable class::method string at Argument 2%s";
const E_CYCLIC_DEPENDENCY = 11;
const M_CYCLIC_DEPENDENCY = "Detected a cyclic dependency while provisioning %s";
const E_MAKING_FAILED = 12;
const M_MAKING_FAILED = "Making %s did not result in an object, instead result is of type '%s'";
private $reflector;
private $classDefinitions = array();
private $paramDefinitions = array();
private $aliases = array();
private $shares = array();
private $prepares = array();
private $delegates = array();
private $inProgressMakes = array();
public function __construct(Reflector $reflector = null)
{
$this->reflector = $reflector ?: new CachingReflector;
}
public function __clone()
{
$this->inProgressMakes = array();
}
/**
* Define instantiation directives for the specified class
*
* @param string $name The class (or alias) whose constructor arguments we wish to define
* @param array $args An array mapping parameter names to values/instructions
* @return self
*/
public function define($name, array $args)
{
list(, $normalizedName) = $this->resolveAlias($name);
$this->classDefinitions[$normalizedName] = $args;
return $this;
}
/**
* Assign a global default value for all parameters named $paramName
*
* Global parameter definitions are only used for parameters with no typehint, pre-defined or
* call-time definition.
*
* @param string $paramName The parameter name for which this value applies
* @param mixed $value The value to inject for this parameter name
* @return self
*/
public function defineParam($paramName, $value)
{
$this->paramDefinitions[$paramName] = $value;
return $this;
}
/**
* Define an alias for all occurrences of a given typehint
*
* Use this method to specify implementation classes for interface and abstract class typehints.
*
* @param string $original The typehint to replace
* @param string $alias The implementation name
* @throws ConfigException if any argument is empty or not a string
* @return self
*/
public function alias($original, $alias)
{
if (empty($original) || !is_string($original)) {
throw new ConfigException(
self::M_NON_EMPTY_STRING_ALIAS,
self::E_NON_EMPTY_STRING_ALIAS
);
}
if (empty($alias) || !is_string($alias)) {
throw new ConfigException(
self::M_NON_EMPTY_STRING_ALIAS,
self::E_NON_EMPTY_STRING_ALIAS
);
}
$originalNormalized = $this->normalizeName($original);
if (isset($this->shares[$originalNormalized])) {
throw new ConfigException(
sprintf(
self::M_SHARED_CANNOT_ALIAS,
$this->normalizeName(get_class($this->shares[$originalNormalized])),
$alias
),
self::E_SHARED_CANNOT_ALIAS
);
}
if (array_key_exists($originalNormalized, $this->shares)) {
$aliasNormalized = $this->normalizeName($alias);
$this->shares[$aliasNormalized] = null;
unset($this->shares[$originalNormalized]);
}
$this->aliases[$originalNormalized] = $alias;
return $this;
}
private function normalizeName($className)
{
return ltrim(strtolower($className), '\\');
}
/**
* Share the specified class/instance across the Injector context
*
* @param mixed $nameOrInstance The class or object to share
* @throws ConfigException if $nameOrInstance is not a string or an object
* @return self
*/
public function share($nameOrInstance)
{
if (is_string($nameOrInstance)) {
$this->shareClass($nameOrInstance);
} elseif (is_object($nameOrInstance)) {
$this->shareInstance($nameOrInstance);
} else {
throw new ConfigException(
sprintf(
self::M_SHARE_ARGUMENT,
__CLASS__,
gettype($nameOrInstance)
),
self::E_SHARE_ARGUMENT
);
}
return $this;
}
private function shareClass($nameOrInstance)
{
list(, $normalizedName) = $this->resolveAlias($nameOrInstance);
$this->shares[$normalizedName] = isset($this->shares[$normalizedName])
? $this->shares[$normalizedName]
: null;
}
private function resolveAlias($name)
{
$normalizedName = $this->normalizeName($name);
if (isset($this->aliases[$normalizedName])) {
$name = $this->aliases[$normalizedName];
$normalizedName = $this->normalizeName($name);
}
return array($name, $normalizedName);
}
private function shareInstance($obj)
{
$normalizedName = $this->normalizeName(get_class($obj));
if (isset($this->aliases[$normalizedName])) {
// You cannot share an instance of a class name that is already aliased
throw new ConfigException(
sprintf(
self::M_ALIASED_CANNOT_SHARE,
$normalizedName,
$this->aliases[$normalizedName]
),
self::E_ALIASED_CANNOT_SHARE
);
}
$this->shares[$normalizedName] = $obj;
}
/**
* Register a prepare callable to modify/prepare objects of type $name after instantiation
*
* Any callable or provisionable invokable may be specified. Preparers are passed two
* arguments: the instantiated object to be mutated and the current Injector instance.
*
* @param string $name
* @param mixed $callableOrMethodStr Any callable or provisionable invokable method
* @throws InjectionException if $callableOrMethodStr is not a callable.
* See https://github.com/rdlowrey/auryn#injecting-for-execution
* @return self
*/
public function prepare($name, $callableOrMethodStr)
{
if ($this->isExecutable($callableOrMethodStr) === false) {
throw InjectionException::fromInvalidCallable(
$this->inProgressMakes,
$callableOrMethodStr
);
}
list(, $normalizedName) = $this->resolveAlias($name);
$this->prepares[$normalizedName] = $callableOrMethodStr;
return $this;
}
private function isExecutable($exe)
{
if (is_callable($exe)) {
return true;
}
if (is_string($exe) && method_exists($exe, '__invoke')) {
return true;
}
if (is_array($exe) && isset($exe[0], $exe[1]) && method_exists($exe[0], $exe[1])) {
return true;
}
return false;
}
/**
* Delegate the creation of $name instances to the specified callable
*
* @param string $name
* @param mixed $callableOrMethodStr Any callable or provisionable invokable method
* @throws ConfigException if $callableOrMethodStr is not a callable.
* @return self
*/
public function delegate($name, $callableOrMethodStr)
{
if ($this->isExecutable($callableOrMethodStr) === false) {
$errorDetail = '';
if (is_string($callableOrMethodStr)) {
$errorDetail = " but received '$callableOrMethodStr'";
} elseif (is_array($callableOrMethodStr) &&
count($callableOrMethodStr) === 2 &&
array_key_exists(0, $callableOrMethodStr) &&
array_key_exists(1, $callableOrMethodStr)
) {
if (is_string($callableOrMethodStr[0]) && is_string($callableOrMethodStr[1])) {
$errorDetail = " but received ['".$callableOrMethodStr[0]."', '".$callableOrMethodStr[1]."']";
}
}
throw new ConfigException(
sprintf(self::M_DELEGATE_ARGUMENT, __CLASS__, $errorDetail),
self::E_DELEGATE_ARGUMENT
);
}
$normalizedName = $this->normalizeName($name);
$this->delegates[$normalizedName] = $callableOrMethodStr;
return $this;
}
/**
* Retrieve stored data for the specified definition type
*
* Exposes introspection of existing binds/delegates/shares/etc for decoration and composition.
*
* @param string $nameFilter An optional class name filter
* @param int $typeFilter A bitmask of Injector::* type constant flags
* @return array
*/
public function inspect($nameFilter = null, $typeFilter = null)
{
$result = array();
$name = $nameFilter ? $this->normalizeName($nameFilter) : null;
if (empty($typeFilter)) {
$typeFilter = self::I_ALL;
}
$types = array(
self::I_BINDINGS => "classDefinitions",
self::I_DELEGATES => "delegates",
self::I_PREPARES => "prepares",
self::I_ALIASES => "aliases",
self::I_SHARES => "shares"
);
foreach ($types as $type => $source) {
if ($typeFilter & $type) {
$result[$type] = $this->filter($this->{$source}, $name);
}
}
return $result;
}
private function filter($source, $name)
{
if (empty($name)) {
return $source;
} elseif (array_key_exists($name, $source)) {
return array($name => $source[$name]);
} else {
return array();
}
}
/**
* Instantiate/provision a class instance
*
* @param string $name
* @param array $args
* @throws InjectionException if a cyclic gets detected when provisioning
* @return mixed
*/
public function make($name, array $args = array())
{
list($className, $normalizedClass) = $this->resolveAlias($name);
if (isset($this->inProgressMakes[$normalizedClass])) {
throw new InjectionException(
$this->inProgressMakes,
sprintf(
self::M_CYCLIC_DEPENDENCY,
$className
),
self::E_CYCLIC_DEPENDENCY
);
}
$this->inProgressMakes[$normalizedClass] = count($this->inProgressMakes);
// isset() is used specifically here because classes may be marked as "shared" before an
// instance is stored. In these cases the class is "shared," but it has a null value and
// instantiation is needed.
if (isset($this->shares[$normalizedClass])) {
unset($this->inProgressMakes[$normalizedClass]);
return $this->shares[$normalizedClass];
}
try {
if (isset($this->delegates[$normalizedClass])) {
$executable = $this->buildExecutable($this->delegates[$normalizedClass]);
$reflectionFunction = $executable->getCallableReflection();
$args = $this->provisionFuncArgs($reflectionFunction, $args, null, $className);
$obj = call_user_func_array(array($executable, '__invoke'), $args);
} else {
$obj = $this->provisionInstance($className, $normalizedClass, $args);
}
$obj = $this->prepareInstance($obj, $normalizedClass);
if (array_key_exists($normalizedClass, $this->shares)) {
$this->shares[$normalizedClass] = $obj;
}
unset($this->inProgressMakes[$normalizedClass]);
}
catch (\Throwable $exception) {
unset($this->inProgressMakes[$normalizedClass]);
throw $exception;
}
catch (\Exception $exception) {
unset($this->inProgressMakes[$normalizedClass]);
throw $exception;
}
return $obj;
}
private function provisionInstance($className, $normalizedClass, array $definition)
{
try {
$ctor = $this->reflector->getCtor($className);
if (!$ctor) {
$obj = $this->instantiateWithoutCtorParams($className);
} elseif (!$ctor->isPublic()) {
throw new InjectionException(
$this->inProgressMakes,
sprintf(self::M_NON_PUBLIC_CONSTRUCTOR, $className),
self::E_NON_PUBLIC_CONSTRUCTOR
);
} elseif ($ctorParams = $this->reflector->getCtorParams($className)) {
$reflClass = $this->reflector->getClass($className);
$definition = isset($this->classDefinitions[$normalizedClass])
? array_replace($this->classDefinitions[$normalizedClass], $definition)
: $definition;
$args = $this->provisionFuncArgs($ctor, $definition, $ctorParams, $className);
$obj = $reflClass->newInstanceArgs($args);
} else {
$obj = $this->instantiateWithoutCtorParams($className);
}
return $obj;
} catch (\ReflectionException $e) {
throw new InjectionException(
$this->inProgressMakes,
sprintf(self::M_MAKE_FAILURE, $className, $e->getMessage()),
self::E_MAKE_FAILURE,
$e
);
}
}
private function instantiateWithoutCtorParams($className)
{
$reflClass = $this->reflector->getClass($className);
if (!$reflClass->isInstantiable()) {
$type = $reflClass->isInterface() ? 'interface' : 'abstract class';
throw new InjectionException(
$this->inProgressMakes,
sprintf(self::M_NEEDS_DEFINITION, $type, $className),
self::E_NEEDS_DEFINITION
);
}
return new $className;
}
private function provisionFuncArgs(\ReflectionFunctionAbstract $reflFunc, array $definition, array $reflParams = null, $className = null)
{
$args = array();
// @TODO store this in ReflectionStorage
if (!isset($reflParams)) {
$reflParams = $reflFunc->getParameters();
}
foreach ($reflParams as $i => $reflParam) {
$name = $reflParam->name;
if (isset($definition[$i]) || array_key_exists($i, $definition)) {
// indexed arguments take precedence over named parameters
$arg = $definition[$i];
} elseif (isset($definition[$name]) || array_key_exists($name, $definition)) {
// interpret the param as a class name to be instantiated
$arg = $this->make($definition[$name]);
} elseif (($prefix = self::A_RAW . $name) && (isset($definition[$prefix]) || array_key_exists($prefix, $definition))) {
// interpret the param as a raw value to be injected
$arg = $definition[$prefix];
} elseif (($prefix = self::A_DELEGATE . $name) && isset($definition[$prefix])) {
// interpret the param as an invokable delegate
$arg = $this->buildArgFromDelegate($name, $definition[$prefix]);
} elseif (($prefix = self::A_DEFINE . $name) && isset($definition[$prefix])) {
// interpret the param as a class definition
$arg = $this->buildArgFromParamDefineArr($definition[$prefix]);
} elseif (!$arg = $this->buildArgFromTypeHint($reflFunc, $reflParam)) {
$arg = $this->buildArgFromReflParam($reflParam, $className);
if ($arg === null && PHP_VERSION_ID >= 50600 && $reflParam->isVariadic()) {
// buildArgFromReflParam might return null in case the parameter is optional
// in case of variadics, the parameter is optional, but null might not be allowed
continue;
}
}
$args[] = $arg;
}
return $args;
}
private function buildArgFromParamDefineArr($definition)
{
if (!is_array($definition)) {
throw new InjectionException(
$this->inProgressMakes
// @TODO Add message
);
}
if (!isset($definition[0], $definition[1])) {
throw new InjectionException(
$this->inProgressMakes
// @TODO Add message
);
}
list($class, $definition) = $definition;
return $this->make($class, $definition);
}
private function buildArgFromDelegate($paramName, $callableOrMethodStr)
{
if ($this->isExecutable($callableOrMethodStr) === false) {
throw InjectionException::fromInvalidCallable(
$this->inProgressMakes,
$callableOrMethodStr
);
}
$executable = $this->buildExecutable($callableOrMethodStr);
return $executable($paramName, $this);
}
private function buildArgFromTypeHint(\ReflectionFunctionAbstract $reflFunc, \ReflectionParameter $reflParam)
{
$typeHint = $this->reflector->getParamTypeHint($reflFunc, $reflParam);
if (!$typeHint) {
$obj = null;
} elseif ($reflParam->isDefaultValueAvailable()) {
$normalizedName = $this->normalizeName($typeHint);
// Injector has been told explicitly how to make this type
if (isset($this->aliases[$normalizedName]) ||
isset($this->delegates[$normalizedName]) ||
isset($this->shares[$normalizedName])) {
$obj = $this->make($typeHint);
} else {
$obj = $reflParam->getDefaultValue();
}
} else {
$obj = $this->make($typeHint);
}
return $obj;
}
private function buildArgFromReflParam(\ReflectionParameter $reflParam, $className = null)
{
if (array_key_exists($reflParam->name, $this->paramDefinitions)) {
$arg = $this->paramDefinitions[$reflParam->name];
} elseif ($reflParam->isDefaultValueAvailable()) {
$arg = $reflParam->getDefaultValue();
} elseif ($reflParam->isOptional()) {
// This branch is required to work around PHP bugs where a parameter is optional
// but has no default value available through reflection. Specifically, PDO exhibits
// this behavior.
$arg = null;
} else {
$reflFunc = $reflParam->getDeclaringFunction();
$classDeclare = ($reflFunc instanceof \ReflectionMethod)
? " declared in " . $reflFunc->getDeclaringClass()->name . "::"
: "";
$classWord = ($reflFunc instanceof \ReflectionMethod)
? $className . '::'
: '';
$funcWord = $classWord . $reflFunc->name;
throw new InjectionException(
$this->inProgressMakes,
sprintf(
self::M_UNDEFINED_PARAM,
$reflParam->name,
$reflParam->getPosition(),
$funcWord,
$classDeclare
),
self::E_UNDEFINED_PARAM
);
}
return $arg;
}
private function prepareInstance($obj, $normalizedClass)
{
if (isset($this->prepares[$normalizedClass])) {
$prepare = $this->prepares[$normalizedClass];
$executable = $this->buildExecutable($prepare);
$result = $executable($obj, $this);
if ($result instanceof $normalizedClass) {
$obj = $result;
}
}
$interfaces = @class_implements($obj);
if ($interfaces === false) {
throw new InjectionException(
$this->inProgressMakes,
sprintf(
self::M_MAKING_FAILED,
$normalizedClass,
gettype($obj)
),
self::E_MAKING_FAILED
);
}
if (empty($interfaces)) {
return $obj;
}
$interfaces = array_flip(array_map(array($this, 'normalizeName'), $interfaces));
$prepares = array_intersect_key($this->prepares, $interfaces);
foreach ($prepares as $interfaceName => $prepare) {
$executable = $this->buildExecutable($prepare);
$result = $executable($obj, $this);
if ($result instanceof $normalizedClass) {
$obj = $result;
}
}
return $obj;
}
/**
* Invoke the specified callable or class::method string, provisioning dependencies along the way
*
* @param mixed $callableOrMethodStr A valid PHP callable or a provisionable ClassName::methodName string
* @param array $args Optional array specifying params with which to invoke the provisioned callable
* @throws \Auryn\InjectionException
* @return mixed Returns the invocation result returned from calling the generated executable
*/
public function execute($callableOrMethodStr, array $args = array())
{
list($reflFunc, $invocationObj) = $this->buildExecutableStruct($callableOrMethodStr);
$executable = new Executable($reflFunc, $invocationObj);
$args = $this->provisionFuncArgs($reflFunc, $args, null, $invocationObj === null ? null : get_class($invocationObj));
return call_user_func_array(array($executable, '__invoke'), $args);
}
/**
* Provision an Executable instance from any valid callable or class::method string
*
* @param mixed $callableOrMethodStr A valid PHP callable or a provisionable ClassName::methodName string
* @return \Auryn\Executable
*/
public function buildExecutable($callableOrMethodStr)
{
try {
list($reflFunc, $invocationObj) = $this->buildExecutableStruct($callableOrMethodStr);
} catch (\ReflectionException $e) {
throw InjectionException::fromInvalidCallable(
$this->inProgressMakes,
$callableOrMethodStr,
$e
);
}
return new Executable($reflFunc, $invocationObj);
}
private function buildExecutableStruct($callableOrMethodStr)
{
if (is_string($callableOrMethodStr)) {
$executableStruct = $this->buildExecutableStructFromString($callableOrMethodStr);
} elseif ($callableOrMethodStr instanceof \Closure) {
$callableRefl = new \ReflectionFunction($callableOrMethodStr);
$executableStruct = array($callableRefl, null);
} elseif (is_object($callableOrMethodStr) && is_callable($callableOrMethodStr)) {
$invocationObj = $callableOrMethodStr;
$callableRefl = $this->reflector->getMethod($invocationObj, '__invoke');
$executableStruct = array($callableRefl, $invocationObj);
} elseif (is_array($callableOrMethodStr)
&& isset($callableOrMethodStr[0], $callableOrMethodStr[1])
&& count($callableOrMethodStr) === 2
) {
$executableStruct = $this->buildExecutableStructFromArray($callableOrMethodStr);
} else {
throw InjectionException::fromInvalidCallable(
$this->inProgressMakes,
$callableOrMethodStr
);
}
return $executableStruct;
}
private function buildExecutableStructFromString($stringExecutable)
{
if (function_exists($stringExecutable)) {
$callableRefl = $this->reflector->getFunction($stringExecutable);
$executableStruct = array($callableRefl, null);
} elseif (method_exists($stringExecutable, '__invoke')) {
$invocationObj = $this->make($stringExecutable);
$callableRefl = $this->reflector->getMethod($invocationObj, '__invoke');
$executableStruct = array($callableRefl, $invocationObj);
} elseif (strpos($stringExecutable, '::') !== false) {
list($class, $method) = explode('::', $stringExecutable, 2);
$executableStruct = $this->buildStringClassMethodCallable($class, $method);
} else {
throw InjectionException::fromInvalidCallable(
$this->inProgressMakes,
$stringExecutable
);
}
return $executableStruct;
}
private function buildStringClassMethodCallable($class, $method)
{
$relativeStaticMethodStartPos = strpos($method, 'parent::');
if ($relativeStaticMethodStartPos === 0) {
$childReflection = $this->reflector->getClass($class);
$class = $childReflection->getParentClass()->name;
$method = substr($method, $relativeStaticMethodStartPos + 8);
}
list($className, $normalizedClass) = $this->resolveAlias($class);
$reflectionMethod = $this->reflector->getMethod($className, $method);
if ($reflectionMethod->isStatic()) {
return array($reflectionMethod, null);
}
$instance = $this->make($className);
// If the class was delegated, the instance may not be of the type
// $class but some other type. We need to get the reflection on the
// actual class to be able to call the method correctly.
$reflectionMethod = $this->reflector->getMethod($instance, $method);
return array($reflectionMethod, $instance);
}
private function buildExecutableStructFromArray($arrayExecutable)
{
list($classOrObj, $method) = $arrayExecutable;
if (is_object($classOrObj) && method_exists($classOrObj, $method)) {
$callableRefl = $this->reflector->getMethod($classOrObj, $method);
$executableStruct = array($callableRefl, $classOrObj);
} elseif (is_string($classOrObj)) {
$executableStruct = $this->buildStringClassMethodCallable($classOrObj, $method);
} else {
throw InjectionException::fromInvalidCallable(
$this->inProgressMakes,
$arrayExecutable
);
}
return $executableStruct;
}
}

View File

@@ -0,0 +1,7 @@
<?php
namespace WPML\Auryn;
class InjectorException extends \Exception
{
}

View File

@@ -0,0 +1,9 @@
<?php
namespace WPML\Auryn;
interface ReflectionCache
{
public function fetch($key);
public function store($key, $data);
}

View File

@@ -0,0 +1,41 @@
<?php
namespace WPML\Auryn;
class ReflectionCacheApc implements ReflectionCache
{
private $localCache;
private $timeToLive = 5;
public function __construct(ReflectionCache $localCache = null)
{
$this->localCache = $localCache ?: new ReflectionCacheArray;
}
public function setTimeToLive($seconds)
{
$seconds = (int) $seconds;
$this->timeToLive = ($seconds > 0) ? $seconds : $this->timeToLive;
return $this;
}
public function fetch($key)
{
$localData = $this->localCache->fetch($key);
if ($localData != false) {
return $localData;
} else {
$success = null; // stupid by-ref parameter that scrutinizer complains about
$data = apc_fetch($key, $success);
return $success ? $data : false;
}
}
public function store($key, $data)
{
$this->localCache->store($key, $data);
apc_store($key, $data, $this->timeToLive);
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace WPML\Auryn;
class ReflectionCacheArray implements ReflectionCache
{
private $cache = array();
public function fetch($key)
{
// The additional isset() check here improves performance but we also
// need array_key_exists() because some cached values === NULL.
return (isset($this->cache[$key]) || array_key_exists($key, $this->cache))
? $this->cache[$key]
: false;
}
public function store($key, $data)
{
$this->cache[$key] = $data;
}
}

View File

@@ -0,0 +1,61 @@
<?php
namespace WPML\Auryn;
interface Reflector
{
/**
* Retrieves ReflectionClass instances, caching them for future retrieval
*
* @param string $class
* @return \ReflectionClass
*/
public function getClass($class);
/**
* Retrieves and caches the constructor (ReflectionMethod) for the specified class
*
* @param string $class
* @return \ReflectionMethod
*/
public function getCtor($class);
/**
* Retrieves and caches an array of constructor parameters for the given class
*
* @param string $class
* @return \ReflectionParameter[]
*/
public function getCtorParams($class);
/**
* Retrieves the class type-hint from a given ReflectionParameter
*
* There is no way to directly access a parameter's type-hint without
* instantiating a new ReflectionClass instance and calling its getName()
* method. This method stores the results of this approach so that if
* the same parameter type-hint or ReflectionClass is needed again we
* already have it cached.
*
* @param \ReflectionFunctionAbstract $function
* @param \ReflectionParameter $param
*/
public function getParamTypeHint(\ReflectionFunctionAbstract $function, \ReflectionParameter $param);
/**
* Retrieves and caches a reflection for the specified function
*
* @param string $functionName
* @return \ReflectionFunction
*/
public function getFunction($functionName);
/**
* Retrieves and caches a reflection for the specified class method
*
* @param mixed $classNameOrInstance
* @param string $methodName
* @return \ReflectionMethod
*/
public function getMethod($classNameOrInstance, $methodName);
}

View File

@@ -0,0 +1,53 @@
<?php
namespace WPML\Auryn;
class StandardReflector implements Reflector
{
public function getClass($class)
{
return new \ReflectionClass($class);
}
public function getCtor($class)
{
$reflectionClass = new \ReflectionClass($class);
return $reflectionClass->getConstructor();
}
public function getCtorParams($class)
{
return ($reflectedCtor = $this->getCtor($class))
? $reflectedCtor->getParameters()
: null;
}
public function getParamTypeHint( \ReflectionFunctionAbstract $function, \ReflectionParameter $param ) {
if ( version_compare( '7.1.0', phpversion(), '<' ) ) {
$reflectionClass = $param->getType() && ! $param->getType()->isBuiltin()
? new \ReflectionClass( $param->getType()->getName() )
: null;
} else {
$reflectionClass = $param->getClass();
}
return ( $reflectionClass )
? $reflectionClass->getName()
: null;
}
public function getFunction($functionName)
{
return new \ReflectionFunction($functionName);
}
public function getMethod($classNameOrInstance, $methodName)
{
$className = is_string($classNameOrInstance)
? $classNameOrInstance
: get_class($classNameOrInstance);
return new \ReflectionMethod($className, $methodName);
}
}

View File

@@ -0,0 +1,11 @@
# OTGS Icons
The fonts are generated by using [Fantasticicon](https://www.npmjs.com/package/fantasticon) npm package.
How to update the icons:
1. Upload new SVG icons to "/icons/src/" folder
2. Run npm script "fix-svg-icons" that will fix prepare all SVG images and place them inside "/icons/dest/" folder
3. run npm script "create-otgs-font" to generate new font files
This project also uses [SVG Fixer](https://www.npmjs.com/package/oslllo-svg-fixer) npm package that attempts to fix SVG files by turning it into a fill / single path (and making it font compatible).

View File

@@ -0,0 +1,440 @@
@font-face {
font-family: "otgs-icons";
src: url("../fonts/otgs-icons.eot?16575179b57ec55d963f4c764ec29a4e#iefix") format("embedded-opentype"),
url("../fonts/otgs-icons.ttf?16575179b57ec55d963f4c764ec29a4e") format("truetype"),
url("../fonts/otgs-icons.woff?16575179b57ec55d963f4c764ec29a4e") format("woff"),
url("../fonts/otgs-icons.woff2?16575179b57ec55d963f4c764ec29a4e") format("woff2");
}
[class*="otgs-ico"] {
display: inline-block;
transform: translate(0, 0);
}
[class*="otgs-ico"]:focus {
outline: none;
}
[class^="otgs-ico-"]:before, [class*=" otgs-ico-"]:before, [data-otgs-ico]:before {
font-family: otgs-icons !important;
font-style: normal;
font-weight: normal !important;
font-variant: normal;
text-transform: none;
line-height: 1;
vertical-align: text-bottom;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.otgs-ico-32:before {
font-size: 32px;
}
[data-otgs-ico]:before {
content: attr(data-otgs-ico);
}
.otgs-ico-note-add:before {
content: "\61";
}
.otgs-ico-note-add-o:before {
content: "\62";
}
.otgs-ico-translated:before {
content: "\63";
}
.otgs-ico-yes:before {
content: "\64";
}
.otgs-ico-in-progress:before {
content: "\65";
}
.otgs-ico-copy:before {
content: "\66";
}
.otgs-ico-copy-o:before {
content: "\67";
}
.otgs-ico-note-edit:before {
content: "\69";
}
.otgs-ico-add:before {
content: "\6b";
}
.otgs-ico-refresh:before {
content: "\6c";
}
.otgs-ico-no:before {
content: "\6e";
}
.otgs-ico-not-translated:before {
content: "\6f";
}
.otgs-ico-delete:before {
content: "\70";
}
.otgs-ico-waiting:before {
content: "\71";
}
.otgs-ico-warning:before {
content: "\73";
}
.otgs-ico-original:before {
content: "\74";
}
.otgs-ico-needs-update:before {
content: "\75";
}
.otgs-ico-cred:before {
content: "\77";
}
.otgs-ico-layouts:before {
content: "\78";
}
.otgs-ico-module-manager:before {
content: "\79";
}
.otgs-ico-toolset:before {
content: "\7a";
}
.otgs-ico-types:before {
content: "\41";
}
.otgs-ico-views:before {
content: "\42";
}
.otgs-ico-edit:before {
content: "\68";
}
.otgs-ico-duplicate:before {
content: "\6d";
}
.otgs-ico-basket:before {
content: "\72";
}
.otgs-ico-discoverwp:before {
content: "\43";
}
.otgs-ico-otgs:before {
content: "\45";
}
.otgs-ico-wrench:before {
content: "\46";
}
.otgs-ico-link:before {
content: "\47";
}
.otgs-ico-envelope-o:before {
content: "\48";
}
.otgs-ico-user:before {
content: "\49";
}
.otgs-ico-wpml-cms-nav:before {
content: "\4a";
}
.otgs-ico-wpml-media:before {
content: "\4b";
}
.otgs-ico-wpml-string-translation:before {
content: "\4c";
}
.otgs-ico-wpml-translation-management:before {
content: "\4d";
}
.otgs-ico-picture:before {
content: "\4e";
}
.otgs-ico-toolset-training:before {
content: "\4f";
}
.otgs-ico-access-title:before {
content: "\50";
}
.otgs-ico-views-title:before {
content: "\51";
}
.otgs-ico-cred-title:before {
content: "\52";
}
.otgs-ico-layouts-title:before {
content: "\53";
}
.otgs-ico-types-title:before {
content: "\54";
}
.otgs-ico-module-manager-title:before {
content: "\55";
}
.otgs-ico-access:before {
content: "\76";
}
.otgs-ico-bullhorn:before {
content: "\56";
}
.otgs-ico-comment:before {
content: "\57";
}
.otgs-ico-quote:before {
content: "\58";
}
.otgs-ico-star:before {
content: "\5a";
}
.otgs-ico-wpml:before {
content: "\44";
}
.otgs-ico-edit-note-o:before {
content: "\6a";
}
.otgs-ico-spinner:before {
content: "\30";
}
.otgs-ico-thumbsup:before {
content: "\59";
}
.otgs-ico-status:before {
content: "\31";
}
.otgs-ico-file:before {
content: "\32";
}
.otgs-ico-cancel:before {
content: "\33";
}
.otgs-ico-download:before {
content: "\34";
}
.otgs-ico-close:before {
content: "\f158";
}
.otgs-ico-help:before {
content: "\f223";
}
.otgs-ico-info:before {
content: "\f348";
}
.otgs-ico-caret-up:before {
content: "\f142";
}
.otgs-ico-caret-right:before {
content: "\f139";
}
.otgs-ico-caret-down:before {
content: "\f140";
}
.otgs-ico-caret-left:before {
content: "\f141";
}
.otgs-ico-unlink:before {
content: "\f225";
}
.otgs-ico-translation:before {
content: "\f326";
}
.otgs-ico-new:before {
content: "\f534";
}
.otgs-ico-mail:before {
content: "\f466";
}
.otgs-ico-chat:before {
content: "\f125";
}
.otgs-ico-sent:before {
content: "\f310";
}
.otgs-ico-lock:before {
content: "\f160";
}
.otgs-ico-unlock:before {
content: "\f528";
}
.otgs-ico-media:before {
content: "\f233";
}
.otgs-ico-wpml-sticky-links:before {
content: "\f103";
}
.otgs-ico-add-circle-o:before {
content: "\f619";
}
.otgs-ico-add-circle:before {
content: "\f61a";
}
.otgs-ico-align-justify:before {
content: "\f61b";
}
.otgs-ico-archive:before {
content: "\f61c";
}
.otgs-ico-arrow-down:before {
content: "\f61d";
}
.otgs-ico-arrow-left:before {
content: "\f61e";
}
.otgs-ico-arrow-right:before {
content: "\f61f";
}
.otgs-ico-arrow-up:before {
content: "\f620";
}
.otgs-ico-bell-o:before {
content: "\f621";
}
.otgs-ico-bell:before {
content: "\f622";
}
.otgs-ico-bug:before {
content: "\f623";
}
.otgs-ico-bulb:before {
content: "\f624";
}
.otgs-ico-calculator:before {
content: "\f625";
}
.otgs-ico-check-circle-o:before {
content: "\f626";
}
.otgs-ico-check-circle:before {
content: "\f627";
}
.otgs-ico-clock:before {
content: "\f628";
}
.otgs-ico-delete-o:before {
content: "\f629";
}
.otgs-ico-doc:before {
content: "\f62a";
}
.otgs-ico-drag:before {
content: "\f62b";
}
.otgs-ico-envelope:before {
content: "\f62c";
}
.otgs-ico-external link:before {
content: "\f62d";
}
.otgs-ico-eye-hide:before {
content: "\f62e";
}
.otgs-ico-eye-show:before {
content: "\f62f";
}
.otgs-ico-flag:before {
content: "\f630";
}
.otgs-ico-frown:before {
content: "\f631";
}
.otgs-ico-history:before {
content: "\f632";
}
.otgs-ico-info-o:before {
content: "\f633";
}
.otgs-ico-key:before {
content: "\f634";
}
.otgs-ico-laptop:before {
content: "\f635";
}
.otgs-ico-lightning:before {
content: "\f636";
}
.otgs-ico-list-ul:before {
content: "\f637";
}
.otgs-ico-loading:before {
content: "\f638";
}
.otgs-ico-map:before {
content: "\f639";
}
.otgs-ico-meh:before {
content: "\f63a";
}
.otgs-ico-minus:before {
content: "\f63b";
}
.otgs-ico-needs-review:before {
content: "\f63c";
}
.otgs-ico-note-o:before {
content: "\f63d";
}
.otgs-ico-note:before {
content: "\f63e";
}
.otgs-ico-ok:before {
content: "\f63f";
}
.otgs-ico-photo:before {
content: "\f640";
}
.otgs-ico-plug:before {
content: "\f641";
}
.otgs-ico-question-circle-o:before {
content: "\f642";
}
.otgs-ico-question-circle:before {
content: "\f643";
}
.otgs-ico-search:before {
content: "\f644";
}
.otgs-ico-smile:before {
content: "\f645";
}
.otgs-ico-star-half:before {
content: "\f646";
}
.otgs-ico-star-o:before {
content: "\f647";
}
.otgs-ico-trash:before {
content: "\f648";
}
.otgs-ico-unarchive:before {
content: "\f649";
}
.otgs-ico-undo:before {
content: "\f64a";
}
.otgs-ico-upload:before {
content: "\f64b";
}
.otgs-ico-warning-o:before {
content: "\f64c";
}
.otgs-ico-calendar:before {
content: "\f64d";
}
.otgs-ico-filter:before {
content: "\f64e";
}
.otgs-ico-review:before {
content: "\f64f";
}
.otgs-ico-lightning-o:before {
content: "\f650";
}
.otgs-ico-external-link:before {
content: "\f101";
}
.otgs-ico-lifesaver:before {
content: "\f102";
}
/***************************** OTGS ico aliases **************************/
@-webkit-keyframes spin {
0% {transform: rotate(0deg);}
100% {transform: rotate(360deg);}
}

View File

@@ -0,0 +1,177 @@
module.exports = {
name: 'otgs-icons',
inputDir: './icons/dest', // (required)
outputDir: './css/', // (required)
fontTypes: ['eot', 'ttf', 'woff', 'woff2'],
assetTypes: ['scss', 'css', 'html'],
prefix: 'otgs-ico',
fontsUrl: '../fonts',
normalize: true,
formatOptions: {
// Pass options directly to `svgicons2svgfont`
woff: {
// Woff Extended Metadata Block - see https://www.w3.org/TR/WOFF/#Metadata
metadata: '...'
},
json: {
// render the JSON human readable with two spaces indentation (default is none, so minified)
indent: 2
},
ts: {
// select what kind of types you want to generate (default `['enum', 'constant', 'literalId', 'literalKey']`)
types: ['constant', 'literalId'],
// render the types with `'` instead of `"` (default is `"`)
singleQuotes: true
}
},
templates: {
html: './templates/html.hbs',
scss: './templates/scss.hbs',
css: './templates/css.hbs'
},
pathOptions: {
eot: './fonts/otgs-icons.eot',
ttf: './fonts/otgs-icons.ttf',
woff: './fonts/otgs-icons.woff',
woff2: './fonts/otgs-icons.woff2',
css: './css/otgs-icons.css',
scss: './css/otgs-icons.scss',
html: './icons-overview.html'
},
// set old codes from previous icon set so we don't need to handle old markup
codepoints: {
// old codes
'note-add': 97, // decimal representation of 0xe000
'note-add-o': 98,
'translated': 99,
'yes': 100,
'in-progress': 101,
'copy': 102,
'copy-o': 103,
'note-edit': 105,
'add': 107,
'refresh': 108,
'no': 110,
'not-translated': 111,
'delete': 112,
'waiting': 113,
'warning': 115,
'original': 116,
'needs-update': 117,
'cred': 119,
'layouts': 120,
'module-manager': 121,
'toolset': 122,
'types': 65,
'views': 66,
'edit': 104,
'duplicate': 109,
'basket': 114,
'discoverwp': 67,
'otgs': 69,
'wrench': 70,
'link': 71,
'envelope-o': 72,
'user': 73,
'wpml-cms-nav': 74,
'wpml-media': 75,
'wpml-string-translation': 76,
'wpml-translation-management': 77,
'picture': 78,
'toolset-training': 79,
'access-title': 80,
'views-title': 81,
'cred-title': 82,
'layouts-title': 83,
'types-title': 84,
'module-manager-title': 85,
'access': 118,
'bullhorn': 86,
'comment': 87,
'quote': 88,
'star': 90,
'wpml': 68,
'edit-note-o': 106,
'spinner': 48,
'thumbsup': 89,
'status': 49,
'file': 50,
'cancel': 51,
'download': 52,
'close': 61784,
'help': 61987,
'info': 62280,
'caret-up': 61762,
'caret-right': 61753,
'caret-down': 61760,
'caret-left': 61761,
'unlink': 61989,
'translation': 62246,
'new': 62772,
'mail': 62566,
'chat': 61733,
'sent': 62224,
'lock': 61792,
'unlock': 62760,
'media': 62003,
'wpml-sticky-links': 61699,
// new codes
'add-circle-o': 63001,
'add-circle': 63002,
'align-justify': 63003,
'archive': 63004,
'arrow-down': 63005,
'arrow-left': 63006,
'arrow-right': 63007,
'arrow-up': 63008,
'bell-o': 63009,
'bell': 63010,
'bug': 63011,
'bulb': 63012,
'calculator': 63013,
'check-circle-o': 63014,
'check-circle': 63015,
'clock': 63016,
'delete-o': 63017,
'doc': 63018,
'drag': 63019,
'envelope': 63020,
'external link': 63021,
'eye-hide': 63022,
'eye-show': 63023,
'flag': 63024,
'frown': 63025,
'history': 63026,
'info-o': 63027,
'key': 63028,
'laptop': 63029,
'lightning': 63030,
'list-ul': 63031,
'loading': 63032,
'map': 63033,
'meh': 63034,
'minus': 63035,
'needs-review': 63036,
'note-o': 63037,
'note': 63038,
'ok': 63039,
'photo': 63040,
'plug': 63041,
'question-circle-o': 63042,
'question-circle': 63043,
'search': 63044,
'smile': 63045,
'star-half': 63046,
'star-o': 63047,
'trash': 63048,
'unarchive': 63049,
'undo': 63050,
'upload': 63051,
'warning-o': 63052,
'calendar': 63053,
'filter': 63054,
'review': 63055,
'lightning-o': 63056,
}
};

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 44 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.948 0.115 C 7.799 0.194,7.694 0.299,7.615 0.448 C 7.500 0.666,7.500 0.667,7.500 2.833 L 7.500 5.000 5.333 5.000 C 3.167 5.000,3.166 5.000,2.948 5.115 C 2.799 5.194,2.694 5.299,2.615 5.448 L 2.500 5.666 2.500 17.500 L 2.500 29.334 2.615 29.552 C 2.694 29.701,2.799 29.806,2.949 29.885 L 3.167 30.001 15.025 29.988 L 26.883 29.975 27.072 29.831 C 27.429 29.559,27.402 30.605,27.388 17.430 L 27.375 5.507 27.272 5.366 C 27.215 5.289,27.070 5.174,26.949 5.113 C 26.731 5.001,26.710 5.000,24.566 5.000 L 22.403 5.000 22.389 2.754 C 22.375 0.576,22.372 0.503,22.272 0.366 C 22.215 0.289,22.070 0.174,21.949 0.113 C 21.733 0.002,21.697 0.000,19.938 0.000 C 18.528 0.000,18.113 0.015,17.986 0.069 C 17.791 0.152,17.576 0.374,17.503 0.566 C 17.469 0.657,17.450 1.458,17.450 2.853 L 17.450 5.000 14.951 5.000 L 12.453 5.000 12.439 2.763 L 12.425 0.525 12.305 0.357 C 12.060 0.013,11.990 0.002,9.970 0.001 C 8.182 0.000,8.164 0.001,7.948 0.115 M15.707 9.578 C 16.215 9.672,16.999 10.039,17.400 10.371 C 17.977 10.850,18.437 11.559,18.651 12.301 C 18.738 12.605,18.764 12.859,18.786 13.656 L 18.813 14.636 19.183 14.668 C 19.720 14.713,20.005 14.880,20.217 15.275 L 20.325 15.475 20.339 20.087 C 20.353 24.591,20.351 24.703,20.254 24.891 C 20.127 25.141,19.852 25.381,19.613 25.450 C 19.481 25.489,18.059 25.501,14.846 25.490 L 10.268 25.475 10.059 25.337 C 9.945 25.261,9.789 25.105,9.713 24.991 L 9.575 24.782 9.575 20.100 L 9.575 15.417 9.725 15.174 C 9.935 14.835,10.215 14.697,10.766 14.663 L 11.187 14.637 11.214 13.656 C 11.236 12.865,11.262 12.604,11.347 12.309 C 11.612 11.390,12.177 10.618,12.943 10.129 C 13.809 9.577,14.721 9.395,15.707 9.578 M14.717 11.207 C 13.895 11.304,13.167 11.971,12.978 12.800 C 12.926 13.031,12.900 13.393,12.900 13.897 L 12.900 14.650 15.025 14.650 L 17.150 14.650 17.149 13.988 C 17.147 12.813,17.015 12.325,16.568 11.847 C 16.072 11.317,15.489 11.116,14.717 11.207 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.000 0.032 C 9.596 0.360,5.670 2.489,3.015 5.987 C 1.498 7.987,0.554 10.270,0.136 12.949 C -0.016 13.929,-0.016 16.071,0.136 17.051 C 0.778 21.165,2.767 24.541,5.991 26.988 C 7.982 28.498,10.278 29.447,12.949 29.864 C 13.929 30.016,16.071 30.016,17.051 29.864 C 20.696 29.295,23.794 27.652,26.120 25.054 C 28.181 22.750,29.372 20.204,29.864 17.051 C 30.016 16.071,30.016 13.929,29.864 12.949 C 29.447 10.278,28.498 7.982,26.988 5.991 C 24.507 2.722,20.962 0.665,16.875 0.124 C 16.290 0.047,14.550 -0.009,14.000 0.032 M16.918 2.151 C 18.316 2.359,19.393 2.698,20.725 3.348 C 22.061 4.000,23.103 4.746,24.178 5.822 C 25.254 6.897,26.000 7.939,26.652 9.275 C 27.127 10.248,27.356 10.858,27.580 11.748 C 27.881 12.940,27.967 13.666,27.967 15.000 C 27.967 15.956,27.947 16.306,27.859 16.875 C 27.727 17.731,27.471 18.763,27.226 19.427 C 26.782 20.631,25.947 22.114,25.129 23.150 C 24.726 23.660,23.570 24.804,23.050 25.206 C 20.061 27.522,16.418 28.436,12.725 27.797 C 10.665 27.441,8.692 26.556,6.950 25.206 C 6.430 24.804,5.274 23.660,4.871 23.150 C 4.055 22.115,3.218 20.631,2.776 19.432 C 2.525 18.752,2.275 17.746,2.143 16.893 C 1.985 15.865,1.985 14.135,2.143 13.107 C 2.275 12.254,2.525 11.248,2.776 10.568 C 3.218 9.368,4.057 7.880,4.872 6.850 C 5.254 6.367,6.367 5.254,6.850 4.872 C 8.885 3.262,11.271 2.302,13.854 2.052 C 14.580 1.982,16.118 2.031,16.918 2.151 M14.575 6.217 C 14.375 6.309,14.154 6.535,14.055 6.750 C 13.984 6.905,13.973 7.334,13.961 10.438 L 13.947 13.950 10.461 13.951 C 7.197 13.952,6.962 13.958,6.775 14.043 C 6.436 14.197,6.151 14.612,6.151 14.950 C 6.151 15.288,6.436 15.703,6.775 15.857 C 6.962 15.942,7.197 15.948,10.463 15.949 L 13.950 15.950 13.950 19.373 C 13.950 21.566,13.969 22.883,14.002 23.039 C 14.099 23.488,14.524 23.846,14.964 23.849 C 15.213 23.850,15.486 23.732,15.689 23.536 C 16.001 23.234,16.000 23.252,16.000 19.416 L 16.000 15.950 19.527 15.950 C 23.414 15.950,23.252 15.963,23.590 15.636 C 23.692 15.537,23.783 15.377,23.831 15.213 C 23.899 14.977,23.899 14.923,23.831 14.687 C 23.783 14.523,23.692 14.363,23.590 14.264 C 23.252 13.937,23.414 13.950,19.528 13.950 L 16.003 13.950 15.989 10.413 L 15.975 6.875 15.854 6.663 C 15.671 6.344,15.405 6.182,15.032 6.164 C 14.846 6.155,14.666 6.176,14.575 6.217 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.604 0.056 C 12.934 0.115,12.012 0.278,11.240 0.472 C 9.292 0.963,7.233 2.000,5.574 3.324 C 4.934 3.835,3.835 4.934,3.324 5.574 C 2.000 7.233,0.963 9.292,0.472 11.240 C -0.161 13.752,-0.161 16.248,0.472 18.760 C 0.963 20.708,2.000 22.767,3.324 24.426 C 3.835 25.066,4.934 26.165,5.574 26.676 C 7.759 28.420,10.224 29.478,13.050 29.884 C 13.934 30.011,16.068 30.010,16.950 29.883 C 18.737 29.626,20.046 29.225,21.628 28.450 C 23.135 27.711,24.395 26.808,25.601 25.601 C 26.808 24.395,27.711 23.135,28.450 21.628 C 29.225 20.046,29.626 18.737,29.883 16.950 C 30.011 16.067,30.011 13.933,29.883 13.050 C 29.626 11.263,29.225 9.954,28.450 8.372 C 27.711 6.865,26.808 5.605,25.601 4.399 C 24.396 3.193,23.136 2.290,21.628 1.550 C 19.880 0.692,18.180 0.214,16.300 0.051 C 15.633 -0.007,14.283 -0.005,13.604 0.056 M15.375 6.245 C 15.608 6.353,15.821 6.566,15.897 6.766 C 15.933 6.860,15.950 8.062,15.950 10.428 L 15.950 13.950 19.463 13.950 C 21.724 13.950,23.041 13.969,23.161 14.002 C 23.563 14.114,23.850 14.508,23.850 14.950 C 23.850 15.406,23.568 15.774,23.125 15.895 C 22.989 15.932,21.803 15.950,19.438 15.950 L 15.950 15.950 15.950 19.527 C 15.950 23.000,15.947 23.110,15.850 23.299 C 15.650 23.693,15.166 23.911,14.745 23.799 C 14.448 23.720,14.208 23.529,14.096 23.281 C 14.007 23.086,14.002 22.884,14.001 19.513 L 14.000 15.950 10.532 15.950 C 8.073 15.950,7.016 15.933,6.895 15.893 C 6.424 15.735,6.178 15.367,6.209 14.868 C 6.233 14.491,6.402 14.241,6.751 14.063 L 6.971 13.950 10.486 13.950 L 14.000 13.950 14.000 10.423 C 14.000 7.054,14.004 6.888,14.095 6.711 C 14.346 6.222,14.894 6.022,15.375 6.245 " stroke="none" fill-rule="evenodd" fill="black"></path></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.684 0.051 C 14.457 0.119,14.218 0.331,14.105 0.564 L 14.000 0.782 14.000 7.390 L 14.000 13.999 7.329 14.012 L 0.659 14.025 0.446 14.175 C -0.142 14.589,-0.142 15.411,0.446 15.825 L 0.659 15.975 7.329 15.988 L 14.000 16.001 14.000 22.618 L 14.000 29.234 14.116 29.455 C 14.180 29.576,14.329 29.743,14.446 29.825 C 14.632 29.956,14.702 29.975,15.000 29.975 C 15.299 29.975,15.369 29.956,15.554 29.825 C 15.671 29.742,15.813 29.585,15.871 29.475 C 15.975 29.275,15.975 29.260,15.988 22.638 L 16.001 16.001 22.667 15.988 L 29.332 15.975 29.535 15.841 C 29.848 15.634,29.975 15.390,29.975 14.996 C 29.975 14.724,29.952 14.633,29.841 14.465 C 29.767 14.354,29.621 14.209,29.516 14.144 L 29.325 14.025 22.663 14.012 L 16.000 13.999 16.000 7.443 C 16.000 2.411,15.986 0.839,15.939 0.682 C 15.791 0.189,15.205 -0.105,14.684 0.051 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 978 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.684 0.551 C 0.303 0.666,-0.000 1.090,0.000 1.508 C 0.000 1.810,0.178 2.136,0.446 2.325 L 0.659 2.475 14.995 2.475 L 29.332 2.475 29.535 2.341 C 29.847 2.134,29.975 1.890,29.975 1.500 C 29.975 1.110,29.847 0.866,29.535 0.659 L 29.332 0.525 15.079 0.517 C 7.239 0.512,0.762 0.527,0.684 0.551 M0.684 9.551 C 0.303 9.666,-0.000 10.090,0.000 10.508 C 0.000 10.810,0.178 11.136,0.446 11.325 L 0.659 11.475 14.995 11.475 L 29.332 11.475 29.535 11.341 C 29.847 11.134,29.975 10.890,29.975 10.500 C 29.975 10.110,29.847 9.866,29.535 9.659 L 29.332 9.525 15.079 9.517 C 7.239 9.512,0.762 9.527,0.684 9.551 M0.684 18.551 C 0.303 18.666,-0.000 19.090,0.000 19.508 C 0.000 19.810,0.178 20.136,0.446 20.325 L 0.659 20.475 14.995 20.475 L 29.332 20.475 29.535 20.341 C 29.847 20.134,29.975 19.890,29.975 19.500 C 29.975 19.110,29.847 18.866,29.535 18.659 L 29.332 18.525 15.079 18.517 C 7.239 18.512,0.762 18.527,0.684 18.551 M0.684 27.551 C 0.303 27.666,-0.000 28.090,0.000 28.508 C 0.000 28.810,0.178 29.136,0.446 29.325 L 0.659 29.475 14.995 29.475 L 29.332 29.475 29.535 29.341 C 29.847 29.134,29.975 28.890,29.975 28.500 C 29.975 28.110,29.847 27.866,29.535 27.659 L 29.332 27.525 15.079 27.517 C 7.239 27.512,0.762 27.527,0.684 27.551 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.684 0.051 C 3.303 0.166,3.000 0.590,3.000 1.008 C 3.000 1.310,3.178 1.636,3.446 1.825 L 3.659 1.975 14.992 1.975 L 26.325 1.975 26.516 1.856 C 26.621 1.791,26.767 1.646,26.841 1.535 C 26.953 1.366,26.975 1.277,26.975 1.000 C 26.975 0.723,26.953 0.634,26.841 0.465 C 26.767 0.354,26.621 0.209,26.516 0.144 L 26.325 0.025 15.075 0.017 C 8.888 0.012,3.762 0.027,3.684 0.051 M0.684 5.051 C 0.457 5.119,0.218 5.331,0.105 5.564 L 0.000 5.782 0.000 17.508 L 0.000 29.234 0.116 29.455 C 0.180 29.576,0.329 29.743,0.446 29.825 L 0.659 29.975 14.995 29.975 L 29.332 29.975 29.535 29.841 C 29.646 29.767,29.791 29.621,29.856 29.516 L 29.975 29.325 29.975 17.500 L 29.975 5.675 29.856 5.484 C 29.791 5.379,29.646 5.233,29.535 5.159 L 29.332 5.025 15.079 5.017 C 7.239 5.012,0.762 5.027,0.684 5.051 M28.000 17.500 L 28.000 28.000 15.000 28.000 L 2.000 28.000 2.000 17.500 L 2.000 7.000 15.000 7.000 L 28.000 7.000 28.000 17.500 M14.583 12.073 C 14.346 12.157,14.170 12.317,14.045 12.561 C 13.954 12.738,13.950 12.903,13.950 16.185 L 13.950 19.624 12.938 18.617 C 12.381 18.063,11.847 17.571,11.751 17.523 C 11.408 17.351,10.843 17.453,10.589 17.734 C 10.369 17.978,10.282 18.511,10.415 18.812 C 10.448 18.887,11.381 19.857,12.489 20.967 C 14.588 23.071,14.623 23.100,15.033 23.100 C 15.393 23.100,15.624 22.905,17.585 20.939 C 18.937 19.584,19.519 18.967,19.577 18.828 C 19.734 18.452,19.638 17.931,19.368 17.694 C 19.072 17.434,18.577 17.358,18.249 17.523 C 18.153 17.571,17.597 18.086,17.012 18.667 L 15.950 19.724 15.950 16.325 C 15.950 14.107,15.931 12.859,15.897 12.736 C 15.790 12.351,15.338 12.001,14.950 12.003 C 14.854 12.004,14.688 12.035,14.583 12.073 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.684 0.048 C 14.454 0.122,14.217 0.333,14.105 0.564 L 14.000 0.782 14.000 13.678 L 14.000 26.574 11.613 24.189 C 9.975 22.554,9.167 21.780,9.039 21.727 C 8.624 21.555,8.125 21.694,7.831 22.063 C 7.627 22.319,7.590 22.744,7.743 23.060 C 7.816 23.211,8.828 24.254,11.161 26.583 C 14.647 30.063,14.576 29.999,15.000 29.999 C 15.424 29.999,15.353 30.063,18.839 26.583 C 21.172 24.254,22.184 23.211,22.257 23.060 C 22.410 22.744,22.373 22.319,22.169 22.063 C 21.875 21.694,21.376 21.555,20.961 21.727 C 20.833 21.780,20.025 22.554,18.388 24.189 L 16.001 26.573 15.988 13.624 L 15.975 0.675 15.856 0.484 C 15.687 0.212,15.416 0.048,15.093 0.023 C 14.946 0.012,14.762 0.023,14.684 0.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 836 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.925 7.749 C 6.637 7.892,0.180 14.362,0.077 14.611 C -0.028 14.864,-0.020 15.178,0.099 15.422 C 0.165 15.558,1.294 16.720,3.511 18.932 C 7.110 22.523,6.947 22.383,7.481 22.339 C 8.120 22.286,8.528 21.575,8.273 20.961 C 8.220 20.833,7.446 20.025,5.811 18.388 L 3.427 16.001 16.376 15.988 L 29.325 15.975 29.516 15.856 C 29.621 15.791,29.767 15.646,29.841 15.535 C 29.953 15.366,29.975 15.277,29.975 15.000 C 29.975 14.723,29.953 14.634,29.841 14.465 C 29.767 14.354,29.621 14.209,29.516 14.144 L 29.325 14.025 16.377 14.012 L 3.428 13.999 5.833 11.587 C 8.445 8.967,8.383 9.044,8.339 8.519 C 8.285 7.869,7.522 7.453,6.925 7.749 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 782 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M22.201 7.763 C 21.874 7.929,21.688 8.190,21.661 8.519 C 21.617 9.044,21.555 8.967,24.167 11.587 L 26.572 13.999 13.615 14.012 L 0.659 14.025 0.446 14.175 C -0.142 14.589,-0.142 15.411,0.446 15.825 L 0.659 15.975 13.615 15.988 L 26.572 16.001 24.167 18.413 C 21.560 21.028,21.617 20.957,21.660 21.473 C 21.715 22.139,22.452 22.552,23.060 22.257 C 23.211 22.184,24.251 21.175,26.583 18.839 C 30.061 15.354,29.999 15.424,29.999 15.000 C 29.999 14.576,30.063 14.647,26.583 11.161 C 24.371 8.946,23.208 7.815,23.072 7.749 C 22.801 7.617,22.475 7.622,22.201 7.763 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 712 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.575 0.120 C 14.208 0.295,7.790 6.734,7.700 7.018 C 7.500 7.645,7.903 8.288,8.527 8.340 C 9.043 8.383,8.972 8.440,11.588 5.833 L 14.000 3.427 14.000 16.331 L 14.000 29.234 14.116 29.455 C 14.180 29.576,14.329 29.743,14.446 29.825 C 14.631 29.955,14.702 29.975,14.992 29.975 C 15.391 29.975,15.633 29.850,15.841 29.535 L 15.975 29.332 15.988 16.380 L 16.001 3.428 18.413 5.833 C 21.033 8.445,20.956 8.383,21.481 8.339 C 22.138 8.285,22.547 7.536,22.251 6.928 C 22.099 6.615,15.696 0.237,15.400 0.103 C 15.104 -0.030,14.880 -0.025,14.575 0.120 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 698 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.075 1.421 C 9.992 1.458,9.854 1.564,9.767 1.657 C 9.658 1.773,8.944 3.252,7.472 6.413 L 5.335 11.000 3.230 11.000 C 1.936 11.000,1.053 11.020,0.939 11.052 C 0.548 11.161,0.250 11.559,0.250 11.973 C 0.250 12.251,3.824 29.255,3.921 29.441 C 4.024 29.637,4.300 29.878,4.495 29.943 C 4.738 30.024,25.262 30.024,25.505 29.943 C 25.700 29.878,25.976 29.637,26.079 29.441 C 26.176 29.255,29.750 12.251,29.750 11.973 C 29.750 11.559,29.452 11.161,29.061 11.052 C 28.947 11.020,28.064 11.000,26.770 11.000 L 24.664 11.000 22.528 6.413 C 21.057 3.254,20.342 1.773,20.233 1.657 C 20.027 1.437,19.815 1.350,19.486 1.350 C 18.876 1.350,18.392 1.964,18.548 2.543 C 18.578 2.653,19.466 4.596,20.523 6.859 L 22.443 10.975 18.722 10.988 C 16.675 10.995,13.325 10.995,11.279 10.988 L 7.557 10.975 9.478 6.857 C 10.535 4.591,11.423 2.649,11.453 2.540 C 11.609 1.958,11.121 1.348,10.503 1.352 C 10.350 1.353,10.158 1.384,10.075 1.421 M25.953 20.500 L 24.375 28.000 14.999 28.000 L 5.623 28.000 4.184 21.163 C 3.393 17.402,2.682 14.027,2.605 13.663 L 2.464 13.000 14.998 13.000 L 27.532 13.000 25.953 20.500 M14.684 16.048 C 14.454 16.122,14.217 16.333,14.105 16.564 C 14.001 16.779,14.000 16.823,14.000 20.508 L 14.000 24.234 14.116 24.455 C 14.180 24.576,14.329 24.743,14.446 24.825 C 14.631 24.955,14.702 24.975,14.992 24.975 C 15.391 24.975,15.633 24.849,15.841 24.535 L 15.975 24.332 15.975 20.504 L 15.975 16.675 15.856 16.484 C 15.687 16.212,15.416 16.048,15.093 16.023 C 14.946 16.012,14.762 16.023,14.684 16.048 M9.684 17.048 C 9.454 17.122,9.217 17.333,9.105 17.564 C 9.002 17.777,9.000 17.840,9.000 20.508 L 9.000 23.234 9.116 23.455 C 9.180 23.576,9.329 23.743,9.446 23.825 C 9.631 23.955,9.702 23.975,9.992 23.975 C 10.391 23.975,10.633 23.849,10.841 23.535 L 10.975 23.332 10.975 20.504 L 10.975 17.675 10.856 17.484 C 10.687 17.212,10.416 17.048,10.093 17.023 C 9.946 17.012,9.762 17.023,9.684 17.048 M19.684 17.048 C 19.454 17.122,19.217 17.333,19.105 17.564 C 19.002 17.777,19.000 17.840,19.000 20.508 L 19.000 23.234 19.116 23.455 C 19.180 23.576,19.329 23.743,19.446 23.825 C 19.631 23.955,19.702 23.975,19.992 23.975 C 20.391 23.975,20.633 23.849,20.841 23.535 L 20.975 23.332 20.975 20.504 L 20.975 17.675 20.856 17.484 C 20.687 17.212,20.416 17.048,20.093 17.023 C 19.946 17.012,19.762 17.023,19.684 17.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.684 0.048 C 14.454 0.122,14.217 0.333,14.105 0.564 C 14.005 0.771,14.000 0.857,14.000 2.413 L 14.000 4.044 13.763 4.077 C 11.405 4.408,9.409 5.413,7.799 7.082 C 7.537 7.353,7.219 7.710,7.093 7.875 C 5.968 9.347,5.253 11.129,5.053 12.961 C 5.019 13.272,5.000 15.338,5.000 18.721 L 5.000 23.995 3.329 24.010 L 1.658 24.025 1.446 24.175 C 0.858 24.589,0.858 25.411,1.446 25.825 L 1.659 25.975 14.992 25.975 L 28.325 25.975 28.516 25.856 C 28.621 25.791,28.767 25.646,28.841 25.535 C 28.952 25.367,28.975 25.276,28.975 25.004 C 28.975 24.610,28.848 24.366,28.535 24.159 L 28.333 24.025 26.666 24.010 L 25.000 23.995 25.000 18.721 C 25.000 15.338,24.981 13.272,24.947 12.961 C 24.689 10.604,23.636 8.453,21.939 6.821 C 20.350 5.293,18.477 4.391,16.240 4.078 L 16.005 4.045 15.990 2.360 C 15.975 0.686,15.974 0.674,15.856 0.484 C 15.687 0.212,15.416 0.048,15.093 0.023 C 14.946 0.012,14.762 0.023,14.684 0.048 M15.825 6.050 C 19.610 6.467,22.531 9.383,22.947 13.161 C 22.981 13.473,23.000 15.487,23.000 18.823 L 23.000 24.000 14.998 24.000 L 6.996 24.000 7.012 18.538 C 7.030 12.447,7.014 12.736,7.386 11.575 C 8.540 7.968,12.097 5.640,15.825 6.050 M12.684 28.050 C 12.302 28.167,12.000 28.590,12.000 29.008 C 12.000 29.310,12.178 29.636,12.446 29.825 L 12.659 29.975 14.992 29.975 L 17.325 29.975 17.516 29.856 C 17.621 29.791,17.767 29.646,17.841 29.535 C 17.953 29.366,17.975 29.277,17.975 29.000 C 17.975 28.723,17.953 28.634,17.841 28.465 C 17.767 28.354,17.621 28.209,17.516 28.144 L 17.325 28.025 15.075 28.016 C 13.838 28.011,12.762 28.026,12.684 28.050 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.684 0.048 C 14.454 0.122,14.217 0.333,14.105 0.564 C 14.005 0.771,14.000 0.857,14.000 2.413 L 14.000 4.044 13.763 4.077 C 11.405 4.408,9.409 5.413,7.799 7.082 C 7.537 7.353,7.219 7.710,7.093 7.875 C 5.968 9.347,5.253 11.129,5.053 12.961 C 5.019 13.272,5.000 15.338,5.000 18.721 L 5.000 23.995 3.329 24.010 L 1.658 24.025 1.446 24.175 C 0.858 24.589,0.858 25.411,1.446 25.825 L 1.659 25.975 14.992 25.975 L 28.325 25.975 28.516 25.856 C 28.621 25.791,28.767 25.646,28.841 25.535 C 28.952 25.367,28.975 25.276,28.975 25.004 C 28.975 24.610,28.848 24.366,28.535 24.159 L 28.333 24.025 26.666 24.010 L 25.000 23.995 25.000 18.721 C 25.000 15.338,24.981 13.272,24.947 12.961 C 24.689 10.604,23.636 8.453,21.939 6.821 C 20.350 5.293,18.477 4.391,16.240 4.078 L 16.005 4.045 15.990 2.360 C 15.975 0.686,15.974 0.674,15.856 0.484 C 15.687 0.212,15.416 0.048,15.093 0.023 C 14.946 0.012,14.762 0.023,14.684 0.048 M12.684 28.050 C 12.302 28.167,12.000 28.590,12.000 29.008 C 12.000 29.310,12.178 29.636,12.446 29.825 L 12.659 29.975 14.992 29.975 L 17.325 29.975 17.516 29.856 C 17.621 29.791,17.767 29.646,17.841 29.535 C 17.953 29.366,17.975 29.277,17.975 29.000 C 17.975 28.723,17.953 28.634,17.841 28.465 C 17.767 28.354,17.621 28.209,17.516 28.144 L 17.325 28.025 15.075 28.016 C 13.838 28.011,12.762 28.026,12.684 28.050 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.170 0.457 C 7.880 0.522,7.578 0.797,7.480 1.084 C 7.277 1.679,7.314 1.733,9.253 3.677 L 10.901 5.328 10.654 5.517 C 10.255 5.821,9.487 6.653,9.188 7.106 C 8.503 8.142,8.105 9.303,8.019 10.513 L 7.985 10.998 4.322 11.011 L 0.659 11.025 0.446 11.175 C -0.142 11.589,-0.142 12.411,0.446 12.825 L 0.659 12.975 3.329 12.989 L 6.000 13.003 6.000 16.764 C 6.001 20.502,6.017 20.951,6.183 21.814 L 6.268 22.255 4.388 24.140 C 2.712 25.821,2.502 26.049,2.450 26.245 C 2.297 26.825,2.710 27.432,3.295 27.488 C 3.772 27.534,3.799 27.514,5.492 25.832 C 6.900 24.433,7.065 24.285,7.117 24.368 C 7.500 24.987,7.912 25.561,8.234 25.926 C 9.457 27.310,11.049 28.287,12.791 28.720 C 13.655 28.936,13.987 28.974,15.000 28.974 C 16.013 28.974,16.345 28.936,17.209 28.720 C 18.951 28.287,20.543 27.310,21.766 25.926 C 22.088 25.561,22.500 24.987,22.883 24.368 C 22.935 24.285,23.100 24.433,24.508 25.832 C 26.201 27.514,26.228 27.534,26.705 27.488 C 27.290 27.432,27.703 26.825,27.550 26.245 C 27.498 26.049,27.284 25.816,25.606 24.125 L 23.720 22.225 23.844 21.675 L 23.968 21.125 23.986 17.064 L 24.005 13.003 26.665 12.989 L 29.325 12.975 29.516 12.856 C 29.621 12.791,29.767 12.646,29.841 12.535 C 29.953 12.366,29.975 12.277,29.975 12.000 C 29.975 11.723,29.953 11.634,29.841 11.465 C 29.767 11.354,29.621 11.209,29.516 11.144 L 29.325 11.025 25.670 11.011 L 22.015 10.998 21.981 10.513 C 21.889 9.208,21.391 7.861,20.624 6.843 C 20.330 6.452,19.610 5.712,19.278 5.458 L 19.132 5.346 20.760 3.711 C 21.655 2.811,22.423 2.007,22.465 1.923 C 22.658 1.540,22.610 1.129,22.336 0.816 C 22.155 0.610,21.848 0.453,21.625 0.451 C 21.188 0.449,21.176 0.459,19.169 2.459 L 17.263 4.359 16.744 4.228 C 15.622 3.945,14.384 3.943,13.274 4.224 L 12.772 4.350 10.949 2.522 C 9.946 1.516,9.035 0.641,8.925 0.577 C 8.679 0.435,8.439 0.397,8.170 0.457 M16.198 6.150 C 16.684 6.269,17.394 6.591,17.856 6.903 C 19.030 7.695,19.849 9.124,19.980 10.613 L 20.014 11.000 15.000 11.000 L 9.986 11.000 10.020 10.613 C 10.125 9.422,10.644 8.299,11.471 7.471 C 12.218 6.724,13.217 6.221,14.291 6.050 C 14.729 5.981,15.714 6.032,16.198 6.150 M14.000 19.968 L 14.000 26.936 13.744 26.890 C 13.603 26.864,13.295 26.787,13.059 26.719 C 11.823 26.361,10.867 25.775,9.941 24.808 C 9.019 23.845,8.448 22.767,8.141 21.410 C 8.035 20.937,8.031 20.825,8.013 16.963 L 7.994 13.000 10.997 13.000 L 14.000 13.000 14.000 19.968 M21.987 16.963 C 21.969 20.825,21.965 20.937,21.859 21.410 C 21.552 22.767,20.981 23.845,20.059 24.808 C 19.133 25.775,18.177 26.361,16.941 26.719 C 16.705 26.787,16.397 26.864,16.256 26.890 L 16.000 26.936 16.000 19.968 L 16.000 13.000 19.003 13.000 L 22.006 13.000 21.987 16.963 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.900 0.058 C 12.708 0.171,11.299 0.573,10.179 1.122 C 6.738 2.808,4.434 6.125,4.052 9.943 C 3.621 14.251,5.856 18.505,9.663 20.621 L 10.000 20.809 10.000 23.021 L 10.000 25.234 10.116 25.455 C 10.180 25.576,10.329 25.743,10.446 25.825 L 10.659 25.975 14.992 25.975 L 19.325 25.975 19.516 25.856 C 19.621 25.791,19.767 25.647,19.841 25.535 L 19.975 25.332 19.989 23.069 L 20.004 20.806 20.339 20.620 C 23.284 18.983,25.349 16.018,25.875 12.671 C 26.045 11.594,26.022 10.065,25.822 9.016 C 25.396 6.791,24.351 4.809,22.773 3.233 C 20.434 0.896,17.218 -0.254,13.900 0.058 M15.889 2.053 C 17.021 2.176,17.910 2.428,18.897 2.904 C 20.765 3.804,22.170 5.203,23.079 7.068 C 23.605 8.146,23.852 9.064,23.960 10.337 C 24.055 11.464,23.906 12.716,23.546 13.813 C 23.370 14.349,22.853 15.431,22.548 15.899 C 21.586 17.378,20.205 18.539,18.557 19.256 L 18.025 19.488 18.012 21.744 L 17.999 24.000 16.999 24.000 L 16.000 24.000 16.000 18.404 C 16.000 15.326,15.986 12.773,15.970 12.729 C 15.943 12.659,16.037 12.650,16.810 12.650 C 17.649 12.650,17.690 12.645,17.944 12.519 C 18.690 12.147,18.680 11.086,17.927 10.744 C 17.739 10.659,17.536 10.652,15.003 10.651 C 12.326 10.650,12.278 10.652,12.061 10.757 C 11.638 10.962,11.415 11.468,11.549 11.917 C 11.630 12.187,11.965 12.522,12.225 12.594 C 12.335 12.624,12.793 12.650,13.243 12.650 L 14.062 12.650 14.032 12.763 C 14.015 12.824,14.001 15.378,14.001 18.438 L 14.000 24.000 13.001 24.000 L 12.001 24.000 11.988 21.744 L 11.975 19.488 11.443 19.256 C 10.110 18.676,9.010 17.858,8.107 16.775 C 7.601 16.168,7.301 15.699,6.923 14.925 C 6.142 13.326,5.867 11.712,6.073 9.947 C 6.599 5.454,10.371 2.067,14.914 2.006 C 15.184 2.003,15.622 2.024,15.889 2.053 M10.684 28.050 C 10.303 28.166,10.000 28.590,10.000 29.008 C 10.000 29.310,10.178 29.636,10.446 29.825 L 10.659 29.975 14.995 29.975 L 19.332 29.975 19.535 29.841 C 19.847 29.634,19.975 29.390,19.975 29.000 C 19.975 28.610,19.847 28.366,19.535 28.159 L 19.332 28.025 15.079 28.016 C 12.739 28.011,10.762 28.027,10.684 28.050 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M23.690 1.047 C 23.479 1.115,23.268 1.284,23.141 1.488 C 23.028 1.670,23.024 1.717,23.000 3.119 L 22.975 4.563 15.075 6.768 L 7.175 8.972 4.417 8.999 L 1.658 9.025 1.446 9.175 C 1.328 9.258,1.180 9.424,1.116 9.545 L 1.000 9.766 1.000 14.000 L 1.000 18.234 1.116 18.455 C 1.180 18.576,1.328 18.743,1.446 18.825 L 1.659 18.975 4.329 18.989 L 7.000 19.003 7.000 23.619 L 7.000 28.234 7.116 28.455 C 7.180 28.576,7.329 28.743,7.446 28.825 C 7.631 28.955,7.702 28.975,7.992 28.975 C 8.391 28.975,8.633 28.850,8.841 28.535 L 8.975 28.332 9.000 23.948 L 9.025 19.563 16.000 21.500 L 22.975 23.437 23.000 24.885 L 23.025 26.333 23.159 26.535 C 23.366 26.847,23.610 26.975,24.000 26.975 C 24.390 26.975,24.634 26.847,24.841 26.535 L 24.975 26.332 24.989 22.618 L 25.002 18.903 25.214 18.850 C 25.921 18.672,26.804 18.202,27.355 17.710 C 28.056 17.085,28.563 16.230,28.859 15.175 C 29.022 14.595,29.022 13.405,28.859 12.825 C 28.462 11.413,27.724 10.413,26.565 9.720 C 26.215 9.510,25.585 9.245,25.214 9.151 L 25.002 9.097 24.989 5.386 L 24.975 1.675 24.856 1.484 C 24.687 1.212,24.416 1.048,24.093 1.023 C 23.946 1.012,23.764 1.022,23.690 1.047 M23.000 14.000 C 23.000 18.043,22.984 21.350,22.965 21.350 C 22.947 21.350,19.797 20.479,15.965 19.415 L 9.000 17.481 9.000 14.001 L 9.000 10.522 15.938 8.590 C 19.753 7.528,22.903 6.657,22.938 6.654 C 22.987 6.651,23.000 8.151,23.000 14.000 M7.000 14.000 L 7.000 17.000 5.000 17.000 L 3.000 17.000 3.000 14.000 L 3.000 11.000 5.000 11.000 L 7.000 11.000 7.000 14.000 M25.418 11.361 C 25.872 11.599,26.439 12.184,26.668 12.650 C 27.255 13.850,27.040 15.174,26.105 16.102 C 25.767 16.437,25.221 16.800,25.056 16.800 C 25.015 16.800,25.000 16.018,25.000 14.000 C 25.000 11.982,25.015 11.200,25.056 11.200 C 25.086 11.200,25.249 11.272,25.418 11.361 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.684 0.051 C 3.457 0.119,3.218 0.331,3.105 0.564 L 3.000 0.782 3.000 15.008 L 3.000 29.234 3.116 29.455 C 3.180 29.576,3.329 29.743,3.446 29.825 L 3.659 29.975 14.992 29.975 L 26.325 29.975 26.516 29.856 C 26.621 29.791,26.767 29.646,26.841 29.535 L 26.975 29.332 26.975 15.000 L 26.975 0.668 26.841 0.465 C 26.767 0.354,26.621 0.209,26.516 0.144 L 26.325 0.025 15.075 0.017 C 8.888 0.012,3.762 0.027,3.684 0.051 M25.000 15.000 L 25.000 28.000 15.000 28.000 L 5.000 28.000 5.000 15.000 L 5.000 2.000 15.000 2.000 L 25.000 2.000 25.000 15.000 M9.684 5.050 C 9.303 5.166,9.000 5.590,9.000 6.008 C 9.000 6.310,9.178 6.636,9.446 6.825 L 9.659 6.975 14.992 6.975 L 20.325 6.975 20.516 6.856 C 20.621 6.791,20.767 6.646,20.841 6.535 C 20.953 6.366,20.975 6.277,20.975 6.000 C 20.975 5.723,20.953 5.634,20.841 5.465 C 20.767 5.354,20.621 5.209,20.516 5.144 L 20.325 5.025 15.075 5.016 C 12.188 5.012,9.762 5.027,9.684 5.050 M9.684 13.048 C 9.299 13.172,9.000 13.591,9.000 14.008 C 9.000 14.310,9.178 14.636,9.446 14.825 C 9.631 14.956,9.702 14.975,9.995 14.975 C 10.277 14.975,10.365 14.953,10.535 14.841 C 10.847 14.634,10.975 14.390,10.975 14.000 C 10.975 13.615,10.847 13.366,10.549 13.169 C 10.341 13.031,9.921 12.972,9.684 13.048 M14.684 13.048 C 14.299 13.172,14.000 13.591,14.000 14.008 C 14.000 14.310,14.178 14.636,14.446 14.825 C 14.631 14.956,14.702 14.975,14.995 14.975 C 15.277 14.975,15.365 14.953,15.535 14.841 C 15.847 14.634,15.975 14.390,15.975 14.000 C 15.975 13.615,15.847 13.366,15.549 13.169 C 15.341 13.031,14.921 12.972,14.684 13.048 M19.684 13.048 C 19.299 13.172,19.000 13.591,19.000 14.008 C 19.000 14.310,19.178 14.636,19.446 14.825 C 19.631 14.956,19.702 14.975,19.995 14.975 C 20.277 14.975,20.365 14.953,20.535 14.841 C 20.847 14.634,20.975 14.390,20.975 14.000 C 20.975 13.615,20.847 13.366,20.549 13.169 C 20.341 13.031,19.921 12.972,19.684 13.048 M9.684 18.048 C 9.299 18.172,9.000 18.591,9.000 19.008 C 9.000 19.310,9.178 19.636,9.446 19.825 C 9.631 19.956,9.702 19.975,9.995 19.975 C 10.277 19.975,10.365 19.953,10.535 19.841 C 10.847 19.634,10.975 19.390,10.975 19.000 C 10.975 18.615,10.847 18.366,10.549 18.169 C 10.341 18.031,9.921 17.972,9.684 18.048 M14.684 18.048 C 14.299 18.172,14.000 18.591,14.000 19.008 C 14.000 19.310,14.178 19.636,14.446 19.825 C 14.631 19.956,14.702 19.975,14.995 19.975 C 15.277 19.975,15.365 19.953,15.535 19.841 C 15.847 19.634,15.975 19.390,15.975 19.000 C 15.975 18.615,15.847 18.366,15.549 18.169 C 15.341 18.031,14.921 17.972,14.684 18.048 M19.684 18.048 C 19.299 18.172,19.000 18.591,19.000 19.008 C 19.000 19.310,19.178 19.636,19.446 19.825 C 19.631 19.956,19.702 19.975,19.995 19.975 C 20.277 19.975,20.365 19.953,20.535 19.841 C 20.847 19.634,20.975 19.390,20.975 19.000 C 20.975 18.615,20.847 18.366,20.549 18.169 C 20.341 18.031,19.921 17.972,19.684 18.048 M14.684 23.048 C 14.299 23.172,14.000 23.591,14.000 24.008 C 14.000 24.310,14.178 24.636,14.446 24.825 C 14.631 24.956,14.702 24.975,14.995 24.975 C 15.277 24.975,15.365 24.953,15.535 24.841 C 15.847 24.634,15.975 24.390,15.975 24.000 C 15.975 23.615,15.847 23.366,15.549 23.169 C 15.341 23.031,14.921 22.972,14.684 23.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.684 0.048 C 8.454 0.122,8.217 0.333,8.105 0.564 C 8.003 0.775,8.000 0.850,8.000 2.889 L 8.000 4.997 4.829 5.011 L 1.659 5.025 1.446 5.175 C 1.328 5.258,1.180 5.424,1.116 5.545 L 1.000 5.766 1.000 17.500 L 1.000 29.234 1.116 29.455 C 1.180 29.576,1.329 29.743,1.446 29.825 L 1.659 29.975 14.992 29.975 L 28.325 29.975 28.516 29.856 C 28.621 29.791,28.767 29.646,28.841 29.535 L 28.975 29.332 28.975 17.500 L 28.975 5.668 28.841 5.465 C 28.767 5.354,28.621 5.209,28.516 5.144 L 28.325 5.025 25.164 5.011 L 22.004 4.997 21.989 2.832 L 21.975 0.668 21.841 0.465 C 21.633 0.150,21.391 0.025,20.992 0.025 C 20.702 0.025,20.631 0.045,20.446 0.175 C 20.329 0.258,20.180 0.424,20.116 0.545 L 20.000 0.766 20.000 2.883 L 20.000 5.000 15.002 5.000 L 10.004 5.000 9.990 2.834 L 9.975 0.668 9.841 0.465 C 9.767 0.353,9.627 0.213,9.529 0.153 C 9.331 0.030,8.904 -0.023,8.684 0.048 M8.000 7.617 C 8.000 8.167,8.013 8.258,8.116 8.455 C 8.180 8.576,8.329 8.742,8.446 8.825 C 8.631 8.956,8.702 8.975,8.995 8.975 C 9.277 8.975,9.365 8.953,9.535 8.841 C 9.646 8.767,9.791 8.621,9.856 8.516 C 9.963 8.345,9.977 8.256,9.992 7.663 L 10.010 7.000 15.005 7.000 L 20.000 7.000 20.000 7.617 C 20.000 8.167,20.013 8.258,20.116 8.455 C 20.180 8.576,20.329 8.742,20.446 8.825 C 20.631 8.955,20.702 8.975,20.992 8.975 C 21.391 8.975,21.633 8.850,21.841 8.535 C 21.967 8.345,21.976 8.291,21.992 7.666 L 22.010 7.000 24.505 7.000 L 27.000 7.000 27.000 9.000 L 27.000 11.000 15.000 11.000 L 3.000 11.000 3.000 9.000 L 3.000 7.000 5.500 7.000 L 8.000 7.000 8.000 7.617 M27.000 20.500 L 27.000 28.000 15.000 28.000 L 3.000 28.000 3.000 20.500 L 3.000 13.000 15.000 13.000 L 27.000 13.000 27.000 20.500 M7.684 17.050 C 7.302 17.168,7.000 17.590,7.000 18.008 C 7.000 18.310,7.178 18.636,7.446 18.825 L 7.659 18.975 9.495 18.975 L 11.332 18.975 11.535 18.841 C 11.847 18.634,11.975 18.390,11.975 18.000 C 11.975 17.610,11.847 17.366,11.535 17.159 L 11.333 17.025 9.579 17.016 C 8.614 17.010,7.762 17.026,7.684 17.050 M14.684 17.050 C 14.302 17.166,14.000 17.590,14.000 18.008 C 14.000 18.310,14.178 18.636,14.446 18.825 L 14.659 18.975 18.495 18.975 L 22.332 18.975 22.535 18.841 C 22.847 18.634,22.975 18.390,22.975 18.000 C 22.975 17.610,22.847 17.366,22.535 17.159 L 22.332 17.025 18.579 17.016 C 16.514 17.011,14.762 17.027,14.684 17.050 M7.684 22.050 C 7.302 22.166,7.000 22.590,7.000 23.008 C 7.000 23.310,7.178 23.636,7.446 23.825 L 7.659 23.975 11.495 23.975 L 15.332 23.975 15.535 23.841 C 15.847 23.634,15.975 23.390,15.975 23.000 C 15.975 22.610,15.847 22.366,15.535 22.159 L 15.332 22.025 11.579 22.016 C 9.514 22.011,7.762 22.027,7.684 22.050 M18.684 22.050 C 18.302 22.168,18.000 22.590,18.000 23.008 C 18.000 23.310,18.178 23.636,18.446 23.825 L 18.659 23.975 20.495 23.975 L 22.332 23.975 22.535 23.841 C 22.847 23.634,22.975 23.390,22.975 23.000 C 22.975 22.610,22.847 22.366,22.535 22.159 L 22.333 22.025 20.579 22.016 C 19.614 22.010,18.762 22.026,18.684 22.050 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.272 2.447 C 2.684 2.587,2.354 3.205,2.568 3.763 C 2.634 3.935,3.689 5.015,8.100 9.425 C 11.097 12.422,13.550 14.897,13.550 14.925 C 13.550 14.952,11.065 17.461,8.029 20.500 C 2.987 25.545,2.502 26.044,2.450 26.245 C 2.251 27.004,2.979 27.688,3.732 27.450 C 3.890 27.401,4.939 26.376,9.463 21.857 L 15.000 16.326 20.538 21.857 C 25.061 26.376,26.110 27.401,26.268 27.450 C 27.021 27.688,27.749 27.004,27.550 26.245 C 27.498 26.044,27.013 25.545,21.971 20.500 C 18.935 17.461,16.450 14.952,16.450 14.925 C 16.450 14.897,18.903 12.422,21.900 9.425 C 27.804 3.522,27.538 3.813,27.489 3.302 C 27.432 2.712,26.886 2.332,26.277 2.458 C 26.027 2.509,25.972 2.562,20.513 8.017 L 15.000 13.524 9.488 8.017 L 3.975 2.509 3.710 2.455 C 3.564 2.425,3.441 2.402,3.435 2.405 C 3.430 2.408,3.356 2.427,3.272 2.447 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 954 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.272 8.447 C 2.684 8.587,2.354 9.205,2.568 9.763 C 2.634 9.935,3.768 11.093,8.562 15.885 C 11.908 19.230,14.536 21.818,14.616 21.848 C 14.797 21.915,15.203 21.915,15.384 21.848 C 15.464 21.818,18.092 19.230,21.438 15.885 C 27.843 9.484,27.538 9.815,27.489 9.302 C 27.432 8.712,26.886 8.332,26.277 8.458 C 26.027 8.509,25.972 8.562,20.513 14.017 L 15.000 19.524 9.488 14.017 L 3.975 8.509 3.710 8.455 C 3.564 8.425,3.441 8.402,3.435 8.405 C 3.430 8.408,3.356 8.427,3.272 8.447 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 631 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.441 2.717 C 20.340 2.755,20.171 2.855,20.066 2.939 C 19.961 3.024,17.285 5.688,14.121 8.859 C 9.108 13.881,8.359 14.652,8.308 14.831 C 8.226 15.121,8.237 15.344,8.346 15.575 C 8.411 15.713,10.264 17.597,14.357 21.683 C 20.165 27.481,20.280 27.592,20.519 27.641 C 21.332 27.807,21.997 27.007,21.654 26.275 C 21.589 26.137,19.872 24.389,16.130 20.650 C 13.144 17.666,10.700 15.203,10.700 15.175 C 10.700 15.147,13.153 12.672,16.150 9.675 C 20.577 5.249,21.616 4.185,21.682 4.012 C 21.791 3.729,21.746 3.347,21.576 3.101 C 21.333 2.751,20.819 2.577,20.441 2.717 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 716 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.992 2.696 C 8.578 2.829,8.315 3.136,8.267 3.542 C 8.205 4.059,7.922 3.748,13.850 9.675 C 16.847 12.672,19.300 15.147,19.300 15.175 C 19.300 15.203,16.856 17.666,13.870 20.650 C 10.128 24.389,8.411 26.137,8.346 26.275 C 8.003 27.007,8.668 27.807,9.481 27.641 C 9.720 27.592,9.835 27.481,15.643 21.683 C 19.736 17.597,21.589 15.713,21.654 15.575 C 21.762 15.344,21.774 15.121,21.692 14.831 C 21.642 14.651,20.884 13.874,15.755 8.742 C 12.521 5.507,9.802 2.823,9.713 2.779 C 9.513 2.679,9.169 2.639,8.992 2.696 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 664 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.790 8.448 C 14.688 8.467,14.519 8.543,14.415 8.615 C 14.310 8.688,11.612 11.363,8.418 14.561 C 3.658 19.327,2.600 20.410,2.549 20.570 C 2.454 20.871,2.515 21.278,2.688 21.492 C 2.930 21.792,3.071 21.868,3.418 21.890 C 3.648 21.905,3.781 21.887,3.905 21.826 C 3.998 21.779,6.533 19.285,9.537 16.283 L 15.000 10.825 20.463 16.283 C 23.467 19.285,25.997 21.776,26.085 21.820 C 26.281 21.918,26.696 21.924,26.915 21.832 C 27.121 21.746,27.372 21.461,27.451 21.223 C 27.539 20.955,27.489 20.587,27.334 20.363 C 27.135 20.078,15.647 8.621,15.475 8.537 C 15.273 8.438,15.014 8.404,14.790 8.448 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 744 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.684 0.051 C 0.457 0.119,0.218 0.331,0.105 0.565 L -0.001 0.783 0.012 11.237 L 0.025 21.691 0.175 21.904 C 0.338 22.134,0.586 22.288,0.870 22.334 C 1.291 22.402,1.335 22.371,3.996 20.120 L 6.502 18.000 7.251 18.000 L 8.000 18.000 8.000 21.117 L 8.000 24.234 8.116 24.455 C 8.180 24.576,8.329 24.743,8.446 24.825 L 8.659 24.975 16.079 24.988 L 23.499 25.001 26.005 27.121 C 28.665 29.371,28.709 29.402,29.130 29.334 C 29.414 29.288,29.662 29.134,29.825 28.904 L 29.975 28.691 29.975 18.183 L 29.975 7.675 29.856 7.484 C 29.791 7.379,29.646 7.233,29.535 7.159 L 29.332 7.025 25.668 7.011 L 22.003 6.997 21.989 3.833 L 21.975 0.668 21.841 0.465 C 21.767 0.354,21.621 0.209,21.516 0.144 L 21.325 0.025 11.075 0.017 C 5.438 0.012,0.762 0.027,0.684 0.051 M20.000 9.000 L 20.000 16.000 12.885 16.000 L 5.770 16.000 3.909 17.575 C 2.886 18.441,2.038 19.150,2.025 19.150 C 2.011 19.150,2.000 15.291,2.000 10.575 L 2.000 2.000 11.000 2.000 L 20.000 2.000 20.000 9.000 M5.684 8.048 C 5.299 8.172,5.000 8.591,5.000 9.008 C 5.000 9.310,5.178 9.636,5.446 9.825 C 5.631 9.956,5.702 9.975,5.995 9.975 C 6.277 9.975,6.365 9.953,6.535 9.841 C 6.847 9.634,6.975 9.390,6.975 9.000 C 6.975 8.615,6.847 8.366,6.549 8.169 C 6.341 8.031,5.921 7.972,5.684 8.048 M10.684 8.048 C 10.299 8.172,10.000 8.591,10.000 9.008 C 10.000 9.310,10.178 9.636,10.446 9.825 C 10.631 9.956,10.702 9.975,10.995 9.975 C 11.277 9.975,11.365 9.953,11.535 9.841 C 11.847 9.634,11.975 9.390,11.975 9.000 C 11.975 8.615,11.847 8.366,11.549 8.169 C 11.341 8.031,10.921 7.972,10.684 8.048 M15.684 8.048 C 15.299 8.172,15.000 8.591,15.000 9.008 C 15.000 9.310,15.178 9.636,15.446 9.825 C 15.631 9.956,15.702 9.975,15.995 9.975 C 16.277 9.975,16.365 9.953,16.535 9.841 C 16.847 9.634,16.975 9.390,16.975 9.000 C 16.975 8.615,16.847 8.366,16.549 8.169 C 16.341 8.031,15.921 7.972,15.684 8.048 M28.000 17.575 C 28.000 22.291,27.989 26.150,27.975 26.150 C 27.962 26.150,27.114 25.441,26.091 24.575 L 24.230 23.000 17.115 23.000 L 10.000 23.000 10.000 20.501 L 10.000 18.002 15.663 17.988 L 21.325 17.975 21.516 17.856 C 21.621 17.791,21.767 17.646,21.841 17.535 L 21.975 17.332 21.989 13.166 L 22.002 9.000 25.001 9.000 L 28.000 9.000 28.000 17.575 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.000 0.032 C 9.596 0.360,5.670 2.489,3.015 5.987 C 1.498 7.987,0.554 10.270,0.136 12.949 C -0.016 13.929,-0.016 16.071,0.136 17.051 C 0.778 21.165,2.767 24.541,5.991 26.988 C 7.982 28.498,10.278 29.447,12.949 29.864 C 13.929 30.016,16.071 30.016,17.051 29.864 C 20.696 29.295,23.794 27.652,26.120 25.054 C 28.181 22.750,29.372 20.204,29.864 17.051 C 30.016 16.071,30.016 13.929,29.864 12.949 C 29.447 10.278,28.498 7.982,26.988 5.991 C 24.507 2.722,20.962 0.665,16.875 0.124 C 16.290 0.047,14.550 -0.009,14.000 0.032 M16.918 2.151 C 18.316 2.359,19.393 2.698,20.725 3.348 C 22.061 4.000,23.103 4.746,24.178 5.822 C 25.254 6.897,26.000 7.939,26.652 9.275 C 27.127 10.248,27.356 10.858,27.580 11.748 C 27.881 12.940,27.967 13.666,27.967 15.000 C 27.967 15.956,27.947 16.306,27.859 16.875 C 27.727 17.731,27.471 18.763,27.226 19.427 C 26.782 20.631,25.947 22.114,25.129 23.150 C 24.726 23.660,23.570 24.804,23.050 25.206 C 20.061 27.522,16.418 28.436,12.725 27.797 C 10.665 27.441,8.692 26.556,6.950 25.206 C 6.430 24.804,5.274 23.660,4.871 23.150 C 4.055 22.115,3.218 20.631,2.776 19.432 C 2.525 18.752,2.275 17.746,2.143 16.893 C 1.985 15.865,1.985 14.135,2.143 13.107 C 2.275 12.254,2.525 11.248,2.776 10.568 C 3.218 9.368,4.057 7.880,4.872 6.850 C 5.254 6.367,6.367 5.254,6.850 4.872 C 8.885 3.262,11.271 2.302,13.854 2.052 C 14.580 1.982,16.118 2.031,16.918 2.151 M23.050 8.679 C 22.937 8.728,21.374 10.254,18.637 12.989 L 14.400 17.224 12.112 14.942 C 10.854 13.687,9.757 12.626,9.673 12.584 C 9.258 12.377,8.844 12.443,8.519 12.768 C 8.315 12.972,8.201 13.235,8.200 13.503 C 8.200 13.853,8.393 14.071,11.136 16.809 C 13.777 19.444,13.830 19.494,14.110 19.574 C 14.456 19.673,14.672 19.641,14.962 19.447 C 15.079 19.369,17.237 17.239,19.757 14.715 C 24.748 9.714,24.490 10.004,24.434 9.461 C 24.368 8.817,23.659 8.417,23.050 8.679 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.604 0.056 C 12.934 0.115,12.012 0.278,11.240 0.472 C 9.292 0.963,7.233 2.000,5.574 3.324 C 4.934 3.835,3.835 4.934,3.324 5.574 C 2.000 7.233,0.963 9.292,0.472 11.240 C -0.161 13.752,-0.161 16.248,0.472 18.760 C 0.963 20.708,2.000 22.767,3.324 24.426 C 3.835 25.066,4.934 26.165,5.574 26.676 C 7.759 28.420,10.224 29.478,13.050 29.884 C 13.934 30.011,16.068 30.010,16.950 29.883 C 18.737 29.626,20.046 29.225,21.628 28.450 C 23.135 27.711,24.395 26.808,25.601 25.601 C 26.808 24.395,27.711 23.135,28.450 21.628 C 29.225 20.046,29.626 18.737,29.883 16.950 C 30.011 16.067,30.011 13.933,29.883 13.050 C 29.626 11.263,29.225 9.954,28.450 8.372 C 27.711 6.865,26.808 5.605,25.601 4.399 C 24.396 3.193,23.136 2.290,21.628 1.550 C 19.880 0.692,18.180 0.214,16.300 0.051 C 15.633 -0.007,14.283 -0.005,13.604 0.056 M23.838 8.677 C 24.355 8.893,24.587 9.477,24.354 9.975 C 24.237 10.225,14.995 19.469,14.784 19.548 C 14.559 19.631,14.166 19.610,13.961 19.504 C 13.858 19.450,12.545 18.174,11.042 16.666 C 8.416 14.032,8.308 13.916,8.261 13.688 C 8.088 12.844,8.904 12.209,9.675 12.587 C 9.758 12.627,10.854 13.687,12.113 14.942 L 14.400 17.224 18.638 12.989 C 21.368 10.261,22.937 8.728,23.050 8.679 C 23.278 8.581,23.606 8.580,23.838 8.677 " stroke="none" fill-rule="evenodd" fill="black"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.000 0.032 C 9.596 0.360,5.670 2.489,3.015 5.987 C 1.498 7.987,0.554 10.270,0.136 12.949 C -0.016 13.929,-0.016 16.071,0.136 17.051 C 0.778 21.165,2.767 24.541,5.991 26.988 C 7.982 28.498,10.278 29.447,12.949 29.864 C 13.929 30.016,16.071 30.016,17.051 29.864 C 20.696 29.295,23.794 27.652,26.120 25.054 C 28.181 22.750,29.372 20.204,29.864 17.051 C 30.016 16.071,30.016 13.929,29.864 12.949 C 29.447 10.278,28.498 7.982,26.988 5.991 C 24.507 2.722,20.962 0.665,16.875 0.124 C 16.290 0.047,14.550 -0.009,14.000 0.032 M16.918 2.151 C 18.316 2.359,19.393 2.698,20.725 3.348 C 22.061 4.000,23.103 4.746,24.178 5.822 C 25.254 6.897,26.000 7.939,26.652 9.275 C 27.127 10.248,27.356 10.858,27.580 11.748 C 27.881 12.940,27.967 13.666,27.967 15.000 C 27.967 15.956,27.947 16.306,27.859 16.875 C 27.727 17.731,27.471 18.763,27.226 19.427 C 26.782 20.631,25.947 22.114,25.129 23.150 C 24.726 23.660,23.570 24.804,23.050 25.206 C 20.061 27.522,16.418 28.436,12.725 27.797 C 10.665 27.441,8.692 26.556,6.950 25.206 C 6.430 24.804,5.274 23.660,4.871 23.150 C 4.055 22.115,3.218 20.631,2.776 19.432 C 2.525 18.752,2.275 17.746,2.143 16.893 C 1.985 15.865,1.985 14.135,2.143 13.107 C 2.275 12.254,2.525 11.248,2.776 10.568 C 3.218 9.368,4.057 7.880,4.872 6.850 C 5.254 6.367,6.367 5.254,6.850 4.872 C 8.885 3.262,11.271 2.302,13.854 2.052 C 14.580 1.982,16.118 2.031,16.918 2.151 M14.684 6.048 C 14.454 6.122,14.217 6.333,14.105 6.564 C 14.001 6.780,14.000 6.807,14.000 11.500 C 14.000 16.095,14.003 16.224,14.099 16.422 C 14.164 16.556,14.927 17.353,16.336 18.755 C 18.304 20.714,18.494 20.890,18.713 20.949 C 19.189 21.078,19.655 20.874,19.870 20.441 C 20.014 20.153,20.029 19.988,19.941 19.681 C 19.891 19.507,19.584 19.175,17.942 17.524 L 16.002 15.573 15.989 11.124 L 15.975 6.675 15.856 6.484 C 15.687 6.212,15.416 6.048,15.093 6.023 C 14.946 6.012,14.762 6.023,14.684 6.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.272 2.447 C 2.684 2.587,2.354 3.205,2.568 3.763 C 2.634 3.935,3.689 5.015,8.100 9.425 C 11.097 12.422,13.550 14.897,13.550 14.925 C 13.550 14.952,11.065 17.461,8.029 20.500 C 2.987 25.545,2.502 26.044,2.450 26.245 C 2.251 27.004,2.979 27.688,3.732 27.450 C 3.890 27.401,4.939 26.376,9.463 21.857 L 15.000 16.326 20.538 21.857 C 25.061 26.376,26.110 27.401,26.268 27.450 C 27.021 27.688,27.749 27.004,27.550 26.245 C 27.498 26.044,27.013 25.545,21.971 20.500 C 18.935 17.461,16.450 14.952,16.450 14.925 C 16.450 14.897,18.903 12.422,21.900 9.425 C 27.804 3.522,27.538 3.813,27.489 3.302 C 27.432 2.712,26.886 2.332,26.277 2.458 C 26.027 2.509,25.972 2.562,20.513 8.017 L 15.000 13.524 9.488 8.017 L 3.975 2.509 3.710 2.455 C 3.564 2.425,3.441 2.402,3.435 2.405 C 3.430 2.408,3.356 2.427,3.272 2.447 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 954 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.684 0.051 C 0.457 0.119,0.218 0.331,0.105 0.564 L 0.000 0.782 0.000 12.508 L 0.000 24.234 0.116 24.455 C 0.180 24.576,0.329 24.743,0.446 24.825 L 0.659 24.975 5.815 25.000 L 10.972 25.025 12.633 27.325 C 14.189 29.479,14.311 29.634,14.553 29.763 C 14.875 29.934,15.106 29.937,15.434 29.774 C 15.674 29.654,15.775 29.526,17.356 27.328 L 19.025 25.008 24.179 24.991 L 29.332 24.975 29.535 24.841 C 29.646 24.767,29.791 24.621,29.856 24.516 L 29.975 24.325 29.975 12.500 L 29.975 0.675 29.856 0.484 C 29.791 0.379,29.646 0.233,29.535 0.159 L 29.332 0.025 15.079 0.017 C 7.239 0.012,0.762 0.027,0.684 0.051 M28.000 12.500 L 28.000 23.000 23.008 23.000 L 18.015 23.000 16.528 25.063 C 15.710 26.197,15.022 27.125,15.000 27.125 C 14.978 27.125,14.290 26.197,13.472 25.063 L 11.985 23.000 6.992 23.000 L 2.000 23.000 2.000 12.500 L 2.000 2.000 15.000 2.000 L 28.000 2.000 28.000 12.500 M8.684 12.048 C 8.299 12.172,8.000 12.591,8.000 13.008 C 8.000 13.310,8.178 13.636,8.446 13.825 C 8.631 13.956,8.702 13.975,8.995 13.975 C 9.277 13.975,9.365 13.953,9.535 13.841 C 9.847 13.634,9.975 13.390,9.975 13.000 C 9.975 12.615,9.847 12.366,9.549 12.169 C 9.341 12.031,8.921 11.972,8.684 12.048 M14.684 12.048 C 14.299 12.172,14.000 12.591,14.000 13.008 C 14.000 13.310,14.178 13.636,14.446 13.825 C 14.631 13.956,14.702 13.975,14.995 13.975 C 15.277 13.975,15.365 13.953,15.535 13.841 C 15.847 13.634,15.975 13.390,15.975 13.000 C 15.975 12.615,15.847 12.366,15.549 12.169 C 15.341 12.031,14.921 11.972,14.684 12.048 M20.684 12.048 C 20.299 12.172,20.000 12.591,20.000 13.008 C 20.000 13.310,20.178 13.636,20.446 13.825 C 20.631 13.956,20.702 13.975,20.995 13.975 C 21.277 13.975,21.365 13.953,21.535 13.841 C 21.847 13.634,21.975 13.390,21.975 13.000 C 21.975 12.615,21.847 12.366,21.549 12.169 C 21.341 12.031,20.921 11.972,20.684 12.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.684 0.051 C 6.303 0.166,6.000 0.590,6.000 1.008 C 6.000 1.310,6.178 1.636,6.446 1.825 L 6.659 1.975 16.329 1.988 L 26.000 2.001 26.000 11.618 L 26.000 21.234 26.116 21.455 C 26.180 21.576,26.329 21.743,26.446 21.825 C 26.631 21.956,26.702 21.975,26.995 21.975 C 27.277 21.975,27.365 21.953,27.535 21.841 C 27.646 21.767,27.791 21.621,27.856 21.516 L 27.975 21.325 27.975 10.996 L 27.975 0.668 27.841 0.465 C 27.767 0.354,27.621 0.209,27.516 0.144 L 27.325 0.025 17.075 0.017 C 11.438 0.012,6.762 0.027,6.684 0.051 M2.684 6.051 C 2.457 6.119,2.218 6.331,2.105 6.564 L 2.000 6.782 2.000 18.008 L 2.000 29.234 2.116 29.455 C 2.180 29.576,2.329 29.743,2.446 29.825 L 2.659 29.975 11.995 29.975 L 21.332 29.975 21.535 29.841 C 21.646 29.767,21.791 29.621,21.856 29.516 L 21.975 29.325 21.975 17.996 L 21.975 6.668 21.841 6.465 C 21.767 6.354,21.621 6.209,21.516 6.144 L 21.325 6.025 12.075 6.017 C 6.988 6.012,2.762 6.027,2.684 6.051 M20.000 18.000 L 20.000 28.000 12.000 28.000 L 4.000 28.000 4.000 18.000 L 4.000 8.000 12.000 8.000 L 20.000 8.000 20.000 18.000 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.684 0.051 C 6.303 0.166,6.000 0.590,6.000 1.008 C 6.000 1.310,6.178 1.636,6.446 1.825 L 6.659 1.975 16.329 1.988 L 26.000 2.001 26.000 11.618 L 26.000 21.234 26.116 21.455 C 26.180 21.576,26.329 21.743,26.446 21.825 C 26.631 21.956,26.702 21.975,26.995 21.975 C 27.277 21.975,27.365 21.953,27.535 21.841 C 27.646 21.767,27.791 21.621,27.856 21.516 L 27.975 21.325 27.975 10.996 L 27.975 0.668 27.841 0.465 C 27.767 0.354,27.621 0.209,27.516 0.144 L 27.325 0.025 17.075 0.017 C 11.438 0.012,6.762 0.027,6.684 0.051 M2.684 6.051 C 2.457 6.119,2.218 6.331,2.105 6.564 L 2.000 6.782 2.000 18.008 L 2.000 29.234 2.116 29.455 C 2.180 29.576,2.329 29.743,2.446 29.825 L 2.659 29.975 11.995 29.975 L 21.332 29.975 21.535 29.841 C 21.646 29.767,21.791 29.621,21.856 29.516 L 21.975 29.325 21.975 17.996 L 21.975 6.668 21.841 6.465 C 21.767 6.354,21.621 6.209,21.516 6.144 L 21.325 6.025 12.075 6.017 C 6.988 6.012,2.762 6.027,2.684 6.051 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.938 0.078 C 9.664 0.227,9.650 0.314,9.650 1.873 L 9.650 3.300 8.373 3.300 C 6.949 3.300,6.876 3.314,6.731 3.619 C 6.656 3.778,6.650 4.455,6.662 11.775 L 6.675 19.758 6.862 19.929 L 7.049 20.100 14.975 20.100 L 22.901 20.100 23.088 19.929 L 23.275 19.758 23.288 11.775 C 23.302 3.002,23.322 3.573,23.004 3.385 C 22.878 3.311,22.698 3.300,21.605 3.300 L 20.350 3.300 20.350 1.873 C 20.350 0.300,20.337 0.223,20.047 0.074 C 19.919 0.007,19.688 -0.002,18.503 0.010 C 17.192 0.024,17.104 0.031,16.998 0.125 C 16.768 0.331,16.750 0.459,16.750 1.923 L 16.750 3.300 14.950 3.300 L 13.150 3.300 13.150 1.873 C 13.150 0.304,13.137 0.223,12.852 0.076 C 12.638 -0.034,10.142 -0.032,9.938 0.078 M16.485 6.126 C 18.958 6.444,20.349 7.450,19.590 8.371 C 18.612 9.558,14.813 10.019,12.175 9.270 C 11.297 9.021,10.577 8.590,10.371 8.193 C 10.280 8.016,10.280 7.684,10.371 7.507 C 10.697 6.878,12.091 6.291,13.700 6.106 C 14.337 6.033,15.845 6.044,16.485 6.126 M19.775 12.042 C 19.732 12.215,19.322 12.630,19.026 12.800 C 18.638 13.022,17.655 13.329,16.950 13.450 C 16.143 13.587,14.788 13.634,13.950 13.553 C 12.484 13.411,11.357 13.064,10.718 12.559 C 10.305 12.233,10.300 12.211,10.300 10.668 L 10.300 9.327 10.420 9.504 C 10.854 10.142,12.362 10.635,14.381 10.799 C 15.737 10.909,17.619 10.628,18.787 10.142 C 19.169 9.983,19.660 9.591,19.735 9.385 C 19.780 9.260,19.819 11.860,19.775 12.042 M19.676 16.177 C 19.314 16.795,17.996 17.316,16.339 17.497 C 15.623 17.575,14.253 17.562,13.542 17.470 C 12.732 17.366,11.886 17.145,11.370 16.903 C 10.879 16.673,10.634 16.496,10.441 16.230 L 10.300 16.035 10.300 14.660 L 10.300 13.285 10.414 13.454 C 10.776 13.992,11.855 14.423,13.400 14.649 C 14.371 14.791,15.077 14.821,15.825 14.753 C 17.864 14.566,19.337 14.059,19.678 13.426 L 19.775 13.246 19.788 14.605 L 19.802 15.963 19.676 16.177 M9.562 23.363 L 9.575 24.725 9.875 24.725 L 10.175 24.725 10.189 24.188 L 10.203 23.650 10.677 23.650 L 11.150 23.650 11.150 23.400 L 11.150 23.150 10.675 23.150 L 10.200 23.150 10.200 22.852 L 10.200 22.553 10.738 22.539 L 11.275 22.525 11.290 22.263 L 11.305 22.000 10.427 22.000 L 9.548 22.000 9.562 23.363 M12.181 22.673 C 11.747 22.828,11.459 23.318,11.516 23.803 C 11.584 24.381,11.966 24.754,12.493 24.758 C 13.092 24.762,13.507 24.332,13.513 23.701 C 13.518 23.181,13.236 22.781,12.775 22.655 C 12.519 22.585,12.420 22.588,12.181 22.673 M14.825 22.692 C 14.743 22.743,14.644 22.821,14.607 22.866 C 14.520 22.971,14.450 22.929,14.450 22.772 C 14.450 22.659,14.432 22.650,14.200 22.650 L 13.950 22.650 13.950 23.700 L 13.950 24.750 14.250 24.750 L 14.550 24.750 14.550 24.148 C 14.550 23.341,14.649 23.150,15.065 23.150 C 15.231 23.150,15.238 23.142,15.286 22.902 C 15.325 22.701,15.321 22.650,15.263 22.627 C 15.131 22.577,14.976 22.600,14.825 22.692 M16.557 22.653 C 16.492 22.679,16.375 22.747,16.296 22.803 L 16.153 22.905 16.121 22.777 C 16.092 22.663,16.065 22.650,15.845 22.650 L 15.600 22.650 15.600 23.700 L 15.600 24.750 15.900 24.750 L 16.200 24.750 16.200 24.031 C 16.200 23.321,16.202 23.310,16.323 23.231 C 16.472 23.133,16.668 23.126,16.742 23.216 C 16.775 23.255,16.803 23.575,16.811 24.003 L 16.825 24.725 17.125 24.725 L 17.425 24.725 17.438 24.025 C 17.450 23.383,17.459 23.318,17.556 23.238 C 17.614 23.189,17.727 23.150,17.807 23.150 C 18.014 23.150,18.050 23.287,18.050 24.078 L 18.050 24.750 18.350 24.750 L 18.650 24.750 18.649 23.963 C 18.648 23.291,18.634 23.144,18.551 22.961 C 18.373 22.569,17.921 22.496,17.544 22.799 C 17.365 22.943,17.351 22.946,17.304 22.857 C 17.243 22.743,16.953 22.599,16.792 22.603 C 16.728 22.605,16.622 22.628,16.557 22.653 M19.596 22.648 C 19.244 22.754,19.064 23.011,19.116 23.332 C 19.157 23.581,19.267 23.686,19.691 23.880 C 20.006 24.024,20.055 24.064,20.041 24.161 C 20.028 24.257,19.990 24.278,19.809 24.291 C 19.662 24.301,19.541 24.275,19.427 24.208 L 19.260 24.109 19.132 24.288 C 19.062 24.387,19.018 24.488,19.034 24.514 C 19.154 24.709,19.947 24.832,20.211 24.697 C 20.577 24.508,20.715 24.202,20.580 23.879 C 20.512 23.717,20.449 23.668,20.101 23.510 C 19.772 23.361,19.700 23.308,19.700 23.215 C 19.700 23.050,19.901 23.015,20.149 23.138 L 20.348 23.237 20.474 23.072 C 20.543 22.981,20.600 22.893,20.600 22.876 C 20.600 22.859,20.482 22.790,20.338 22.723 C 20.073 22.600,19.834 22.576,19.596 22.648 M12.746 23.207 C 12.984 23.463,12.915 24.107,12.635 24.241 C 12.514 24.299,12.478 24.297,12.370 24.226 C 12.302 24.181,12.224 24.088,12.198 24.019 C 12.087 23.727,12.183 23.205,12.361 23.133 C 12.502 23.077,12.651 23.106,12.746 23.207 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.530 0.113 C 7.422 0.175,7.287 0.289,7.230 0.366 C 7.128 0.504,7.125 0.564,7.111 2.701 L 7.097 4.895 5.153 4.910 L 3.208 4.925 2.992 5.076 C 2.568 5.373,2.605 4.217,2.603 17.425 C 2.603 24.278,2.621 29.206,2.648 29.321 C 2.700 29.545,2.820 29.723,3.019 29.872 L 3.157 29.975 15.020 29.975 L 26.883 29.975 27.072 29.831 C 27.427 29.560,27.400 30.596,27.400 17.447 C 27.400 4.112,27.436 5.325,27.033 5.058 L 26.832 4.925 24.941 4.909 L 23.050 4.894 23.050 2.800 C 23.050 1.442,23.031 0.657,22.997 0.566 C 22.924 0.374,22.709 0.152,22.514 0.069 C 22.310 -0.019,18.493 -0.033,18.266 0.053 C 18.074 0.126,17.852 0.341,17.769 0.536 C 17.714 0.664,17.700 1.125,17.700 2.798 L 17.700 4.900 15.000 4.900 L 12.300 4.900 12.300 2.803 C 12.300 1.443,12.281 0.657,12.247 0.566 C 12.174 0.374,11.959 0.152,11.764 0.069 C 11.637 0.014,11.201 0.000,9.664 0.001 C 7.750 0.002,7.723 0.003,7.530 0.113 M17.172 9.124 C 19.495 9.403,21.420 10.165,21.996 11.035 C 22.399 11.644,22.300 12.170,21.673 12.743 C 20.728 13.607,18.673 14.199,16.067 14.359 C 13.342 14.526,10.262 13.947,8.880 13.007 C 8.626 12.834,8.244 12.435,8.143 12.236 C 7.864 11.690,8.041 11.118,8.642 10.618 C 9.599 9.824,11.521 9.237,13.775 9.052 C 14.528 8.990,16.386 9.029,17.172 9.124 M22.201 17.895 C 21.908 18.984,20.070 19.810,17.050 20.211 C 16.314 20.308,13.785 20.291,12.975 20.183 C 10.629 19.871,8.823 19.165,8.262 18.340 C 8.003 17.959,8.000 17.929,8.000 15.755 L 8.001 13.725 8.124 13.989 C 8.560 14.927,10.381 15.664,13.150 16.025 C 15.309 16.307,18.014 16.060,20.007 15.400 C 21.266 14.983,22.057 14.413,22.191 13.825 C 22.210 13.743,22.231 14.583,22.238 15.693 C 22.246 16.922,22.232 17.782,22.201 17.895 M22.201 23.775 C 21.973 24.819,20.157 25.692,17.400 26.082 C 16.609 26.194,13.871 26.212,13.050 26.110 C 10.604 25.806,8.702 25.027,8.162 24.108 L 8.025 23.875 8.015 21.750 C 8.006 19.749,8.010 19.638,8.086 19.850 C 8.199 20.169,8.679 20.622,9.186 20.889 C 10.625 21.647,13.742 22.187,15.875 22.048 C 18.383 21.885,20.534 21.328,21.539 20.581 C 21.862 20.341,22.129 19.990,22.190 19.725 C 22.209 19.643,22.232 20.464,22.240 21.550 C 22.250 22.848,22.237 23.611,22.201 23.775 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.000 0.032 C 9.596 0.360,5.670 2.489,3.015 5.987 C 1.498 7.987,0.554 10.270,0.136 12.949 C -0.016 13.929,-0.016 16.071,0.136 17.051 C 0.778 21.165,2.767 24.541,5.991 26.988 C 7.982 28.498,10.278 29.447,12.949 29.864 C 13.929 30.016,16.071 30.016,17.051 29.864 C 20.696 29.295,23.794 27.652,26.120 25.054 C 28.181 22.750,29.372 20.204,29.864 17.051 C 30.016 16.071,30.016 13.929,29.864 12.949 C 29.447 10.278,28.498 7.982,26.988 5.991 C 24.507 2.722,20.962 0.665,16.875 0.124 C 16.290 0.047,14.550 -0.009,14.000 0.032 M16.918 2.151 C 18.316 2.359,19.393 2.698,20.725 3.348 C 22.061 4.000,23.103 4.746,24.178 5.822 C 25.254 6.897,26.000 7.939,26.652 9.275 C 27.127 10.248,27.356 10.858,27.580 11.748 C 27.881 12.940,27.967 13.666,27.967 15.000 C 27.967 15.956,27.947 16.306,27.859 16.875 C 27.727 17.731,27.471 18.763,27.226 19.427 C 26.782 20.631,25.947 22.114,25.129 23.150 C 24.726 23.660,23.570 24.804,23.050 25.206 C 20.061 27.522,16.418 28.436,12.725 27.797 C 10.665 27.441,8.692 26.556,6.950 25.206 C 6.430 24.804,5.274 23.660,4.871 23.150 C 4.055 22.115,3.218 20.631,2.776 19.432 C 2.525 18.752,2.275 17.746,2.143 16.893 C 1.985 15.865,1.985 14.135,2.143 13.107 C 2.275 12.254,2.525 11.248,2.776 10.568 C 3.218 9.368,4.057 7.880,4.872 6.850 C 5.254 6.367,6.367 5.254,6.850 4.872 C 8.885 3.262,11.271 2.302,13.854 2.052 C 14.580 1.982,16.118 2.031,16.918 2.151 M9.275 8.447 C 9.073 8.496,8.842 8.620,8.743 8.732 C 8.491 9.020,8.422 9.465,8.573 9.828 C 8.632 9.970,9.345 10.716,11.114 12.488 L 13.573 14.950 11.043 17.488 C 8.672 19.867,8.510 20.040,8.448 20.270 C 8.235 21.067,9.051 21.751,9.828 21.427 C 9.970 21.368,10.722 20.650,12.512 18.861 L 15.000 16.377 17.488 18.861 C 19.278 20.650,20.030 21.368,20.172 21.427 C 20.549 21.584,21.064 21.489,21.310 21.217 C 21.428 21.086,21.598 20.699,21.599 20.556 C 21.603 20.145,21.603 20.145,18.955 17.488 L 16.427 14.950 18.886 12.488 C 20.656 10.716,21.368 9.970,21.427 9.828 C 21.584 9.452,21.488 8.931,21.218 8.694 C 20.922 8.434,20.427 8.358,20.099 8.523 C 20.003 8.570,18.817 9.716,17.463 11.067 L 15.000 13.525 12.538 11.067 C 11.183 9.716,10.008 8.577,9.925 8.536 C 9.725 8.439,9.459 8.402,9.275 8.447 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.604 0.056 C 12.934 0.115,12.012 0.278,11.240 0.472 C 9.292 0.963,7.233 2.000,5.574 3.324 C 4.934 3.835,3.835 4.934,3.324 5.574 C 2.000 7.233,0.963 9.292,0.472 11.240 C -0.161 13.752,-0.161 16.248,0.472 18.760 C 0.963 20.708,2.000 22.767,3.324 24.426 C 3.835 25.066,4.934 26.165,5.574 26.676 C 7.759 28.420,10.224 29.478,13.050 29.884 C 13.934 30.011,16.068 30.010,16.950 29.883 C 18.737 29.626,20.046 29.225,21.628 28.450 C 23.135 27.711,24.395 26.808,25.601 25.601 C 26.808 24.395,27.711 23.135,28.450 21.628 C 29.225 20.046,29.626 18.737,29.883 16.950 C 30.011 16.067,30.011 13.933,29.883 13.050 C 29.626 11.263,29.225 9.954,28.450 8.372 C 27.711 6.865,26.808 5.605,25.601 4.399 C 24.396 3.193,23.136 2.290,21.628 1.550 C 19.880 0.692,18.180 0.214,16.300 0.051 C 15.633 -0.007,14.283 -0.005,13.604 0.056 M9.969 8.557 C 10.027 8.587,11.183 9.717,12.538 11.067 L 15.000 13.524 17.463 11.064 C 19.230 9.298,19.980 8.581,20.121 8.523 C 20.741 8.266,21.427 8.656,21.489 9.302 C 21.536 9.795,21.563 9.763,18.876 12.450 L 16.400 14.924 18.898 17.425 C 20.693 19.221,21.419 19.980,21.477 20.121 C 21.733 20.738,21.344 21.427,20.705 21.488 C 20.211 21.536,20.279 21.592,17.538 18.858 L 15.000 16.326 12.463 18.858 C 9.721 21.592,9.789 21.536,9.295 21.488 C 8.656 21.427,8.267 20.738,8.523 20.121 C 8.581 19.980,9.307 19.221,11.102 17.425 L 13.600 14.924 11.124 12.450 C 8.437 9.763,8.464 9.795,8.511 9.302 C 8.577 8.616,9.329 8.232,9.969 8.557 " stroke="none" fill-rule="evenodd" fill="black"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.604 0.056 C 12.934 0.115,12.012 0.278,11.240 0.472 C 9.292 0.963,7.233 2.000,5.574 3.324 C 4.934 3.835,3.835 4.934,3.324 5.574 C 2.000 7.233,0.963 9.292,0.472 11.240 C -0.161 13.752,-0.161 16.248,0.472 18.760 C 0.963 20.708,2.000 22.767,3.324 24.426 C 3.835 25.066,4.934 26.165,5.574 26.676 C 7.759 28.420,10.224 29.478,13.050 29.884 C 13.934 30.011,16.068 30.010,16.950 29.883 C 18.737 29.626,20.046 29.225,21.628 28.450 C 23.135 27.711,24.395 26.808,25.601 25.601 C 26.808 24.395,27.711 23.135,28.450 21.628 C 29.225 20.046,29.626 18.737,29.883 16.950 C 30.011 16.067,30.011 13.933,29.883 13.050 C 29.626 11.263,29.225 9.954,28.450 8.372 C 27.711 6.865,26.808 5.605,25.601 4.399 C 24.396 3.193,23.136 2.290,21.628 1.550 C 19.880 0.692,18.180 0.214,16.300 0.051 C 15.633 -0.007,14.283 -0.005,13.604 0.056 M8.529 6.952 C 8.873 7.655,8.987 7.846,9.047 7.822 C 9.268 7.732,10.733 7.438,11.500 7.329 C 15.253 6.794,18.276 7.283,20.234 8.743 C 20.971 9.292,21.661 10.123,22.092 10.982 C 22.676 12.146,22.992 13.798,22.933 15.375 C 22.868 17.101,22.467 18.692,21.794 19.885 C 21.529 20.356,20.702 21.211,20.175 21.559 C 19.132 22.247,17.912 22.667,16.325 22.883 C 15.532 22.991,12.909 23.004,11.575 22.906 C 10.370 22.819,9.189 22.706,9.160 22.676 C 9.146 22.663,9.253 19.780,9.397 16.272 C 9.541 12.763,9.650 9.883,9.638 9.871 C 9.626 9.859,9.123 10.326,8.521 10.908 C 7.918 11.490,7.332 12.055,7.219 12.162 L 7.014 12.357 7.544 9.204 C 7.836 7.469,8.078 6.050,8.081 6.050 C 8.084 6.050,8.286 6.456,8.529 6.952 M12.488 9.332 C 12.365 9.354,12.350 9.378,12.350 9.551 C 12.350 9.658,12.260 12.192,12.150 15.182 C 12.039 18.172,11.966 20.635,11.987 20.656 C 12.067 20.732,13.438 20.813,14.132 20.782 C 16.017 20.697,17.478 20.192,18.493 19.273 C 19.564 18.305,20.128 16.665,20.030 14.806 C 19.937 13.039,19.542 11.899,18.706 10.992 C 17.938 10.159,16.831 9.642,15.350 9.424 C 14.839 9.348,12.768 9.282,12.488 9.332 " stroke="none" fill-rule="evenodd" fill="black"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.684 1.051 C 3.457 1.119,3.218 1.331,3.105 1.564 L 3.000 1.782 3.000 15.008 L 3.000 28.234 3.116 28.455 C 3.180 28.576,3.329 28.743,3.446 28.825 L 3.659 28.975 11.384 28.988 C 16.823 28.997,19.171 28.985,19.317 28.947 C 19.501 28.899,19.956 28.462,23.209 25.209 C 26.458 21.959,26.899 21.501,26.947 21.318 C 26.985 21.172,26.997 18.250,26.988 11.389 L 26.975 1.668 26.841 1.465 C 26.767 1.354,26.621 1.209,26.516 1.144 L 26.325 1.025 15.075 1.017 C 8.888 1.012,3.762 1.027,3.684 1.051 M25.000 11.500 L 25.000 20.000 21.500 20.000 L 18.000 20.000 18.000 23.500 L 18.000 27.000 11.500 27.000 L 5.000 27.000 5.000 15.000 L 5.000 3.000 15.000 3.000 L 25.000 3.000 25.000 11.500 M9.684 7.051 C 9.456 7.119,9.196 7.348,9.096 7.569 C 8.922 7.953,9.015 8.467,9.307 8.735 C 9.595 9.000,9.590 9.000,12.466 9.000 C 15.248 9.000,15.322 8.995,15.613 8.782 C 15.793 8.650,16.000 8.229,16.000 7.996 C 16.000 7.891,15.940 7.696,15.861 7.545 C 15.748 7.329,15.671 7.252,15.455 7.139 L 15.189 7.000 12.507 7.004 C 11.032 7.007,9.762 7.028,9.684 7.051 M9.684 12.050 C 9.303 12.166,9.000 12.590,9.000 13.008 C 9.000 13.310,9.178 13.636,9.446 13.825 L 9.659 13.975 14.992 13.975 L 20.325 13.975 20.516 13.856 C 20.621 13.791,20.767 13.646,20.841 13.535 C 20.953 13.366,20.975 13.277,20.975 13.000 C 20.975 12.723,20.953 12.634,20.841 12.465 C 20.767 12.354,20.621 12.209,20.516 12.144 L 20.325 12.025 15.075 12.016 C 12.188 12.012,9.762 12.027,9.684 12.050 M9.548 17.138 C 9.329 17.252,9.252 17.328,9.139 17.545 C 9.060 17.696,9.000 17.891,9.000 17.996 C 9.000 18.229,9.207 18.650,9.387 18.782 C 9.678 18.995,9.751 19.000,12.545 18.999 C 15.044 18.998,15.239 18.992,15.425 18.905 C 16.125 18.582,16.199 17.621,15.558 17.176 L 15.341 17.025 12.580 17.011 L 9.818 16.997 9.548 17.138 M23.550 22.013 C 23.550 22.020,22.751 22.824,21.775 23.800 L 20.000 25.574 20.000 23.787 L 20.000 22.000 21.775 22.000 C 22.751 22.000,23.550 22.006,23.550 22.013 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.684 1.048 C 14.454 1.122,14.217 1.333,14.105 1.564 L 14.000 1.782 14.000 10.678 L 14.000 19.574 11.612 17.189 C 9.975 15.554,9.167 14.780,9.039 14.727 C 8.624 14.555,8.125 14.694,7.831 15.063 C 7.627 15.319,7.590 15.744,7.743 16.060 C 7.816 16.211,8.828 17.254,11.161 19.583 C 14.647 23.063,14.576 22.999,15.000 22.999 C 15.424 22.999,15.353 23.063,18.839 19.583 C 21.172 17.254,22.184 16.211,22.257 16.060 C 22.410 15.744,22.373 15.319,22.169 15.063 C 21.875 14.694,21.376 14.555,20.961 14.727 C 20.833 14.780,20.025 15.554,18.388 17.188 L 16.001 19.573 15.988 10.624 L 15.975 1.675 15.856 1.484 C 15.687 1.212,15.416 1.048,15.093 1.023 C 14.946 1.012,14.762 1.023,14.684 1.048 M3.684 27.051 C 3.303 27.166,3.000 27.590,3.000 28.008 C 3.000 28.310,3.178 28.636,3.446 28.825 L 3.659 28.975 14.992 28.975 L 26.325 28.975 26.516 28.856 C 26.621 28.791,26.767 28.646,26.841 28.535 C 26.953 28.366,26.975 28.277,26.975 28.000 C 26.975 27.723,26.953 27.634,26.841 27.465 C 26.767 27.354,26.621 27.209,26.516 27.144 L 26.325 27.025 15.075 27.017 C 8.888 27.012,3.762 27.027,3.684 27.051 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.531 3.052 C 9.203 3.135,8.755 3.405,8.528 3.657 C 7.805 4.461,7.835 5.639,8.598 6.402 C 9.203 7.007,10.065 7.163,10.829 6.805 C 11.273 6.598,11.566 6.309,11.788 5.858 C 11.965 5.501,11.975 5.454,11.975 5.000 C 11.975 4.546,11.965 4.499,11.788 4.142 C 11.450 3.458,10.850 3.057,10.112 3.022 C 9.899 3.012,9.638 3.026,9.531 3.052 M19.531 3.052 C 19.203 3.135,18.755 3.405,18.528 3.657 C 17.805 4.461,17.835 5.639,18.598 6.402 C 19.203 7.007,20.065 7.163,20.829 6.805 C 21.273 6.598,21.566 6.309,21.788 5.858 C 21.965 5.501,21.975 5.454,21.975 5.000 C 21.975 4.546,21.965 4.499,21.788 4.142 C 21.450 3.458,20.850 3.057,20.112 3.022 C 19.899 3.012,19.638 3.026,19.531 3.052 M9.531 13.052 C 9.203 13.135,8.755 13.405,8.528 13.657 C 7.805 14.461,7.835 15.639,8.598 16.402 C 9.203 17.007,10.065 17.163,10.829 16.805 C 11.273 16.598,11.566 16.309,11.788 15.858 C 11.965 15.501,11.975 15.454,11.975 15.000 C 11.975 14.546,11.965 14.499,11.788 14.142 C 11.450 13.458,10.850 13.057,10.112 13.022 C 9.899 13.012,9.638 13.026,9.531 13.052 M19.531 13.052 C 19.203 13.135,18.755 13.405,18.528 13.657 C 17.805 14.461,17.835 15.639,18.598 16.402 C 19.203 17.007,20.065 17.163,20.829 16.805 C 21.273 16.598,21.566 16.309,21.788 15.858 C 21.965 15.501,21.975 15.454,21.975 15.000 C 21.975 14.546,21.965 14.499,21.788 14.142 C 21.450 13.458,20.850 13.057,20.112 13.022 C 19.899 13.012,19.638 13.026,19.531 13.052 M9.531 23.052 C 9.203 23.135,8.755 23.405,8.528 23.657 C 7.805 24.461,7.835 25.639,8.598 26.402 C 9.203 27.007,10.065 27.163,10.829 26.805 C 11.273 26.598,11.566 26.309,11.788 25.858 C 11.965 25.501,11.975 25.454,11.975 25.000 C 11.975 24.546,11.965 24.499,11.788 24.142 C 11.450 23.458,10.850 23.057,10.112 23.022 C 9.899 23.012,9.638 23.026,9.531 23.052 M19.531 23.052 C 19.203 23.135,18.755 23.405,18.528 23.657 C 17.805 24.461,17.835 25.639,18.598 26.402 C 19.203 27.007,20.065 27.163,20.829 26.805 C 21.273 26.598,21.566 26.309,21.788 25.858 C 21.965 25.501,21.975 25.454,21.975 25.000 C 21.975 24.546,21.965 24.499,21.788 24.142 C 21.450 23.458,20.850 23.057,20.112 23.022 C 19.899 23.012,19.638 23.026,19.531 23.052 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.684 0.051 C 6.303 0.166,6.000 0.590,6.000 1.008 C 6.000 1.310,6.178 1.636,6.446 1.825 L 6.659 1.975 16.329 1.988 L 26.000 2.001 26.000 11.618 L 26.000 21.234 26.116 21.455 C 26.180 21.576,26.329 21.743,26.446 21.825 C 26.631 21.956,26.702 21.975,26.995 21.975 C 27.277 21.975,27.365 21.953,27.535 21.841 C 27.646 21.767,27.791 21.621,27.856 21.516 L 27.975 21.325 27.975 10.996 L 27.975 0.668 27.841 0.465 C 27.767 0.354,27.621 0.209,27.516 0.144 L 27.325 0.025 17.075 0.017 C 11.438 0.012,6.762 0.027,6.684 0.051 M2.684 6.051 C 2.457 6.119,2.218 6.331,2.105 6.564 L 2.000 6.782 2.000 18.008 L 2.000 29.234 2.116 29.455 C 2.180 29.576,2.329 29.743,2.446 29.825 L 2.659 29.975 11.995 29.975 L 21.332 29.975 21.535 29.841 C 21.646 29.767,21.791 29.621,21.856 29.516 L 21.975 29.325 21.975 17.996 L 21.975 6.668 21.841 6.465 C 21.767 6.354,21.621 6.209,21.516 6.144 L 21.325 6.025 12.075 6.017 C 6.988 6.012,2.762 6.027,2.684 6.051 M20.000 18.000 L 20.000 28.000 12.000 28.000 L 4.000 28.000 4.000 18.000 L 4.000 8.000 12.000 8.000 L 20.000 8.000 20.000 18.000 M12.170 13.457 C 11.880 13.522,11.578 13.797,11.480 14.084 C 11.290 14.640,11.382 14.800,12.587 16.011 L 13.569 16.997 10.614 17.011 L 7.659 17.025 7.446 17.175 C 6.858 17.589,6.858 18.411,7.446 18.825 L 7.659 18.975 10.714 18.989 L 13.769 19.003 12.639 20.139 C 11.656 21.127,11.501 21.304,11.450 21.495 C 11.344 21.897,11.512 22.341,11.863 22.584 C 12.116 22.759,12.537 22.795,12.813 22.664 C 13.080 22.538,16.882 18.738,17.004 18.475 C 17.113 18.242,17.123 18.066,17.042 17.781 C 16.992 17.606,16.688 17.278,15.054 15.634 C 13.993 14.566,13.035 13.641,12.925 13.577 C 12.679 13.435,12.439 13.397,12.170 13.457 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21.675 1.447 C 21.593 1.466,21.469 1.511,21.400 1.547 C 21.204 1.647,3.904 18.954,3.800 19.154 C 3.674 19.395,2.732 25.938,2.761 26.362 C 2.777 26.587,2.814 26.689,2.931 26.837 C 3.115 27.067,3.458 27.250,3.708 27.250 C 3.951 27.250,10.413 26.320,10.675 26.248 C 10.848 26.200,12.055 25.013,19.638 17.434 C 24.457 12.616,28.434 8.604,28.475 8.517 C 28.573 8.311,28.571 7.886,28.470 7.685 C 28.362 7.469,22.571 1.667,22.350 1.553 C 22.131 1.441,21.870 1.400,21.675 1.447 M24.050 5.975 L 26.175 8.100 24.612 9.662 L 23.050 11.225 20.913 9.088 L 18.775 6.950 20.325 5.400 C 21.177 4.548,21.886 3.850,21.900 3.850 C 21.914 3.850,22.882 4.806,24.050 5.975 M19.400 10.625 L 21.525 12.750 16.462 17.813 L 11.400 22.875 9.263 20.737 L 7.125 18.600 12.175 13.550 C 14.952 10.773,17.236 8.500,17.250 8.500 C 17.264 8.500,18.232 9.456,19.400 10.625 M9.800 24.354 C 9.800 24.381,5.162 25.055,4.997 25.052 C 4.929 25.050,4.966 24.713,5.268 22.597 L 5.618 20.144 7.709 22.234 C 8.859 23.384,9.800 24.338,9.800 24.354 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.684 3.051 C 0.457 3.119,0.218 3.331,0.105 3.564 L 0.000 3.782 0.000 15.008 L 0.000 26.234 0.116 26.455 C 0.180 26.576,0.329 26.743,0.446 26.825 L 0.659 26.975 14.995 26.975 L 29.332 26.975 29.535 26.841 C 29.646 26.767,29.791 26.621,29.856 26.516 L 29.975 26.325 29.975 15.000 L 29.975 3.675 29.856 3.484 C 29.791 3.379,29.646 3.233,29.535 3.159 L 29.332 3.025 15.079 3.017 C 7.239 3.012,0.762 3.027,0.684 3.051 M20.687 10.687 L 15.000 16.375 9.313 10.687 L 3.625 5.000 15.000 5.000 L 26.375 5.000 20.687 10.687 M14.763 18.739 C 14.916 18.771,15.084 18.771,15.238 18.739 C 15.468 18.692,15.650 18.516,21.738 12.433 L 28.000 6.176 28.000 15.588 L 28.000 25.000 15.000 25.000 L 2.000 25.000 2.000 15.588 L 2.000 6.176 8.263 12.433 C 14.352 18.518,14.532 18.692,14.763 18.739 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 929 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.313 9.687 L 15.000 16.375 21.687 9.687 L 28.375 3.000 15.000 3.000 L 1.625 3.000 8.313 9.687 M0.000 15.205 L 0.000 26.234 0.116 26.455 C 0.180 26.576,0.329 26.743,0.446 26.825 L 0.659 26.975 14.995 26.975 L 29.332 26.975 29.535 26.841 C 29.646 26.767,29.791 26.621,29.856 26.516 L 29.975 26.325 29.988 15.250 L 30.001 4.175 22.738 11.433 C 15.669 18.497,15.469 18.692,15.237 18.739 C 15.084 18.771,14.916 18.771,14.762 18.739 C 14.531 18.692,14.333 18.499,7.263 11.433 L 0.000 4.175 0.000 15.205 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 652 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.684 0.050 C 0.457 0.120,0.218 0.331,0.105 0.564 L 0.000 0.782 -0.000 15.008 L -0.000 29.234 0.116 29.455 C 0.180 29.576,0.329 29.743,0.446 29.825 L 0.659 29.975 14.995 29.975 L 29.332 29.975 29.535 29.841 C 29.646 29.767,29.791 29.621,29.856 29.516 L 29.975 29.325 29.975 25.000 L 29.975 20.675 29.856 20.484 C 29.791 20.379,29.646 20.233,29.535 20.159 C 29.365 20.047,29.277 20.025,28.995 20.025 C 28.702 20.025,28.631 20.044,28.446 20.175 C 28.329 20.258,28.180 20.424,28.116 20.545 L 28.000 20.766 28.000 24.383 L 28.000 28.000 15.000 28.000 L 2.000 28.000 2.000 15.001 L 2.000 2.003 5.666 1.989 L 9.332 1.975 9.535 1.841 C 9.847 1.634,9.975 1.390,9.975 1.000 C 9.975 0.610,9.847 0.366,9.535 0.159 L 9.332 0.025 5.079 0.016 C 2.739 0.011,0.762 0.027,0.684 0.050 M19.684 0.050 C 19.303 0.166,19.000 0.590,19.000 1.008 C 19.000 1.310,19.178 1.636,19.446 1.825 L 19.659 1.975 23.115 1.989 L 26.571 2.003 20.339 8.239 C 14.598 13.984,14.103 14.493,14.049 14.699 C 13.840 15.496,14.504 16.160,15.301 15.951 C 15.507 15.897,16.016 15.402,21.763 9.659 L 28.000 3.426 28.000 6.830 L 28.000 10.234 28.116 10.455 C 28.180 10.576,28.329 10.742,28.446 10.825 C 28.631 10.956,28.702 10.975,28.995 10.975 C 29.277 10.975,29.365 10.953,29.535 10.841 C 29.646 10.767,29.791 10.621,29.856 10.516 L 29.975 10.325 29.975 5.496 L 29.975 0.668 29.841 0.465 C 29.767 0.354,29.621 0.209,29.516 0.144 L 29.325 0.025 24.575 0.016 C 21.963 0.012,19.762 0.027,19.684 0.050 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M27.875 1.034 C 27.820 1.045,27.719 1.066,27.650 1.080 C 27.570 1.097,26.515 2.114,24.716 3.911 L 21.907 6.716 21.216 6.401 C 18.429 5.130,15.726 4.740,12.759 5.181 C 10.203 5.561,7.696 6.707,5.342 8.574 C 4.223 9.461,2.752 10.988,1.752 12.301 C 1.279 12.921,0.438 14.178,0.248 14.550 C 0.098 14.843,0.098 15.157,0.248 15.450 C 0.425 15.795,1.254 17.044,1.679 17.605 C 2.917 19.240,4.612 20.941,5.960 21.901 C 6.172 22.052,6.346 22.197,6.347 22.224 C 6.349 22.252,5.171 23.455,3.729 24.899 C 0.979 27.655,0.999 27.632,1.001 28.050 C 1.002 28.181,1.148 28.520,1.260 28.652 C 1.501 28.936,1.967 29.066,2.331 28.951 C 2.489 28.901,3.352 28.064,7.025 24.399 L 11.525 19.909 11.946 20.154 C 13.791 21.224,15.894 21.281,17.769 20.312 C 18.856 19.751,19.752 18.853,20.316 17.762 C 21.281 15.894,21.222 13.787,20.153 11.946 L 19.909 11.525 24.378 7.050 C 27.522 3.901,28.869 2.520,28.923 2.389 C 29.025 2.144,29.019 1.871,28.907 1.625 C 28.802 1.393,28.504 1.113,28.324 1.076 C 28.074 1.024,27.973 1.015,27.875 1.034 M16.000 7.051 C 16.827 7.123,17.705 7.279,18.411 7.480 C 19.058 7.664,20.282 8.131,20.333 8.213 C 20.363 8.261,18.562 10.100,18.485 10.100 C 18.462 10.100,18.349 10.035,18.234 9.957 C 17.066 9.155,15.264 8.817,13.799 9.125 C 11.356 9.639,9.474 11.602,9.077 14.051 C 8.854 15.430,9.116 16.784,9.855 18.075 L 10.108 18.516 8.992 19.633 C 8.378 20.247,7.851 20.750,7.820 20.750 C 7.723 20.750,6.592 19.887,5.962 19.332 C 5.246 18.701,4.572 17.998,3.892 17.175 C 3.385 16.562,2.573 15.455,2.415 15.163 C 2.331 15.008,2.331 14.992,2.415 14.838 C 2.573 14.545,3.385 13.438,3.892 12.825 C 5.737 10.592,7.879 8.936,10.161 7.980 C 12.001 7.209,14.056 6.882,16.000 7.051 M24.514 9.765 L 23.810 10.475 24.134 10.750 C 24.599 11.146,25.583 12.181,26.137 12.857 C 26.634 13.464,27.433 14.557,27.585 14.838 C 27.669 14.992,27.669 15.008,27.585 15.163 C 27.434 15.443,26.635 16.535,26.119 17.167 C 25.528 17.892,24.311 19.127,23.643 19.678 C 20.846 21.991,17.829 23.093,14.600 22.984 C 13.673 22.953,12.983 22.865,12.191 22.680 L 11.708 22.566 10.919 23.356 C 10.485 23.791,10.141 24.158,10.156 24.172 C 10.170 24.186,10.529 24.297,10.953 24.419 C 15.929 25.840,20.979 24.629,25.154 21.012 C 25.803 20.450,27.058 19.175,27.561 18.566 C 28.367 17.592,29.239 16.358,29.684 15.562 C 29.935 15.114,29.935 14.886,29.684 14.438 C 29.239 13.642,28.368 12.409,27.562 11.434 C 27.160 10.949,25.699 9.439,25.396 9.198 L 25.218 9.056 24.514 9.765 M15.600 11.052 C 16.007 11.116,16.616 11.315,16.862 11.464 L 17.049 11.577 14.310 14.315 L 11.571 17.054 11.458 16.853 C 11.272 16.523,11.101 15.955,11.038 15.462 C 10.711 12.876,13.018 10.645,15.600 11.052 M18.746 13.629 C 19.531 15.800,18.382 18.103,16.150 18.830 C 15.764 18.955,15.659 18.968,15.000 18.967 C 14.413 18.965,14.212 18.945,13.942 18.862 C 13.566 18.746,13.000 18.502,13.000 18.456 C 13.000 18.439,14.221 17.204,15.713 15.711 C 18.814 12.609,18.464 12.849,18.746 13.629 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.835 5.054 C 10.781 5.306,8.020 6.450,5.342 8.574 C 4.654 9.119,3.308 10.426,2.666 11.172 C 2.010 11.934,1.390 12.757,0.836 13.604 C -0.104 15.037,-0.105 14.976,0.907 16.508 C 1.722 17.741,2.502 18.702,3.572 19.793 C 4.710 20.953,5.766 21.831,6.900 22.560 C 11.252 25.358,16.358 25.767,21.021 23.691 C 23.636 22.527,26.232 20.364,28.314 17.614 C 28.748 17.041,29.418 16.037,29.684 15.562 C 30.012 14.976,29.966 14.814,29.092 13.491 C 28.205 12.147,27.272 11.024,26.044 9.824 C 24.071 7.895,22.023 6.593,19.705 5.794 C 17.857 5.157,15.773 4.895,13.835 5.054 M16.850 7.146 C 17.987 7.325,18.854 7.567,19.839 7.980 C 22.121 8.936,24.263 10.592,26.108 12.825 C 26.615 13.438,27.427 14.545,27.585 14.838 C 27.669 14.992,27.669 15.008,27.585 15.163 C 27.434 15.443,26.635 16.535,26.119 17.167 C 25.528 17.892,24.311 19.127,23.643 19.678 C 20.973 21.886,18.076 22.998,15.000 22.998 C 10.891 22.998,7.030 20.974,3.892 17.175 C 3.385 16.562,2.573 15.455,2.415 15.163 C 2.331 15.008,2.331 14.992,2.415 14.838 C 2.573 14.545,3.385 13.438,3.892 12.825 C 6.289 9.923,9.198 7.997,12.200 7.324 C 12.692 7.214,13.591 7.075,14.100 7.030 C 14.632 6.983,16.248 7.051,16.850 7.146 M14.425 9.028 C 12.939 9.232,11.846 9.734,10.866 10.665 C 8.186 13.211,8.441 17.559,11.401 19.794 C 14.343 22.015,18.623 21.039,20.316 17.762 C 22.147 14.218,20.109 9.949,16.192 9.123 C 15.832 9.047,14.722 8.988,14.425 9.028 M15.700 11.072 C 17.789 11.451,19.225 13.385,18.962 15.462 C 18.757 17.076,17.720 18.318,16.150 18.830 C 15.765 18.955,15.656 18.968,15.000 18.968 C 14.344 18.968,14.235 18.955,13.850 18.830 C 12.278 18.318,11.244 17.080,11.039 15.462 C 10.704 12.832,13.079 10.595,15.700 11.072 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.684 1.051 C 3.457 1.119,3.218 1.331,3.105 1.564 L 3.000 1.782 3.000 15.008 L 3.000 28.234 3.116 28.455 C 3.180 28.576,3.329 28.743,3.446 28.825 L 3.659 28.975 14.992 28.975 L 26.325 28.975 26.516 28.856 C 26.621 28.791,26.767 28.646,26.841 28.535 L 26.975 28.332 26.988 18.611 C 26.997 11.750,26.985 8.828,26.947 8.682 C 26.899 8.499,26.459 8.041,23.209 4.792 C 20.034 1.617,19.497 1.101,19.325 1.054 C 19.082 0.989,3.902 0.986,3.684 1.051 M18.000 6.500 L 18.000 10.000 21.500 10.000 L 25.000 10.000 25.000 18.500 L 25.000 27.000 15.000 27.000 L 5.000 27.000 5.000 15.000 L 5.000 3.000 11.500 3.000 L 18.000 3.000 18.000 6.500 M21.800 6.225 L 23.574 8.000 21.787 8.000 L 20.000 8.000 20.000 6.225 C 20.000 5.249,20.006 4.450,20.013 4.450 C 20.020 4.450,20.824 5.249,21.800 6.225 M14.684 11.048 C 14.454 11.122,14.217 11.333,14.105 11.564 C 14.001 11.779,14.000 11.828,14.000 15.202 L 14.000 18.622 12.938 17.566 C 11.930 16.565,11.862 16.508,11.623 16.458 C 11.191 16.368,10.797 16.525,10.548 16.888 C 10.391 17.117,10.362 17.551,10.486 17.813 C 10.612 18.080,14.412 21.882,14.675 22.004 C 14.908 22.113,15.084 22.123,15.369 22.042 C 15.544 21.992,15.872 21.688,17.516 20.054 C 18.584 18.993,19.510 18.035,19.575 17.925 C 19.747 17.633,19.775 17.401,19.676 17.104 C 19.474 16.494,18.747 16.243,18.191 16.592 C 18.099 16.649,17.575 17.147,17.025 17.698 L 16.025 18.701 16.000 15.188 L 15.975 11.675 15.856 11.484 C 15.687 11.212,15.416 11.048,15.093 11.023 C 14.946 11.012,14.762 11.023,14.684 11.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.684 5.051 C 0.303 5.166,-0.000 5.590,0.000 6.008 C 0.000 6.310,0.178 6.636,0.446 6.825 L 0.659 6.975 14.995 6.975 L 29.332 6.975 29.535 6.841 C 29.847 6.634,29.975 6.390,29.975 6.000 C 29.975 5.610,29.847 5.366,29.535 5.159 L 29.332 5.025 15.079 5.017 C 7.239 5.012,0.762 5.027,0.684 5.051 M5.684 14.051 C 5.303 14.166,5.000 14.590,5.000 15.008 C 5.000 15.310,5.178 15.636,5.446 15.825 L 5.659 15.975 14.992 15.975 L 24.325 15.975 24.516 15.856 C 24.621 15.791,24.767 15.646,24.841 15.535 C 24.953 15.366,24.975 15.277,24.975 15.000 C 24.975 14.723,24.953 14.634,24.841 14.465 C 24.767 14.354,24.621 14.209,24.516 14.144 L 24.325 14.025 15.075 14.017 C 9.988 14.012,5.762 14.027,5.684 14.051 M10.684 23.050 C 10.303 23.166,10.000 23.590,10.000 24.008 C 10.000 24.310,10.178 24.636,10.446 24.825 L 10.659 24.975 14.995 24.975 L 19.332 24.975 19.535 24.841 C 19.847 24.634,19.975 24.390,19.975 24.000 C 19.975 23.610,19.847 23.366,19.535 23.159 L 19.332 23.025 15.079 23.016 C 12.739 23.011,10.762 23.027,10.684 23.050 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.684 0.048 C 2.454 0.122,2.217 0.333,2.105 0.564 L 2.000 0.782 2.000 15.008 L 2.000 29.234 2.116 29.455 C 2.180 29.576,2.329 29.743,2.446 29.825 C 2.631 29.955,2.702 29.975,2.992 29.975 C 3.391 29.975,3.633 29.850,3.841 29.535 L 3.975 29.332 3.988 23.666 L 4.002 18.000 15.163 17.999 C 25.851 17.998,26.334 17.994,26.525 17.907 C 26.937 17.720,27.194 17.259,27.123 16.837 C 27.097 16.684,26.555 15.835,24.894 13.342 C 23.687 11.531,22.700 10.027,22.700 10.000 C 22.700 9.973,23.687 8.469,24.894 6.658 C 26.555 4.165,27.097 3.316,27.123 3.163 C 27.194 2.741,26.937 2.280,26.525 2.093 C 26.334 2.006,25.852 2.002,15.167 2.001 L 4.010 2.000 3.992 1.338 C 3.977 0.744,3.963 0.655,3.856 0.484 C 3.687 0.212,3.416 0.048,3.093 0.023 C 2.946 0.012,2.762 0.023,2.684 0.048 M24.219 4.062 C 24.198 4.097,23.308 5.435,22.241 7.037 C 21.173 8.639,20.300 9.972,20.300 10.000 C 20.300 10.028,21.173 11.361,22.241 12.963 C 23.308 14.565,24.198 15.903,24.219 15.938 C 24.248 15.987,22.217 16.000,14.128 16.000 L 4.000 16.000 4.000 10.000 L 4.000 4.000 14.128 4.000 C 22.217 4.000,24.248 4.013,24.219 4.062 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.000 0.032 C 9.596 0.360,5.670 2.489,3.015 5.987 C 1.498 7.987,0.554 10.270,0.136 12.949 C -0.016 13.929,-0.016 16.071,0.136 17.051 C 0.778 21.165,2.767 24.541,5.991 26.988 C 7.982 28.498,10.278 29.447,12.949 29.864 C 13.929 30.016,16.071 30.016,17.051 29.864 C 20.696 29.295,23.794 27.652,26.120 25.054 C 28.181 22.750,29.372 20.204,29.864 17.051 C 30.016 16.071,30.016 13.929,29.864 12.949 C 29.447 10.278,28.498 7.982,26.988 5.991 C 24.507 2.722,20.962 0.665,16.875 0.124 C 16.290 0.047,14.550 -0.009,14.000 0.032 M16.918 2.151 C 18.316 2.359,19.393 2.698,20.725 3.348 C 22.061 4.000,23.103 4.746,24.178 5.822 C 25.254 6.897,26.000 7.939,26.652 9.275 C 27.127 10.248,27.356 10.858,27.580 11.748 C 27.881 12.940,27.967 13.666,27.967 15.000 C 27.967 15.956,27.947 16.306,27.859 16.875 C 27.727 17.731,27.471 18.763,27.226 19.427 C 26.782 20.631,25.947 22.114,25.129 23.150 C 24.726 23.660,23.570 24.804,23.050 25.206 C 20.061 27.522,16.418 28.436,12.725 27.797 C 10.665 27.441,8.692 26.556,6.950 25.206 C 6.430 24.804,5.274 23.660,4.871 23.150 C 4.055 22.115,3.218 20.631,2.776 19.432 C 2.525 18.752,2.275 17.746,2.143 16.893 C 1.985 15.865,1.985 14.135,2.143 13.107 C 2.275 12.254,2.525 11.248,2.776 10.568 C 3.218 9.368,4.057 7.880,4.872 6.850 C 5.254 6.367,6.367 5.254,6.850 4.872 C 8.885 3.262,11.271 2.302,13.854 2.052 C 14.580 1.982,16.118 2.031,16.918 2.151 M9.531 10.052 C 9.203 10.135,8.755 10.405,8.528 10.657 C 7.805 11.461,7.835 12.639,8.598 13.402 C 9.203 14.007,10.065 14.163,10.829 13.805 C 11.273 13.598,11.566 13.309,11.788 12.858 C 11.965 12.501,11.975 12.454,11.975 12.000 C 11.975 11.546,11.965 11.499,11.788 11.142 C 11.450 10.458,10.850 10.057,10.112 10.022 C 9.899 10.012,9.638 10.026,9.531 10.052 M19.531 10.052 C 19.203 10.135,18.755 10.405,18.528 10.657 C 17.805 11.461,17.835 12.639,18.598 13.402 C 19.203 14.007,20.065 14.163,20.829 13.805 C 21.273 13.598,21.566 13.309,21.788 12.858 C 21.965 12.501,21.975 12.454,21.975 12.000 C 21.975 11.546,21.965 11.499,21.788 11.142 C 21.450 10.458,20.850 10.057,20.112 10.022 C 19.899 10.012,19.638 10.026,19.531 10.052 M13.796 17.923 C 12.815 18.084,12.239 18.278,11.114 18.829 C 10.320 19.219,10.177 19.335,10.057 19.695 C 9.852 20.307,10.272 20.927,10.930 20.984 C 11.216 21.009,11.247 20.999,11.929 20.660 C 13.189 20.035,13.890 19.850,15.000 19.850 C 16.110 19.850,16.811 20.035,18.071 20.660 C 18.747 20.995,18.786 21.008,19.061 20.985 C 19.539 20.943,19.835 20.695,19.959 20.232 C 20.008 20.046,20.008 19.953,19.957 19.763 C 19.845 19.344,19.721 19.237,18.835 18.805 C 17.372 18.092,16.628 17.902,15.175 17.873 C 14.515 17.859,14.094 17.875,13.796 17.923 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.075 0.029 C 13.965 0.040,13.628 0.073,13.325 0.104 C 12.584 0.178,11.456 0.404,10.725 0.626 C 8.241 1.379,6.203 2.594,4.399 4.399 C 2.081 6.716,0.652 9.571,0.142 12.900 C -0.019 13.954,-0.019 16.046,0.142 17.100 C 0.563 19.853,1.625 22.298,3.324 24.426 C 3.835 25.066,4.934 26.165,5.574 26.676 C 7.702 28.375,10.147 29.437,12.900 29.858 C 13.516 29.952,13.831 29.969,15.000 29.969 C 16.169 29.969,16.484 29.952,17.100 29.858 C 19.853 29.437,22.298 28.375,24.426 26.676 C 25.066 26.165,26.165 25.066,26.676 24.426 C 28.375 22.298,29.437 19.853,29.858 17.100 C 29.952 16.484,29.969 16.169,29.969 15.000 C 29.969 13.831,29.952 13.516,29.858 12.900 C 29.351 9.585,27.926 6.731,25.626 4.422 C 23.248 2.034,20.241 0.556,16.875 0.121 C 16.336 0.051,14.470 -0.010,14.075 0.029 M15.601 6.053 C 16.404 6.152,17.119 6.403,17.837 6.838 C 18.268 7.099,18.919 7.698,19.262 8.150 C 19.601 8.596,19.974 9.378,20.132 9.976 C 20.252 10.425,20.265 10.565,20.267 11.375 C 20.269 12.190,20.257 12.320,20.140 12.753 C 20.069 13.016,19.915 13.421,19.799 13.653 C 19.217 14.810,18.474 15.539,17.281 16.121 C 16.819 16.346,16.662 16.452,16.456 16.677 C 16.061 17.110,16.000 17.368,15.999 18.618 C 15.998 19.487,15.985 19.653,15.906 19.827 C 15.563 20.583,14.472 20.587,14.122 19.834 C 14.007 19.587,14.001 19.527,14.001 18.575 C 14.001 17.360,14.086 16.858,14.398 16.229 C 14.784 15.450,15.343 14.895,16.175 14.466 C 16.828 14.130,17.141 13.903,17.520 13.494 C 18.137 12.827,18.434 12.006,18.384 11.100 C 18.304 9.644,17.408 8.461,16.075 8.051 C 14.560 7.586,12.828 8.298,12.112 9.681 C 11.873 10.143,11.701 10.784,11.699 11.225 C 11.696 11.908,11.237 12.350,10.595 12.288 C 10.095 12.240,9.702 11.784,9.700 11.249 C 9.698 10.117,10.157 8.811,10.869 7.922 C 11.998 6.513,13.745 5.822,15.601 6.053 M15.434 22.122 C 16.230 22.492,16.158 23.675,15.323 23.951 C 14.435 24.244,13.659 23.221,14.177 22.438 C 14.326 22.213,14.724 22.001,15.000 22.001 C 15.096 22.001,15.292 22.055,15.434 22.122 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.325 0.570 C 3.108 0.665,2.873 0.925,2.811 1.140 C 2.775 1.262,2.752 2.429,2.743 4.550 C 2.732 7.435,2.739 7.791,2.811 7.925 C 2.917 8.123,3.139 8.329,3.325 8.403 C 3.433 8.445,4.390 8.468,6.725 8.485 L 9.975 8.508 10.200 8.392 C 10.761 8.101,10.828 7.256,10.322 6.869 L 10.133 6.725 8.129 6.689 C 7.027 6.669,5.979 6.647,5.800 6.639 L 5.475 6.625 6.025 6.072 C 8.078 4.008,10.832 2.690,13.693 2.402 C 14.359 2.335,15.717 2.335,16.339 2.402 C 21.858 2.997,26.323 7.067,27.429 12.510 C 27.546 13.085,27.610 13.645,27.692 14.809 C 27.728 15.327,27.747 15.412,27.864 15.564 C 28.248 16.068,29.109 16.004,29.388 15.452 C 29.518 15.192,29.533 14.767,29.446 13.775 C 29.198 10.937,28.099 8.187,26.320 5.950 C 25.851 5.361,24.627 4.145,24.015 3.661 C 22.113 2.158,19.791 1.117,17.475 0.731 C 15.871 0.463,14.062 0.462,12.550 0.728 C 9.649 1.238,7.008 2.570,4.982 4.544 L 4.539 4.975 4.563 3.200 C 4.588 1.287,4.568 1.059,4.345 0.817 C 4.089 0.540,3.642 0.431,3.325 0.570 M14.684 6.048 C 14.454 6.122,14.217 6.333,14.105 6.564 C 14.001 6.780,14.000 6.807,14.000 11.508 L 14.000 16.234 14.116 16.455 C 14.180 16.576,14.328 16.743,14.446 16.825 L 14.659 16.975 17.692 16.990 C 20.870 17.006,20.968 17.001,21.258 16.786 C 21.443 16.650,21.650 16.231,21.650 15.996 C 21.650 15.891,21.590 15.696,21.511 15.545 C 21.398 15.329,21.321 15.252,21.105 15.139 L 20.839 15.000 18.420 15.000 L 16.002 15.000 15.989 10.838 L 15.975 6.675 15.856 6.484 C 15.687 6.212,15.416 6.048,15.093 6.023 C 14.946 6.012,14.762 6.023,14.684 6.048 M0.893 14.244 C 0.496 14.496,0.428 14.896,0.554 16.250 C 0.982 20.866,3.525 24.960,7.458 27.368 C 9.209 28.440,11.282 29.152,13.400 29.408 C 14.098 29.493,15.937 29.492,16.600 29.407 C 19.825 28.993,22.722 27.652,24.905 25.562 L 25.466 25.025 25.438 26.800 C 25.409 28.717,25.429 28.939,25.655 29.181 C 26.113 29.672,26.835 29.570,27.124 28.975 L 27.245 28.725 27.257 25.475 C 27.267 22.587,27.259 22.208,27.188 22.075 C 27.088 21.885,26.862 21.670,26.699 21.609 C 26.625 21.581,25.185 21.554,23.249 21.543 L 19.925 21.525 19.736 21.642 C 19.296 21.916,19.201 22.649,19.556 23.033 C 19.820 23.320,19.832 23.321,22.270 23.349 L 24.516 23.375 24.123 23.792 C 23.404 24.557,22.295 25.419,21.287 25.997 C 16.447 28.772,10.286 28.027,6.257 24.179 C 4.695 22.687,3.453 20.666,2.851 18.637 C 2.540 17.588,2.433 16.904,2.307 15.170 C 2.274 14.715,2.247 14.586,2.154 14.456 C 1.888 14.082,1.303 13.984,0.893 14.244 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.000 0.032 C 9.596 0.360,5.670 2.489,3.015 5.987 C 1.498 7.987,0.554 10.270,0.136 12.949 C -0.016 13.929,-0.016 16.071,0.136 17.051 C 0.778 21.165,2.767 24.541,5.991 26.988 C 7.982 28.498,10.278 29.447,12.949 29.864 C 13.929 30.016,16.071 30.016,17.051 29.864 C 20.696 29.295,23.794 27.652,26.120 25.054 C 28.181 22.750,29.372 20.204,29.864 17.051 C 30.016 16.071,30.016 13.929,29.864 12.949 C 29.447 10.278,28.498 7.982,26.988 5.991 C 24.507 2.722,20.962 0.665,16.875 0.124 C 16.290 0.047,14.550 -0.009,14.000 0.032 M16.918 2.151 C 18.316 2.359,19.393 2.698,20.725 3.348 C 22.061 4.000,23.103 4.746,24.178 5.822 C 25.254 6.897,26.000 7.939,26.652 9.275 C 27.127 10.248,27.356 10.858,27.580 11.748 C 27.881 12.940,27.967 13.666,27.967 15.000 C 27.967 15.956,27.947 16.306,27.859 16.875 C 27.727 17.731,27.471 18.763,27.226 19.427 C 26.782 20.631,25.947 22.114,25.129 23.150 C 24.726 23.660,23.570 24.804,23.050 25.206 C 20.061 27.522,16.418 28.436,12.725 27.797 C 10.665 27.441,8.692 26.556,6.950 25.206 C 6.430 24.804,5.274 23.660,4.871 23.150 C 4.055 22.115,3.218 20.631,2.776 19.432 C 2.525 18.752,2.275 17.746,2.143 16.893 C 1.985 15.865,1.985 14.135,2.143 13.107 C 2.275 12.254,2.525 11.248,2.776 10.568 C 3.218 9.368,4.057 7.880,4.872 6.850 C 5.254 6.367,6.367 5.254,6.850 4.872 C 8.885 3.262,11.271 2.302,13.854 2.052 C 14.580 1.982,16.118 2.031,16.918 2.151 M14.684 7.048 C 14.299 7.172,14.000 7.591,14.000 8.008 C 14.000 8.310,14.178 8.636,14.446 8.825 C 14.631 8.956,14.702 8.975,14.995 8.975 C 15.277 8.975,15.365 8.953,15.535 8.841 C 15.847 8.634,15.975 8.390,15.975 8.000 C 15.975 7.615,15.847 7.366,15.549 7.169 C 15.341 7.031,14.921 6.972,14.684 7.048 M14.684 11.048 C 14.454 11.122,14.217 11.333,14.105 11.564 C 14.001 11.780,14.000 11.807,14.000 16.508 L 14.000 21.234 14.116 21.455 C 14.180 21.576,14.329 21.743,14.446 21.825 C 14.631 21.956,14.702 21.975,14.995 21.975 C 15.277 21.975,15.365 21.953,15.535 21.841 C 15.646 21.767,15.791 21.621,15.856 21.516 L 15.975 21.325 15.975 16.500 L 15.975 11.675 15.856 11.484 C 15.687 11.212,15.416 11.048,15.093 11.023 C 14.946 11.012,14.762 11.023,14.684 11.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.604 0.056 C 12.934 0.115,12.012 0.278,11.240 0.472 C 9.292 0.963,7.233 2.000,5.574 3.324 C 4.934 3.835,3.835 4.934,3.324 5.574 C 2.000 7.233,0.963 9.292,0.472 11.240 C -0.161 13.752,-0.161 16.248,0.472 18.760 C 0.963 20.708,2.000 22.767,3.324 24.426 C 3.835 25.066,4.934 26.165,5.574 26.676 C 7.759 28.420,10.224 29.478,13.050 29.884 C 13.934 30.011,16.068 30.010,16.950 29.883 C 18.737 29.626,20.046 29.225,21.628 28.450 C 23.135 27.711,24.395 26.808,25.601 25.601 C 26.808 24.395,27.711 23.135,28.450 21.628 C 29.225 20.046,29.626 18.737,29.883 16.950 C 30.011 16.067,30.011 13.933,29.883 13.050 C 29.626 11.263,29.225 9.954,28.450 8.372 C 27.711 6.865,26.808 5.605,25.601 4.399 C 24.396 3.193,23.136 2.290,21.628 1.550 C 19.880 0.692,18.180 0.214,16.300 0.051 C 15.633 -0.007,14.283 -0.005,13.604 0.056 M15.318 7.061 C 15.431 7.095,15.603 7.206,15.704 7.310 C 16.173 7.794,16.042 8.570,15.441 8.870 C 15.151 9.014,14.985 9.029,14.682 8.939 C 14.265 8.814,13.945 8.305,14.015 7.877 C 14.120 7.229,14.688 6.873,15.318 7.061 M15.275 11.056 C 15.536 11.128,15.872 11.464,15.944 11.725 C 16.019 11.997,16.022 20.993,15.947 21.264 C 15.850 21.611,15.520 21.904,15.144 21.975 C 14.718 22.055,14.176 21.705,14.056 21.275 C 13.979 20.999,13.978 12.007,14.054 11.731 C 14.124 11.479,14.422 11.165,14.675 11.075 C 14.921 10.988,15.019 10.985,15.275 11.056 " stroke="none" fill-rule="evenodd" fill="black"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19.050 1.055 C 17.979 1.176,17.053 1.444,16.075 1.919 C 13.400 3.216,11.621 5.620,11.092 8.650 C 11.005 9.153,11.004 10.860,11.092 11.350 C 11.347 12.775,11.788 13.897,12.534 15.013 L 12.905 15.569 6.832 21.647 C 1.560 26.923,0.751 27.751,0.704 27.925 C 0.630 28.200,0.636 28.371,0.728 28.589 C 0.958 29.141,1.588 29.378,2.125 29.113 C 2.208 29.072,3.214 28.102,4.363 26.958 L 6.450 24.878 8.613 27.033 C 10.960 29.372,10.910 29.332,11.427 29.289 C 11.906 29.250,12.250 28.906,12.289 28.427 C 12.332 27.910,12.372 27.960,10.032 25.612 L 7.876 23.449 11.099 20.226 C 14.165 17.160,14.327 17.006,14.424 17.076 C 16.165 18.343,17.719 18.907,19.675 18.984 C 24.299 19.165,28.323 15.756,28.921 11.153 C 29.267 8.483,28.403 5.820,26.546 3.831 C 25.334 2.533,23.579 1.549,21.858 1.203 C 20.890 1.008,19.920 0.957,19.050 1.055 M21.300 3.127 C 22.213 3.302,23.137 3.685,23.950 4.224 C 24.433 4.544,25.456 5.567,25.776 6.050 C 26.318 6.867,26.694 7.777,26.881 8.727 C 27.003 9.345,27.003 10.655,26.881 11.273 C 26.609 12.654,26.008 13.816,25.052 14.815 C 24.012 15.901,22.813 16.562,21.300 16.884 C 20.704 17.011,19.296 17.011,18.700 16.884 C 17.187 16.562,15.988 15.901,14.948 14.815 C 14.008 13.833,13.431 12.738,13.142 11.384 C 12.986 10.656,12.986 9.344,13.142 8.616 C 13.431 7.264,14.008 6.167,14.944 5.189 C 15.480 4.629,15.930 4.275,16.575 3.906 C 17.325 3.476,18.273 3.161,19.142 3.053 C 19.661 2.989,20.781 3.027,21.300 3.127 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.684 2.051 C 2.457 2.119,2.218 2.331,2.105 2.564 L 2.000 2.782 2.000 12.008 L 2.000 21.234 2.116 21.455 C 2.180 21.576,2.329 21.743,2.446 21.825 L 2.659 21.975 14.995 21.975 L 27.332 21.975 27.535 21.841 C 27.646 21.767,27.791 21.621,27.856 21.516 L 27.975 21.325 27.975 11.996 L 27.975 2.668 27.841 2.465 C 27.767 2.354,27.621 2.209,27.516 2.144 L 27.325 2.025 15.075 2.017 C 8.338 2.012,2.762 2.027,2.684 2.051 M26.000 5.500 L 26.000 7.000 15.000 7.000 L 4.000 7.000 4.000 5.500 L 4.000 4.000 15.000 4.000 L 26.000 4.000 26.000 5.500 M26.000 14.500 L 26.000 20.000 15.000 20.000 L 4.000 20.000 4.000 14.500 L 4.000 9.000 15.000 9.000 L 26.000 9.000 26.000 14.500 M0.684 26.051 C 0.303 26.166,-0.000 26.590,0.000 27.008 C 0.000 27.310,0.178 27.636,0.446 27.825 L 0.659 27.975 14.995 27.975 L 29.332 27.975 29.535 27.841 C 29.847 27.634,29.975 27.390,29.975 27.000 C 29.975 26.610,29.847 26.366,29.535 26.159 L 29.332 26.025 15.079 26.017 C 7.239 26.012,0.762 26.027,0.684 26.051 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.938 0.078 C 9.664 0.227,9.650 0.314,9.650 1.873 L 9.650 3.300 8.373 3.300 C 6.949 3.300,6.876 3.314,6.731 3.619 C 6.656 3.778,6.650 4.455,6.662 11.775 L 6.675 19.758 6.862 19.929 L 7.049 20.100 14.975 20.100 L 22.901 20.100 23.088 19.929 L 23.275 19.758 23.288 11.775 C 23.302 3.002,23.322 3.573,23.004 3.385 C 22.878 3.311,22.698 3.300,21.605 3.300 L 20.350 3.300 20.350 1.873 C 20.350 0.300,20.337 0.223,20.047 0.074 C 19.919 0.007,19.688 -0.002,18.503 0.010 C 17.192 0.024,17.104 0.031,16.998 0.125 C 16.768 0.331,16.750 0.459,16.750 1.923 L 16.750 3.300 14.950 3.300 L 13.150 3.300 13.150 1.873 C 13.150 0.304,13.137 0.223,12.852 0.076 C 12.638 -0.034,10.142 -0.032,9.938 0.078 M20.300 8.050 L 20.300 9.400 14.950 9.400 L 9.600 9.400 9.600 8.050 L 9.600 6.700 14.950 6.700 L 20.300 6.700 20.300 8.050 M12.250 14.100 L 12.250 17.450 10.925 17.450 L 9.600 17.450 9.600 14.100 L 9.600 10.750 10.925 10.750 L 12.250 10.750 12.250 14.100 M20.300 14.100 L 20.300 17.450 16.975 17.450 L 13.650 17.450 13.650 14.100 L 13.650 10.750 16.975 10.750 L 20.300 10.750 20.300 14.100 M8.050 23.376 L 8.050 24.752 8.888 24.739 L 9.725 24.725 9.740 24.463 L 9.755 24.200 9.203 24.200 L 8.650 24.200 8.650 23.100 L 8.650 22.000 8.350 22.000 L 8.050 22.000 8.050 23.376 M19.327 22.213 C 19.314 22.274,19.296 22.392,19.289 22.473 C 19.278 22.593,19.244 22.631,19.113 22.668 C 18.961 22.711,18.950 22.729,18.950 22.932 C 18.950 23.140,18.957 23.150,19.096 23.150 L 19.242 23.150 19.258 23.774 C 19.275 24.396,19.276 24.399,19.429 24.553 C 19.514 24.637,19.665 24.725,19.763 24.747 C 19.933 24.786,20.321 24.746,20.383 24.684 C 20.398 24.668,20.391 24.570,20.366 24.465 C 20.326 24.295,20.306 24.277,20.181 24.292 C 19.915 24.323,19.850 24.196,19.850 23.642 L 19.850 23.150 20.100 23.150 L 20.350 23.150 20.350 22.900 L 20.350 22.650 20.100 22.650 L 19.850 22.650 19.850 22.375 L 19.850 22.100 19.601 22.100 C 19.383 22.100,19.349 22.114,19.327 22.213 M10.675 22.648 C 10.423 22.710,10.150 22.842,10.150 22.900 C 10.150 22.985,10.298 23.250,10.345 23.250 C 10.369 23.250,10.469 23.216,10.567 23.175 C 10.808 23.074,11.017 23.080,11.117 23.191 C 11.253 23.342,11.215 23.384,10.888 23.447 C 10.273 23.566,10.007 23.830,10.065 24.263 C 10.126 24.714,10.648 24.911,11.081 24.645 C 11.275 24.527,11.282 24.527,11.315 24.653 C 11.338 24.742,11.375 24.754,11.584 24.740 L 11.825 24.725 11.820 23.967 C 11.816 23.321,11.801 23.182,11.717 23.017 C 11.549 22.687,11.123 22.536,10.675 22.648 M15.025 22.675 C 14.198 22.968,14.120 24.252,14.905 24.652 C 15.293 24.850,15.760 24.773,16.063 24.462 C 16.293 24.225,16.350 24.069,16.349 23.684 C 16.347 23.145,16.093 22.783,15.625 22.655 C 15.369 22.585,15.270 22.588,15.025 22.675 M21.075 22.672 C 20.788 22.778,20.650 22.957,20.650 23.224 C 20.650 23.518,20.811 23.701,21.222 23.875 C 21.547 24.014,21.621 24.088,21.568 24.225 C 21.526 24.334,21.160 24.321,20.966 24.203 L 20.807 24.106 20.676 24.278 C 20.604 24.373,20.560 24.476,20.579 24.506 C 20.644 24.612,21.067 24.762,21.302 24.762 C 21.826 24.762,22.150 24.519,22.150 24.128 C 22.150 23.831,22.008 23.671,21.566 23.469 C 21.176 23.292,21.110 23.189,21.324 23.091 C 21.423 23.046,21.492 23.051,21.656 23.116 C 21.890 23.208,21.905 23.203,22.050 23.001 L 22.154 22.854 21.949 22.749 C 21.677 22.611,21.326 22.580,21.075 22.672 M12.506 23.647 C 12.723 24.195,12.900 24.679,12.900 24.724 C 12.900 24.858,12.669 25.050,12.507 25.050 C 12.373 25.050,12.356 25.069,12.324 25.253 C 12.306 25.365,12.305 25.472,12.324 25.491 C 12.401 25.567,12.838 25.516,13.008 25.410 C 13.255 25.258,13.394 24.969,13.818 23.735 L 14.190 22.650 13.897 22.650 L 13.604 22.650 13.504 22.988 C 13.449 23.173,13.365 23.488,13.317 23.688 C 13.270 23.887,13.218 24.050,13.203 24.050 C 13.188 24.050,13.076 23.735,12.954 23.350 L 12.733 22.650 12.423 22.650 L 12.112 22.650 12.506 23.647 M16.750 23.353 C 16.750 24.139,16.805 24.440,16.977 24.602 C 17.217 24.827,17.652 24.813,17.904 24.571 C 18.010 24.469,18.053 24.452,18.069 24.505 C 18.144 24.749,18.145 24.750,18.373 24.750 L 18.600 24.750 18.600 23.700 L 18.600 22.650 18.300 22.650 L 18.000 22.650 18.000 23.341 C 18.000 23.999,17.994 24.038,17.884 24.141 C 17.757 24.261,17.554 24.284,17.460 24.190 C 17.419 24.149,17.400 23.899,17.400 23.390 L 17.400 22.650 17.075 22.650 L 16.750 22.650 16.750 23.353 M15.593 23.217 C 15.836 23.476,15.762 24.141,15.477 24.249 C 15.168 24.367,14.974 24.093,15.010 23.593 C 15.028 23.349,15.056 23.266,15.147 23.193 C 15.301 23.067,15.460 23.076,15.593 23.217 M11.098 24.212 C 10.897 24.375,10.650 24.311,10.650 24.096 C 10.650 23.942,10.758 23.857,11.025 23.801 C 11.167 23.772,11.176 23.779,11.191 23.947 C 11.203 24.080,11.181 24.145,11.098 24.212 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.530 0.113 C 7.422 0.175,7.287 0.289,7.230 0.366 C 7.128 0.504,7.125 0.564,7.111 2.701 L 7.097 4.895 5.153 4.910 L 3.208 4.925 2.992 5.076 C 2.568 5.373,2.605 4.217,2.603 17.425 C 2.603 24.278,2.621 29.206,2.648 29.321 C 2.700 29.545,2.820 29.723,3.019 29.872 L 3.157 29.975 15.020 29.975 L 26.883 29.975 27.072 29.831 C 27.427 29.560,27.400 30.596,27.400 17.447 C 27.400 4.112,27.436 5.325,27.033 5.058 L 26.832 4.925 24.941 4.909 L 23.050 4.894 23.050 2.800 C 23.050 1.442,23.031 0.657,22.997 0.566 C 22.924 0.374,22.709 0.152,22.514 0.069 C 22.310 -0.019,18.493 -0.033,18.266 0.053 C 18.074 0.126,17.852 0.341,17.769 0.536 C 17.714 0.664,17.700 1.125,17.700 2.798 L 17.700 4.900 15.000 4.900 L 12.300 4.900 12.300 2.803 C 12.300 1.443,12.281 0.657,12.247 0.566 C 12.174 0.374,11.959 0.152,11.764 0.069 C 11.637 0.014,11.201 0.000,9.664 0.001 C 7.750 0.002,7.723 0.003,7.530 0.113 M23.000 12.000 L 23.000 14.000 15.000 14.000 L 7.000 14.000 7.000 12.000 L 7.000 10.000 15.000 10.000 L 23.000 10.000 23.000 12.000 M11.000 21.000 L 11.000 26.000 9.000 26.000 L 7.000 26.000 7.000 21.000 L 7.000 16.000 9.000 16.000 L 11.000 16.000 11.000 21.000 M23.000 21.000 L 23.000 26.000 18.000 26.000 L 13.000 26.000 13.000 21.000 L 13.000 16.000 18.000 16.000 L 23.000 16.000 23.000 21.000 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.000 0.032 C 9.596 0.360,5.670 2.489,3.015 5.987 C 1.498 7.987,0.554 10.270,0.136 12.949 C -0.016 13.929,-0.016 16.071,0.136 17.051 C 0.778 21.165,2.767 24.541,5.991 26.988 C 7.982 28.498,10.278 29.447,12.949 29.864 C 13.929 30.016,16.071 30.016,17.051 29.864 C 20.696 29.295,23.794 27.652,26.120 25.054 C 28.181 22.750,29.372 20.204,29.864 17.051 C 30.016 16.071,30.016 13.929,29.864 12.949 C 29.447 10.278,28.498 7.982,26.988 5.991 C 24.507 2.722,20.962 0.665,16.875 0.124 C 16.290 0.047,14.550 -0.009,14.000 0.032 M16.085 2.054 C 18.248 2.236,20.309 2.947,22.125 4.139 C 22.692 4.511,23.360 5.014,23.388 5.091 C 23.394 5.110,22.446 6.079,21.280 7.245 L 19.160 9.364 18.818 9.138 C 18.110 8.670,17.294 8.336,16.384 8.142 C 15.656 7.986,14.344 7.986,13.616 8.142 C 12.706 8.336,11.890 8.670,11.182 9.138 L 10.840 9.364 8.720 7.245 C 7.554 6.079,6.606 5.110,6.612 5.091 C 6.640 5.014,7.308 4.511,7.875 4.139 C 10.310 2.540,13.186 1.810,16.085 2.054 M7.290 8.665 L 9.405 10.780 9.172 11.127 C 8.692 11.842,8.352 12.662,8.142 13.606 C 7.989 14.295,7.976 15.644,8.116 16.300 C 8.311 17.218,8.664 18.089,9.136 18.821 L 9.358 19.166 7.242 21.283 C 6.078 22.447,5.110 23.394,5.091 23.388 C 5.014 23.360,4.511 22.692,4.139 22.125 C 1.299 17.797,1.299 12.199,4.139 7.875 C 4.526 7.286,5.085 6.550,5.145 6.550 C 5.162 6.550,6.127 7.502,7.290 8.665 M25.176 6.913 C 25.336 7.112,25.644 7.545,25.861 7.875 C 28.701 12.199,28.701 17.796,25.861 22.125 C 25.489 22.692,24.986 23.360,24.909 23.388 C 24.890 23.394,23.922 22.447,22.758 21.283 L 20.642 19.166 20.864 18.821 C 21.336 18.089,21.689 17.217,21.884 16.300 C 22.011 15.704,22.011 14.296,21.884 13.700 C 21.684 12.761,21.307 11.841,20.828 11.127 L 20.595 10.780 22.710 8.665 C 23.873 7.502,24.838 6.550,24.855 6.550 C 24.872 6.550,25.017 6.713,25.176 6.913 M16.198 10.150 C 17.026 10.352,17.911 10.854,18.529 11.471 C 19.151 12.093,19.645 12.970,19.858 13.828 C 20.017 14.464,20.017 15.536,19.858 16.172 C 19.414 17.961,18.043 19.357,16.256 19.839 C 15.836 19.952,15.677 19.968,15.000 19.968 C 14.323 19.968,14.164 19.952,13.744 19.839 C 12.567 19.521,11.550 18.808,10.890 17.836 C 10.589 17.392,10.267 16.677,10.142 16.172 C 9.983 15.536,9.983 14.464,10.142 13.828 C 10.268 13.318,10.588 12.610,10.903 12.144 C 11.629 11.066,12.921 10.268,14.291 10.050 C 14.729 9.981,15.714 10.032,16.198 10.150 M11.131 20.831 C 11.616 21.156,12.178 21.429,12.767 21.625 C 13.636 21.914,14.023 21.975,15.000 21.975 C 15.977 21.975,16.364 21.914,17.233 21.625 C 17.824 21.428,18.384 21.156,18.873 20.828 L 19.220 20.595 21.348 22.724 L 23.475 24.852 23.275 25.024 C 23.165 25.119,22.861 25.351,22.600 25.539 C 20.384 27.137,17.720 27.999,15.000 27.999 C 12.278 27.999,9.618 27.138,7.400 25.539 C 7.139 25.351,6.835 25.119,6.725 25.025 L 6.525 24.852 8.650 22.726 C 9.818 21.557,10.777 20.600,10.781 20.600 C 10.784 20.600,10.942 20.704,11.131 20.831 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19.475 0.093 C 19.365 0.145,19.171 0.298,19.045 0.432 C 18.237 1.284,4.704 16.817,4.612 16.996 C 4.364 17.484,4.557 18.047,5.061 18.305 C 5.238 18.396,5.410 18.400,9.073 18.400 C 11.971 18.400,12.900 18.414,12.900 18.459 C 12.900 18.491,12.155 20.847,11.245 23.695 C 9.784 28.263,9.592 28.901,9.613 29.115 C 9.643 29.427,9.852 29.728,10.150 29.888 C 10.458 30.053,10.877 30.023,11.157 29.817 C 11.411 29.629,25.242 13.288,25.387 13.004 C 25.645 12.499,25.420 11.900,24.888 11.677 C 24.727 11.610,24.241 11.600,21.121 11.600 L 17.539 11.600 17.567 11.488 C 17.583 11.426,18.328 9.087,19.223 6.291 C 20.441 2.484,20.850 1.147,20.849 0.966 C 20.847 0.288,20.081 -0.198,19.475 0.093 M16.275 8.940 C 15.656 10.874,15.150 12.505,15.150 12.565 C 15.151 12.782,15.258 13.056,15.410 13.229 C 15.730 13.594,15.518 13.572,19.092 13.600 L 22.308 13.625 17.800 18.950 C 15.321 21.879,13.248 24.320,13.193 24.375 C 13.129 24.440,13.104 24.449,13.121 24.400 C 13.463 23.422,15.300 17.542,15.300 17.427 C 15.300 17.060,15.106 16.729,14.783 16.544 L 14.575 16.425 11.158 16.400 L 7.741 16.375 12.558 10.868 C 15.207 7.839,17.381 5.376,17.387 5.393 C 17.394 5.411,16.894 7.007,16.275 8.940 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19.475 0.093 C 19.365 0.145,19.171 0.298,19.045 0.432 C 18.238 1.283,4.704 16.817,4.612 16.996 C 4.364 17.484,4.557 18.047,5.061 18.305 C 5.238 18.396,5.410 18.400,9.073 18.400 C 12.038 18.400,12.900 18.414,12.900 18.461 C 12.900 18.494,12.155 20.850,11.245 23.697 C 9.783 28.266,9.592 28.901,9.613 29.115 C 9.643 29.427,9.852 29.728,10.150 29.888 C 10.458 30.053,10.877 30.023,11.157 29.817 C 11.411 29.629,25.242 13.288,25.387 13.004 C 25.645 12.499,25.420 11.900,24.888 11.677 C 24.727 11.610,24.241 11.600,21.121 11.600 L 17.539 11.600 17.567 11.488 C 17.583 11.426,18.328 9.087,19.223 6.291 C 20.441 2.484,20.850 1.147,20.849 0.966 C 20.847 0.288,20.081 -0.198,19.475 0.093 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 833 B

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19.225 1.231 C 17.388 1.505,15.872 2.217,14.525 3.439 C 13.562 4.313,11.559 6.365,11.477 6.564 C 11.381 6.791,11.378 7.152,11.469 7.364 C 11.553 7.560,11.825 7.825,12.016 7.897 C 12.218 7.973,12.574 7.962,12.786 7.874 C 12.905 7.824,13.539 7.232,14.597 6.183 C 16.332 4.462,16.647 4.205,17.506 3.804 C 18.440 3.368,19.206 3.200,20.264 3.200 C 21.386 3.200,22.244 3.395,23.160 3.855 C 24.934 4.747,26.183 6.359,26.606 8.300 C 26.742 8.927,26.767 10.135,26.657 10.750 C 26.561 11.280,26.322 12.007,26.089 12.475 C 25.649 13.358,25.416 13.640,23.718 15.350 C 22.654 16.423,22.079 17.039,22.027 17.161 C 21.866 17.547,21.980 17.991,22.316 18.286 C 22.629 18.561,23.042 18.608,23.423 18.414 C 23.603 18.323,25.508 16.450,26.361 15.526 C 27.882 13.880,28.652 12.080,28.736 9.975 C 28.901 5.837,26.106 2.256,22.000 1.346 C 21.617 1.261,21.317 1.238,20.450 1.225 C 19.859 1.216,19.308 1.219,19.225 1.231 M17.790 10.449 C 17.688 10.468,17.519 10.543,17.415 10.615 C 17.310 10.688,15.780 12.193,14.015 13.961 C 11.789 16.190,10.781 17.232,10.727 17.361 C 10.632 17.590,10.628 17.950,10.718 18.164 C 10.820 18.407,11.093 18.644,11.364 18.724 C 11.630 18.804,11.834 18.782,12.100 18.646 C 12.369 18.509,18.829 12.016,18.923 11.789 C 19.025 11.544,19.019 11.271,18.907 11.025 C 18.709 10.588,18.265 10.360,17.790 10.449 M6.294 11.816 C 6.001 11.926,5.885 12.029,4.547 13.382 C 2.994 14.952,2.495 15.595,2.005 16.660 C 1.679 17.366,1.424 18.213,1.293 19.025 C 1.198 19.612,1.213 21.013,1.322 21.625 C 1.916 24.978,4.364 27.630,7.621 28.451 C 8.452 28.660,9.036 28.718,9.992 28.685 C 11.190 28.644,12.199 28.407,13.239 27.922 C 14.387 27.386,14.966 26.934,16.657 25.251 C 18.162 23.753,18.181 23.727,18.139 23.223 C 18.114 22.917,17.972 22.676,17.711 22.497 C 17.479 22.339,16.989 22.302,16.745 22.426 C 16.652 22.473,15.945 23.135,15.175 23.897 C 13.637 25.418,13.183 25.774,12.285 26.162 C 11.507 26.499,10.798 26.657,9.925 26.685 C 8.727 26.724,7.760 26.513,6.731 25.987 C 3.598 24.384,2.322 20.521,3.887 17.375 C 4.288 16.569,4.567 16.228,6.054 14.725 C 7.556 13.206,7.599 13.151,7.600 12.722 C 7.600 12.460,7.366 12.064,7.129 11.924 C 6.865 11.770,6.534 11.727,6.294 11.816 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.684 0.548 C 0.299 0.672,-0.000 1.091,0.000 1.508 C 0.000 1.810,0.178 2.136,0.446 2.325 C 0.631 2.456,0.702 2.475,0.995 2.475 C 1.277 2.475,1.365 2.453,1.535 2.341 C 1.847 2.134,1.975 1.890,1.975 1.500 C 1.975 1.115,1.847 0.866,1.549 0.669 C 1.341 0.531,0.921 0.472,0.684 0.548 M8.684 0.551 C 8.303 0.666,8.000 1.090,8.000 1.508 C 8.000 1.810,8.178 2.136,8.446 2.325 L 8.659 2.475 18.992 2.475 L 29.325 2.475 29.516 2.356 C 29.621 2.291,29.767 2.146,29.841 2.035 C 29.953 1.866,29.975 1.777,29.975 1.500 C 29.975 1.223,29.953 1.134,29.841 0.965 C 29.767 0.854,29.621 0.709,29.516 0.644 L 29.325 0.525 19.075 0.517 C 13.438 0.512,8.762 0.527,8.684 0.551 M0.684 9.548 C 0.299 9.672,-0.000 10.091,0.000 10.508 C 0.000 10.810,0.178 11.136,0.446 11.325 C 0.631 11.456,0.702 11.475,0.995 11.475 C 1.277 11.475,1.365 11.453,1.535 11.341 C 1.847 11.134,1.975 10.890,1.975 10.500 C 1.975 10.115,1.847 9.866,1.549 9.669 C 1.341 9.531,0.921 9.472,0.684 9.548 M8.684 9.551 C 8.303 9.666,8.000 10.090,8.000 10.508 C 8.000 10.810,8.178 11.136,8.446 11.325 L 8.659 11.475 18.992 11.475 L 29.325 11.475 29.516 11.356 C 29.621 11.291,29.767 11.146,29.841 11.035 C 29.953 10.866,29.975 10.777,29.975 10.500 C 29.975 10.223,29.953 10.134,29.841 9.965 C 29.767 9.854,29.621 9.709,29.516 9.644 L 29.325 9.525 19.075 9.517 C 13.438 9.512,8.762 9.527,8.684 9.551 M0.684 18.548 C 0.299 18.672,-0.000 19.091,0.000 19.508 C 0.000 19.810,0.178 20.136,0.446 20.325 C 0.631 20.456,0.702 20.475,0.995 20.475 C 1.277 20.475,1.365 20.453,1.535 20.341 C 1.847 20.134,1.975 19.890,1.975 19.500 C 1.975 19.115,1.847 18.866,1.549 18.669 C 1.341 18.531,0.921 18.472,0.684 18.548 M8.684 18.551 C 8.303 18.666,8.000 19.090,8.000 19.508 C 8.000 19.810,8.178 20.136,8.446 20.325 L 8.659 20.475 18.992 20.475 L 29.325 20.475 29.516 20.356 C 29.621 20.291,29.767 20.146,29.841 20.035 C 29.953 19.866,29.975 19.777,29.975 19.500 C 29.975 19.223,29.953 19.134,29.841 18.965 C 29.767 18.854,29.621 18.709,29.516 18.644 L 29.325 18.525 19.075 18.517 C 13.438 18.512,8.762 18.527,8.684 18.551 M0.684 27.548 C 0.299 27.672,-0.000 28.091,0.000 28.508 C 0.000 28.810,0.178 29.136,0.446 29.325 C 0.631 29.456,0.702 29.475,0.995 29.475 C 1.277 29.475,1.365 29.453,1.535 29.341 C 1.847 29.134,1.975 28.890,1.975 28.500 C 1.975 28.115,1.847 27.866,1.549 27.669 C 1.341 27.531,0.921 27.472,0.684 27.548 M8.684 27.551 C 8.303 27.666,8.000 28.090,8.000 28.508 C 8.000 28.810,8.178 29.136,8.446 29.325 L 8.659 29.475 18.992 29.475 L 29.325 29.475 29.516 29.356 C 29.621 29.291,29.767 29.146,29.841 29.035 C 29.953 28.866,29.975 28.777,29.975 28.500 C 29.975 28.223,29.953 28.134,29.841 27.965 C 29.767 27.854,29.621 27.709,29.516 27.644 L 29.325 27.525 19.075 27.517 C 13.438 27.512,8.762 27.527,8.684 27.551 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.684 0.048 C 14.454 0.122,14.217 0.333,14.105 0.564 C 14.002 0.778,14.000 0.831,14.000 4.008 L 14.000 7.234 14.116 7.455 C 14.180 7.576,14.329 7.742,14.446 7.825 C 14.631 7.955,14.702 7.975,14.992 7.975 C 15.391 7.975,15.633 7.849,15.841 7.535 L 15.975 7.332 15.975 4.004 L 15.975 0.675 15.856 0.484 C 15.687 0.212,15.416 0.048,15.093 0.023 C 14.946 0.012,14.762 0.023,14.684 0.048 M24.425 4.043 C 24.142 4.180,19.781 8.559,19.677 8.811 C 19.375 9.541,20.037 10.304,20.831 10.141 C 21.067 10.092,21.151 10.015,23.388 7.783 C 25.868 5.308,25.894 5.278,25.836 4.850 C 25.768 4.344,25.404 3.994,24.913 3.964 C 24.703 3.951,24.571 3.973,24.425 4.043 M0.684 14.050 C 0.302 14.167,-0.000 14.590,0.000 15.008 C 0.000 15.310,0.178 15.636,0.446 15.825 L 0.659 15.975 3.995 15.975 L 7.332 15.975 7.535 15.841 C 7.847 15.634,7.975 15.390,7.975 15.000 C 7.975 14.610,7.847 14.366,7.535 14.159 L 7.332 14.025 4.079 14.016 C 2.289 14.011,0.762 14.027,0.684 14.050 M22.684 14.050 C 22.302 14.167,22.000 14.590,22.000 15.008 C 22.000 15.310,22.178 15.636,22.446 15.825 L 22.659 15.975 25.995 15.975 L 29.332 15.975 29.535 15.841 C 29.847 15.634,29.975 15.390,29.975 15.000 C 29.975 14.610,29.847 14.366,29.535 14.159 L 29.332 14.025 26.079 14.016 C 24.289 14.011,22.762 14.027,22.684 14.050 M8.700 19.749 C 8.604 19.801,7.509 20.863,6.267 22.109 C 3.921 24.463,3.901 24.486,3.900 24.880 C 3.899 25.197,4.154 25.599,4.451 25.750 C 4.666 25.860,5.057 25.882,5.284 25.798 C 5.493 25.720,9.938 21.273,10.054 21.025 C 10.279 20.546,10.079 19.996,9.589 19.745 C 9.348 19.621,8.934 19.623,8.700 19.749 M20.219 19.775 C 20.082 19.843,19.924 19.961,19.868 20.037 C 19.625 20.366,19.595 20.844,19.797 21.169 C 19.850 21.255,20.902 22.328,22.135 23.555 C 24.198 25.609,24.394 25.790,24.613 25.849 C 25.089 25.978,25.555 25.774,25.770 25.341 C 25.914 25.053,25.929 24.888,25.841 24.581 C 25.791 24.406,25.451 24.042,23.554 22.136 C 21.223 19.794,21.055 19.650,20.650 19.650 C 20.551 19.650,20.357 19.706,20.219 19.775 M14.684 22.048 C 14.454 22.122,14.217 22.333,14.105 22.564 C 14.002 22.778,14.000 22.831,14.000 26.008 L 14.000 29.234 14.116 29.455 C 14.180 29.576,14.329 29.743,14.446 29.825 C 14.631 29.955,14.702 29.975,14.992 29.975 C 15.391 29.975,15.633 29.849,15.841 29.535 L 15.975 29.332 15.975 26.004 L 15.975 22.675 15.856 22.484 C 15.687 22.212,15.416 22.048,15.093 22.023 C 14.946 22.012,14.762 22.023,14.684 22.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.300 0.033 C 11.454 0.316,9.007 2.007,7.801 4.525 C 7.174 5.833,7.000 6.755,7.000 8.759 L 7.000 9.996 4.829 10.010 L 2.658 10.025 2.446 10.175 C 2.328 10.258,2.180 10.424,2.116 10.545 L 2.000 10.766 2.000 20.000 L 2.000 29.234 2.116 29.455 C 2.180 29.576,2.329 29.743,2.446 29.825 L 2.659 29.975 14.992 29.975 L 27.325 29.975 27.516 29.856 C 27.621 29.791,27.767 29.646,27.841 29.535 L 27.975 29.332 27.975 20.004 L 27.975 10.675 27.856 10.484 C 27.791 10.379,27.647 10.233,27.535 10.159 L 27.332 10.025 25.172 10.011 L 23.011 9.996 22.985 8.486 C 22.958 6.826,22.910 6.464,22.595 5.503 C 21.615 2.516,18.985 0.398,15.825 0.050 C 15.398 0.003,14.682 -0.005,14.300 0.033 M16.192 2.123 C 17.369 2.371,18.376 2.917,19.229 3.771 C 20.071 4.612,20.600 5.579,20.879 6.784 C 20.937 7.033,20.965 7.512,20.985 8.563 L 21.012 10.000 15.000 10.000 L 8.988 10.000 9.015 8.563 C 9.044 7.046,9.071 6.828,9.325 6.070 C 9.814 4.612,10.930 3.340,12.342 2.629 C 12.944 2.326,13.570 2.145,14.425 2.028 C 14.722 1.988,15.832 2.047,16.192 2.123 M26.000 20.000 L 26.000 28.000 15.000 28.000 L 4.000 28.000 4.000 20.000 L 4.000 12.000 15.000 12.000 L 26.000 12.000 26.000 20.000 M14.684 17.048 C 14.454 17.122,14.217 17.333,14.105 17.564 C 14.003 17.775,14.000 17.848,14.000 20.008 L 14.000 22.234 14.116 22.455 C 14.180 22.576,14.329 22.743,14.446 22.825 C 14.631 22.956,14.702 22.975,14.995 22.975 C 15.277 22.975,15.365 22.953,15.535 22.841 C 15.646 22.767,15.791 22.621,15.856 22.516 L 15.975 22.325 15.975 20.000 L 15.975 17.675 15.856 17.484 C 15.687 17.212,15.416 17.048,15.093 17.023 C 14.946 17.012,14.762 17.023,14.684 17.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.050 0.029 C 13.954 0.040,13.628 0.074,13.325 0.104 C 11.709 0.265,9.986 0.765,8.425 1.525 C 5.969 2.722,3.931 4.524,2.409 6.847 C 1.256 8.607,0.484 10.668,0.142 12.900 C 0.048 13.517,0.031 13.830,0.031 15.000 C 0.031 16.170,0.048 16.483,0.142 17.100 C 0.651 20.422,2.086 23.288,4.399 25.601 C 6.714 27.916,9.561 29.341,12.900 29.857 C 13.518 29.952,13.829 29.969,15.000 29.969 C 16.488 29.970,17.027 29.914,18.326 29.625 C 19.842 29.286,22.018 28.403,22.396 27.972 C 22.541 27.806,22.649 27.529,22.650 27.320 C 22.651 27.003,22.396 26.601,22.099 26.450 C 21.782 26.288,21.466 26.316,21.009 26.546 C 18.275 27.920,15.359 28.329,12.437 27.747 C 10.554 27.372,8.790 26.579,7.185 25.384 C 6.488 24.866,5.287 23.695,4.790 23.050 C 3.304 21.120,2.438 19.059,2.091 16.625 C 2.006 16.033,2.006 13.967,2.091 13.375 C 2.438 10.938,3.304 8.878,4.791 6.950 C 5.212 6.403,6.403 5.212,6.950 4.791 C 8.878 3.304,10.938 2.438,13.375 2.091 C 13.967 2.006,16.033 2.006,16.625 2.091 C 19.062 2.438,21.121 3.304,23.050 4.792 C 23.597 5.214,24.786 6.403,25.208 6.950 C 26.656 8.827,27.522 10.840,27.874 13.150 C 28.131 14.835,27.950 17.269,27.451 18.850 C 27.271 19.421,27.094 19.739,26.745 20.121 C 26.219 20.696,25.609 21.000,24.978 21.000 C 23.909 21.000,23.006 20.290,22.719 19.225 C 22.664 19.023,22.651 18.011,22.649 14.000 C 22.648 9.297,22.643 9.014,22.557 8.825 C 22.297 8.253,21.615 8.046,21.113 8.386 C 20.760 8.626,20.659 8.857,20.654 9.442 L 20.650 9.860 20.285 9.503 C 18.482 7.741,15.858 7.000,13.356 7.546 C 12.762 7.676,12.364 7.815,11.750 8.106 C 10.845 8.536,10.224 8.982,9.521 9.707 C 8.587 10.670,8.002 11.681,7.647 12.945 C 7.363 13.954,7.290 14.941,7.424 15.961 C 7.648 17.671,8.366 19.133,9.587 20.368 C 10.593 21.384,11.733 22.041,13.109 22.396 C 15.730 23.072,18.509 22.301,20.431 20.366 L 20.837 19.958 20.979 20.309 C 21.402 21.362,22.347 22.291,23.411 22.701 C 25.035 23.327,26.636 22.972,27.978 21.689 C 28.907 20.801,29.307 19.975,29.668 18.196 C 29.916 16.972,29.972 16.372,29.970 14.950 C 29.967 13.488,29.891 12.792,29.596 11.550 C 28.557 7.165,25.621 3.496,21.575 1.525 C 20.071 0.792,18.559 0.341,16.875 0.120 C 16.342 0.051,14.405 -0.012,14.050 0.029 M16.175 9.475 C 16.657 9.574,17.355 9.843,17.803 10.103 C 19.212 10.921,20.163 12.230,20.534 13.864 C 20.646 14.360,20.646 15.640,20.534 16.136 C 20.280 17.254,19.814 18.123,19.029 18.941 C 16.913 21.145,13.350 21.219,11.135 19.104 C 10.490 18.489,10.063 17.854,9.735 17.025 C 9.466 16.347,9.378 15.847,9.378 15.000 C 9.378 14.497,9.406 14.145,9.468 13.850 C 9.953 11.537,11.890 9.727,14.230 9.403 C 14.697 9.339,15.687 9.375,16.175 9.475 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.825 0.583 C 12.768 0.709,11.977 0.877,11.184 1.146 C 6.903 2.599,3.855 6.428,3.320 11.025 C 3.222 11.864,3.248 13.361,3.373 14.100 C 3.708 16.089,4.573 18.025,5.809 19.555 C 5.955 19.736,7.963 22.024,10.270 24.639 C 14.703 29.665,14.592 29.550,15.015 29.550 C 15.407 29.550,15.421 29.535,19.836 24.525 C 22.162 21.885,24.218 19.523,24.404 19.275 C 25.564 17.732,26.294 16.031,26.633 14.075 C 26.759 13.353,26.759 11.395,26.634 10.605 C 25.931 6.157,22.948 2.549,18.816 1.146 C 17.581 0.727,16.384 0.546,14.926 0.557 C 14.403 0.562,13.907 0.573,13.825 0.583 M16.371 2.626 C 20.810 3.207,24.227 6.805,24.697 11.393 C 24.948 13.846,24.198 16.346,22.623 18.305 C 22.158 18.884,15.047 26.925,15.000 26.925 C 14.953 26.925,7.763 18.794,7.352 18.276 C 5.789 16.307,5.043 13.789,5.302 11.361 C 5.787 6.816,9.187 3.225,13.571 2.629 C 14.265 2.534,15.663 2.533,16.371 2.626 M14.425 6.028 C 12.939 6.232,11.846 6.734,10.866 7.665 C 8.186 10.211,8.441 14.559,11.401 16.794 C 14.343 19.015,18.623 18.039,20.316 14.762 C 22.147 11.218,20.109 6.949,16.192 6.123 C 15.832 6.047,14.722 5.988,14.425 6.028 M15.700 8.072 C 17.789 8.451,19.225 10.385,18.962 12.462 C 18.757 14.076,17.720 15.318,16.150 15.830 C 15.765 15.955,15.656 15.968,15.000 15.968 C 14.344 15.968,14.235 15.955,13.850 15.830 C 12.278 15.318,11.244 14.080,11.039 12.462 C 10.704 9.832,13.079 7.595,15.700 8.072 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.000 0.032 C 9.596 0.360,5.670 2.489,3.015 5.987 C 1.498 7.987,0.554 10.270,0.136 12.949 C -0.016 13.929,-0.016 16.071,0.136 17.051 C 0.778 21.165,2.767 24.541,5.991 26.988 C 7.982 28.498,10.278 29.447,12.949 29.864 C 13.929 30.016,16.071 30.016,17.051 29.864 C 20.696 29.295,23.794 27.652,26.120 25.054 C 28.181 22.750,29.372 20.204,29.864 17.051 C 30.016 16.071,30.016 13.929,29.864 12.949 C 29.447 10.278,28.498 7.982,26.988 5.991 C 24.507 2.722,20.962 0.665,16.875 0.124 C 16.290 0.047,14.550 -0.009,14.000 0.032 M16.918 2.151 C 18.316 2.359,19.393 2.698,20.725 3.348 C 22.061 4.000,23.103 4.746,24.178 5.822 C 25.254 6.897,26.000 7.939,26.652 9.275 C 27.127 10.248,27.356 10.858,27.580 11.748 C 27.881 12.940,27.967 13.666,27.967 15.000 C 27.967 15.956,27.947 16.306,27.859 16.875 C 27.727 17.731,27.471 18.763,27.226 19.427 C 26.782 20.631,25.947 22.114,25.129 23.150 C 24.726 23.660,23.570 24.804,23.050 25.206 C 20.061 27.522,16.418 28.436,12.725 27.797 C 10.665 27.441,8.692 26.556,6.950 25.206 C 6.430 24.804,5.274 23.660,4.871 23.150 C 4.055 22.115,3.218 20.631,2.776 19.432 C 2.525 18.752,2.275 17.746,2.143 16.893 C 1.985 15.865,1.985 14.135,2.143 13.107 C 2.275 12.254,2.525 11.248,2.776 10.568 C 3.218 9.368,4.057 7.880,4.872 6.850 C 5.254 6.367,6.367 5.254,6.850 4.872 C 8.885 3.262,11.271 2.302,13.854 2.052 C 14.580 1.982,16.118 2.031,16.918 2.151 M9.531 10.052 C 9.203 10.135,8.755 10.405,8.528 10.657 C 7.805 11.461,7.835 12.639,8.598 13.402 C 9.203 14.007,10.065 14.163,10.829 13.805 C 11.273 13.598,11.566 13.309,11.788 12.858 C 11.965 12.501,11.975 12.454,11.975 12.000 C 11.975 11.546,11.965 11.499,11.788 11.142 C 11.450 10.458,10.850 10.057,10.112 10.022 C 9.899 10.012,9.638 10.026,9.531 10.052 M19.531 10.052 C 19.203 10.135,18.755 10.405,18.528 10.657 C 17.805 11.461,17.835 12.639,18.598 13.402 C 19.203 14.007,20.065 14.163,20.829 13.805 C 21.273 13.598,21.566 13.309,21.788 12.858 C 21.965 12.501,21.975 12.454,21.975 12.000 C 21.975 11.546,21.965 11.499,21.788 11.142 C 21.450 10.458,20.850 10.057,20.112 10.022 C 19.899 10.012,19.638 10.026,19.531 10.052 M10.684 19.050 C 10.303 19.166,10.000 19.590,10.000 20.008 C 10.000 20.310,10.178 20.636,10.446 20.825 L 10.659 20.975 14.995 20.975 L 19.332 20.975 19.535 20.841 C 19.847 20.634,19.975 20.390,19.975 20.000 C 19.975 19.610,19.847 19.366,19.535 19.159 L 19.332 19.025 15.079 19.016 C 12.739 19.011,10.762 19.027,10.684 19.050 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.684 14.051 C 0.303 14.166,-0.000 14.590,0.000 15.008 C 0.000 15.310,0.178 15.636,0.446 15.825 L 0.659 15.975 14.995 15.975 L 29.332 15.975 29.535 15.841 C 29.847 15.634,29.975 15.390,29.975 15.000 C 29.975 14.610,29.847 14.366,29.535 14.159 L 29.332 14.025 15.079 14.017 C 7.239 14.012,0.762 14.027,0.684 14.051 " stroke="none" fill="black" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 481 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.425 0.070 C 8.231 0.157,8.074 0.329,7.977 0.562 C 7.912 0.719,7.900 1.067,7.900 2.873 L 7.900 5.000 5.753 5.000 C 4.354 5.000,3.557 5.019,3.466 5.053 C 3.266 5.129,3.101 5.294,2.995 5.525 C 2.906 5.718,2.902 6.158,2.902 17.500 C 2.902 28.842,2.906 29.282,2.995 29.475 C 3.101 29.706,3.266 29.871,3.466 29.947 C 3.564 29.984,7.161 30.000,15.375 30.000 C 23.589 30.000,27.186 29.984,27.284 29.947 C 27.484 29.871,27.649 29.706,27.755 29.475 C 27.844 29.282,27.848 28.842,27.848 17.500 C 27.848 6.158,27.844 5.718,27.755 5.525 C 27.649 5.294,27.484 5.129,27.284 5.053 C 27.193 5.019,26.396 5.000,24.997 5.000 L 22.850 5.000 22.849 2.863 C 22.848 0.897,22.840 0.709,22.756 0.523 C 22.644 0.276,22.402 0.064,22.186 0.024 C 22.097 0.008,21.213 0.002,20.221 0.010 L 18.417 0.025 18.233 0.165 C 17.866 0.445,17.877 0.371,17.860 2.813 L 17.845 5.000 15.375 5.000 L 12.905 5.000 12.890 2.813 C 12.873 0.371,12.884 0.445,12.517 0.165 L 12.333 0.025 10.454 0.014 C 8.963 0.004,8.544 0.016,8.425 0.070 M15.895 9.534 C 17.585 10.453,22.456 13.294,22.842 13.586 L 23.009 13.712 22.792 13.839 C 22.673 13.908,21.205 14.786,19.530 15.789 C 17.855 16.791,16.252 17.724,15.969 17.862 L 15.454 18.113 14.939 17.822 C 13.553 17.037,8.091 13.756,7.959 13.628 C 7.905 13.576,7.963 13.519,8.284 13.314 C 9.750 12.377,15.211 9.306,15.420 9.301 C 15.445 9.300,15.658 9.405,15.895 9.534 M9.652 16.364 C 10.682 16.976,12.228 17.893,13.087 18.401 L 14.650 19.325 14.650 22.939 L 14.650 26.552 14.438 26.444 C 13.990 26.217,12.589 25.414,10.362 24.108 C 9.090 23.362,7.959 22.706,7.850 22.650 L 7.650 22.548 7.650 18.899 C 7.650 15.951,7.662 15.250,7.715 15.250 C 7.750 15.250,8.622 15.751,9.652 16.364 M23.100 18.818 L 23.100 22.336 22.963 22.476 C 22.707 22.737,21.502 23.482,20.175 24.200 C 19.955 24.319,19.258 24.724,18.625 25.100 C 17.396 25.830,16.439 26.369,16.229 26.448 L 16.100 26.498 16.101 22.911 L 16.101 19.325 18.762 17.800 C 20.225 16.961,21.794 16.056,22.249 15.789 C 22.703 15.521,23.081 15.302,23.088 15.301 C 23.094 15.301,23.100 16.883,23.100 18.818 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.835 5.054 C 10.781 5.306,8.020 6.450,5.342 8.574 C 4.654 9.119,3.308 10.426,2.666 11.172 C 2.010 11.934,1.390 12.757,0.836 13.604 C -0.104 15.037,-0.105 14.976,0.907 16.508 C 1.722 17.741,2.502 18.702,3.572 19.793 C 4.710 20.953,5.766 21.831,6.900 22.560 C 11.252 25.358,16.358 25.767,21.021 23.691 C 23.636 22.527,26.232 20.364,28.314 17.614 C 28.748 17.041,29.418 16.037,29.684 15.562 C 30.012 14.976,29.966 14.814,29.092 13.491 C 28.205 12.147,27.272 11.024,26.044 9.824 C 24.071 7.895,22.023 6.593,19.705 5.794 C 17.857 5.157,15.773 4.895,13.835 5.054 M16.850 7.146 C 17.987 7.325,18.854 7.567,19.839 7.980 C 22.121 8.936,24.263 10.592,26.108 12.825 C 26.615 13.438,27.427 14.545,27.585 14.838 C 27.669 14.992,27.669 15.008,27.585 15.163 C 27.434 15.443,26.635 16.535,26.119 17.167 C 25.528 17.892,24.311 19.127,23.643 19.678 C 20.973 21.886,18.076 22.998,15.000 22.998 C 10.891 22.998,7.030 20.974,3.892 17.175 C 3.385 16.562,2.573 15.455,2.415 15.163 C 2.331 15.008,2.331 14.992,2.415 14.838 C 2.573 14.545,3.385 13.438,3.892 12.825 C 6.289 9.923,9.198 7.997,12.200 7.324 C 12.692 7.214,13.591 7.075,14.100 7.030 C 14.632 6.983,16.248 7.051,16.850 7.146 M14.425 9.028 C 12.939 9.232,11.846 9.734,10.866 10.665 C 8.186 13.211,8.441 17.559,11.401 19.794 C 14.343 22.015,18.623 21.039,20.316 17.762 C 22.147 14.218,20.109 9.949,16.192 9.123 C 15.832 9.047,14.722 8.988,14.425 9.028 M15.700 11.072 C 17.789 11.451,19.225 13.385,18.962 15.462 C 18.757 17.076,17.720 18.318,16.150 18.830 C 15.765 18.955,15.656 18.968,15.000 18.968 C 14.344 18.968,14.235 18.955,13.850 18.830 C 12.278 18.318,11.244 17.080,11.039 15.462 C 10.704 12.832,13.079 10.595,15.700 11.072 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.991 0.550 C 10.340 0.834,7.120 2.336,4.599 4.932 C 3.900 5.651,3.476 6.174,2.924 7.000 C 1.601 8.979,0.779 11.319,0.554 13.750 C 0.465 14.710,0.481 15.192,0.613 15.452 C 0.760 15.744,1.028 15.898,1.392 15.899 C 1.720 15.900,1.964 15.791,2.136 15.565 C 2.250 15.415,2.271 15.326,2.307 14.835 C 2.464 12.678,2.661 11.704,3.229 10.288 C 4.973 5.943,8.991 2.906,13.661 2.402 C 14.287 2.335,15.645 2.335,16.307 2.403 C 19.200 2.699,21.902 3.993,23.975 6.073 L 24.525 6.625 24.200 6.639 C 24.021 6.647,22.973 6.669,21.871 6.689 L 19.867 6.725 19.678 6.869 C 19.172 7.256,19.239 8.101,19.800 8.392 L 20.025 8.508 23.275 8.485 C 25.610 8.468,26.567 8.445,26.675 8.403 C 26.861 8.329,27.083 8.123,27.189 7.925 C 27.261 7.791,27.268 7.426,27.257 4.525 L 27.245 1.275 27.124 1.025 C 26.843 0.445,26.123 0.332,25.676 0.799 C 25.429 1.056,25.410 1.252,25.438 3.200 L 25.464 4.975 24.994 4.523 C 22.726 2.336,19.662 0.919,16.525 0.603 C 15.774 0.528,14.592 0.503,13.991 0.550 M14.684 7.048 C 14.454 7.122,14.217 7.333,14.105 7.564 C 14.001 7.780,14.000 7.807,14.000 12.508 L 14.000 17.234 14.116 17.455 C 14.180 17.576,14.329 17.743,14.446 17.825 C 14.631 17.956,14.702 17.975,14.995 17.975 C 15.277 17.975,15.365 17.953,15.535 17.841 C 15.646 17.767,15.791 17.621,15.856 17.516 L 15.975 17.325 15.975 12.500 L 15.975 7.675 15.856 7.484 C 15.687 7.212,15.416 7.048,15.093 7.023 C 14.946 7.012,14.762 7.023,14.684 7.048 M28.142 14.201 C 27.816 14.373,27.738 14.542,27.693 15.170 C 27.538 17.308,27.335 18.305,26.772 19.708 C 25.615 22.591,23.392 24.993,20.625 26.349 C 17.179 28.039,13.302 28.113,9.813 26.556 C 8.391 25.922,6.886 24.865,5.877 23.792 L 5.484 23.375 7.730 23.349 C 9.648 23.327,10.000 23.312,10.150 23.243 C 10.779 22.954,10.847 22.005,10.264 21.642 L 10.075 21.525 6.751 21.543 C 4.815 21.554,3.375 21.581,3.301 21.609 C 3.138 21.670,2.913 21.885,2.811 22.075 C 2.739 22.209,2.732 22.570,2.744 25.450 C 2.752 27.576,2.775 28.738,2.811 28.860 C 2.875 29.080,3.111 29.338,3.336 29.432 C 3.669 29.572,4.074 29.472,4.345 29.181 C 4.568 28.942,4.589 28.714,4.561 26.800 L 4.535 25.025 5.095 25.562 C 7.245 27.621,10.038 28.934,13.225 29.384 C 13.959 29.487,15.883 29.500,16.625 29.407 C 19.572 29.036,22.229 27.878,24.395 26.020 C 27.328 23.503,29.103 20.054,29.448 16.200 C 29.528 15.310,29.514 14.811,29.403 14.567 C 29.213 14.147,28.587 13.966,28.142 14.201 M14.684 20.048 C 14.299 20.172,14.000 20.591,14.000 21.008 C 14.000 21.310,14.178 21.636,14.446 21.825 C 14.631 21.956,14.702 21.975,14.995 21.975 C 15.277 21.975,15.365 21.953,15.535 21.841 C 15.847 21.634,15.975 21.390,15.975 21.000 C 15.975 20.615,15.847 20.366,15.549 20.169 C 15.341 20.031,14.921 19.972,14.684 20.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.392 0.726 C 14.043 0.838,13.796 1.023,12.325 2.280 C 11.582 2.914,10.877 3.503,10.757 3.590 C 10.321 3.904,10.156 3.936,8.112 4.099 C 7.074 4.182,6.107 4.264,5.963 4.281 C 5.195 4.371,4.460 5.059,4.301 5.836 C 4.274 5.968,4.183 6.941,4.099 8.000 C 4.015 9.059,3.915 10.038,3.875 10.175 C 3.767 10.555,3.617 10.756,2.256 12.350 C 1.411 13.340,0.947 13.925,0.845 14.130 C 0.568 14.688,0.568 15.312,0.845 15.870 C 0.947 16.075,1.410 16.659,2.257 17.650 C 3.616 19.242,3.767 19.444,3.875 19.825 C 3.915 19.963,4.015 20.941,4.099 22.000 C 4.183 23.059,4.274 24.032,4.301 24.164 C 4.451 24.898,5.101 25.548,5.836 25.700 C 5.968 25.727,6.941 25.817,8.000 25.900 C 9.059 25.984,10.038 26.084,10.175 26.124 C 10.557 26.234,10.759 26.385,12.350 27.743 C 14.142 29.274,14.227 29.325,15.000 29.325 C 15.772 29.325,15.857 29.274,17.650 27.743 C 19.241 26.385,19.443 26.234,19.825 26.124 C 19.963 26.084,20.941 25.984,22.000 25.900 C 23.059 25.817,24.032 25.727,24.164 25.700 C 24.899 25.548,25.549 24.899,25.700 24.164 C 25.727 24.032,25.817 23.059,25.900 22.000 C 25.983 20.941,26.084 19.963,26.124 19.825 C 26.234 19.443,26.385 19.241,27.743 17.650 C 29.274 15.857,29.325 15.772,29.325 15.000 C 29.325 14.227,29.274 14.142,27.743 12.350 C 26.385 10.760,26.234 10.557,26.124 10.175 C 26.084 10.038,25.983 9.059,25.900 8.000 C 25.817 6.941,25.727 5.968,25.700 5.836 C 25.540 5.058,24.805 4.371,24.037 4.281 C 23.893 4.264,22.926 4.182,21.888 4.099 C 19.783 3.931,19.673 3.908,19.164 3.528 C 19.005 3.409,18.268 2.791,17.525 2.155 C 15.921 0.780,15.767 0.686,15.080 0.665 C 14.779 0.656,14.546 0.677,14.392 0.726 M16.500 3.906 C 18.116 5.281,18.255 5.387,18.715 5.603 C 19.283 5.868,19.704 5.937,21.773 6.101 C 22.845 6.185,23.727 6.260,23.733 6.266 C 23.740 6.273,23.814 7.155,23.899 8.227 C 24.063 10.297,24.131 10.716,24.397 11.285 C 24.613 11.745,24.719 11.884,26.094 13.500 C 26.784 14.311,27.349 14.986,27.349 15.000 C 27.350 15.014,26.975 15.464,26.517 16.000 C 24.906 17.886,24.650 18.210,24.446 18.625 C 24.131 19.265,24.069 19.620,23.899 21.773 C 23.814 22.845,23.738 23.729,23.729 23.737 C 23.721 23.746,22.873 23.819,21.845 23.900 C 19.850 24.057,19.364 24.129,18.850 24.344 C 18.333 24.561,18.064 24.761,16.500 26.093 C 15.689 26.784,15.014 27.350,15.000 27.350 C 14.986 27.350,14.311 26.784,13.500 26.093 C 11.936 24.761,11.667 24.561,11.150 24.344 C 10.634 24.129,10.147 24.056,8.157 23.901 C 7.129 23.821,6.281 23.748,6.272 23.738 C 6.262 23.729,6.185 22.845,6.101 21.773 C 5.937 19.704,5.868 19.283,5.603 18.715 C 5.387 18.255,5.281 18.116,3.906 16.500 C 3.216 15.689,2.651 15.014,2.651 15.000 C 2.651 14.986,3.216 14.311,3.906 13.500 C 5.281 11.884,5.387 11.745,5.603 11.285 C 5.868 10.717,5.937 10.296,6.101 8.227 C 6.185 7.155,6.260 6.273,6.267 6.267 C 6.273 6.260,7.155 6.185,8.227 6.101 C 10.296 5.937,10.717 5.868,11.285 5.603 C 11.745 5.387,11.884 5.281,13.500 3.906 C 14.311 3.216,14.986 2.651,15.000 2.651 C 15.014 2.651,15.689 3.216,16.500 3.906 M14.684 7.048 C 14.454 7.122,14.217 7.333,14.105 7.564 C 14.001 7.780,14.000 7.807,14.000 12.508 L 14.000 17.234 14.116 17.455 C 14.180 17.576,14.329 17.743,14.446 17.825 C 14.631 17.956,14.702 17.975,14.995 17.975 C 15.277 17.975,15.365 17.953,15.535 17.841 C 15.646 17.767,15.791 17.621,15.856 17.516 L 15.975 17.325 15.975 12.500 L 15.975 7.675 15.856 7.484 C 15.687 7.212,15.416 7.048,15.093 7.023 C 14.946 7.012,14.762 7.023,14.684 7.048 M14.684 20.048 C 14.299 20.172,14.000 20.591,14.000 21.008 C 14.000 21.310,14.178 21.636,14.446 21.825 C 14.631 21.956,14.702 21.975,14.995 21.975 C 15.277 21.975,15.365 21.953,15.535 21.841 C 15.847 21.634,15.975 21.390,15.975 21.000 C 15.975 20.615,15.847 20.366,15.549 20.169 C 15.341 20.031,14.921 19.972,14.684 20.048 " stroke="none" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

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