latest files margreet

master
margreetriphagen 7 years ago
parent 842210ddae
commit 5b2b24c057

BIN
.DS_Store vendored

Binary file not shown.

BIN
floppies/.DS_Store vendored

Binary file not shown.

Binary file not shown.

@ -0,0 +1,23 @@
A sonification of the Dutch elections March 2017; based on the hashtags #gestemd and #ikstem
Creative Commons - Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
You are free to:
Share — copy and redistribute the material in any medium or format
Adapt — remix, transform, and build upon the material
for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following terms:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
More information can be found here:
https://creativecommons.org/licenses/by-sa/4.0/
///////////////////////////////////////////////////////////////////////////
TGC (Terra Gamma Circulaire) scripts and config files
WTFPL (Do What the Fuck You Want To Public License).
More information can be found here:
https://en.wikipedia.org/wiki/WTFPL

@ -0,0 +1,17 @@
Author: Margreet Riphagen
Date: 2017
Publication: Special Issue #2
Publication launch: Tetra Gamma Circulaire #3 at De Player in Rotterdam (24th of March 2017)
Title: A sonification of the Dutch elections March 2017; based on the hashtags #gestemd and #ikstem
Description:
In the run up to the 2017 general elections in the Netherlands last Wednesday, the 15 of March 2017, a lot of Twitter traffic was generated. Literally millions of tweets were send that day over the Internet.
This sonification entails three kinds of scores;
a) for the whole tweet,
b) for the hashtag ikstem (#ikstem), and
c) for the hashtag gestemd (#gestemd).
Thanks to:
All PZI tutors, fellow students and Jan-Kees van Kampen

@ -0,0 +1,123 @@
#N canvas 457 24 739 687 10;
#X declare -lib unpackOSC;
#X text -22 232 #ikstem;
#X text 55 233 #gestemd;
#X obj -69 492 dac~;
#X obj -37 134 unpack s s s;
#X obj 441 -2 loadbang;
#X obj -36 -28 import unpackOSC;
#X msg 441 31 \; pd dsp 1;
#X obj -37 40 mrpeach/udpreceive 127.0.0.1 4000;
#X obj -37 66 mrpeach/unpackOSC;
#X obj 191 87 unpackOSC;
#X obj 191 64 udpreceive 127.0.0.1 4000;
#X text 160 318 comment;
#X obj 157 254 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 89 254 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 45 133 tag \, hashtag \, time;
#X obj -3 162 select #ikstem #gestemd both;
#X obj 0 252 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 692 710 276 254 ikstemenv 0;
#X obj 72 80 line~;
#X msg 81 45 0 50;
#X msg 72 -15 1 1;
#X text 99 -13 1 msec attack;
#X text 118 44 50 msec release;
#X obj 88 15 del 10;
#X obj 72 -44 inlet;
#X obj 25 170 outlet~;
#X obj 25 -45 inlet~;
#X obj 25 146 *~;
#X text 134 14 10 msec sustain;
#X connect 0 0 9 1;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 5 0 1 0;
#X connect 6 0 2 0;
#X connect 8 0 9 0;
#X connect 9 0 7 0;
#X restore -69 344 pd ikstemenv;
#X text -16 289 comment;
#N canvas 692 710 276 254 bothenv 0;
#X obj 72 80 line~;
#X obj 72 -44 inlet;
#X obj 25 170 outlet~;
#X obj 25 -45 inlet~;
#X obj 25 146 *~;
#X text 137 44 5 second release;
#X text 114 -14 500 msec attack;
#X msg 72 -15 1 50;
#X obj 88 15 del 100;
#X text 144 15 100 msec sustain;
#X msg 81 45 0 2000;
#X connect 0 0 4 1;
#X connect 1 0 7 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 7 0 0 0;
#X connect 8 0 10 0;
#X connect 10 0 0 0;
#X restore 100 344 pd bothenv;
#X obj 100 467 snapshot~;
#X obj 112 435 metro 100;
#X floatatom 100 493 0 0 0 0 - - -;
#N canvas 692 710 276 254 gestemdenv 0;
#X obj 72 80 line~;
#X text 99 -13 1 msec attack;
#X text 118 44 50 msec release;
#X obj 72 -44 inlet;
#X obj 25 170 outlet~;
#X obj 25 -45 inlet~;
#X obj 25 146 *~;
#X text 134 14 10 msec sustain;
#X msg 81 45 0 700;
#X obj 88 15 del 100;
#X msg 72 -15 1 10;
#X connect 0 0 6 1;
#X connect 3 0 10 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 8 0 0 0;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X restore 14 344 pd gestemdenv;
#X obj 125 409 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text -69 250 triggers;
#X text 142 233 both;
#X text 146 410 monitor output on/off;
#X text -41 5 apperently \, on OSX \, one sometimes needs to append
mrpeach/ ...;
#X text 190 45 normally \, this should suffice:;
#X obj 101 286 osc~ 150;
#X obj -69 286 osc~ 7000;
#X obj 14 286 osc~ 500;
#X text 174 296 sinewaves envelopes (triggered by incoming OSC) double
click pd ..env objects to change envelopes;
#X connect 3 1 15 0;
#X connect 4 0 6 0;
#X connect 7 0 8 0;
#X connect 8 0 3 0;
#X connect 10 0 9 0;
#X connect 12 0 19 1;
#X connect 13 0 23 1;
#X connect 15 0 16 0;
#X connect 15 1 13 0;
#X connect 15 2 12 0;
#X connect 16 0 17 1;
#X connect 17 0 2 0;
#X connect 17 0 2 1;
#X connect 19 0 20 0;
#X connect 19 0 2 0;
#X connect 19 0 2 1;
#X connect 20 0 22 0;
#X connect 21 0 20 0;
#X connect 23 0 2 0;
#X connect 23 0 2 1;
#X connect 24 0 21 0;
#X connect 30 0 19 0;
#X connect 31 0 17 0;
#X connect 32 0 23 0;

@ -0,0 +1,68 @@
from __future__ import print_function
import csv, os, sys
from datetime import datetime
from time import sleep
import OSC
# open a connection to pd
client = OSC.OSCClient()
address = '127.0.0.1', 4000 # 57120==SC
client.connect( address ) # set the address for all following messages
print ("1.client stderr", file=sys.stderr)
msg = OSC.OSCMessage() # OSCresponder name: '/touch'
msg.setAddress("/twitter-ikstem")
#msg.append('hello from python')
#client.send(msg)
#os.system('xzcat /media/floppy/twittersonification.csv.xz > /tmp/twittersonification.csv') #floppydisk
os.system('xzcat twittersonification.csv.xz > /tmp/twittersonification.csv') #lokaal
then = None
with open('/tmp/twittersonification.csv', 'rU') as csvfile:
file = csv.DictReader(csvfile)
print ("2.opening file stderr", file=sys.stderr)
#csv.DictReader(csvfile)(["time"] + ['time'])
i=0
sleep_time=1
for row in file:
print ("3.row stderr", file=sys.stderr)
i+=1
t = row['time']
print ("4.time stderr", file=sys.stderr)
t = float(t)
now = datetime.fromtimestamp(t) #[]dictreader reads the rowheader
#print now, row
if then:
ti = (now-then).total_seconds()
#print ti/100
sleep_time = ti/1000
print ("5.msg stderr", file=sys.stderr)
#msg.append( row['text'].lower() )
#client.send(msg)
#msg.clearData()
if "#ikstem" in row['text'].lower() and '#gestemd' in row['text'].lower():
msg.append( ['both', str(now)] )
elif '#ikstem' in row['text'].lower():
msg.append( ['#ikstem', str(now) ])
elif '#gestemd' in row['text'].lower():
msg.append( ['#gestemd', str(now)] )
# msg.append( [ str(row['text']) ] )
# send an osc message to pd
#print msg#[ i, row['text'], str(now)]
sleep(sleep_time)
client.send(msg)
msg.clearData()
then = now
print ("6.last print stderr", file=sys.stderr)

Binary file not shown.

@ -0,0 +1,236 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>twitter sonification</title>
<style>
.background {
background-image: url('stemicoon.svg');
background-repeat: no-repeat;
background-size: contain;
background-position: center;
position: fixed;
top: 0;
left: 0;
height: 90vh;
width: 90vw;
margin: 5vh 5vw;
opacity: .2; /* PAS HIER DE OPACITY AAN VOOR DE TRANSPARANTIE VAN HET ICOON */
z-index: -1;
}
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote {
margin: 0;
padding: 0;
}
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
line-height: 18px;
margin: 10px 13px 10px 13px;
background-color: rgb(173,169,169); /* PAS DEZE KLEUR AAN VOOR DE ACHTERGRONDKLEUR VAN DE GEHELE PAGINA */
}
table {
margin: 10px 0 15px 0;
border-collapse: collapse;
}
td,th {
border: 1px solid #ddd;
padding: 3px 10px;
}
th {
padding: 5px 10px;
}
a {
color: #d64646;
}
a:hover {
color: #0050a3;
text-decoration: none;
}
a img {
border: none;
}
p {
margin-bottom: 9px;
}
h1,
h2,
h3,
h4,
h5,
h6 {
color: #f4eded;
line-height: 36px;
}
h1 {
margin-bottom: 18px;
font-size: 30px;
}
h2 {
font-size: 24px;
}
h3 {
font-size: 18px;
}
h4 {
font-size: 16px;
}
h5 {
font-size: 14px;
}
h6 {
font-size: 13px;
}
hr {
margin: 0 0 19px;
border: 0;
border-bottom: 1px solid #ccc;
}
blockquote {
padding: 13px 13px 21px 15px;
margin-bottom: 18px;
font-family:georgia,serif;
font-style: italic;
}
blockquote:before {
content:"\201C";
font-size:30px;
margin-left:-10px;
font-family:georgia,serif;
color:#eee;
}
blockquote p {
font-size: 14px;
font-weight: 300;
line-height: 18px;
margin-bottom: 0;
font-style: italic;
}
code, pre {
font-family: Monaco, Andale Mono, Courier New, monospace;
}
code {
background-color: #fee9cc;
color: rgba(0, 0, 0, 0.75);
padding: 1px 3px;
font-size: 12px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
pre {
display: block;
padding: 14px;
margin: 0 0 18px;
line-height: 16px;
font-size: 11px;
border: 1px solid #d9d9d9;
white-space: pre-wrap;
word-wrap: break-word;
}
pre code {
background-color: #fff;
color:#737373;
font-size: 11px;
padding: 0;
}
b, strong {
color: red;
}
sup {
font-size: 0.83em;
vertical-align: super;
line-height: 0;
}
* {
-webkit-print-color-adjust: exact;
}
@media screen and (min-width: 914px) {
body {
width: 854px;
margin:10px auto;
}
}
@media print {
body,code,pre code,h1,h2,h3,h4,h5,h6 {
color: black;
}
table, pre {
page-break-inside: avoid;
}
}
</style>
<title>Sonification of the Dutch elections 2017</title>
</head>
<body>
<div class="background"></div>
<h1>Sonification of the Dutch elections 2017</h1>
<p>In the run up to the 2017 general elections in the Netherlands last Wednesday, the 15 of March 2017, a lot of Twitter<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> traffic was generated. Literally millions of tweets were send that day over the Internet.</p>
</p>
<br>
<h1>The online political battle</h1>
<blockquote><p>En meteen is daar de tweet: #waarwasBuma<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup>
(And right after there was the tweet: #wherewasBuma)</p></blockquote>
<p>This research is inspired on an article in the NRC (27 februari 2017) about the online political battle. Just like in the United States, parties attempt to reach voters through social media and to frame political opponents. The parties use social media more than ever this years elections. They try to convey their message to the unprecedented number of undecided voters and they try to frame opponents with catchy slogans or hashtags.</p>
<p>Seeing all these tweets passing so quickly it reminds me of a cascade of data, the starting point of a sonification<sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup> to perceptualize this huge amount of data in a <em>score</em>.</p>
<br>
<h1>Pushing the score</h1>
<p>This sonifiction entails three kinds of scores; a) for the whole tweet, b) for the hashtag ikstem (#ikstem), and c) for the hashtag gestemd (#gestemd).</p>
<p>a) It captures tweets sed during the day of the elections, between 07.30 and 21.00, when the polling stations were open. In total there are 47613 tweets captured. Some examples of tweets send:</p>
<blockquote><p>Ik wist niet wat ik moest stemmen, dus heb ik uiteindelijk maar een bootje gevouwen van het stembiljet <strong>#ikstem</strong> #tk2017 <strong>#gestemd</strong> https://t.co/KBqLBkYrpV</p>
<p>Grappig! RT @Mvan_berkel: In Leiden is rekening gehouden met zwevende kiezers. <strong>#ikstem</strong> #TweedeKamerverkiezingen https://t.co/Un8uJfNZ0v</p>
<p>Met volle trotst en vrolijkheid voor de eerste keer gaan stemmen vandaag <strong>#ikstem</strong></p></blockquote>
<p>b + c) A hash tag is used to streamline relevant topics by keyword or phrase by grouping them together to make it easier to find and follow tweets from people who are talking about the same thing. In this sonificatoin I used #ikstem and #gestemd. Both are given a different kind of sound.</p>
<br>
<br>
<h1>Used hardware and software</h1>
<p><a href="https://www.python.org">Python</a> , specific libraries: <a href="https://www.python.org/dev/peps/pep-0305/">csv</a>, <a href="https://docs.python.org/2/library/os.html">os</a> and <a href="https://pypi.python.org/pypi/python-osc">OSC</a></p>
<p><a href="https://puredata.info">Pure Data</p>
<p><a href="https://pzwiki.wdka.nl/mediadesign/The_Ultimate_RPi_Installation_Guide">RaspberryPi</a> and <a href="https://pzwiki.wdka.nl/mediadesign/Pi_skin_conductivity">Pi skin conductivity</a></p>
<p>Flyer: <a href="https://issue.xpub.nl/02/">https://issue.xpub.nl/02/</a></p>
<br>
<h1>References</h1>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:1">
<p>Twitter is an online news and social networking service where users post and interact with messages, &ldquo;tweets,&rdquo; restricted to 140 characters, (<a href="http://twitter.com">http://twitter.com</a>).<a href="#fnref:1" rev="footnote">&#8617;</a></p></li>
<li id="fn:2">
<p>En meteen is daar de tweet: #waarwasBuma, De politieke strijd online, door Andreas Kouwenhoven &amp; Hugo Logtenberg, 27 februari 2017, 21:05 (<a href="https://www.nrc.nl/nieuws/2017/02/27/en-meteen-is-daar-de-tweet-waarwasbuma-7033073-a1547979">https://www.nrc.nl/nieuws/2017/02/27/en-meteen-is-daar-de-tweet-waarwasbuma-7033073-a1547979</a>).<a href="#fnref:2" rev="footnote">&#8617;</a></p></li>
<li id="fn:3">
<p>Sonification is the use of non-speech audio to convey information or perceptualize data. Auditory perception (the sensory system for the sense of hearing) has advantages in temporal, spatial, amplitude, and frequency resolution that open possibilities as an alternative to visualization techniques.<a href="#fnref:3" rev="footnote">&#8617;</a></p></li>
</ol>
</div>
</body>
</html>

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 274 274"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#e21e27;}</style></defs><title>Asset 11</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M274,137a137,137,0,1,1-40.13-96.87A136.57,136.57,0,0,1,274,137Z"/><g id="aPOneC.tif"><path class="cls-2" d="M136.82,35.19h1.13a19.14,19.14,0,0,0,7.61,1.37c5.14.18,3.59-.54,7.05,3.57a1.74,1.74,0,0,1,.55,1.24c0,.28-.13.64.35.79.83.27.51.9.11,1.15-1,.67-1,1.8-1.55,2.77,2.54,1.19,5,2.34,7.44,3.46.55.25,1,.45.95,1.18-.19,1.93-.66,3.77-2.47,4.8a24.45,24.45,0,0,0-5.53,4.92,2.71,2.71,0,0,0-.89,1.71c0,3-2,4.42-4.28,5.73-6.84,3.89-13.39,8.26-20.09,12.39a7.61,7.61,0,0,0-1,.77.87.87,0,0,0-.34,1.11,1,1,0,0,0,1,.69,5.76,5.76,0,0,0,1,0c3-.39,5.86-1.15,8.8-1.69,5.06-.92,10.14-1.71,15.22-2.54,5.31-.86,10.61-1.78,15.94-2.53,8.4-1.18,16.83-2.09,25.28-2.8,1.26-.11,2.65-.52,3.6.93a4.34,4.34,0,0,1,2.73-1.61c5.19-.35,10.36-.84,15.52-1.51a3.45,3.45,0,0,1,2.46.16,15.58,15.58,0,0,0,7.51,2c1.31.07,2.6.31,3.91.48a1,1,0,0,1,.92.74,44.64,44.64,0,0,1,1.81,6.91c.32,2.4,1.25,4.58,3.5,5.76a1.5,1.5,0,0,1,.82,2.14c-.38,1.2-.84,2.39-1.24,3.59a4,4,0,0,0,.7,4c.22.29.54.54.52,1a26.74,26.74,0,0,1-5,4.71,13.92,13.92,0,0,0-4.76,5.6,2.24,2.24,0,0,1-1.25,1.25,29.5,29.5,0,0,1-5.87,1.77,11.55,11.55,0,0,0-4.62,1.86,18.8,18.8,0,0,1-9.08,3.74c-2.8.28-5.24,1.91-7.57,3.45-1.47,1-1.29,1.85.31,2.55a6.1,6.1,0,0,0,3.17.44,28.49,28.49,0,0,0,5.2-1.12,36.39,36.39,0,0,1,13.56-1.7c2,.14,3.9.49,5.87.54a10,10,0,0,1,6.45,2.31,12.65,12.65,0,0,0,2.86,1.77c3.77,1.73,5.67,4.57,5.47,8.76a14.31,14.31,0,0,0,1.18,6.43,4.8,4.8,0,0,1-1.44,6.07,24.24,24.24,0,0,0-4.95,5.87,24.16,24.16,0,0,1-8.11,7.94c-5.57,3.39-11.17,6.73-16.73,10.13-1.35.83-2.52,2.26-4,2.58-2.89.65-5,2.28-7.18,4.09-.81.69-1.64,1.78-2.68,1.66-2.27-.27-3.57,1-4.88,2.44a3.65,3.65,0,0,1-.68.48c-1.62,1.11-3.44,1.85-5.14,2.82a8.74,8.74,0,0,0-3.71,3.41,13.38,13.38,0,0,0,2.47.52A51.48,51.48,0,0,1,192,189.6a40.79,40.79,0,0,1,7.41,3.57c2.19,1.2,2.21,1.22,1.52,3.53a1.35,1.35,0,0,0,.53,1.76,9.25,9.25,0,0,1,3.47,6.06,7.93,7.93,0,0,1-.34,4.92c-.7.21-1-.25-1.33-.39s-.76-.32-1.14-.48a2.92,2.92,0,0,0-.13,3.68,1.54,1.54,0,0,1-.41,2.26c-1.7,1.55-3.29,3.2-5,4.74s-3.35,3.72-5.51,5A68.25,68.25,0,0,0,175.66,236a10.46,10.46,0,0,0-2.94,5.17,5.24,5.24,0,0,1-2.62,3.63,15.22,15.22,0,0,0-5.67,5.86,9.71,9.71,0,0,1-6,4.7c-2.23.63-4.6.18-6.79,1-1,.37-1.61.06-1.84-1-.37-1.66-1.3-2.17-3-1.86-2.32.42-3.2-.42-3.76-3-.12-.55-.17-1.11-.32-1.66a15.93,15.93,0,0,1-.78-6.92,2,2,0,0,0-.51-1.54,10.92,10.92,0,0,1-2.06-6.73c0-1.3.16-2.6.24-3.89-.13,0-.24,0-.31,0-.28.17-.54.37-.81.55a10.3,10.3,0,0,1-7.88,1.55c-3.13-.57-6.22-1.28-9.32-2a10,10,0,0,1-6.81-4.44,4.31,4.31,0,0,1-.92-3,12.73,12.73,0,0,0-2-9.36,6,6,0,0,1,0-6.53c1.69-2.8,3.43-5.58,5.19-8.34,5.82-9.13,14.1-15.89,22.22-22.77,1.23-1,2.7-1.84,3.38-3.63a14.18,14.18,0,0,0-3.39.31,34.26,34.26,0,0,0-6.69,2c-3.64,1.65-7.7,2.22-11.09,4.54-3.12,2.14-6.81,3.17-10.23,4.74-6.47,3-12.53,6.74-18.71,10.25-6,3.41-11.56,7.61-18.16,10.08a44.33,44.33,0,0,1-15,2.53,1.59,1.59,0,0,1-1.63-.85,6.65,6.65,0,0,0-2.71-2.6c-2.1-1.16-3-3-3.65-5.23-.74-2.72-.71-5.58-1.65-8.25-.65-1.85-1.43-3.66-2-5.53-.45-1.44-1.11-2.92-.35-4.49a17.62,17.62,0,0,1,2.22-3.57c1.16-1.4,2.32-2.8,2.52-4.74a3,3,0,0,1,1-1.67,58.35,58.35,0,0,1,5.75-5.36c8-6.16,16.48-11.78,24.85-17.48,3.55-2.41,7.44-4.35,10.8-7a96.06,96.06,0,0,1,11.91-7.76c3.68-2.09,7.44-4.07,10.55-7-2.63-2.71-2.53-4.19-7.16.33-2-1.15-2.41-1.16-4.21.36a3.66,3.66,0,0,1-2.84.85,12.81,12.81,0,0,0-5.79.66c-1.94.77-4,1.39-5.91,2.13-4.73,1.79-9.57,3.29-14.17,5.43-6.92,3.23-13.68,6.93-21.29,8.36a22.13,22.13,0,0,1-9.33-.14c-2.93-.7-5.57-2.11-8.31-3.23-3.1-1.27-3.5-2.17-3.12-5.55a12.7,12.7,0,0,0-.88-7.16,14.36,14.36,0,0,1-1.13-7,3.46,3.46,0,0,1,.89-2.41C35.88,114.77,38.1,112,41,110a7.31,7.31,0,0,0,1.58-1.38,119.41,119.41,0,0,1,16.68-16.8c4.81-4.1,9.73-8.08,13.74-13,.24-.3.73-.48.56-1-1.48-.32-3.11.46-4.4-.57a3,3,0,0,0-3.49-.2,7.93,7.93,0,0,1-6.11.66c-1.29-.47-2.35-1.48-4-1.52a9,9,0,0,0,.65-4.22A4.41,4.41,0,0,1,58,68.32c-.23-.47-.66-.55-1-.77-3.52-2.26-4.83-4.54-1.4-7.43.18-.15.33-.33.5-.49,5.5-5.24,12.23-8.28,19.32-10.64,3.44-1.15,6.9-2.24,10.37-3.31,2.62-.81,5.25-1.61,7.9-2.3,3.57-.92,7.16-1.77,10.75-2.58s7.11-1.56,10.74-2c2.65-.33,5.32-.41,7.94-1s5.09-.73,7.59-1.3C132.76,36,134.89,36.08,136.82,35.19Z"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

Loading…
Cancel
Save