create-wirejs-app 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin.js +43 -0
- package/package.json +21 -0
- package/template/.gitignore +2 -0
- package/template/package.json +17 -0
- package/template/src/components/countdown.js +20 -0
- package/template/src/components/countdown.tpl +6 -0
- package/template/src/layouts/bare.html +1 -0
- package/template/src/layouts/core.css +3 -0
- package/template/src/layouts/default.css +222 -0
- package/template/src/layouts/default.html +31 -0
- package/template/src/layouts/default.js +35 -0
- package/template/src/routes/html.html +8 -0
- package/template/src/routes/index.md +30 -0
- package/template/static/images/wirejs.svg +1 -0
package/bin.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const process = require('process');
|
|
5
|
+
const { exec, execSync } = require('child_process');
|
|
6
|
+
const copy = require('recursive-copy');
|
|
7
|
+
|
|
8
|
+
const [
|
|
9
|
+
nodeBinPath,
|
|
10
|
+
scriptPath,
|
|
11
|
+
projectName,
|
|
12
|
+
] = process.argv;
|
|
13
|
+
|
|
14
|
+
(async () => {
|
|
15
|
+
fs.mkdirSync(projectName);
|
|
16
|
+
|
|
17
|
+
console.log("Writing base package files ...");
|
|
18
|
+
await copy(`${__dirname}/template`, `./${projectName}`);
|
|
19
|
+
|
|
20
|
+
const packageJson = await fs.readFileSync(`./${projectName}/package.json`);
|
|
21
|
+
fs.writeFileSync(
|
|
22
|
+
`./${projectName}/package.json`,
|
|
23
|
+
packageJson.toString().replaceAll(
|
|
24
|
+
/project-name/, projectName
|
|
25
|
+
)
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
console.log("Fetching dependencies ...");
|
|
29
|
+
process.chdir(projectName);
|
|
30
|
+
execSync('npm install');
|
|
31
|
+
|
|
32
|
+
console.log(`
|
|
33
|
+
Done creating ${projectName}!
|
|
34
|
+
|
|
35
|
+
To get started:
|
|
36
|
+
|
|
37
|
+
cd ${projectName}
|
|
38
|
+
npm start
|
|
39
|
+
|
|
40
|
+
Happy coding!
|
|
41
|
+
`);
|
|
42
|
+
|
|
43
|
+
})();
|
package/package.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-wirejs-app",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Initializes a wirejs package.",
|
|
5
|
+
"author": "Jon Wire",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"create-wirejs-app": "./bin.js"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"recursive-copy": "^2.0.14"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"bin.js",
|
|
15
|
+
"package.json",
|
|
16
|
+
"template/src/*",
|
|
17
|
+
"template/static/*",
|
|
18
|
+
"template/.gitignore",
|
|
19
|
+
"template/package.json*"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "project-name",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"ex-gratia": "^1.0.3",
|
|
7
|
+
"wirejs-dom": "^1.0.4",
|
|
8
|
+
"highlight.js": "^11.5.1"
|
|
9
|
+
},
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"wirejs-scripts": "^1.0.3"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"start": "wirejs-scripts start",
|
|
15
|
+
"build": "wirejs-scripts build"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const { DomClass } = require('wirejs-dom');
|
|
2
|
+
const markup = require('./countdown.tpl');
|
|
3
|
+
|
|
4
|
+
const Countdown = DomClass(markup, function() {
|
|
5
|
+
this.remainingTime = this.from;
|
|
6
|
+
|
|
7
|
+
this.tick = () => {
|
|
8
|
+
this.remainingTime = this.remainingTime - 1;
|
|
9
|
+
|
|
10
|
+
if (this.remainingTime === 0) {
|
|
11
|
+
this.countdown = "That's it! Time's up!"
|
|
12
|
+
} else {
|
|
13
|
+
setTimeout(() => this.tick, 1000);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
this.tick();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
module.exports = Countdown;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
${body}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
@import url('core.css');
|
|
2
|
+
|
|
3
|
+
/*****************
|
|
4
|
+
BASIC TAGS
|
|
5
|
+
*****************/
|
|
6
|
+
|
|
7
|
+
body {
|
|
8
|
+
margin: 0px;
|
|
9
|
+
padding: 0px;
|
|
10
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
11
|
+
font-size: 11pt;
|
|
12
|
+
line-height: 1.2;
|
|
13
|
+
color: #333333;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@media (max-width: 50rem) {
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
img {
|
|
20
|
+
border: 0px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
a, tpdc\:start {
|
|
24
|
+
/* text-decoration: none; */
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
a:hover, tpdc\:start:hover {
|
|
28
|
+
text-decoration: underline;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
a.nohoverdecoration, tpcd\:start.nohoverdecoration {
|
|
32
|
+
text-decoration: none;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
hr {
|
|
36
|
+
margin: 2rem auto;
|
|
37
|
+
width: 65%;
|
|
38
|
+
height: 1px;
|
|
39
|
+
border: 0px;
|
|
40
|
+
background-color: silver;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
#header h1 {
|
|
44
|
+
font-size: 1.6em;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#header h1 a {
|
|
48
|
+
text-decoration: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
#header h1 img {
|
|
52
|
+
vertical-align: text-bottom;
|
|
53
|
+
height: 1.25em;
|
|
54
|
+
border: 2px solid saddlebrown;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/******************
|
|
58
|
+
TEMPLATE PARTS
|
|
59
|
+
******************/
|
|
60
|
+
|
|
61
|
+
#container {
|
|
62
|
+
position: relative;
|
|
63
|
+
width: 90%;
|
|
64
|
+
max-width: 60rem;
|
|
65
|
+
margin: 2rem auto;
|
|
66
|
+
padding: 0.5rem;
|
|
67
|
+
background-color: #f5f5f5;
|
|
68
|
+
border: 1px solid #cccccc;
|
|
69
|
+
border-radius: 0.25em;
|
|
70
|
+
overflow: hidden; /* float containment */
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
#content {
|
|
74
|
+
overflow: hidden;
|
|
75
|
+
padding: 0.85rem;
|
|
76
|
+
padding-top: 0px;
|
|
77
|
+
line-height: 1.3rem;
|
|
78
|
+
text-align: justify;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
#footer {
|
|
82
|
+
clear: both;
|
|
83
|
+
text-align: center;
|
|
84
|
+
font-family: monospace;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#sub-footer {
|
|
88
|
+
margin-top: 2rem;
|
|
89
|
+
font-size: smaller;
|
|
90
|
+
color: #555555;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.footer-plug {
|
|
94
|
+
margin-top: 2.5rem;
|
|
95
|
+
padding-top: 1.75rem;
|
|
96
|
+
text-align: right;
|
|
97
|
+
color: gray;
|
|
98
|
+
border-top: 1px dashed silver;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.footer-plug a {
|
|
102
|
+
font-size: 1.2rem;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.padded {
|
|
106
|
+
padding: 10px 20px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
#footer > #sub-footer tpdc\:pagebuildtime {
|
|
110
|
+
font-weight: bold;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.modal {
|
|
114
|
+
position: fixed;
|
|
115
|
+
display: table-cell;
|
|
116
|
+
text-align: center;
|
|
117
|
+
vertical-align: middle;
|
|
118
|
+
overflow: hidden;
|
|
119
|
+
top: 0px;
|
|
120
|
+
left: 0px;
|
|
121
|
+
width: 100%;
|
|
122
|
+
height: 100%;
|
|
123
|
+
margin: 0;
|
|
124
|
+
padding: 1em 0 0 0 ;
|
|
125
|
+
background-color: #ffffff;
|
|
126
|
+
opacity: 0.8;
|
|
127
|
+
filter: alpha(opacity=80);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
tpdc\:teaser {
|
|
131
|
+
display: block;
|
|
132
|
+
margin-top: 2em;
|
|
133
|
+
border-top: 1px dashed silver;
|
|
134
|
+
text-align: right;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
tpdc\:fork {
|
|
138
|
+
display: block;
|
|
139
|
+
position: absolute;
|
|
140
|
+
background-color: transparent;
|
|
141
|
+
top: 0;
|
|
142
|
+
right: 0;
|
|
143
|
+
width: 7em;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
tpdc\:fork > .banner {
|
|
147
|
+
-webkit-transform: rotate(45deg);
|
|
148
|
+
-moz-transform: rotate(45deg);
|
|
149
|
+
-ms-transform: rotate(45deg);
|
|
150
|
+
-o-transform: rotate(45deg);
|
|
151
|
+
transform: rotate(45deg);
|
|
152
|
+
width: 150%;
|
|
153
|
+
text-align: center;
|
|
154
|
+
position: absolute;
|
|
155
|
+
top: 1.5em;
|
|
156
|
+
left: -0.5em;
|
|
157
|
+
font-weight: bold;
|
|
158
|
+
background-color: green;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
tpdc\:fork > .banner > a {
|
|
162
|
+
color: white;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
tpdc\:resultcard {
|
|
166
|
+
display: block;
|
|
167
|
+
border: 15px solid #fce890;
|
|
168
|
+
padding: 15px;
|
|
169
|
+
margin: 15px;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.result-title {
|
|
173
|
+
text-align: center;
|
|
174
|
+
margin: 0px;
|
|
175
|
+
color: #aa3939;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.result-result {
|
|
179
|
+
text-align: center;
|
|
180
|
+
color: #3399cc;
|
|
181
|
+
border: 2px dashed #99ccee;
|
|
182
|
+
border-radius: 10px;
|
|
183
|
+
padding: 1em;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.result-description {
|
|
187
|
+
text-align: left;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.result-follow {
|
|
191
|
+
text-align: center;
|
|
192
|
+
margin-top: 2em;
|
|
193
|
+
padding-top: 1em;
|
|
194
|
+
border-top: 1px dotted silver;
|
|
195
|
+
vertical-align: bottom;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.result-follow span {
|
|
199
|
+
color: #bb3333;
|
|
200
|
+
font-weight: bold;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.result-buttons {
|
|
204
|
+
padding-top: 1em;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
@media (max-width:420px) {
|
|
209
|
+
#footer a {
|
|
210
|
+
font-size: larger;
|
|
211
|
+
display: inline-block;
|
|
212
|
+
margin: 0.25em;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.link-list li {
|
|
216
|
+
height: 2em;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.link-list li a {
|
|
220
|
+
font-size: larger;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>${title + " - example.com"}</title>
|
|
5
|
+
<link rel="shortcut icon" type="image/ico" href="/images/wirejs.svg"/>
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
|
7
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
8
|
+
<meta name="google-site-verification" content="zYKsu_Prv58mFQyRGJA3j1sDsQzAytFhE2SjFMaQk14" />
|
|
9
|
+
${metatags}
|
|
10
|
+
<script src='/layouts/default.js?v=${BUILD_ID}'></script>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id='container'>
|
|
14
|
+
<div id='header'>
|
|
15
|
+
<h1>
|
|
16
|
+
<a href='/'><img src='images/wirejs.svg' /> home</a> / ${title || "example.com"}
|
|
17
|
+
</h1>
|
|
18
|
+
</div>
|
|
19
|
+
<div class='navbar'><tpdc:menu></tpdc:menu></div>
|
|
20
|
+
<div id='content'>
|
|
21
|
+
${body}
|
|
22
|
+
</div>
|
|
23
|
+
<tpdc:teaser></tpdc:teaser>
|
|
24
|
+
</div>
|
|
25
|
+
<div id='footer'>
|
|
26
|
+
<div id='sub-footer'>
|
|
27
|
+
Do only awesome things.
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</body>
|
|
31
|
+
</html>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const wirejs = require('wirejs-dom');
|
|
2
|
+
require('highlight.js/styles/github.css');
|
|
3
|
+
|
|
4
|
+
// sheet(s) first
|
|
5
|
+
require('./default.css');
|
|
6
|
+
|
|
7
|
+
// components in alphabetical order, please!
|
|
8
|
+
require('../components/countdown');
|
|
9
|
+
|
|
10
|
+
const GoogleAds = require('ex-gratia/google');
|
|
11
|
+
|
|
12
|
+
// no ads at "home".
|
|
13
|
+
if (!location.hostname.match(/^localhost|127\.0\.0\.\d+|192\.168\.\d+\.\d+$/)) {
|
|
14
|
+
// delayed in an attempt to prevent ads from block rendering of
|
|
15
|
+
// other components.
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
new GoogleAds().install();
|
|
18
|
+
}, 250);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// expose DomClass to inlines scripts, etc.
|
|
22
|
+
Object.assign(window, wirejs);
|
|
23
|
+
|
|
24
|
+
// because this script is intended to be loaded at the top, and DomClass
|
|
25
|
+
// doesn't currently handle this, we need to bless() the document async (after the DOM is built).
|
|
26
|
+
// we may even want to do this repeatedly over the course of a few seconds to
|
|
27
|
+
// allow for "settling". (it should be safe to call "bless" repeatedly.)
|
|
28
|
+
|
|
29
|
+
function init() {
|
|
30
|
+
document.readyState === 'complete' ?
|
|
31
|
+
wirejs.bless(document) :
|
|
32
|
+
setTimeout(init, 1);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
setTimeout(init, 1);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
${meta({
|
|
2
|
+
title: "an html page"
|
|
3
|
+
})}
|
|
4
|
+
<p>\`html\` pages use the default template by default too.</p>
|
|
5
|
+
<p>And, it's important to remember that pages are parsed like
|
|
6
|
+
<a href='https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals'>template literals</a>
|
|
7
|
+
<b>at build time</b>.
|
|
8
|
+
</p>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
${meta({
|
|
2
|
+
title: "First Page"
|
|
3
|
+
})}
|
|
4
|
+
|
|
5
|
+
# markdown!
|
|
6
|
+
|
|
7
|
+
If all you need is markdown, you can do that!
|
|
8
|
+
|
|
9
|
+
We can even do code blocks with syntax highlighting.
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
const result = getResult();
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Or mermaid diagrams:
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
graph LR;
|
|
19
|
+
x --> y(probably y)
|
|
20
|
+
y --> z(definitely z)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Of course, you can also build [normal html pages](html.html).
|
|
24
|
+
|
|
25
|
+
And of course, you can also embed HTML with custom components directly in your
|
|
26
|
+
markdown:
|
|
27
|
+
|
|
28
|
+
<div>
|
|
29
|
+
<sample:countdown from=100></sample:countdown>
|
|
30
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg version="1.1" viewBox="0.0 0.0 512.0 512.0" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l512.0 0l0 512.0l-512.0 0l0 -512.0z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><defs><radialGradient id="p.1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(19.02731386455436 0.0 0.0 19.02731386455436 0.0 0.0)" spreadMethod="pad" cx="13.454342626727664" cy="13.454342626727664" fx="13.454342626727664" fy="13.454342626727664" r="19.027313232421875"><stop offset="0.0" stop-color="#ffffff"/><stop offset="1.0" stop-color="#c9daf8"/></radialGradient></defs><path fill="url(#p.1)" d="m0 0l512.0 0l0 512.0l-512.0 0z" fill-rule="evenodd"/><g filter="url(#shadowFilter-p.2)"><use xlink:href="#p.2" transform=""/></g><defs><filter id="shadowFilter-p.2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" stdDeviation="17.0" result="blur"/><feComponentTransfer in="blur" color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0" intercept="1.0"/><feFuncG type="linear" slope="0" intercept="0.8980392"/><feFuncB type="linear" slope="0" intercept="0.6"/><feFuncA type="linear" slope="0.8" intercept="0"/></feComponentTransfer></filter></defs><g id="p.2"><path fill="#e69138" d="m61.674362 40.000465c-7.7408257 0 -13.288418 1.9946785 -16.642776 5.984043c-3.3543587 3.9893608 -5.031536 8.976063 -5.031536 14.960106c0 6.3164864 1.6771774 11.469418 5.031536 15.458775c3.3543587 3.9893646 8.901951 5.984047 16.642776 5.984047l15.868698 0l67.345184 389.4615l40.252304 0.49865723l71.21559 -269.28192l71.60266 269.28192l40.25229 -0.49865723l66.18408 -389.4615l15.481659 0c7.9988403 0 13.675446 -1.9946823 17.029816 -5.984047c3.3543396 -3.989357 5.0315247 -8.976059 5.0315247 -14.960106c0 -6.3164864 -1.677185 -11.469414 -5.0315247 -15.458775c-3.35437 -3.9893646 -9.030975 -5.984043 -17.029816 -5.984043l-89.01953 0c-7.9988403 0 -13.675446 1.9946785 -17.029816 5.984043c-3.3543396 3.9893608 -5.0315247 8.976063 -5.0315247 14.960106c0 6.3164864 1.7201843 11.469418 5.160553 15.458775c3.5263672 3.9893646 9.159973 5.984047 16.900787 5.984047l41.026398 0l-55.346924 332.11438l-71.21561 -265.2926l-38.704117 0l-69.28041 265.2926l-57.66915 -332.11438l41.41343 0c7.740814 0 13.288406 -1.9946823 16.642776 -5.984047c3.3543549 -3.989357 5.0315247 -8.976059 5.0315247 -14.960106c0 -6.3164864 -1.6771698 -11.469414 -5.0315247 -15.458775c-3.35437 -3.9893646 -8.901962 -5.984043 -16.642776 -5.984043z" fill-rule="evenodd"/><path stroke="#85200c" stroke-width="8.0" stroke-linejoin="round" stroke-linecap="butt" d="m61.674362 40.000465c-7.7408257 0 -13.288418 1.9946785 -16.642776 5.984043c-3.3543587 3.9893608 -5.031536 8.976063 -5.031536 14.960106c0 6.3164864 1.6771774 11.469418 5.031536 15.458775c3.3543587 3.9893646 8.901951 5.984047 16.642776 5.984047l15.868698 0l67.345184 389.4615l40.252304 0.49865723l71.21559 -269.28192l71.60266 269.28192l40.25229 -0.49865723l66.18408 -389.4615l15.481659 0c7.9988403 0 13.675446 -1.9946823 17.029816 -5.984047c3.3543396 -3.989357 5.0315247 -8.976059 5.0315247 -14.960106c0 -6.3164864 -1.677185 -11.469414 -5.0315247 -15.458775c-3.35437 -3.9893646 -9.030975 -5.984043 -17.029816 -5.984043l-89.01953 0c-7.9988403 0 -13.675446 1.9946785 -17.029816 5.984043c-3.3543396 3.9893608 -5.0315247 8.976063 -5.0315247 14.960106c0 6.3164864 1.7201843 11.469418 5.160553 15.458775c3.5263672 3.9893646 9.159973 5.984047 16.900787 5.984047l41.026398 0l-55.346924 332.11438l-71.21561 -265.2926l-38.704117 0l-69.28041 265.2926l-57.66915 -332.11438l41.41343 0c7.740814 0 13.288406 -1.9946823 16.642776 -5.984047c3.3543549 -3.989357 5.0315247 -8.976059 5.0315247 -14.960106c0 -6.3164864 -1.6771698 -11.469414 -5.0315247 -15.458775c-3.35437 -3.9893646 -8.901962 -5.984043 -16.642776 -5.984043z" fill-rule="evenodd"/></g></g></svg>
|