[*] Initial commit

master
Lorenzo Cogotti 3 years ago
commit 64781e5420

@ -0,0 +1,3 @@
# DoubleFourteen - The DoubleFourteen Code Forge
Website sources for [DoubleFourteen - The DoubleFourteen Code Force](https://doublefourteen.io).

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

@ -0,0 +1,14 @@
baseURL = "https://doublefourteen.io/"
languageCode = "en-us"
title = "The DoubleFourteen Code Forge"
theme = "doublefourteen"
disableKinds = ["taxonomy", "term"]
timeout = 1000000
[markup.goldmark.renderer]
unsafe = true
DefaultContentLanguage = "en"
[languages]
[languages.en]
weight = 1

@ -0,0 +1,3 @@
---
title: "404: Page not found"
---

@ -0,0 +1,48 @@
---
title: Home
mobile_menu_title: "Home"
---
{{< flexrow style="justify-content:center;align-items:center" >}}
{{% div class="headline" %}}
The DoubleFourteen Code Forge is a community to produce and promote high quality free software.
{{% div style="text-align:left" %}}
We encourage strict cooperation between research and practical coding.
- Conscious research → pragmatic results.
- Conscious development → code quality.
- Synergy in both worlds.
{{% /div %}}
{{% /div %}}
{{% div style="align-self:flex-end" %}}
<a href="doublefourteen/" class="button">See our manifesto</a>
{{% /div %}}
{{< /flexrow >}}
{{% div class="alt-background" %}}
{{% div class="container cards-list" %}}
{{% div title="Contribute" %}}
The DoubleFourteen Code Forge is an open community.
{{% div style="text-align:left" %}}
- Always looking for new ideas and projects.
- Contributors sharing our vision are welcome.
- There are many ways to support us.
{{% /div %}}
{{% /div %}}
{{% div title="Check out our projects" %}}
Every DoubleFourteen project is free software, as in freedom.
Our source code repository is accessible at:
[https://git.doublefourteen.io](https://git.doublefourteen.io/explore/repos).
{{% div style="text-align:left" %}}
- Contributions to our code is welcome.
- Found a bug, got an improvement in mind? Let us know.
- We would love to know if any of our project is being useful to you.
{{% /div %}}
{{% /div %}}
{{% /div %}}
{{% /div %}}

@ -0,0 +1,6 @@
---
title: Articles
menu_title: Articles
mobile_menu_title: Articles
layout: rss-list
---

@ -0,0 +1,6 @@
---
title: Blog
menu_title: Blog
mobile_menu_title: Blog
layout: rss-list
---

@ -0,0 +1,56 @@
---
title: "The Micro BGP Suite has been released!"
mobile_menu_title: "µbgpsuite now released!"
date: 2021-06-15T00:00:00+00:00
tags:
- ubgpsuite
- C Language
- Networking
- BGP
- News
---
**We are happy to announce that the first version of the micro BGP suite has now been released!**
## The Micro BGP Suite is now available
I am thrilled to announce that the very first version of the
DoubleFourteen inaugural project, the Micro BGP suite (*µbgpsuite* for short
-- or *ubgpsuite* for differently Greek keyboards ☺), is now available!
Source code for this project is available at:
[https://git.doublefourteen.io/bgp/ubgpsuite](https://git.doublefourteen.io/bgp/ubgpsuite)
The Micro BGP Suite is an evolution of *bgpscanner*, originally developed under the
Institute of Informatics and Telematics of the Italian National Research Council,
see the forever unknown
[HISTORY](https://git.doublefourteen.io/bgp/ubgpsuite/src/branch/master/doc/HISTORY.md)
file included with the project documentation for more obscurities of this
project.
The Micro BGP suite includes:
- [lonetix](https://git.doublefourteen.io/bgp/ubgpsuite/src/branch/master/lonetix),
a performance oriented static library for BGP and MRT data encoding/decoding written in C.
I'd like to send a special thanks to my friend [Vernal Liu](https://covernal.github.io)
for coming up with a name for this library (though, it originally meant
*Lorenzo's Network library on Posix*), and for his saint-like patience in listening
my ramblings all the time.
- [bgpgrep](https://git.doublefourteen.io/bgp/ubgpsuite/src/branch/master/tools/bgpgrep),
the very first utility using *lonetix*, an advanced replacement for *bgpscanner*,
an utility capable of lightning fast MRT dump decoding and filtering. This utility
is documented in its glorious `man` [page](https://git.doublefourteen.io/bgp/ubgpsuite/src/branch/master/tools/bgpgrep/bgpgrep.1.in).
`bgpgrep` is the first utility taking advantage of `lonetix`, but more tools
are underway to demonstrate the capabilities of its API.
> **Hint** -- for a convenient PDF version of the manual page, you can run:
> ```sh
> $ sed s/@UTILITY@/bgpgrep/g tools/bgpgrep/bgpgrep.1.in | groffer
> ```
Stay tuned for more news on this project, as I'm currently working on an article
describing the BGP filtering engine exposed by `lonetix`.
Enjoy, and happy hacking,
Lorenzo Cogotti

@ -0,0 +1,110 @@
---
title: DoubleFourteen
menu_title: "The DoubleFourteen Code Forge"
mobile_menu_title: "1414° Code Forge"
date: 2021-06-15T00:40:51+02:00
---
# Vision
The DoubleFourteen Code Forge is an effort to promote synergy between developers
and researchers, in order to promote good development practices,
improve the software landscape and share common views and ethics.
With hope to form a collaborative community made of competent
individuals, practitioners, and researchers, working together and benefitting
from each other's skills and inputs.
# Raison d'être
Computer science and software development has evolved dramatically crucial in the last decades
for technological advancement and scientific research, consistently posing
new challenges and offering new possibilities to us all.
Facing such challenges and opening new applicative fields had an enormous impact
over our lives as we can testify every day.
Despite the abundance of application fields, research institutes and commercial
investments, oftentimes, topics and development practices are heavily
conditioned by external factors -- such as commercial interest,
nation-wide infrastructures, bureaucracy, budget choices, academic interest,
knowledge availability. Similar constraints apply to development time --
often seen as expensive by commercial entities and unnecessary to research
institutes, to the point of settling for quick prototypes that slowly but
surely become the definitive implementation.
As a matter of fact, computer science exhibits an uncanny dichotomy between
theory and actual practice, whereas theory is often forgotten or
ridiculed by practitioners and practical implementation is seen as a
pesky and forgettable detail by researchers.
The DoubleFourteen Code Forge is an attempt to provide an international
and diverse community to hoist and support any individual or group in their
own research or development interest, providing an ecosystem where such
limitations are absent or minimal.
We strive to enact an alternative setup where researchers and developers
may directly communicate with each other and understand the value of
taking into proper consideration every aspect and every challenge of the
computer science, creating premises for new innovative techniques.
Where the only constraints are imposed by skill, motivation, imagination and
perseverance in reaching our goals and improving ourselves.
Our community sole focus is raising the quality of the software world
and raise awareness on computer science, by spreading the results of our work.
Everyone is welcome to submit projects, take on research on their topic of
interest, or offer support. Everyone is encouraged to contribute and share
knowledge, as the more knowledge we share, the more contributions we can offer.
# Fundamental principles
The DoubleFourteen Code Forge is intended to be equally useful for
scientists and the collectivity as a whole. We should never forget that the
knowledge we produce and the code we write should be oriented to improving our
lives, our society and raise scientific awareness to the general public.
The following list summarizes the basic principles that everyone in the
community is asked to agree on, in order to ensure our objectives and a
productive environment.
* We value research, code, experience, knowledge, and share them
publicly. Believing that our efforts may be of better use when freely available
to a wider audience, as opposed to confined to few privileged entities.
* We promote ethical software and abhor restrictions to our Freedom. In no
way ever shall we consciously suggest or endorse the use of any unethical
software or service akin that ultimately results in:
- mistreating users or developers;
- violating the users' or developers' privacy or silently collecting their
data;
- severing the right to understand, learn, verify, modify or improve the
original source code;
- denying full control over the computing instruments;
- tying the user or developer to a single software or service, constraining
their freedom of choice.
* We place mutual respect at the foundation of our community.
* We believe in civilized debate. Personal offences and discrimination targeted
to us or others alike, in any public or private form, are incompatible
with our community. Any viable action shall be taken to condemn and eradicate
such behaviour and make our environment cleaner.
* We firmly reject any misrepresentation of work.
Our community as a whole is but a mean for each individual to fully express
their potential in any useful way they are most proficient with.
As such, every single effort is to be duly credited, fairly and transparently.
* We regard independence as a vital premise to ensure the impartiality
of our work.
* We never compromise over quality, our work is our art and pride.
* We keep any social, political, religious or idealistic conviction to our
personal individual relational sphere. Our community as a whole is neutral and
refuses to take any stance or action whatsoever over matters extraneous to
objective scientific debate on software development and computer science.
* We encourage any benevolent participation to our community, by actively
extending ourselves to rule out any obstacle in its actuation.
* We offer support to any project or initiative compatible with our
principles and goals.
* We are eager to learn, grateful to teach, motivated in our work.

@ -0,0 +1,6 @@
<div class="{{ .Get "class" }}" style="{{ .Get "style" | safeCSS }}">
{{ with .Get "title" }}
<h1 class="section-title">{{ . }}</h1>
{{ end }}
{{ .Inner }}
</div>

@ -0,0 +1,3 @@
<div class="{{.Get "class"}}" style="display: flex; flex-direction: row; flex-wrap: wrap;{{.Get "style" | safeCSS }}">
{{- .Inner -}}
</div>

@ -0,0 +1,41 @@
/*
.path-yel-in {
animation: draw 10s infinite;
animation-delay: 1s;
animation-timing-function: linear;
}
.path-yel-out {
animation: draw 10s infinite;
animation-timing-function: linear;
}
.path-left {
animation-delay: 2s;
}
.path-bottom {
animation-delay: 4s;
}
.circuit-path {
animation: circuit 20s linear infinite;
animation-delay: 2s;
}
.circuit-static, .circuit-anim {
left: 50%;
top: 50%;
transform: translate(-50%, -50%), translateZ(0);
position: absolute;
}
.circuit-anim {
backface-visibility: hidden;
}
@keyframes circuit {
100% {
stroke-dashoffset: 0;
stroke-opacity: 0.6;
}
}
*/

@ -0,0 +1 @@
{"Target":"css/circuit.min.d053cd5b7d1b8276398edb651c03a784e706faf0478345bec21786b70d6f6ece.css","MediaType":"text/css","Data":{"Integrity":"sha256-0FPNW30bgnY5jttlHAOnhOcG+vBHg0W+wheGtw1vbs4="}}

@ -0,0 +1 @@
.alt-background{background-color:#efefef}.main{background-color:#737475;color:#fff;padding:10px 15px;font-size:.9em}.nav-spacer{display:none}.banner-burnin{position:absolute;width:100%;height:100%;z-index:-1;box-shadow:inset 0 0 1px 1px rgba(64,64,64,.1);background:radial-gradient(ellipse at center,#4e3d18 0%,rgba(64,64,64,0) 50%);transform-origin:50% 50%;transform:perspective(20px)rotateX(.5deg)skewX(2deg)scale(1.03);animation:burnin 1s linear infinite;opacity:.9}.banner-burnin::after{position:relative;background:radial-gradient(ellipse at center,rgba(0,0,0,.5) 0%,rgba(64,64,64,0) 100%);opacity:.1}.banner-terminal{position:relative;z-index:90;margin:0 auto;width:100%;height:550px;background-color:#0a1922;overflow:hidden}.banner-terminal::before{position:absolute;width:100%;height:550px;top:0;left:0;content:"";z-index:100;background:linear-gradient(#777 50%,#0a1922 50%);background-size:100% 4px;background-repeat:repeat-y;opacity:.14;box-shadow:inset 0 0 1px 1px rgba(0,0,0,.8);animation:pulse 5s linear infinite}.banner-terminal::after{position:absolute;content:"";top:0;left:0;width:100%;height:76%;z-index:99;background:radial-gradient(ellipse at center,black 0%,rgba(0,0,0,.62) 45%,rgba(0,9,4,.6) 47%,#c3993c 100%);background-color:#c3993c;box-shadow:inset 0 0 4px 4px rgba(100,100,100,.5);opacity:.1}.banner-scanline{--scanline-area:$term-height;position:relative;z-index:99;width:100%;height:5px;background:linear-gradient(to bottom,rgba(255,0,0,0) 0%,snow 50%,rgba(255,255,255,.98) 51%,rgba(255,0,0,0) 100%);background-color:#fff;background-size:100% 4px;opacity:.1;animation:scanline 3.25s ease-in-out infinite}.banner-textarea{position:relative;width:1500px;height:600px;margin:0 auto}.banner-prompt{position:relative;text-align:left;padding-left:1em;font-family:Inconsolata,Courier,unicase;text-shadow:0 0 8px rgba(255,255,255,.3);font-size:4em;color:#c3993c}.ghost,.pop{opacity:.27}.banner-msg-line{text-shadow:0 0 8px rgba(231,214,177,.3);font-family:Inconsolata,Courier,monospace;font-smoothing:antialiased;padding-left:6em;font-size:3em;white-space:pre;color:#c3993c;overflow:hidden}#banner-msg-animate{text-shadow:0 0 8px rgba(255,255,255,.1);color:#6d592c;bottom:0}.flicker{margin:0;color:#2d2d2d;letter-spacing:-.05rem}.flicker::before{content:attr(letter);position:absolute;overflow:hidden;color:#fc0;z-index:5;text-shadow:none;animation:flicker 3s linear infinite}.glitch{margin:0;letter-spacing:-.05rem;display:inline-block;animation:glitch 1s linear infinite}.glitch::before,.glitch::after{content:attr(text);position:absolute;overflow:hidden}.glitch::before{left:0;animation:glitch-top 1s linear infinite;clip-path:polygon(0 0,100% 0,100% 33%,0 33%)}.glitch::after{left:0;animation:glitch-bottom 1.5s linear infinite;clip-path:polygon(0 67%,100% 67%,100% 100%,0 100%)}@keyframes burnin{0%{transform:scale(1,1.002)}50%{transform:scale(1,1.0001)}100%{transform:scale(1.001,1)}}@keyframes scanline{to{transform:translateY(calc(var(--scanline-area) - $term-scanline-height))}}@keyframes pulse{0%{transform:scale(1.001);opacity:.14}8%{transform:scale(1);opacity:.13}15%{transform:scale(1.004);opacity:.14}30%{transform:scale(1.002);opacity:.11}100%{transform:scale(1);opacity:.14}}@keyframes flicker{0%,19.999%,22%,62.999%,64%,64.999%,70%,100%{opacity:.99;text-shadow:-1px -1px 0 rgba(255,255,255,.4),1px -1px 0 rgba(255,255,255,.4),-1px 1px 0 rgba(255,255,255,.4),1px 1px 0 rgba(255,255,255,.4),0 -2px 8px,0 0 2px,0 0 5px #ff7e00,0 0 15px #f44,0 0 2px #ff7e00,0 2px 3px #000}20%,21.999%,63%,63.999%,65%,69.999%{opacity:.4;text-shadow:none}}@keyframes glitch{2%,64%{transform:translate(2px,0)skew(0)}4%,60%{transform:translate(-2px,0)skew(0)}62%{transform:translate(0,0)skew(5deg)}}@keyframes glitch-top{2%,64%{transform:translate(2px,-2px)}4%,60%{transform:translate(-2px,2px)}62%{transform:translate(13px,-1px)skew(-13deg)}}@keyframes glitch-bottom{2%,64%{transform:translate(-2px,0)}4%,60%{transform:translate(-2px,0)}62%{transform:translate(-22px,5px)skew(21deg)}}@keyframes typing{to{width:100%}}@keyframes blinking{from,to{border-color:transparent}50%{border-color:orange}}h1.section-title{font-size:3em;color:#444;text-align:center}.motto{text-align:left;padding-top:1em}@media(prefers-color-scheme:dark){.alt-background{background-color:#292929}h1.section-title{color:#ddd}}@media only screen and (max-width:1200px){.banner-prompt{font-size:3em}.banner-msg-line{font-size:2em}}@media only screen and (max-width:1000px){html,body{overflow-x:hidden}body{-webkit-text-size-adjust:none}}@media only screen and (max-width:800px){.banner-scanline{--scanline-area:$term-height-mobile}.banner-prompt{font-size:2em}.banner-msg-line{font-size:1.5em;padding-left:3em}}

@ -0,0 +1 @@
{"Target":"css/home.min.4c9feafeab8017f7a8a23fac16d131d3b087fbed2ec892551b95a3dd7e8e47d5.css","MediaType":"text/css","Data":{"Integrity":"sha256-TJ/q/quAF/eooj+sFtEx07CH++0uyJJVG5Wj3X6OR9U="}}

@ -0,0 +1 @@
#mobile-navbar{display:none;overflow:hidden;color:#fff!important;font-weight:700}#mobile-subnav{background-color:#0a1922}#mobile-subnav{display:none}#menu{padding:5px 0;color:#fff;padding-right:5px;padding-left:5px;font-size:1.1rem!important}#navbar{display:block}.nav{background-color:#0a1922;padding:5px 0;border-top:4px solid var(--teal)}.nav-spacer{margin-bottom:30px}.df-community-link:before{content:"";background-image:url(/heart.svg)!important;background-size:12px 16px;width:12px;height:16px;margin-left:5px;margin-right:5px;vertical-align:middle;display:inline-block}#menu .navbar-item,.nav .navbar-item,.nav .navbar-item:visited{color:#fff;padding-right:5px;padding-left:5px}@media only screen and (max-width:340px){#mobile-navbar{font-size:1.1rem!important}#hamburger{padding-left:.5rem!important}}@media only screen and (max-width:1000px){#menu .navbar-item{display:block}#mobile-subnav{display:block}#mobile-toggle+#menu{display:none}#mobile-toggle:checked+#menu{display:block}#mobile-navbar,#menu{display:block;font-size:1.2rem;line-height:2.2rem}#mobile-navbar{margin-top:.4rem}#navbar{display:none}#mobile-toggle{display:none}#hamburger{float:right;padding-left:1.5rem;padding-right:.5rem;line-height:0}}

@ -0,0 +1 @@
{"Target":"css/navigation.min.acad5d873b80dbbc3bfed76f876917d6fb8437b66d2018091c8bd51afdab0eb2.css","MediaType":"text/css","Data":{"Integrity":"sha256-rK1dhzuA27w7/tdvh2kX1vuEN7ZtIBgJHIvVGv2rDrI="}}

@ -0,0 +1 @@
.notfound-page{position:relative;display:flex;width:1500px;height:100%;margin:0 auto}.notfound-content{position:relative;flex:1;padding-top:60px;min-height:500px;max-width:500px}.notfound-404-chan-wrapper{position:relative;flex:1}#particles-bg{z-index:100}.notfound-404-chan{suser-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}

@ -0,0 +1 @@
{"Target":"css/notfound.min.8fd670f1f7b146151ae2bd3cdbd2ab27b23a5d3b5a7b23093c4e28ee8d0db07f.css","MediaType":"text/css","Data":{"Integrity":"sha256-j9Zw8fexRhUa4r0829KrJ7I6XTtaeyMJPE4o7o0NsH8="}}

@ -0,0 +1 @@
#particles-bg,canvas{position:absolute;width:100%;height:100%;top:0;left:0;z-index:-10}

@ -0,0 +1 @@
{"Target":"css/particles.min.1267e7250414cb0155cba79bd9ff4780f779558db521b0059252823cd281dca9.css","MediaType":"text/css","Data":{"Integrity":"sha256-EmfnJQQUywFVy6eb2f9HgPd5VY21IbAFklKCPNKB3Kk="}}

@ -0,0 +1 @@
*{box-sizing:border-box}html,body{width:100%;height:100%}h1.section-title{font-size:2em}h1.section-title:first-letter{text-transform:capitalize}body{margin:0;font-family:var(--body-font);font-size:var(--body-font-size);line-height:var(--body-line-height);color:var(--body-color);background-color:var(--body-bg);-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a{color:var(--link-color)}a:hover,a:focus{color:var(--link-hover-color)}a strong{color:inherit}a:not(:hover){text-decoration:none}.container{margin:0 auto;position:relative;max-width:1000px;padding:0 .2em}.external-link-light:after{background-image:url(/external-link-dark.svg)!important}.external-link:after{content:"";background-image:url(/external-link-light.svg);background-size:10px 10px;display:inline-block;width:10px;height:10px;margin-left:5px}img{display:block;max-width:100%;margin-bottom:var(--spacer);border-radius:var(--border-radius)}table{margin-bottom:1rem;width:100%;border:0 solid var(--border-color);border-collapse:collapse}td,th{padding:.25rem .5rem;border-color:inherit;border-style:solid;border-width:0;border-bottom-width:1px}th{text-align:left}thead th{border-bottom-color:initial}#header{display:flex;flex-direction:row;align-items:flex-end}#header-text{font-size:2em;color:#444;font-weight:700;display:inline-block;padding:1em .5em}#header-text-small{font-size:2em;color:#444;font-weight:700;display:none;padding:1em .5em}#header-image{background-image:url(/doublefourteen-logo-dark.svg);background-repeat:no-repeat;width:330px;height:180px;display:inline-block;margin:0 .5em}.footer{text-align:center;padding-top:2em}@media(max-width:1100px){#header-text{display:none}#header-text-small{display:inline-block}}@media(prefers-color-scheme:dark){.external-link:after{background-image:url(/external-link-dark.svg)}#header-text{color:#ddd}#header-text-small{color:#ddd}#header-image{background-image:url(/doublefourteen-logo-light.svg)}}

@ -0,0 +1 @@
{"Target":"css/style.min.d944d9757086436e8d5b6bcad72f606958e62373e1d7ad0f79c4a5214e5e7ad9.css","MediaType":"text/css","Data":{"Integrity":"sha256-2UTZdXCGQ26NW2vK1y9gaVjmI3Ph160PecSlIU5eetk="}}

@ -0,0 +1,4 @@
:root{--gray-000:#f8f9fa;--gray-100:#f1f3f5;--gray-200:#e9ecef;--gray-300:#dee2e6;--gray-400:#ced4da;--gray-500:#adb5bd;--gray-600:#868e96;--gray-700:#495057;--gray-800:#343a40;--gray-900:#212529;--red:#fa5252;--pink:#e64980;--grape:#be4bdb;--purple:#7950f2;--indigo:#4c6ef5;--blue:#228be6;--cyan:#15aabf;--teal:#12b886;--green:#40c057;--yellow:#fab005;--orange:#fd7e14;--gray:#454545;--blue-300:#74c0fc;--blue-400:#4dabf7;--yellow-100:#fff3bf;--body-font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--body-font-size:20px;--body-line-height:1.5;--body-color:var(--gray-700);--body-bg:#fff;--link-color:var(--blue);--link-hover-color:#1c7ed6;--heading-color:var(--gray-900);--border-color:var(--gray-300);--border-radius:0.25rem;--code-font:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
"Courier New", monospace;--code-color:var(--grape);--code-bg:var(--gray-000);--spacer:1rem;--spacer-2:calc(var(--spacer) * 1.5);--spacer-3:calc(var(--spacer) * 3)}@media(prefers-color-scheme:dark){:root{--body-color:var(--gray-300);--body-bg:var(--gray-800);--heading-color:#fff;--link-color:var(--blue-300);--link-hover-color:var(--blue-400);--border-color:rgba(255, 255, 255, 0.15);--code-bg:var(--gray-900)}}

@ -0,0 +1 @@
{"Target":"css/variables.min.64ab9ff349f04ea7ee51c5148a9834f9570ec7ceb652edba40d7abd5b2dc566b.css","MediaType":"text/css","Data":{"Integrity":"sha256-ZKuf80nwTqfuUcUUipg0+VcOx862Uu26QNer1bLcVms="}}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"Target":"css/home.2c1adf72cf123c3b68c525dcadc082f1589a474f975956f30e8e051d71b43b36.css","MediaType":"text/css","Data":{"Integrity":"sha256-LBrfcs8SPDtoxSXcrcCC8ViaR0+XWVbzDo4FHXG0OzY="}}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"Target":"css/home.min.fe9260a06c887cdf81a61aeac369079aa7e7a697acd29334e939ec6466473bdb.css","MediaType":"text/css","Data":{"Integrity":"sha256-/pJgoGyIfN+Bphrqw2kHmqfnppes0pM06TnsZGZHO9s="}}

@ -0,0 +1 @@
:root{--background-color: #737475;--alt-background-color: #efefef;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}#mobile-navbar{display:none;overflow:hidden;color:white !important;font-weight:bold}#mobile-subnav{background-color:#0a1922}#mobile-subnav{display:none}#menu{padding:5px 0;color:white;padding-right:5px;padding-left:5px;font-size:1.1rem !important}#navbar{display:block}.nav{background-color:#0a1922;padding:5px 0;border-top:4px solid #12b886}.nav-spacer{margin-bottom:30px}.df-community-link:before{content:"";background-image:url(/heart.svg) !important;background-size:12px 16px;width:12px;height:16px;margin-left:5px;margin-right:5px;vertical-align:middle;display:inline-block}#menu .navbar-item,.nav .navbar-item,.nav .navbar-item:visited{color:white;padding-right:5px;padding-left:5px}@media only screen and (max-width: 340px){#mobile-navbar{font-size:1.1rem !important}#hamburger{padding-left:0.5rem !important}}@media only screen and (max-width: 1000px){#menu .navbar-item{display:block}#mobile-subnav{display:block}#mobile-toggle+#menu{display:none}#mobile-toggle:checked+#menu{display:block}#mobile-navbar,#menu{display:block;font-size:1.2rem;line-height:2.2rem}#mobile-navbar{margin-top:0.4rem}#navbar{display:none}#mobile-toggle{display:none}#hamburger{float:right;padding-left:1.5rem;padding-right:0.5rem;line-height:0}}

@ -0,0 +1 @@
{"Target":"css/navigation.1a3e87cd446d5f1b61dd79f4152b3bb148649c8332e99134da0a231adc630f98.css","MediaType":"text/css","Data":{"Integrity":"sha256-Gj6HzURtXxth3Xn0FSs7sUhknIMy6ZE02gojGtxjD5g="}}

@ -0,0 +1 @@
:root{--background-color: #737475;--alt-background-color: #efefef;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}.notfound-page{position:relative;display:flex;flex-wrap:wrap;width:1000px;margin:0 auto;gap:1.5rem}.notfound-content{position:relative;padding-top:1.5rem;max-width:400px}.notes{padding-top:1rem}.notfound-404-chan{position:relative;width:400px;height:500px;background-image:url("/404-chan_sm.png");background-position:bottom right 3rem;background-repeat:no-repeat;background-size:144px 256px}#particles-bg{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100}@media (max-width: 800px){.notfound-content{text-align:center}.notfound-page{flex-direction:column}}

@ -0,0 +1 @@
{"Target":"css/notfound.d5335f5ffd06a11724e785740f8a7c3510cafaba0e80a9f9631156d33c3a176f.css","MediaType":"text/css","Data":{"Integrity":"sha256-1TNfX/0GoRck54V0D4p8NRDK+roOgKn5YxFW0zw6F28="}}

@ -0,0 +1 @@
.notfound-page{position:relative;display:flex;width:1500px;height:100%;margin:0 auto}.notfound-content{position:relative;flex:1;padding-top:60px;min-height:500px;max-width:500px}.notfound-404-chan-wrapper{position:relative;flex:1}#particles-bg{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100}.notfound-404-chan{suser-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}

@ -0,0 +1 @@
{"Target":"css/notfound.min.7af2d4e98e0e95317dfd8f8e721927a5a4a16a51163c83d93a1fd266bbb782df.css","MediaType":"text/css","Data":{"Integrity":"sha256-evLU6Y4OlTF9/Y+OchknpaShalEWPIPZOh/SZru3gt8="}}

@ -0,0 +1 @@
:root{--background-color: #737475;--alt-background-color: #efefef;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}@media only screen and (max-width: 600px){.on-pc-screen{display:none !important}}@media only screen and (min-width: 600px){.on-mobile-screen{display:none !important}}@media only screen and (max-width: 1200px){.on-largest-screen{display:none !important}}@media only screen and (min-width: 1200px){.up-to-largest-screen{display:none !important}}@media only screen and (max-width: 1000px){.on-large-screen{display:none !important}}@media only screen and (min-width: 1000px){.up-to-large-screen{display:none !important}}@media only screen and (max-width: 800px){.on-small-screen{display:none !important}}@media only screen and (min-width: 800px){.up-to-small-screen{display:none !important}}*{box-sizing:border-box;z-index:1}html,body{width:100%;height:100%;min-width:500px}h1.page-title{text-align:left;font-size:2em;color:var(--title-text-color)}h1.page-title:first-letter{text-transform:capitalize}body{margin:0;font-family:var(--body-font);font-size:20px;line-height:1.5;color:var(--foreground-color);background-color:var(--background-color);-webkit-text-size-adjust:100%;-webkit-text-size-adjust--ms-text-size-adjust:100%}a{color:var(--link-color)}a:hover,a:focus{color:var(--link-hover-color)}a strong{color:inherit}a:not(:hover){text-decoration:none}.container{margin:0 auto;position:relative;max-width:1000px;padding:0 0.2em}.external-link-light:after{background-image:url(/external-link-dark.svg) !important}.external-link:after{content:"";background-image:url(/external-link-light.svg);background-size:10px 10px;display:inline-block;width:10px;height:10px;margin-left:5px}img{display:block;max-width:100%;margin-bottom:1rem;border-radius:.25rem}table{margin-bottom:1rem;width:100%;border:0 solid var(--border-color);border-collapse:collapse}td,th{padding:.25rem .5rem;border-color:inherit;border-style:solid;border-width:0;border-bottom-width:1px}th{text-align:left}thead th{border-bottom-color:currentColor}.header{display:flex;align-items:flex-end}.header-text{font-size:2em;color:var(--title-text-color);font-weight:bold;display:inline-block;padding:1em 0.5em 1em 0.5em}.header-image{background-image:url(/doublefourteen-logo-dark.svg);background-repeat:no-repeat;width:330px;height:180px;display:inline-block;margin:0 0.5em 0 0.5em}.work-in-progress-content{display:flex;justify-content:space-between}.work-in-progress-text{position:relative}.work-in-progress-sign{width:400px;height:386px;background-image:url(/work-in-progress.png);background-position:bottom right;background-repeat:no-repeat;background-size:400px 386px}.button,.button:hover{background-color:transparent;border:2px solid #737475;color:#333;padding:7px 12px;display:block;margin:10px 0;font-size:20px;font-weight:700;text-decoration:none !important}.button a{display:inline;text-decoration:none !important;color:#666}.button:hover{background-color:#7f7f7f}.footer{text-align:center;padding-top:1.5rem}@media (prefers-color-scheme: dark){.external-link:after{background-image:url(/external-link-dark.svg)}.header-image{background-image:url(/doublefourteen-logo-light.svg)}.button,.button:hover{color:inherit}.button a{color:#ccc}.button:hover{background-color:#383838}}@media only screen and (max-width: 800px){.work-in-progress-content{flex-direction:column}.work-in-progress-text{text-align:center}}

@ -0,0 +1 @@
{"Target":"css/style.14e9793f6c6b6d3683942f19e20cd9c2c21843299949df423dc286e6c113317c.css","MediaType":"text/css","Data":{"Integrity":"sha256-FOl5P2xrbTaDlC8Z4gzZwsIYQymZSd9CPcKG5sETMXw="}}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"Target":"sass/home.78b660c2911b006de02237403706f63b4ea3283b7001b4594fd7ea78834f7962.css","MediaType":"text/css","Data":{"Integrity":"sha256-eLZgwpEbAG3gIjdANwb2O06jKDtwAbRZT9fqeINPeWI="}}

@ -0,0 +1 @@
:root{--background-color: #efefef;--alt-background-color: #dfdfdf;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}#mobile-navbar{display:none;overflow:hidden;color:white !important;font-weight:bold}#mobile-subnav{background-color:#0a1922}#mobile-subnav{display:none}#menu{padding:5px 0;color:white;padding-right:5px;padding-left:5px;font-size:1.1rem !important}#navbar{display:block}.nav{background-color:#0a1922;padding:5px 0;border-top:4px solid #12b886}.nav-spacer{margin-bottom:30px}.df-community-link:before{content:"";background-image:url(/heart.svg) !important;background-size:12px 16px;width:12px;height:16px;margin-left:5px;margin-right:5px;vertical-align:middle;display:inline-block}#menu .navbar-item,.nav .navbar-item,.nav .navbar-item:visited{color:white;padding-right:5px;padding-left:5px}@media only screen and (max-width: 340px){#mobile-navbar{font-size:1.1rem !important}#hamburger{padding-left:0.5rem !important}}@media only screen and (max-width: 1000px){#menu .navbar-item{display:block}#mobile-subnav{display:block}#mobile-toggle+#menu{display:none}#mobile-toggle:checked+#menu{display:block}#mobile-navbar,#menu{display:block;font-size:1.2rem;line-height:2.2rem}#mobile-navbar{margin-top:0.4rem}#navbar{display:none}#mobile-toggle{display:none}#hamburger{float:right;padding-left:1.5rem;padding-right:0.5rem;line-height:0}}

@ -0,0 +1 @@
{"Target":"sass/navigation.c2388a3ec6258b34c9437b1acabacf098ebf76d90868746e174520b47950528f.css","MediaType":"text/css","Data":{"Integrity":"sha256-wjiKPsYlizTJQ3sayrrPCY6/dtkIaHRuF0UgtHlQUo8="}}

@ -0,0 +1 @@
:root{--background-color: #efefef;--alt-background-color: #dfdfdf;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}.notfound-page{position:relative;display:flex;flex-wrap:wrap;width:1000px;margin:0 auto;gap:1.5rem}.notfound-content{position:relative;padding-top:1.5rem;max-width:400px}.notes{padding-top:1rem}.notfound-404-chan{position:relative;width:400px;height:500px;background-image:url("/404-chan_sm.png");background-position:bottom right 3rem;background-repeat:no-repeat;background-size:144px 256px}#particles-bg{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100}@media (max-width: 800px){.notfound-content{text-align:center}.notfound-page{flex-direction:column}}

@ -0,0 +1 @@
{"Target":"sass/notfound.3230ae6a62d9e6fc90bed42f285492ba8b05f818abbd71e0c96e5ba56cdb320e.css","MediaType":"text/css","Data":{"Integrity":"sha256-MjCuamLZ5vyQvtQvKFSSuosF+BirvXHgyW5bpWzbMg4="}}

@ -0,0 +1 @@
:root{--background-color: #efefef;--alt-background-color: #dfdfdf;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}@media only screen and (max-width: 600px){.on-pc-screen{display:none !important}}@media only screen and (min-width: 600px){.on-mobile-screen{display:none !important}}@media only screen and (max-width: 1200px){.on-largest-screen{display:none !important}}@media only screen and (min-width: 1200px){.up-to-largest-screen{display:none !important}}@media only screen and (max-width: 1000px){.on-large-screen{display:none !important}}@media only screen and (min-width: 1000px){.up-to-large-screen{display:none !important}}@media only screen and (max-width: 800px){.on-small-screen{display:none !important}}@media only screen and (min-width: 800px){.up-to-small-screen{display:none !important}}*{box-sizing:border-box;z-index:1}html,body{width:100%;height:100%;min-width:500px}h1.page-title{text-align:left;font-size:2em;color:var(--title-text-color)}h1.page-title:first-letter{text-transform:capitalize}body{margin:0;font-family:var(--body-font);font-size:20px;line-height:1.5;color:var(--foreground-color);background-color:var(--background-color);-webkit-text-size-adjust:100%;-webkit-text-size-adjust--ms-text-size-adjust:100%}a{color:var(--link-color)}a:hover,a:focus{color:var(--link-hover-color)}a strong{color:inherit}a:not(:hover){text-decoration:none}.container{margin:0 auto;position:relative;max-width:1000px;padding:0 0.2em}.external-link-light:after{background-image:url(/external-link-dark.svg) !important}.external-link:after{content:"";background-image:url(/external-link-light.svg);background-size:10px 10px;display:inline-block;width:10px;height:10px;margin-left:5px}img{display:block;max-width:100%;margin-bottom:1rem;border-radius:.25rem}table{margin-bottom:1rem;width:100%;border:0 solid var(--border-color);border-collapse:collapse}td,th{padding:.25rem .5rem;border-color:inherit;border-style:solid;border-width:0;border-bottom-width:1px}th{text-align:left}thead th{border-bottom-color:currentColor}.header{display:flex;align-items:flex-end}.header-text{font-size:2em;color:var(--title-text-color);font-weight:bold;display:inline-block;padding:1em 0.5em 1em 0.5em}.header-image{background-image:url(/doublefourteen-logo-dark.svg);background-repeat:no-repeat;width:330px;height:180px;display:inline-block;margin:0 0.5em 0 0.5em}.work-in-progress-content{display:flex;justify-content:space-between}.work-in-progress-text{position:relative}.work-in-progress-sign{width:400px;height:386px;background-image:url(/work-in-progress.png);background-position:bottom right;background-repeat:no-repeat;background-size:400px 386px}.button,.button:hover{background-color:transparent;border:2px solid #737475;color:#333;padding:7px 12px;display:block;margin:10px 0;font-size:20px;font-weight:700;text-decoration:none !important}.button a{display:inline;text-decoration:none !important;color:#666}.button:hover{background-color:#7f7f7f}.footer{text-align:center;padding-top:1.5rem}@media (prefers-color-scheme: dark){.external-link:after{background-image:url(/external-link-dark.svg)}.header-image{background-image:url(/doublefourteen-logo-light.svg)}.button,.button:hover{color:inherit}.button a{color:#ccc}.button:hover{background-color:#383838}}@media only screen and (max-width: 800px){.work-in-progress-content{flex-direction:column}.work-in-progress-text{text-align:center}}

@ -0,0 +1 @@
{"Target":"sass/style.31c0df1af1c551ede13db9f99995a7ece9d2a3dfe4dc29bac27689d48a9e1392.css","MediaType":"text/css","Data":{"Integrity":"sha256-McDfGvHFUe3hPbn5mZWn7OnSo9/k3Cm6wnaJ1IqeE5I="}}

@ -0,0 +1 @@
*{box-sizing:border-box;z-index:2}html,body{width:100%;height:100%}h1.section-title{font-size:3em;color:#444;text-align:center}body{margin:0;font-family:var(--body-font);font-size:var(--body-font-size);line-height:var(--body-line-height);color:var(--body-color);background-color:var(--body-bg);-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a{color:var(--link-color)}a:hover,a:focus{color:var(--link-hover-color)}a strong{color:inherit}img{display:block;max-width:100%;margin-bottom:var(--spacer);border-radius:var(--border-radius)}table{margin-bottom:1rem;width:100%;border:0 solid var(--border-color);border-collapse:collapse}td,th{padding:.25rem .5rem;border-color:inherit;border-style:solid;border-width:0;border-bottom-width:1px}th{text-align:left}thead th{border-bottom-color:currentColor}mark{padding:.15rem;background-color:var(--yellow-100);border-radius:.125rem}motto{text-align:center;padding-top:2em}footer{text-align:center;padding-top:2em}

@ -0,0 +1 @@
{"Target":"sass/base.css","MediaType":"text/css","Data":{}}

@ -0,0 +1 @@
.notfound-page{position:relative;display:flex}.notfound-content{position:relative;flex:1;margin-top:60px;min-height:500px}.notfound-404-chan-wrapper{position:relative;flex:1}.notfound-404-chan{position:absolute;bottom:0;margin-left:50%;margin-right:50%;margin-bottom:0;z-index:-11;pointer-events:none;suser-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}

@ -0,0 +1 @@
{"Target":"sass/notfound.css","MediaType":"text/css","Data":{}}

@ -0,0 +1 @@
#particles-bg,canvas{position:absolute;width:100%;height:100%;top:0;left:0;z-index:-10}

@ -0,0 +1 @@
{"Target":"sass/particles.css","MediaType":"text/css","Data":{}}

@ -0,0 +1,4 @@
:root{--gray-000: #f8f9fa;--gray-100: #f1f3f5;--gray-200: #e9ecef;--gray-300: #dee2e6;--gray-400: #ced4da;--gray-500: #adb5bd;--gray-600: #868e96;--gray-700: #495057;--gray-800: #343a40;--gray-900: #212529;--red: #fa5252;--pink: #e64980;--grape: #be4bdb;--purple: #7950f2;--indigo: #4c6ef5;--blue: #228be6;--cyan: #15aabf;--teal: #12b886;--green: #40c057;--yellow: #fab005;--orange: #fd7e14;--gray: #454545;--blue-300: #74c0fc;--blue-400: #4dabf7;--yellow-100: #fff3bf;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--body-font-size: 20px;--body-line-height: 1.5;--body-color: var(--gray-700);--body-bg: #fff;--link-color: var(--blue);--link-hover-color: #1c7ed6;--heading-color: var(--gray-900);--border-color: var(--gray-300);--border-radius: 0.25rem;--code-font: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
"Courier New", monospace;--code-color: var(--grape);--code-bg: var(--gray-000);--spacer: 1rem;--spacer-2: calc(var(--spacer) * 1.5);--spacer-3: calc(var(--spacer) * 3)}@media (prefers-color-scheme: dark){:root{--body-color: var(--gray-300);--body-bg: var(--gray-800);--heading-color: #fff;--link-color: var(--blue-300);--link-hover-color: var(--blue-400);--border-color: rgba(255, 255, 255, 0.15);--code-bg: var(--gray-900)}}

@ -0,0 +1 @@
{"Target":"sass/variables.css","MediaType":"text/css","Data":{}}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,99 @@
/* -----------------------------------------------
* Rain background particle effect.
*
* @licstart The following is the entire license notice for the
* JavaScript code in this page.
*
* Copyright (C) 2020 Lorenzo Cogotti
*
* The JavaScript code in this page is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* General Public License (GNU GPL) as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version. The code is distributed WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
*
* As additional permission under GNU GPL version 3 section 7, you
* may distribute non-source (e.g., minimized or compacted) forms of
* that code without the copy of the GNU GPL normally required by
* section 4, provided you include this license notice and a URL
* through which recipients can access the Corresponding Source.
*
* @licend The above is the entire license notice
* for the JavaScript code in this page.
* ----------------------------------------------- */
particlesJS('particles-bg',
{
"particles": {
"number": {
"value": 80,
"density": {
"enable": true,
"value_area": 200
}
},
"color": {
"value": "#ffffff"
},
"shape": {
"type": "circle"
},
"opacity": {
"value": 0.3,
"random": true,
"anim": {
"enable": true,
"speed": 3000,
"opacity_min": 0.1,
"sync": false
}
},
"size": {
"value": 2.8,
"value_min": 1,
"random": true
},
"line_linked": {
"enable": false
},
"move": {
"enable": true,
"speed": 550, // in pixel-per-second
"direction": "bottom",
"random": false,
"straight": true,
"out_mode": "out",
"attract": {
"enable": true,
"rotateX": 600,
"rotateY": 1200
}
},
"trail": {
"enable": true,
"samples": 7,
"discont_threshold": 4
}
},
"interactivity": {
"detect_on": "canvas",
"events": {
"onhover": {
"enable": true,
"mode": "repulse"
},
"resize": true
},
"modes": {
"repulse": {
"distance": 150
}
}
},
"retina_detect": true
}
);

@ -0,0 +1,168 @@
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000 / 8);
};
})();
(function() {
'use strict';
// Initial setup
function $(x) {return document.getElementById(x);}
let $container = $("banner-textarea");
let $message = $("banner-msg");
let $animate = $("banner-msg-animate");
let $paragraph = null;
const asciiEscMap = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#x27;',
'`': '&#x60;'
};
function needsAsciiEsc(str) {
for (let i of str) {
if (asciiEscMap[i]) { return true; }
}
return false;
}
function isAsciiString(str) {
for (let i of str) {
if (i.codePointAt(0) > 127) { return false; }
}
return true;
}
function maybeEscpDec(ch) {
const cp = ch.codePointAt(0);
return cp > 127 ? '&#' + cp + ';' : ch;
}
function escpAscii(str) {
return [...str].map(x => asciiEscMap[x] || x).join("");
}
function escp(text) {
if (needsAsciiEsc(text)) {
text = escpAscii(text);
}
return isAsciiString(text) ? text : [...text].map(maybeEscpDec).join("");
}
// Messages setup
/* MESSAGES be like:
* [ {"delay": 0, "text": "message 1"},
* {"delay": 1200, "text": "message 2"},
* {"delay": 2200, "text": "message 4"},
* {"delay": 3600, "text": "message 5"},
* {"delay": 5200, "text": "message 6"} ]
*/
const MESSAGES = JSON.parse($animate.getAttribute('data-msg'));
function scramble($element, text, options) {
const defaults = {
probability: 0.25,
glitches: "-%¥¶!\"❏_△§*¢ ¿",
blank: "",
duration: text.length * 80,
delay: 0.0
};
const settings = {...defaults, ...options};
function shuffle() {return (Math.random() < 0.5) ? 1 : -1;}
function wrap(text, classes) {return "<span class=\"" + classes + "\">" + text + "</span>";}
const glitchCharacters = [...settings.glitches].map(escp);
const glitchLength = glitchCharacters.length;
const glitchProbability = settings.probability;
const glitches = glitchCharacters.map(x => wrap(x, "pop"));
const ghostCharacters = [...$element.innerText].map(escp);
const ghostLength = ghostCharacters.length;
const ghosts = ghostCharacters.map(x => wrap(x, "ghost"));
const textCharacters = [...text].map(escp);
const textLength = textCharacters.length;
const order = Array.from(Array(textLength).keys()).sort(shuffle);
let output = [];
for (let i = 0; i < textLength; ++i) {
const index = Math.floor(Math.random() * (glitchLength - 1));
const glitchCharacter = glitches[index];
const ghostCharacter = ghosts[i] || settings.blank;
const character = Math.random() < glitchProbability ? glitchCharacter : ghostCharacter;
output.push(character);
}
// Animation
const duration = settings.duration;
const ease = settings.ease;
let start = null;
const TRESH = 1000 / 8; // 8FPS, more than enough
function easeInOutQuad(t) {
if (t < 0.5)
return 2 * t * t;
return Math.min((4 - 2 * t) * t - 1, 1);
}
function refresh() {
const now = Date.now();
if (!start) { start = now; }
const elapsed = now - start;
if (elapsed < TRESH) {
window.requestAnimFrame(refresh);
return;
}
if (elapsed > duration) {
$element.innerHTML = text;
return;
}
const interp = easeInOutQuad(elapsed / duration);
const progress = Math.floor(interp * (textLength - 1));
for (let i = 0; i < progress; ++i) {
const index = order[i];
output[index] = textCharacters[index];
}
$element.innerHTML = output.join('');
window.requestAnimFrame(refresh);
}
setTimeout(refresh, settings.delay);
}
function animate() {
for (let i = 0; i < MESSAGES.length; ++i) {
let data = MESSAGES[i];
let element = $paragraph.item(i);
element.innerText = '';
let options = { delay: data.delay };
scramble(element, data.text, options);
}
}
function initialize() {
for (let _ in MESSAGES) {
let elem = document.createElement("p");
elem.className = "banner-msg-line";
$message.appendChild(elem);
}
$paragraph = $container.getElementsByTagName("p");
animate();
}
initialize();
}).call(this);

@ -0,0 +1,279 @@
@import "variables"
// common variables for this page
$-h1: rgba(45,45,45,1)
$-outline: rgba(#fff, .4)
$-shadow: rgba($yellow, .5)
$-term-color: #c3993c
$-term-height: 550px
$-term-height-mid: 400px
$-term-height-mobile: 280px
$-term-scanline-height: 5px
.main
background-color: var(--background-color)
color: var(--foreground-color)
padding: 10px 15px
font-size: 0.9em
.headline
max-width: $page-width
height: auto
font-size: $bigger-font-size
text-align: center
.alt-background
background: var(--alt-background-color)
.cards-list
max-width: $page-width
height: 100%
display: flex
flex-direction: column
justify-content: center
align-items: center
text-align: center
padding: $large-spacer $huge-spacer
.nav-spacer
display: none // so the banner is against the navbar
.banner-burnin
position: absolute
width: 100%
height: 100%
z-index: $back
box-shadow: inset 0px 0px 1px 1px rgba(64, 64, 64, .1)
background: radial-gradient(ellipse at center,darken($-term-color,30%) 0%,rgba(64,64,64,0) 50%)
transform-origin : 50% 50%
transform: perspective(20px) rotateX(.5deg) skewX(2deg) scale(1.03)
animation: burnin 1s linear infinite
opacity: .9
.banner-burnin::after
position: relative
background: radial-gradient(ellipse at center, rgba(0,0,0,0.5) 0%,rgba(64,64,64,0) 100%)
opacity: .1
.banner-terminal
position: relative
z-index: 90
margin: 0 auto
width: 100%
height: $-term-height
background-color: #0a1922
overflow: hidden
.banner-terminal::before
position: absolute
width: 100%
height: 100%
top: 0
left: 0
content: ""
z-index: $front
background: linear-gradient(#777 50%, #0a1922 50%)
background-size: 100% 4px
background-repeat: repeat-y
opacity: .14
box-shadow : inset 0px 0px 1px 1px rgba(0, 0, 0, .8)
animation: pulse 5s linear infinite
.banner-terminal::after
position: absolute
content: ""
top: 0
left: 0
width: 100%
height: 76%
z-index: 99
background: radial-gradient(ellipse at center, rgba(0,0,0,1) 0%,rgba(0,0,0,0.62) 45%,rgba(0,9,4,0.6) 47%,$-term-color 100%)
background-color: $-term-color
box-shadow : inset 0px 0px 4px 4px rgba(100, 100, 100, .5)
opacity : .1
.banner-scanline
--scanline-area: #{$-term-height}
position: relative
z-index: 99
width: 100%
height: 5px
background: linear-gradient(to bottom, rgba(255,0,0,0) 0%,rgba(255,250,250,1) 50%,rgba(255,255,255,0.98) 51%,rgba(255,0,0,0) 100%)
background-color: #fff
background-size: 100% 4px
opacity : .1
animation: scanline 3.25s ease-in-out infinite
.banner-textarea
position: relative
width: 1500px
height: 600px
margin: 0 auto
.banner-prompt
position: relative
text-align: left
padding-left: 1em
font-family: Inconsolata, Courier, unicase
text-shadow: 0 0 8px rgba(lighten($-term-color, 50%), 0.3)
font-size: 4em
color: $-term-color
.ghost, .pop
opacity: 0.27
.banner-msg-line
text-shadow: 0 0 8px rgba(lighten($-term-color, 30%), 0.3)
font-family: Inconsolata, Courier, monospace
font-smoothing: antialiased
padding-left: 6em
font-size: 3em
white-space: pre
color: $-term-color
overflow: hidden
#banner-msg-animate
text-shadow: 0 0 8px rgba(lighten($-term-color, 50%), 0.1)
color: darken(desaturate($-term-color, 10%), 20%)
bottom: 0
.flicker
margin: 0
color: $-h1
letter-spacing: -.05rem
.flicker::before
content: attr(letter)
position: absolute
overflow: hidden
color: $yellow
z-index: $above
text-shadow: none
animation: flicker 3s linear infinite
.glitch
margin: 0
letter-spacing: -0.05rem
display: inline-block
animation: glitch 1s linear infinite
.glitch::before, .glitch::after
content: attr(text)
position: absolute
overflow: hidden
.glitch::before
left: 0;
animation: glitch-top 1s linear infinite
clip-path: polygon(0 0, 100% 0, 100% 33%, 0 33%)
.glitch::after
left: 0
animation: glitch-bottom 1.5s linear infinite
clip-path: polygon(0 67%, 100% 67%, 100% 100%, 0 100%)
@keyframes burnin
0%
transform: scale(1, 1.002)
50%
transform: scale(1, 1.0001)
100%
transform: scale(1.001, 1)
@keyframes scanline
to
transform: translateY(var(--scanline-area)) translateY(-$-term-scanline-height)
@keyframes pulse
0%
transform: scale(1.001)
opacity: .14
8%
transform: scale(1.000)
opacity: .13
15%
transform: scale(1.004)
opacity: .14
30%
transform: scale(1.002)
opacity: .11
100%
transform: scale(1.000)
opacity: .14
@keyframes flicker
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100%
opacity: .99
text-shadow: -1px -1px 0 $-outline, 1px -1px 0 $-outline, -1px 1px 0 $-outline, 1px 1px 0 $-outline, 0 -2px 8px, 0 0 2px, 0 0 5px #ff7e00, 0 0 15px #ff4444, 0 0 2px #ff7e00, 0 2px 3px #000
20%, 21.999%, 63%, 63.999%, 65%, 69.999%
opacity: 0.4
text-shadow: none
@keyframes glitch
2%, 64%
transform: translate(2px,0) skew(0deg)
4%, 60%
transform: translate(-2px,0) skew(0deg)
62%
transform: translate(0,0) skew(5deg)
@keyframes glitch-top
2%, 64%
transform: translate(2px,-2px)
4%, 60%
transform: translate(-2px,2px)
62%
transform: translate(13px,-1px) skew(-13deg)
@keyframes glitch-bottom
2%, 64%
transform: translate(-2px,0)
4%, 60%
transform: translate(-2px,0)
62%
transform: translate(-22px,5px) skew(21deg)
@keyframes typing
to
width: 100%
@keyframes blinking
from, to
border-color: transparent
50%
border-color: orange
.motto
text-align: left
padding-top: $large-spacer
@media only screen and (max-width:1200px)
.banner-terminal
height: $-term-height-mid
.banner-scanline
--scanline-area: #{$-term-height-mid}
.banner-prompt
font-size: 3em
.banner-msg-line
font-size: 2em
@media only screen and (max-width:1000px)
html, body
overflow-x: hidden
body
-webkit-text-size-adjust: none
@media only screen and (max-width:800px)
.banner-terminal
height: $-term-height-mobile
.banner-scanline
--scanline-area: #{$-term-height-mobile}
.banner-prompt
font-size: 2em
.banner-msg-line
font-size: 1.5em
padding-left: 3em

@ -0,0 +1,87 @@
@import "variables"
#mobile-navbar
display: none
overflow: hidden
color: white !important
font-weight: bold
#mobile-subnav
background-color: #0a1922
#mobile-subnav
display: none
#menu
padding: 5px 0
color: white
padding-right: 5px
padding-left: 5px
font-size: 1.1rem !important
#navbar
display: block
.nav
background-color: #0a1922
padding: 5px 0
border-top: 4px solid $teal
.nav-spacer
margin-bottom: $small-spacer
.df-community-link:before
content: ""
background-image: url(/heart.svg) !important
background-size: 12px 16px
width: 12px
height: 16px
margin-left: 5px
margin-right: 5px
vertical-align: middle
display: inline-block
#menu .navbar-item, .nav .navbar-item, .nav .navbar-item:visited
color: white
padding-right: 5px
padding-left: 5px
@media only screen and (max-width:340px)
#mobile-navbar
font-size: 1.1rem !important
#hamburger
padding-left: 0.5rem !important
@media only screen and (max-width: 1000px)
#menu .navbar-item
display: block
#mobile-subnav
display: block
#mobile-toggle + #menu
display: none
#mobile-toggle:checked + #menu
display: block
#mobile-navbar, #menu
display: block
font-size: 1.2rem
line-height: 2.2rem
#mobile-navbar
margin-top: 0.4rem
#navbar
display: none
#mobile-toggle
display: none
#hamburger
float: right;
padding:
left: 1.5rem;
right: 0.5rem;
line-height: 0;

@ -0,0 +1,41 @@
@import "variables"
.notfound-page
position: relative
display: flex
flex-wrap: wrap
width: $page-width
margin: 0 auto
gap: $large-spacer
.notfound-content
position: relative
padding-top: $large-spacer
max-width: $card-width
.notes
padding-top: $spacer
.notfound-404-chan
position: relative
width: $card-width
height: $card-height
background:
image: url("/404-chan_sm.png")
position: bottom right $huge-spacer
repeat: no-repeat
size: 144px 256px
#particles-bg
position: absolute
width: 100%
height: 100%
top: 0
left: 0
z-index: $foremost
@media (max-width: 800px)
.notfound-content
text-align: center
.notfound-page
flex-direction: column

@ -0,0 +1,192 @@
@import "variables"
// Some convenience class to manage resolution specific elements
@media only screen and (max-width:600px)
.on-pc-screen
display: none !important
@media only screen and (min-width:600px)
.on-mobile-screen
display: none !important
@media only screen and (max-width:1200px)
.on-largest-screen
display: none !important
@media only screen and (min-width:1200px)
.up-to-largest-screen
display: none !important
@media only screen and (max-width:1000px)
.on-large-screen
display: none !important
@media only screen and (min-width:1000px)
.up-to-large-screen
display: none !important
@media only screen and (max-width:800px)
.on-small-screen
display: none !important
@media only screen and (min-width:800px)
.up-to-small-screen
display: none !important
*
box-sizing: border-box
z-index: $foreground
html, body
width: 100%
height: 100%
min-width: $min-page-width
h1.page-title
text-align: left
font-size: $large-font-size
color: var(--title-text-color)
h1.page-title:first-letter
text-transform: capitalize
body
margin: 0
font-family: var(--body-font)
font-size: $body-font-size
line-height: $body-line-height
color: var(--foreground-color)
background-color: var(--background-color)
-webkit-text-size-adjust: 100%
-ms-text-size-adjust: 100%
a
color: var(--link-color)
// `:focus` is linked to `:hover` for basic accessibility
&:hover, &:focus
color: var(--link-hover-color)
strong
color: inherit
a:not(:hover)
text-decoration: none
.container
margin: 0 auto
position: relative
max-width: $page-width
padding: 0 0.2em
.external-link-light:after
background-image: url(/external-link-dark.svg) !important
.external-link:after
content: ""
background-image: url(/external-link-light.svg)
background-size: 10px 10px
display: inline-block
width: 10px
height: 10px
margin-left: 5px
img
display: block
max-width: 100%
margin-bottom: $spacer
border-radius: $border-radius
table
margin-bottom: $spacer
width: 100%
border: 0 solid var(--border-color)
border-collapse: collapse
td, th
padding: .25rem .5rem
border:
color: inherit
style: solid
width: 0
bottom-width: 1px
th
text-align: left
thead th
border-bottom-color: currentColor
.header
display: flex
align-items: flex-end
.header-text
font-size: $large-font-size
color: var(--title-text-color)
font-weight: bold
display: inline-block
padding: 1em 0.5em 1em 0.5em
.header-image
background:
image: url(/doublefourteen-logo-dark.svg)
repeat: no-repeat
width: 330px
height: 180px
display: inline-block
margin: 0 0.5em 0 0.5em
.work-in-progress-content
display: flex
justify-content: space-between
.work-in-progress-text
position: relative
.work-in-progress-sign
width: 400px
height: 386px
background:
image: url(/work-in-progress.png)
position: bottom right
repeat: no-repeat
size: 400px 386px
.button, .button:hover
background-color: transparent
border: 2px solid #737475
color: #333
padding: 7px 12px
display: block
margin: 10px 0
font-size: $body-font-size
font-weight: 700
text-decoration: none !important
.button a
display: inline
text-decoration: none !important
color: #666
.button:hover
background-color: #7f7f7f
.footer
text-align: center
padding-top: $large-spacer
@media (prefers-color-scheme:dark)
.external-link:after
background-image: url(/external-link-dark.svg)
.header-image
background-image: url(/doublefourteen-logo-light.svg)
// FIXME
.button, .button:hover
color: inherit
.button a
color: #ccc
.button:hover
background-color: #383838
@media only screen and (max-width:800px)
.work-in-progress-content
flex-direction: column
.work-in-progress-text
text-align: center

@ -0,0 +1,118 @@
// Standard page width
$page-width: 1000px
// Minimum supported page width (forced on html, body)
$min-page-width: 500px
// Small card objects, wrap text or small images on lists
$card-width: 400px
$card-height: 500px
// Consistent spacing for elements
$smallest-spacer: 10px
$small-spacer: 30px
$spacer: 1rem
$large-spacer: $spacer * 1.5
$huge-spacer: $spacer * 3
// Fonts
$body-line-height: 1.5
$huge-font-size: 3em
$large-font-size: 2em
$bigger-font-size: 1em
$body-font-size: 20px
// Consistent border radius
$border-radius: 0.25rem
// Z indexes for consistent ordering across site
$foremost: 100
$above: 30
$front: 20
$foreground: 1
$background: 0
$back: -1
$far: -20
$farthest: -100
// Color palette
$gray-000: #f8f9fa
$gray-100: #f1f3f5
$gray-200: #e9ecef
$gray-300: #dee2e6
$gray-400: #ced4da
$gray-500: #adb5bd
$gray-600: #868e96
$gray-700: #495057
$gray-800: #343a40
$gray-900: #212529
$red: #fa5252
$pink: #e64980
$grape: #be4bdb
$purple: #7950f2
$indigo: #4c6ef5
$blue: #228be6
$cyan: #15aabf
$teal: #12b886
$green: #40c057
$yellow: #fab005
$orange: #fd7e14
$gray: #454545
$blue-300: #74c0fc
$blue-400: #4dabf7
$yellow-100: #fff3bf
// Color Theme
$background-color: #efefef
$background-color-dark: #292929
$alt-background-color: #dfdfdf
$alt-background-color-dark: #0a1922
$foreground-color: $gray-700
$foreground-color-dark: $gray-300
$surface-color: $cyan
$surface-color-dark: $cyan
$accent-color: $cyan
$accent-color-dark: $cyan
$text-color: #fff
$text-color-dark: #000
$title-text-color: #444
$title-text-color-dark: #ddd
\:root
--background-color: #{$background-color}
--alt-background-color: #{$alt-background-color}
--foreground-color: #{$foreground-color}
--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"
--text-color: #{$text-color}
--title-text-color: #{$title-text-color}
--link-color: #{$blue}
--link-hover-color: #1c7ed6
--heading-color: #{$gray-900}
--border-color: #{$gray-300}
// --code-font: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace
@media (prefers-color-scheme:dark)
\:root
--background-color: #{$background-color-dark}
--alt-background-color: #{$alt-background-color-dark}
--foreground-color: #{$foreground-color-dark}
--text-color: #{$text-color-dark}
--title-text-color: #{$title-text-color-dark}
--heading-color: #fff
--link-color: #{$blue-300}
--link-hover-color: #{$blue-400}
--border-color: rgba(255, 255, 255, 0.15)

@ -0,0 +1,8 @@
[back-to-home]
other = "← Back to <b>Home</b> page"
[back-to-parent]
other = "← Back to <b>{{ . }}</b> section"
[menu-source]
other = "Sources"

@ -0,0 +1,8 @@
[back-to-parent]
other = "← Torna alla sezione <b>{{ . }}</b>"
[back-to-home]
other = "← Torna alla <b>Home</b>"
[menu-source]
other = "Sorgenti"

@ -0,0 +1,37 @@
{{ define "title" }}
{{ .Title }} ⏎
{{ end }}
{{ define "links" }}
{{ $sassOptions := ( dict "outputStyle" "compressed" ) }}
{{ $jsOptions := ( dict "target" "es2018" "minify" true ) }}
{{ $notfoundCss := resources.Get "sass/notfound.sass" | toCSS $sassOptions | fingerprint }}
<link type="text/css" rel="stylesheet" href="{{ $notfoundCss.Permalink }}">
{{ $particlesJs := resources.Get "js/lib/particles.js" | js.Build $jsOptions | fingerprint }}
<script src="{{ $particlesJs.Permalink }}" type="text/javascript"></script>
{{ end }}
{{ define "main" }}
{{ $jsOptions := ( dict "target" "es2018" "minify" true ) }}
{{ $rainJs := resources.Get "js/rain.js" | js.Build $jsOptions | fingerprint }}
<h1 class="container page-title">404 &ndash; Page not found</h1>
<div class="notfound-page">
<div class="notfound-content">
<p class="lead">
Sorry, we've tried very hard but we couldn't find what you were looking for.<br>
Honest, if you don't believe us just look how sad our HTTP server is.
</p>
<p class="notes">
While we try to soothe our poor server,<br>
you can <a href="{{ "/" | relURL }}">head back home</a> and try again.
</p>
</div>
<div class="notfound-404-chan">
<div id="particles-bg"></div>
</div>
<script src="{{ $rainJs.Permalink }}" type="text/javascript" defer></script>
</div>
{{ end }}

@ -0,0 +1 @@
<a href="{{ .Destination | safeURL }}" {{ with .Title}} title="{{ . }}"{{ end }} {{ $url := urls.Parse (absURL .Destination) }} {{ $website := urls.Parse (absURL "") }} {{ if ne $url.Host $website.Host }} class="external-link" target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>

@ -0,0 +1,38 @@
{{$lang := .Lang}}
{{ if isset .Params "lang" }}
{{ $lang = .Params.lang }}
{{end}}
<!DOCTYPE html>
<html lang="{{$lang}}">
<head>
<meta charset="utf-8">
<title>
{{ block "title" . }} ⏎
{{ end }}
{{ .Site.Title }}
</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="color-scheme" content="light dark">
{{ $sassOptions := ( dict "outputStyle" "compressed" ) }}
{{ $styleCss := resources.Get "sass/style.sass" | toCSS $sassOptions | fingerprint }}
<link type="text/css" rel="stylesheet" href="{{ $styleCss.Permalink }}">
{{ $navigationCss := resources.Get "sass/navigation.sass" | toCSS $sassOptions | fingerprint }}
<link type="text/css" rel="stylesheet" href="{{ $navigationCss.Permalink }}">
{{ block "links" . }}
{{ end }}
</head>
<body>
<div class="container header">
<a href="{{ "" | relLangURL }}"><span class="header-image"></span></a>
<div class="header-text on-large-screen">The DoubleFourteen Code Forge</div>
<div class="header-text up-to-large-screen">Code Forge</div>
</div>
{{- partial "navigation.html" . -}}
<div id="content" role="main">
{{- block "main" . }}{{- end }}
</div>
{{- partial "footer.html" . -}}
</body>
</html>

@ -0,0 +1,20 @@
{{ define "title" }}
{{ .Title }} ⏎
{{ end }}
{{ define "main" }}
{{- partial "parent-link" . -}}
<div class="container">
<h1 class="page-title">{{ .Section }}</h1>
{{ if gt (len .Pages) 0 }}
<ul>
{{ range .Pages | }}
<li>
<a href="{{.Permalink}}">{{ dateFormat "2006-01-02" .Date.Local }} - {{ .Title }}</a>
</li>
{{ end }}
</ul>
{{ else }}
{{- partial "work-in-progress" . -}}
{{ end }}
</div>
{{ end }}

@ -0,0 +1,23 @@
{{ define "title" }}
{{ .Title }} ⏎
{{ end }}
{{ define "main" }}
{{ $enSite := index .Sites 0 }}
{{ $posts := where $enSite.RegularPages "Section" .Section }}
{{- partial "parent-link" . -}}
<div class="container">
<h1 class="page-title">{{ .Section }}</h1>
{{ if gt (len .Pages) 0}}
<p>This page is also available as an <a href="index.xml">RSS feed</a>.</p>
<ul>
{{ range $posts }}
<li>
<a href="{{.Permalink}}">{{ dateFormat "2006-01-02" .Date.Local }} - {{ .Title }}</a>
</li>
{{ end }}
{{ else }}
{{- partial "work-in-progress" . -}}
{{ end }}
</ul>
</div>
{{ end }}

@ -0,0 +1,13 @@
{{ define "title" }}
{{ .Title }} ⏎
{{ end }}
{{ define "main" }}
{{- partial "parent-link" . -}}
<div class="container">
{{ if .Params.toc }}
<h1>{{ .Title }}</h1>
{{ .TableOfContents }}
{{ end }}
{{ .Content }}
</div>
{{ end }}

@ -0,0 +1,39 @@
{{ define "title" }}
{{ .Title }} ⏎
{{ end }}
{{ define "links" }}
{{ $sassOptions := ( dict "outputStyle" "compressed" ) }}
{{ $jsOptions := ( dict "target" "es2018" "minify" true ) }}
{{ $home := resources.Get "sass/home.sass" | toCSS $sassOptions | fingerprint }}
<link type="text/css" rel="stylesheet" href="{{ $home.Permalink }}">
{{ $transmissionJs := resources.Get "js/transmission.js" | js.Build $jsOptions | fingerprint }}
<script src="{{ $transmissionJs.Permalink }}" type="text/javascript" defer></script>
{{ end }}
{{ define "main" }}
<div id="banner-terminal" class="banner-terminal">
<div id="banner-scanline" class="banner-scanline"></div>
<div id="banner-burnin" class="banner-burnin"></div>
<div id="banner-textarea" class="banner-textarea">
<div class="banner-prompt">
<span class="flicker" letter="&gt;&lsqb;">&gt;&lsqb;</span><span class="glitch" text="C">C</span><span class="flicker" letter="&#9211;">&#9211;</span><span class="glitch" text="llEct">llEct</span><span class="flicker" letter="Iv">Iv</span><span class="glitch" text="E">E</span><span class="flicker" letter="&rsqb;:">&rsqb;:</span>
</div>
<div id="banner-msg" class="banner-msg">
<div id="banner-msg-animate" data-msg='[{"delay": 1000, "text": "Coding··· "},
{"delay": 5000, "text": " $ Knowledge. ▆"}]'>
</div>
</div>
</div>
</div>
{{ .Content }}
<div class="container parent-link" style="display:flex; flex-direction: row; justify-content: space-around; margin-top: 2em;">
</div>
<div class="container motto">
<small><em>For the glory of mankind.<em></small>
</div>
{{ end }}

@ -0,0 +1,2 @@
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="alternate icon" href="/favicon.ico">

@ -0,0 +1,12 @@
<footer class="container footer">
<small>
&copy;
<time datetime="{{ now.UTC.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
{{ now.UTC.Format "2006" }}</time> The DoubleFourteen Code Forge. All Rights Reserved.<br>
<em>
Code samples are MIT licensed, logos belong to their respective owners, everything else is
<a href="https://creativecommons.org/licenses/by-sa/4.0/" class="external-link">
CC BY-SA</a>.
<em>
</small>
</footer>

@ -0,0 +1,49 @@
<nav id="mobile-navbar" class="nav container">
<span style="overflow:hidden; max-width: 80%; display: inline-block; vertical-align:bottom;">
{{ .Params.mobile_menu_title }}
</span>
<label for="mobile-toggle" id="hamburger">
<svg style="width:2em;height:2em;" viewBox="0 0 24 24">
<path fill="currentColor" d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z" />
</svg>
</label>
</nav>
<div id="mobile-subnav">
<input type="checkbox" name="mobile-toggle" id="mobile-toggle">
<div class="" id="menu">
{{ with .Site.GetPage "articles" }}
<a href="{{ "articles/" | relLangURL }}" class="navbar-item">{{ .Params.mobile_menu_title }}</a>
{{ end }}
{{ with .Site.GetPage "blog" }}
<a href="{{ "blog/" | relLangURL }}" class="navbar-item">{{ .Params.mobile_menu_title }}</a>
{{ end }}
<a href="https://git.doublefourteen.io/explore/repos" class="navbar-item external-link external-link-light">{{ i18n "menu-source" }}</a>
{{ with .Site.GetPage "doublefourteen"}}
<a href="{{ "doublefourteen/" | relLangURL }}" class="navbar-item df-community-link">
{{ .Params.mobile_menu_title }}
</a>
{{ end }}
</div>
</div>
<nav id="navbar" class="nav">
<div class="container" style="display:flex; justify-content: space-between;">
<div>
{{ with .Site.GetPage "articles" }}
<a href="{{ "articles/" | relLangURL }}" class="navbar-item">{{ .Params.menu_title }}</a>
{{ end }}
{{ with .Site.GetPage "blog" }}
<a href="{{ "blog/" | relLangURL }}" class="navbar-item">{{ .Params.menu_title }}</a>
{{ end }}
<a href="https://git.doublefourteen.io/explore/repos" class="navbar-item external-link external-link-light">{{ i18n "menu-source" }}</a>
{{ with .Site.GetPage "doublefourteen" }}
<a href="{{ "doublefourteen/" | relLangURL }}" class="navbar-item df-community-link">
{{ .Params.menu_title }}
</a>
{{ end }}
</div>
</div>
</nav>
<div class="nav-spacer"></div>

@ -0,0 +1,12 @@
<div class="container parent-link" style="display:flex; flex-direction: row; justify-content: space-between;">
<a href="{{.Parent.Permalink}}" class="parent-link">
{{ if eq .CurrentSection .Site.Home}}
{{ i18n "back-to-home" | safeHTML }}
{{ else }} {{ if eq .CurrentSection.Page .Page }}
{{ i18n "back-to-home" | safeHTML }}
{{ else }}
{{ i18n "back-to-parent" .CurrentSection.Title | safeHTML }}
{{ end }}
{{ end }}
</a>
</div>

@ -0,0 +1,10 @@
<div class="container work-in-progress-content">
<div class="work-in-progress-text">
<p>
Sorry,
there is nothing to show in this category, <b>yet</b>...
</p>
</div>
<div class="work-in-progress-sign" title="Miku doesn't like to wait for new content."></img>
</div>
</div>

@ -0,0 +1,3 @@
<div class="box">
{{ .Inner }}
</div>

@ -0,0 +1,17 @@
{{ $version := index $.Site.Params.downloads_release_order 1 }}
{{ $lang := default "en" (.Get "lang") }}
<div class="slogan alt-background">
<div class="container slogan-message">
<div style="max-width: 790px; margin: 10px 0;padding: 0 5px;">
{{ .Inner | markdownify }}
</div>
<div class="cta-buttons">
<a href="{{ ref . (dict "path" "learn/getting-started.md" "lang" $lang) }}" class="button main" style="margin-bottom: 5px;">{{ .Get "get_started" }}</a>
<span class="slogan-separator" style= "font-size: 0.5em;"> {{ i18n "slogan-latest-release" $version | safeHTML }} </span>
<div style="display:flex; flex-direction: row; margin-top: 5px;">
<a href="https://ziglang.org/documentation/{{ $version }}/" class="button" style="flex-grow: 1; margin-top: 0px;">{{ .Get "docs" }}</a>
<a href="https://ziglang.org/download/{{ $version }}/release-notes.html" class="button" style="margin-left:5px; margin-top: 0px;">{{ .Get "notes" }}</a>
</div>
</div>
</div>
</div>

@ -0,0 +1,19 @@
<style type="text/css">
.logos img {
margin: 20px;
object-fit: contain;
}
.logos.monetary img {
max-width: 320px;
max-height: 320px;
}
.logos.services img {
max-width: 170px;
max-height: 170px;
}
</style>
<div class="logos {{.Get 0}}">
{{ .Inner }}
</div>

@ -0,0 +1,6 @@
<div style="display:flex; flex-direction: row; flex-wrap: wrap; align-items: center;">
<h1>{{.Get 0}} </h1>
<a href="https://github.com/sponsors/ziglang" target="_blank" style="margin-left: 35px; margin-bottom:0px; transform: scale(1.3);">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="133" height="20" role="img" aria-label="Sponsor on GitHub: "><title>Sponsor on GitHub</title><style>a:hover #llink{fill:url(#b);stroke:#ccc}a:hover #rlink{fill:#4183c4}</style><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fcfcfc" stop-opacity="0"></stop><stop offset="1" stop-opacity=".1"></stop></linearGradient><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#ccc" stop-opacity=".1"></stop><stop offset="1" stop-opacity=".1"></stop></linearGradient><g stroke="#d5d5d5"><rect stroke="none" fill="#fcfcfc" x="0.5" y="0.5" width="132" height="19" rx="2"></rect></g><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMTgxNzE3IiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+R2l0SHViIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0xMiAuMjk3Yy02LjYzIDAtMTIgNS4zNzMtMTIgMTIgMCA1LjMwMyAzLjQzOCA5LjggOC4yMDUgMTEuMzg1LjYuMTEzLjgyLS4yNTguODItLjU3NyAwLS4yODUtLjAxLTEuMDQtLjAxNS0yLjA0LTMuMzM4LjcyNC00LjA0Mi0xLjYxLTQuMDQyLTEuNjFDNC40MjIgMTguMDcgMy42MzMgMTcuNyAzLjYzMyAxNy43Yy0xLjA4Ny0uNzQ0LjA4NC0uNzI5LjA4NC0uNzI5IDEuMjA1LjA4NCAxLjgzOCAxLjIzNiAxLjgzOCAxLjIzNiAxLjA3IDEuODM1IDIuODA5IDEuMzA1IDMuNDk1Ljk5OC4xMDgtLjc3Ni40MTctMS4zMDUuNzYtMS42MDUtMi42NjUtLjMtNS40NjYtMS4zMzItNS40NjYtNS45MyAwLTEuMzEuNDY1LTIuMzggMS4yMzUtMy4yMi0uMTM1LS4zMDMtLjU0LTEuNTIzLjEwNS0zLjE3NiAwIDAgMS4wMDUtLjMyMiAzLjMgMS4yMy45Ni0uMjY3IDEuOTgtLjM5OSAzLS40MDUgMS4wMi4wMDYgMi4wNC4xMzggMyAuNDA1IDIuMjgtMS41NTIgMy4yODUtMS4yMyAzLjI4NS0xLjIzLjY0NSAxLjY1My4yNCAyLjg3My4xMiAzLjE3Ni43NjUuODQgMS4yMyAxLjkxIDEuMjMgMy4yMiAwIDQuNjEtMi44MDUgNS42MjUtNS40NzUgNS45Mi40Mi4zNi44MSAxLjA5Ni44MSAyLjIyIDAgMS42MDYtLjAxNSAyLjg5Ni0uMDE1IDMuMjg2IDAgLjMxNS4yMS42OS44MjUuNTdDMjAuNTY1IDIyLjA5MiAyNCAxNy41OTIgMjQgMTIuMjk3YzAtNi42MjctNS4zNzMtMTItMTItMTIiLz48L3N2Zz4="></image><g aria-hidden="true" fill="#333" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif" text-rendering="geometricPrecision" font-weight="700" font-size="110px" line-height="14px"><rect id="llink" stroke="#d5d5d5" fill="url(#a)" x=".5" y=".5" width="132" height="19" rx="2"></rect><text aria-hidden="true" x="745" y="150" fill="#fff" transform="scale(.1)" textLength="1050">Sponsor on GitHub</text><text x="745" y="140" transform="scale(.1)" textLength="1050">Sponsor on GitHub</text></g></svg>
</a>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 329.9996 180"
preserveAspectRatio="xMinYMin meet"
version="1.1"
id="svg5"
sodipodi:docname="doublefourteen-logo-dark.svg"
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#c1c1c1"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="2.0367199"
inkscape:cx="258.74937"
inkscape:cy="157.36086"
inkscape:window-width="1050"
inkscape:window-height="1001"
inkscape:window-x="870"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="layer1"
showguides="false">
<inkscape:grid
type="xygrid"
id="grid2554"
originx="-10"
originy="-49.999993" />
</sodipodi:namedview>
<defs
id="defs2">
<inkscape:path-effect
effect="fill_between_many"
method="originald"
linkedpaths="#rect31,0,1|#g1476,0,1|#g831,0,1|#path2606,0,1|#g2614,0,1"
id="path-effect2893"
is_visible="true"
lpeversion="0"
join="true"
close="true"
autoreverse="true"
applied="false" />
</defs>
<g
inkscape:label="Livello 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-10,-49.999999)">
<path
inkscape:original-d="M 0,0"
inkscape:path-effect="#path-effect2893"
d="M 0,0"
id="path2895" />
<g
id="g30">
<path
id="rect31"
style="fill:#1c2224;fill-opacity:1;stroke-width:0.246992;paint-order:fill markers stroke"
d="M 10,110 35,80 V 200 H 10 Z"
sodipodi:nodetypes="ccccc" />
<g
id="g1476"
style="fill:#1c2224;fill-opacity:1"
transform="translate(10.000221)">
<g
id="g1480"
style="fill:#1c2224;fill-opacity:1">
<g
id="g2792"
style="fill:#1c2224;fill-opacity:1">
<path
id="rect911"
style="fill:#1c2224;fill-opacity:1;stroke-width:0.264999;paint-order:fill markers stroke"
d="M 79.999779,80 H 110 L 59.999779,200 h -30 z"
sodipodi:nodetypes="ccccc" />
<path
id="rect1354"
style="fill:#1c2224;fill-opacity:1;stroke-width:0.264999;paint-order:fill markers stroke"
d="M 84.999779,190 H 110 v 40 H 84.999779 Z"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g>
</g>
<g
id="g38">
<path
id="path4756"
style="fill:#1c2224;fill-opacity:1;stroke-width:0.246992;paint-order:fill markers stroke"
d="M 150,110 175.00001,80 V 200 H 150 Z"
sodipodi:nodetypes="ccccc" />
<g
id="g4766"
style="fill:#1c2224;fill-opacity:1"
transform="translate(150.00023)">
<g
id="g4764"
style="fill:#1c2224;fill-opacity:1">
<g
id="g4762"
style="fill:#1c2224;fill-opacity:1">
<path
id="path4758"
style="fill:#1c2224;fill-opacity:1;stroke-width:0.264999;paint-order:fill markers stroke"
d="M 79.99977,80 H 110 L 59.99977,200 H 29.999779 Z"
sodipodi:nodetypes="ccccc" />
<path
id="path4760"
style="fill:#1c2224;fill-opacity:1;stroke-width:0.264999;paint-order:fill markers stroke"
d="M 84.999779,190 H 110 v 40 H 84.999779 Z"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g>
</g>
<g
id="g831"
transform="matrix(0.97539005,0,0,0.97539005,88.743554,-24.606556)"
style="fill:#535d6c;fill-opacity:1">
<path
id="path4548"
style="fill:#535d6c;fill-opacity:1;stroke-width:0.476198;paint-order:fill markers stroke"
d="m 226.54388,76.488944 c -8.49961,0.0046 -16.62581,3.460019 -22.48344,9.560509 l 0.0863,19.039167 h 12.74917 c 1.08192,-4.60106 5.23423,-8.125154 10.02525,-8.137771 5.69898,-1.85e-4 10.31883,4.553711 10.31918,10.171841 -7e-5,5.61831 -4.62029,10.17277 -10.31945,10.17258 -4.09567,-0.007 -8.38623,-1.72488 -10.02498,-5.42518 -3.93798,0.0365 -15.96437,0 -21.70072,0 2.73019,14.5445 16.41344,26.10115 31.34874,26.13271 17.14925,-1.3e-4 31.05142,-13.77054 31.05154,-30.75725 -4.8e-4,-16.986451 -13.90255,-30.756474 -31.05154,-30.7566 z"
sodipodi:nodetypes="sccccccccccss" />
</g>
<path
id="rect9243"
style="fill:#6f7c91;fill-opacity:1;stroke-width:0.265045;paint-order:fill markers stroke"
d="m 313.41205,120 25.00005,2.5e-4 L 313.41205,150 Z"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 329.9996 180"
preserveAspectRatio="xMinYMin meet"
version="1.1"
id="svg5"
sodipodi:docname="doublefourteen-logo-light.svg"
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#c1c1c1"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="2.0367199"
inkscape:cx="77.821207"
inkscape:cy="157.36086"
inkscape:window-width="1089"
inkscape:window-height="1001"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="layer1"
showguides="false">
<inkscape:grid
type="xygrid"
id="grid2554"
originx="-10"
originy="-49.999993" />
</sodipodi:namedview>
<defs
id="defs2">
<inkscape:path-effect
effect="fill_between_many"
method="originald"
linkedpaths="#rect31,0,1|#g1476,0,1|#g831,0,1|#path2606,0,1|#g2614,0,1"
id="path-effect2893"
is_visible="true"
lpeversion="0"
join="true"
close="true"
autoreverse="true"
applied="false" />
</defs>
<g
inkscape:label="Livello 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-10,-49.999999)">
<path
inkscape:original-d="M 0,0"
inkscape:path-effect="#path-effect2893"
d="M 0,0"
id="path2895" />
<g
id="g30"
style="fill:#d4f5ff;fill-opacity:1;image-rendering:crisp-edges">
<path
id="rect31"
style="fill:#d4f5ff;fill-opacity:1;stroke-width:0.246992;paint-order:fill markers stroke"
d="M 10,110 35,80 V 200 H 10 Z"
sodipodi:nodetypes="ccccc" />
<g
id="g1476"
style="fill:#d4f5ff;fill-opacity:1"
transform="translate(10.000221)">
<g
id="g1480"
style="fill:#d4f5ff;fill-opacity:1">
<g
id="g2792"
style="fill:#d4f5ff;fill-opacity:1">
<path
id="rect911"
style="fill:#d4f5ff;fill-opacity:1;stroke-width:0.264999;paint-order:fill markers stroke"
d="M 79.999779,80 H 110 L 59.999779,200 h -30 z"
sodipodi:nodetypes="ccccc" />
<path
id="rect1354"
style="fill:#d4f5ff;fill-opacity:1;stroke-width:0.264999;paint-order:fill markers stroke"
d="M 84.999779,190 H 110 v 40 H 84.999779 Z"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g>
</g>
<g
id="g38"
style="fill:#d4f5ff;fill-opacity:1">
<path
id="path4756"
style="fill:#d4f5ff;fill-opacity:1;stroke-width:0.246992;paint-order:fill markers stroke"
d="M 150,110 175.00001,80 V 200 H 150 Z"
sodipodi:nodetypes="ccccc" />
<g
id="g4766"
style="fill:#d4f5ff;fill-opacity:1"
transform="translate(150.00023)">
<g
id="g4764"
style="fill:#d4f5ff;fill-opacity:1">
<g
id="g4762"
style="fill:#d4f5ff;fill-opacity:1">
<path
id="path4758"
style="fill:#d4f5ff;fill-opacity:1;stroke-width:0.264999;paint-order:fill markers stroke"
d="M 79.99977,80 H 110 L 59.99977,200 H 29.999779 Z"
sodipodi:nodetypes="ccccc" />
<path
id="path4760"
style="fill:#d4f5ff;fill-opacity:1;stroke-width:0.264999;paint-order:fill markers stroke"
d="M 84.999779,190 H 110 v 40 H 84.999779 Z"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g>
</g>
<g
id="g831"
transform="matrix(0.97539005,0,0,0.97539005,88.743554,-24.606556)"
style="fill:#87decd;fill-opacity:1">
<path
id="path4548"
style="fill:#87decd;fill-opacity:1;stroke-width:0.476198;paint-order:fill markers stroke"
d="m 226.54388,76.488944 c -8.49961,0.0046 -16.62581,3.460019 -22.48344,9.560509 l 0.0863,19.039167 h 12.74917 c 1.08192,-4.60106 5.23423,-8.125154 10.02525,-8.137771 5.69898,-1.85e-4 10.31883,4.553711 10.31918,10.171841 -7e-5,5.61831 -4.62029,10.17277 -10.31945,10.17258 -4.09567,-0.007 -8.38623,-1.72488 -10.02498,-5.42518 -3.93798,0.0365 -15.96437,0 -21.70072,0 2.73019,14.5445 16.41344,26.10115 31.34874,26.13271 17.14925,-1.3e-4 31.05142,-13.77054 31.05154,-30.75725 -4.8e-4,-16.986451 -13.90255,-30.756474 -31.05154,-30.7566 z"
sodipodi:nodetypes="sccccccccccss" />
</g>
<path
id="rect9243"
style="fill:#afe9dd;fill-opacity:1;stroke-width:0.265045;paint-order:fill markers stroke"
d="m 313.41205,120 25.00005,2.5e-4 L 313.41205,150 Z"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g id="XMLID_2_">
<path id="XMLID_6_" style="fill:#ccc" d="M426.4,266.2V107.1c0-5.6-1.9-11.2-6.5-14.9c-4.7-4.7-9.3-6.5-14.9-6.5H245.8
c-9.3,0-15.8,4.7-19.5,13c-3.7,9.3-1.9,16.8,4.7,23.3l48.4,48.4L100.5,347.2c-4.7,4.7-6.5,9.3-6.5,14.9c0,5.6,1.9,11.2,6.5,14.9
l34.4,34.4c4.7,4.7,9.3,6.5,14.9,6.5c5.6,0,11.2-1.9,14.9-6.5l177.8-177.8l48.4,48.4c3.7,4.7,9.3,6.5,14.9,6.5
c2.8,0,5.6-0.9,8.4-1.9C422.6,283,426.4,275.5,426.4,266.2z M512,95.9v320.2c0,26.1-9.3,49.3-27.9,68c-18.6,18.6-41,27.9-68,27.9
H95.9c-26.1,0-49.3-9.3-68-27.9C9.3,465.5,0,443.1,0,416.1V95.9c0-26.1,9.3-49.3,27.9-68S68.9,0,95.9,0h320.2
c26.1,0,49.3,9.3,68,27.9C502.7,46.5,512,69.8,512,95.9z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g id="XMLID_2_">
<path id="XMLID_6_" style="fill:#555" d="M426.4,266.2V107.1c0-5.6-1.9-11.2-6.5-14.9c-4.7-4.7-9.3-6.5-14.9-6.5H245.8
c-9.3,0-15.8,4.7-19.5,13c-3.7,9.3-1.9,16.8,4.7,23.3l48.4,48.4L100.5,347.2c-4.7,4.7-6.5,9.3-6.5,14.9c0,5.6,1.9,11.2,6.5,14.9
l34.4,34.4c4.7,4.7,9.3,6.5,14.9,6.5c5.6,0,11.2-1.9,14.9-6.5l177.8-177.8l48.4,48.4c3.7,4.7,9.3,6.5,14.9,6.5
c2.8,0,5.6-0.9,8.4-1.9C422.6,283,426.4,275.5,426.4,266.2z M512,95.9v320.2c0,26.1-9.3,49.3-27.9,68c-18.6,18.6-41,27.9-68,27.9
H95.9c-26.1,0-49.3-9.3-68-27.9C9.3,465.5,0,443.1,0,416.1V95.9c0-26.1,9.3-49.3,27.9-68S68.9,0,95.9,0h320.2
c26.1,0,49.3,9.3,68,27.9C502.7,46.5,512,69.8,512,95.9z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="127.99994mm"
height="127.99994mm"
viewBox="0 0 127.99994 127.99994"
version="1.1"
id="svg8"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="favicon.svg">
<defs
id="defs2">
<rect
x="9.005331"
y="9.1077509"
width="41.574905"
height="31.786575"
id="rect50" />
<rect
x="9.005331"
y="9.1077509"
width="41.574905"
height="31.786575"
id="rect50-3" />
<rect
x="9.005331"
y="9.1077509"
width="41.574905"
height="31.786575"
id="rect881" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.63777852"
inkscape:cx="-199.25441"
inkscape:cy="278.8347"
inkscape:document-units="mm"
inkscape:current-layer="layer3"
inkscape:document-rotation="0"
showgrid="false"
inkscape:object-nodes="true"
inkscape:window-width="1920"
inkscape:window-height="1013"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-text-baseline="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Sfondo"
style="display:inline">
<path
style="fill:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
d="M 41.072968,463.95393 C 32.173393,461.17119 23.658185,453.60304 18.84129,444.19483 l -2.844526,-5.55584 V 239.63894 40.638886 l 2.750075,-5.594452 c 5.566773,-11.324432 16.690323,-19.405201 29.202069,-21.214013 9.349383,-1.351633 379.372032,-1.252085 387.732272,0.104312 16.18683,2.626214 28.44754,14.588494 31.41711,30.652419 0.60729,3.285055 0.87171,77.898948 0.70445,198.769508 l -0.26779,193.51025 -4.04061,7.91328 c -4.71053,9.22529 -11.14119,15.13031 -20.14632,18.49955 l -5.68836,2.12829 -196.18423,-0.0676 C 83.039702,465.28588 44.479545,465.01909 41.072968,463.95393 Z"
id="path167"
transform="scale(0.26458333)" />
<path
id="rect109-1"
style="display:inline;fill:#40517d;fill-opacity:1;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none"
d="M 9.999907,0 C 4.459907,0 0,4.459907 0,9.999907 V 118.00003 c 0,5.54 4.459907,9.99991 9.999907,9.99991 H 118.00003 c 5.54,0 9.99991,-4.45991 9.99991,-9.99991 V 9.999907 C 127.99994,4.459907 123.54003,0 118.00003,0 Z"
sodipodi:nodetypes="sssssssss" />
</g>
<g
inkscape:label="Border"
inkscape:groupmode="layer"
id="layer1"
style="display:none">
<path
id="rect109"
style="stroke-width:0.264583"
d="M 9.9999062,0 C 4.4599067,0 0,4.4599068 0,9.9999063 V 118.00003 c 0,5.54 4.4599067,9.99991 9.9999062,9.99991 H 118.00003 c 5.54,0 9.99991,-4.45991 9.99991,-9.99991 V 9.9999063 C 127.99994,4.4599068 123.54003,0 118.00003,0 Z M 12.831775,3.3920411 H 114.94802 c 5.54,0 8.94209,3.4020897 8.94209,8.9420899 V 114.45037 c 0,5.54 -2.87292,8.9421 -8.41292,8.9421 H 10.715109 c -5.5400007,0 -6.8254239,-3.4021 -6.8254239,-8.9421 V 12.334131 c 0,-5.5400002 3.4020898,-8.9420899 8.9420899,-8.9420899 z"
sodipodi:nodetypes="ssssssssssssssssss" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Text">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.302px;line-height:1.25;font-family:'Proxima Nova Alt Condensed';-inkscape-font-specification:'Proxima Nova Alt Condensed, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;display:inline;fill:#d5f8ff;fill-opacity:1;stroke-width:2.73302;stroke-miterlimit:4;stroke-dasharray:none"
x="26.724163"
y="116.00568"
id="text28"
transform="scale(1.0474729,0.95467862)"><tspan
sodipodi:role="line"
id="tspan26"
x="26.724163"
y="116.00568"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:109.302px;font-family:'Proxima Nova Alt Condensed';-inkscape-font-specification:'Proxima Nova Alt Condensed, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#d5f8ff;fill-opacity:1;stroke-width:2.73302;stroke-miterlimit:4;stroke-dasharray:none">Si</tspan></text>
<text
xml:space="preserve"
id="text48"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:'Proxima Nova Alt';-inkscape-font-specification:'Proxima Nova Alt Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect50-3);display:inline;fill:#d5f8ff;fill-opacity:1;"
transform="matrix(3.896444,0,0,3.9665333,-29.18386,-37.205039)"><tspan
x="9.0058594"
y="18.791141"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.5833px;font-family:'Proxima Nova Alt Extra Condensed';-inkscape-font-specification:'Proxima Nova Alt Extra Condensed, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#d5f8ff;fill-opacity:1">14</tspan></tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" style="fill:#008080;" viewBox="0 0 12 16" version="1.1" preserveAspectRatio="xMinYMin meet" aria-hidden="true"><path fill-rule="evenodd" d="M9 2c-.97 0-1.69.42-2.2 1-.51.58-.78.92-.8 1-.02-.08-.28-.42-.8-1-.52-.58-1.17-1-2.2-1-1.632.086-2.954 1.333-3 3 0 .52.09 1.52.67 2.67C1.25 8.82 3.01 10.61 6 13c2.98-2.39 4.77-4.17 5.34-5.33C11.91 6.51 12 5.5 12 5c-.047-1.69-1.342-2.913-3-3z"></path></svg>

After

Width:  |  Height:  |  Size: 437 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none" /><path style="fill:#ddd" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

@ -0,0 +1,22 @@
# theme.toml template for a Hugo theme
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
name = "DoubleFourteen Original"
license = "GPL-3.0-or-later"
licenselink = "https://www.gnu.org/licenses/gpl-3.0.txt"
description = "Theme for https://doublefourteen.io website"
homepage = "https://doublefourteen.io"
tags = []
features = []
min_version = "0.83.1"
[author]
name = "Lorenzo Cogotti"
homepage = "https://doublefourteen.io"
DefaultContentLanguage = "en"
[languages]
[languages.en]
weight = 1
[languages.it]
weight = 2
Loading…
Cancel
Save