Making of, launch party
BIN
book/cover-full-bar.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
26
content/book/launch.md
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
type: single
|
||||
---
|
||||
|
||||
If I am to become a brand, it is best, perhaps, that I own it and at least try to do a good job of it.
|
||||
|
||||
> Is that so?
|
||||
|
||||
How could it not be? If I am to become a brand, and I am ever trying to become a better person, to be seen as someone good and worthwhile, mightn't it be a good idea to try and do a good job of that? To make a good impression?
|
||||
|
||||
> And this is how you plan to do it?
|
||||
|
||||
Well, I can hardly hold a launch party in person in this longest of decades, spring of 2020.
|
||||
|
||||
So.
|
||||
|
||||
## <span class="ally-font" style="font-size: 21pt">ally</span> online launch party --- Monday, June 1, 2020
|
||||
|
||||
Come, friends, and join me for a small launch party for <span class="ally-font">ally</span> launch party. It will as a matter of course be a BYOB party, but I would love to have you join me live on [Picarto](https://picarto.tv/makyo)! We'll have all sorts.
|
||||
|
||||
* Meet the author, call her a dork to her face.
|
||||
* Take a tour through the book, both a physical copy and a PDF.
|
||||
* Learn about the process of writing, publishing online, typesetting, and self-publishing a book.
|
||||
* I don't know, there will probably also be cameos from my dogs.
|
||||
|
||||
Mark your calendars, for you are formally invited to join me on *Monday, June 1st, 2020* at both *3:00PM* and *7:00PM* Pacific time.
|
||||
93
content/writing/moving.html
Normal file
@ -0,0 +1,93 @@
|
||||
---
|
||||
type: single
|
||||
---
|
||||
|
||||
<div class="vis">I'm sorry, but JavaScript is required for this :/</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
// Given https://collection.eliterature.org/1/works/andrews__stir_fry_texts/bluehyacinth3.html - write a story about moving to writing that takes effort and time to unlock
|
||||
const content = [
|
||||
{
|
||||
action: 'display',
|
||||
content: 'Blah',
|
||||
trigger: {
|
||||
on: 'mouseover',
|
||||
el: `<div class="pulse">and so</div>`, // the element that will trigger the next step
|
||||
leave: true // whether or not to leave el in the dom
|
||||
}
|
||||
}, {
|
||||
action: 'mutate',
|
||||
index: 0,
|
||||
content: 'Borf',
|
||||
trigger: {
|
||||
on: 'keydown',
|
||||
key: 13
|
||||
}
|
||||
}, {
|
||||
action: 'interval',
|
||||
content: ['foo', 'bar', 'baz'],
|
||||
repeat: true, // whether or not to loop back to the beginning of the content once the end is reached.
|
||||
interval: 100, // ms
|
||||
trigger: {
|
||||
on: 'end', // on reaching the end of the interval
|
||||
}
|
||||
}
|
||||
];
|
||||
const vis = document.querySelector('.vis')
|
||||
|
||||
function step() {
|
||||
index++;
|
||||
if (index <= content.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const curr = content[index];
|
||||
const prev = content[index - 1]
|
||||
const els = vis.querySelectorAll('.step');
|
||||
const prevEl = els[els.length - 1];
|
||||
const intervals = {};
|
||||
|
||||
if (prevEl.dataset.index === index - 1 &&
|
||||
prev.trigger.el &&
|
||||
!prev.trigger.leave) {
|
||||
const trigger = prevEl.querySelector('.trigger');
|
||||
if (trigger) {
|
||||
trigger.remove();
|
||||
}
|
||||
}
|
||||
|
||||
switch (curr.action) {
|
||||
case 'display':
|
||||
vis.innerHTML += `<div class="step" data-index="${index - 1}"><div class="content"></div>${curr.trigger.el ? '<div class="trigger">'+curr.trigger.el+'</div>' : ''}</div>`;
|
||||
break;
|
||||
case 'mutate':
|
||||
els.forEach((el) => {
|
||||
if (el.dataset.index === curr.index) {
|
||||
el.querySelector('content').innerHTML = curr.content;
|
||||
}
|
||||
});
|
||||
break;
|
||||
case 'interval':
|
||||
vis.innerHTML += `<div class="step" data-index="${index - 1}"><div class="content"></div>${curr.trigger.el ? '<div class="trigger">'+curr.trigger.el+'</div>' : ''}</div>`;
|
||||
const els_ = vis.querySelectorAll('.step');
|
||||
const el = els_[els_.length - 1];
|
||||
intervals[`${index}`] = {
|
||||
index: 0,
|
||||
interval: window.setInterval(() => {
|
||||
el.querySelector('.content').innerHTML = curr.content[intervals[`${index}`].index++ % curr.content.length];
|
||||
}, curr.interval)
|
||||
}
|
||||
if (!curr.repeat) {
|
||||
window.setTimeout(() => {
|
||||
window.clearInterval(intervals[`${index}`].interval);
|
||||
}, curr.interval * curr.content.length);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
console.log('uh...shrug?');
|
||||
}
|
||||
}
|
||||
|
||||
let index = 0;
|
||||
step();
|
||||
</script>
|
||||
21
making-of/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Madison Scott-Clary
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
59
making-of/Makefile
Normal file
@ -0,0 +1,59 @@
|
||||
.PHONY: help
|
||||
help: ## This help.
|
||||
@# This is ugly as hell and I hate awk
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||||
|
||||
.PHONY: final
|
||||
final: reset toc ## full document of the book for final print
|
||||
@echo
|
||||
@echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||
@echo "!Ensure that the index page breaks are okay!"
|
||||
@echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||
|
||||
.PHONY: single
|
||||
single: reset plain ## full document run once, ensuring everything's reset
|
||||
|
||||
.PHONY: proof
|
||||
proof: engage-letter engage-frame engage-draft toc reset ## full proof document of the book with frames and watermark
|
||||
|
||||
.PHONY: draft
|
||||
draft: engage-draft toc reset ## draft document of thebook with watermark
|
||||
|
||||
.PHONY: plain
|
||||
plain: ## full document of the book with no proofing marks
|
||||
xelatex book.tex
|
||||
|
||||
.PHONY: toc
|
||||
toc: plain ## full book with ToC re-rendering in case of page changes
|
||||
makeindex book
|
||||
xelatex book.tex
|
||||
|
||||
.PHONY: ebook
|
||||
ebook: ## render ePub file from LaTeX
|
||||
pandoc Ebook.tex -o ../ebooks/book.epub -t epub3 --wrap=none
|
||||
|
||||
.PHONY: frame
|
||||
engage-frame: ## turn on frame marking
|
||||
cp includes/_frame.tex includes/frame.tex
|
||||
|
||||
.PHONY: engage-letter
|
||||
engage-letter: ## force letter paper
|
||||
echo '\input{includes/_geometry-letter.tex}' > includes/geometry.tex
|
||||
|
||||
.PHONY: draft
|
||||
engage-draft: ## turn on draft watermark
|
||||
cp includes/_draft.tex includes/draft.tex
|
||||
|
||||
.PHONY: reset
|
||||
reset: ## reset frame marking, draft watermark, and letter paper
|
||||
echo '%' > includes/draft.tex
|
||||
echo '%' > includes/frame.tex
|
||||
echo '\input{includes/_geometry-trade.tex}' > includes/geometry.tex
|
||||
|
||||
.PHONY: content
|
||||
content: ## build the markdown content into LaTeX
|
||||
for in in src/content/*.md; do \
|
||||
out=`echo $$in | sed -e 's/\.md/.tex/' | sed -e 's/.*\///'`; \
|
||||
echo "$$in => $$out"; \
|
||||
pandoc -f markdown -t latex -o content/$$out $$in --wrap=none --top-level-division=chapter; \
|
||||
done
|
||||
57
making-of/README.md
Normal file
@ -0,0 +1,57 @@
|
||||
# LaTeX Book Template
|
||||
|
||||
A template for generating a book in LaTeX.
|
||||
|
||||
## Requirements
|
||||
|
||||
* [`pandoc`][pandoc]
|
||||
* `xelatex` (included in TeXLive)
|
||||
* `make`
|
||||
|
||||
## Getting started
|
||||
|
||||
This repository is a template for generating a trade paperback book. It creates a PDF that one can send to a printer for final production. As an additional feature, it generates a (very basic) EPub3 file to get you started on an ebook version.
|
||||
|
||||
To get going with this, copy the files in this repository to where you wish to work, modify the `includes/variables.tex` file to populate the title, author, and other information, add your content, and then run it using the following commands.
|
||||
|
||||
## Running
|
||||
|
||||
There are several `make` targets available to you, depending on what you want to be generated:
|
||||
|
||||
* `make plain` runs `xelatex` once
|
||||
* `make toc` runs `xelatex` twice. This is needed to regenerate table of contents and references with page numbers.
|
||||
* `make draft` generates a watermarked file for proofreading
|
||||
* `make proof` generates a full proofing file with frame and crop marks, a draft watermark, and on letter paper for margins
|
||||
* `make final` generates a final draft --- this is equivalent to `make toc`, except that it resets all draft stuff that may be left behind.
|
||||
* `make ebook` generates an EPub3 file. This will be exceedingly plain and not include any graphics, so you'll need to use something like [Calibre][calibre] to generate a final product, but this will get you started.
|
||||
|
||||
Additionally, there are a few targets which probably won't be used directly, but may be helpful:
|
||||
|
||||
* The `engage-letter` target outputs to letter-size paper from the default trade paperback size. This only controls the paper size, not the layout size, though, so you will get a trade page centered in a letter page.
|
||||
* The `reset` target resets all switchable options (draft, letter paper, framing/crop marks) to production values.
|
||||
|
||||
## Adding content
|
||||
|
||||
First things first, modify the `includes/variables.tex` file to contain the proper title, author, and additional information.
|
||||
|
||||
You may add content directly in the content directory as `*.tex` files, or you may write in Markdown in the `src/content` directory. If you wish to do this, each file in that directory will be transpiled from Markdown into LaTeX using [pandoc][pandoc]. To generate these files, run `make content`.
|
||||
|
||||
You may add assets such as images in the `assets` directory to be included in your content. Note that file paths such as those used in `\includegraphics` should be relative to `book.tex` (that is, don't write `\includegraphics{../assets/stuff.png}`, but instead `\includegraphics{assets/stuff.png}`).
|
||||
|
||||
Once you have your content in your files modify `book.tex` to include each file in `content` with `\input{}` commands. The file in this repository includes example includes, and you'll probably want to remove those.
|
||||
|
||||
You'll likely want to edit `includes/copyright.tex` to match your needs.
|
||||
|
||||
## Customization
|
||||
|
||||
The output of this template is deliberately bland, and is intended to be customaized.
|
||||
|
||||
* Customize final page and layout size in `includes/_geometry-trade.tex`. This includes sensible defaults for margins and such already.
|
||||
* Customize fonts in `includes/font.tex`
|
||||
* Add hyphenation rules to `includes/hyphenation.tex`
|
||||
* Customize page layout (header, footer, etc) in `includes/pagelayout.tex`
|
||||
* Set a custom section divider in `includes/secdiv.tex`. This redefines the `\rule` command to be something more appealing. This is optional, though, and the `\input{includes/secdiv}` command in `book.tex` can be removed to restore defaults.
|
||||
* Customize your title and pretitle pages in `includes/title.tex` and `includes/pretitle.tex`
|
||||
|
||||
[pandoc]: https://pandoc.org
|
||||
[calibre]: https://calibre-ebook.com/
|
||||
0
making-of/assets/.keep
Normal file
BIN
making-of/assets/3.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
24
making-of/assets/3.svg
Normal file
@ -0,0 +1,24 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="350"
|
||||
height="350">
|
||||
<style>
|
||||
* {
|
||||
fill: none;
|
||||
stroke: black;
|
||||
stroke-width: 5px;
|
||||
}
|
||||
</style>
|
||||
<rect x="0" y="0" width="350" height="350" />
|
||||
<path d="
|
||||
M 100 50
|
||||
q -30 75 50 250
|
||||
L 50 50
|
||||
l 0 250
|
||||
q 100 -250 250 -250
|
||||
s -150 0 -150 125
|
||||
s 175 125 175 0
|
||||
s -125 -75 -125 0
|
||||
s 125 5 125 0
|
||||
l -275 0" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 498 B |
BIN
making-of/assets/barcode_978-1-948743-15-0_90000.pdf
Normal file
BIN
making-of/assets/cadmiumtea--MurderYourDarlings--makyo--G.jpg
Normal file
|
After Width: | Height: | Size: 3.5 MiB |
149
making-of/assets/isbn.eps
Normal file
@ -0,0 +1,149 @@
|
||||
%!PS-Adobe-2.0 EPSF-1.2
|
||||
%%Creator: bookland 1.4
|
||||
%%Title: ISBN 9781948743150
|
||||
%%BoundingBox: 215 335 376 432
|
||||
%%EndComments
|
||||
% Command line: bookland -o /usr/share/nginx/www/converter/ISBN/downloads/f86f9eac90cc461487ff880f6aee71c151c67c02/isbn.eps 9781948743150 53500
|
||||
% This is free software and comes with NO WARRANTY WHATSOVER. This file
|
||||
% contains portions of bookland, a free program licensed under the GNU
|
||||
% General Public License. The GPL notwithstanding, you may use and
|
||||
% redistribute this output file without restriction.
|
||||
|
||||
/W { moduleWidth mul 0 rmoveto } def
|
||||
/B { dup moduleWidth mul 2 div 0 rmoveto
|
||||
dup moduleWidth mul barWidthReduction sub setlinewidth
|
||||
0 moduleHeight rlineto 0 moduleHeight neg rmoveto
|
||||
currentpoint stroke moveto
|
||||
moduleWidth mul 2 div 0 rmoveto } def
|
||||
/L { dup moduleWidth mul 2 div 0 rmoveto
|
||||
dup moduleWidth mul barWidthReduction sub setlinewidth
|
||||
0 -5 rmoveto 0 5 rlineto
|
||||
0 moduleHeight rlineto 0 moduleHeight neg rmoveto
|
||||
currentpoint stroke moveto
|
||||
moduleWidth mul 2 div 0 rmoveto } def
|
||||
% function fitstring:
|
||||
% usage: width string font fitstring
|
||||
% scale font to fit string to desired width
|
||||
% leave string on stack
|
||||
/fitstring { dup findfont 1 scalefont setfont % w s f
|
||||
3 1 roll % f w s
|
||||
dup stringwidth pop % f w s sw
|
||||
3 2 roll exch div % f s x
|
||||
3 2 roll findfont exch
|
||||
scalefont setfont } def
|
||||
% get bounding box of string.
|
||||
% usage: string stringbb -> llx lly urx ury
|
||||
/stringbb {gsave false charpath flattenpath pathbbox grestore} def
|
||||
% String height and width:
|
||||
/stringhw {stringbb exch % llx lly ury urx
|
||||
4 1 roll % urx llx lly ury
|
||||
sub neg % urx llx h
|
||||
3 1 roll % h urx llx
|
||||
sub % h w
|
||||
} def
|
||||
/dx { [ 0 1 2 0 1 2 0 1 2 ] } def
|
||||
/dy { [ 0 0 0 1 1 1 2 2 2 ] } def
|
||||
% Set dx and dy to shift to anchor point:
|
||||
/dxdy { dup dx exch % anchor dx anchor
|
||||
get % anchor idx
|
||||
dy % anchor idx dy
|
||||
3 2 roll % idx dy anchor
|
||||
get % idx idy
|
||||
} def
|
||||
% Usage: string anchor anchorstring
|
||||
/anchorstring { dxdy % string idx idy
|
||||
3 2 roll % idx idy string
|
||||
dup % idx idy string string
|
||||
4 1 roll % string idx idy string
|
||||
stringhw % string idx idy h w
|
||||
4 1 roll % string w idx idy h
|
||||
mul -2 div % string w idx ry
|
||||
3 1 roll % string ry w idx
|
||||
mul -2 div % string ry rx
|
||||
exch
|
||||
rmoveto show } def
|
||||
225.5 347.5 translate 0 0 moveto
|
||||
0 0 0 1 setcmykcolor
|
||||
|
||||
%
|
||||
% Text string
|
||||
%
|
||||
gsave 65.52 -1 translate 0 0 moveto
|
||||
36.6912 (781948) /OCRB fitstring
|
||||
(743150) 7 anchorstring
|
||||
grestore
|
||||
|
||||
%
|
||||
% Text string
|
||||
%
|
||||
gsave 22.464 -1 translate 0 0 moveto
|
||||
36.6912 (781948) /OCRB fitstring
|
||||
(781948) 7 anchorstring
|
||||
grestore
|
||||
|
||||
%
|
||||
% Text string
|
||||
%
|
||||
gsave -2 -1 translate 0 0 moveto
|
||||
36.6912 (781948) /OCRB fitstring
|
||||
(9) 8 anchorstring
|
||||
grestore
|
||||
|
||||
%
|
||||
% Product Code Bars
|
||||
%
|
||||
gsave
|
||||
0 0 translate 0 0 moveto
|
||||
/moduleHeight { 72 } def
|
||||
/moduleWidth { 0.936 } def
|
||||
/barWidthReduction { 0 } def
|
||||
1 L 1 W 1 L 1 W 3 B 1 W 2 B 3 W 1 B 2 W 1 B 1 W 2 B 2 W 2 B 3 W 1 B 1 W 2 B 2 W 3 B 1 W 1 B 1 W 2 B 1 W 3 B 1 W 1 L 1 W 1 L 1 W 1 B 3 W 1 B 2 W 1 B 1 W 3 B 2 W 1 B 4 W 1 B 1 W 2 B 2 W 2 B 1 W 1 B 2 W 3 B 1 W 3 B 2 W 1 B 1 W 1 L 1 W 1 L
|
||||
grestore
|
||||
|
||||
%
|
||||
% Text string
|
||||
%
|
||||
gsave 88.92 0 translate 0 0 moveto
|
||||
36.6912 (781948) /OCRB fitstring
|
||||
( ) 0 anchorstring
|
||||
grestore
|
||||
|
||||
%
|
||||
% Text string
|
||||
%
|
||||
gsave 44.46 74 translate 0 0 moveto
|
||||
/OCRB findfont 9 scalefont setfont
|
||||
(ISBN 9781948743150) 1 anchorstring
|
||||
grestore
|
||||
|
||||
%
|
||||
% Product Code Bars
|
||||
%
|
||||
gsave
|
||||
98 0 translate 0 0 moveto
|
||||
/moduleHeight { 61.344 } def
|
||||
/moduleWidth { 0.936 } def
|
||||
/barWidthReduction { 0 } def
|
||||
1 B 1 W 2 B 1 W 2 B 3 W 1 B 1 W 1 B 1 W 1 B 4 W 1 B 1 W 1 B 1 W 2 B 3 W 1 B 1 W 1 B 1 W 1 B 2 W 3 B 1 W 1 B 3 W 2 B 1 W 1 B
|
||||
grestore
|
||||
|
||||
%
|
||||
% Text string
|
||||
%
|
||||
gsave 119.996 63.344 translate 0 0 moveto
|
||||
32.994 (53500) /OCRB fitstring
|
||||
(53500) 1 anchorstring
|
||||
grestore
|
||||
|
||||
%
|
||||
% Text string
|
||||
%
|
||||
gsave 142.992 63.344 translate 0 0 moveto
|
||||
32.994 (53500) /OCRB fitstring
|
||||
(>) 0 anchorstring
|
||||
grestore
|
||||
|
||||
stroke
|
||||
% showpage OK in EPS
|
||||
showpage
|
||||
% Good luck!
|
||||
BIN
making-of/assets/isbn.pdf
Normal file
BIN
making-of/assets/isbn.zip
Normal file
BIN
making-of/assets/map.png
Normal file
|
After Width: | Height: | Size: 500 KiB |
BIN
making-of/assets/project-list.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
making-of/assets/static/ArapahoeRidgePark.jpg
Normal file
|
After Width: | Height: | Size: 463 KiB |
BIN
making-of/assets/static/bird/1.jpg
Normal file
|
After Width: | Height: | Size: 337 KiB |
BIN
making-of/assets/static/bird/2.jpg
Normal file
|
After Width: | Height: | Size: 377 KiB |
BIN
making-of/assets/static/bird/3.jpg
Normal file
|
After Width: | Height: | Size: 261 KiB |
BIN
making-of/assets/static/bird/4.jpg
Normal file
|
After Width: | Height: | Size: 507 KiB |
BIN
making-of/assets/static/bird/5.jpg
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
making-of/assets/static/bird/6.jpg
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
making-of/assets/static/bird/geese.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
making-of/assets/static/color/blue_flag.jpg
Normal file
|
After Width: | Height: | Size: 290 KiB |
BIN
making-of/assets/static/color/blue_flag.pdf
Normal file
BIN
making-of/assets/static/color/bw1.jpg
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
making-of/assets/static/color/bw1.pdf
Normal file
BIN
making-of/assets/static/color/bw2.jpg
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
making-of/assets/static/color/bw2.pdf
Normal file
BIN
making-of/assets/static/color/bw3.jpg
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
making-of/assets/static/color/bw3.pdf
Normal file
BIN
making-of/assets/static/color/green_door.jpg
Normal file
|
After Width: | Height: | Size: 434 KiB |
BIN
making-of/assets/static/color/green_door.pdf
Normal file
BIN
making-of/assets/static/color/orange_eyes.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
making-of/assets/static/color/orange_eyes.pdf
Normal file
BIN
making-of/assets/static/color/window_view.pdf
Normal file
BIN
making-of/assets/static/color/window_view.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
making-of/assets/static/confusion.mp3
Normal file
BIN
making-of/assets/static/dreams/1.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
making-of/assets/static/dreams/2.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
making-of/assets/static/dreams/3.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
making-of/assets/static/emb-menu.pdf
Normal file
BIN
making-of/assets/static/fursonas/ephah.gif
Normal file
|
After Width: | Height: | Size: 168 KiB |
BIN
making-of/assets/static/fursonas/happenstance.gif
Normal file
|
After Width: | Height: | Size: 212 KiB |
BIN
making-of/assets/static/fursonas/macchi.gif
Normal file
|
After Width: | Height: | Size: 430 KiB |
BIN
making-of/assets/static/fursonas/maddy.gif
Normal file
|
After Width: | Height: | Size: 3.2 MiB |
BIN
making-of/assets/static/fursonas/makyo.gif
Normal file
|
After Width: | Height: | Size: 8.8 MiB |
BIN
making-of/assets/static/fursonas/ranna.gif
Normal file
|
After Width: | Height: | Size: 915 KiB |
BIN
making-of/assets/static/fursonas/younes.gif
Normal file
|
After Width: | Height: | Size: 424 KiB |
BIN
making-of/assets/static/grey--running-away-big--makyo.jpg
Normal file
|
After Width: | Height: | Size: 594 KiB |
BIN
making-of/assets/static/grey--running-away-big--makyo.pdf
Normal file
BIN
making-of/assets/static/growth.jpg
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
making-of/assets/static/healthy-sound.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
7
making-of/assets/static/healthy-sound.svg
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewport="0 0 800 400" style="font-family: 'Gentium Book Basic', serif;">
|
||||
<circle cx="225" cy="200" r="198" style="stroke-width: 2px; stroke: #222; fill: none;" />
|
||||
<circle cx="575" cy="200" r="198" style="stroke-width: 2px; stroke: #222; fill: none;" />
|
||||
<text x="225" y="200" text-anchor="middle" vertical-baseline="center">Healthy</text>
|
||||
<text x="575" y="200" text-anchor="middle" vertical-baseline="center">Mechanically sound</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 545 B |
6
making-of/assets/static/js/marked-0.3.6/marked.min.js
vendored
Normal file
60
making-of/assets/static/js/sjcl-1.0.6/sjcl.js
Normal file
@ -0,0 +1,60 @@
|
||||
"use strict";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return"CORRUPT: "+this.message};this.message=a},invalid:function(a){this.toString=function(){return"INVALID: "+this.message};this.message=a},bug:function(a){this.toString=function(){return"BUG: "+this.message};this.message=a},notReady:function(a){this.toString=function(){return"NOT READY: "+this.message};this.message=a}}};
|
||||
sjcl.cipher.aes=function(a){this.s[0][0][0]||this.O();var b,c,d,e,f=this.s[0][4],g=this.s[1];b=a.length;var h=1;if(4!==b&&6!==b&&8!==b)throw new sjcl.exception.invalid("invalid aes key size");this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255],0===a%b&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^g[3][f[c&
|
||||
255]]};
|
||||
sjcl.cipher.aes.prototype={encrypt:function(a){return t(this,a,0)},decrypt:function(a){return t(this,a,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var a=this.s[0],b=this.s[1],c=a[4],d=b[4],e,f,g,h=[],k=[],l,n,m,p;for(e=0;0x100>e;e++)k[(h[e]=e<<1^283*(e>>7))^e]=e;for(f=g=0;!c[f];f^=l||1,g=k[g]||1)for(m=g^g<<1^g<<2^g<<3^g<<4,m=m>>8^m&255^99,c[f]=m,d[m]=f,n=h[e=h[l=h[f]]],p=0x1010101*n^0x10001*e^0x101*l^0x1010100*f,n=0x101*h[m]^0x1010100*m,e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][m]=p=p<<24^p>>>8;for(e=
|
||||
0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)}};
|
||||
function t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes block size");var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,k,l,n=d.length/4-2,m,p=4,r=[0,0,0,0];h=a.s[c];a=h[0];var q=h[1],v=h[2],w=h[3],x=h[4];for(m=0;m<n;m++)h=a[e>>>24]^q[f>>16&255]^v[g>>8&255]^w[b&255]^d[p],k=a[f>>>24]^q[g>>16&255]^v[b>>8&255]^w[e&255]^d[p+1],l=a[g>>>24]^q[b>>16&255]^v[e>>8&255]^w[f&255]^d[p+2],b=a[b>>>24]^q[e>>16&255]^v[f>>8&255]^w[g&255]^d[p+3],p+=4,e=h,f=k,g=l;for(m=
|
||||
0;4>m;m++)r[c?3&-m:m]=x[e>>>24]<<24^x[f>>16&255]<<16^x[g>>8&255]<<8^x[b&255]^d[p++],h=e,e=f,f=g,g=b,b=h;return r}
|
||||
sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.$(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(0===a.length||0===b.length)return a.concat(b);var c=a[a.length-1],d=sjcl.bitArray.getPartial(c);return 32===d?a.concat(b):sjcl.bitArray.$(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length;return 0===
|
||||
b?0:32*(b-1)+sjcl.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(32*a.length<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b=b&31;0<c&&b&&(a[c-1]=sjcl.bitArray.partial(b,a[c-1]&2147483648>>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d<a.length;d++)c|=a[d]^b[d];return 0===
|
||||
c},$:function(a,b,c,d){var e;e=0;for(void 0===d&&(d=[]);32<=b;b-=32)d.push(c),c=0;if(0===b)return d.concat(a);for(e=0;e<a.length;e++)d.push(c|a[e]>>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32<b+a?c:d.pop(),1));return d},i:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]},byteswapM:function(a){var b,c;for(b=0;b<a.length;++b)c=a[b],a[b]=c>>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}};
|
||||
sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>24),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}};
|
||||
sjcl.codec.hex={fromBits:function(a){var b="",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,sjcl.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\s|0x/g,"");d=a.length;a=a+"00000000";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return sjcl.bitArray.clamp(c,4*d)}};
|
||||
sjcl.codec.base32={B:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",X:"0123456789ABCDEFGHIJKLMNOPQRSTUV",BITS:32,BASE:5,REMAINING:27,fromBits:function(a,b,c){var d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f="",g=0,h=sjcl.codec.base32.B,k=0,l=sjcl.bitArray.bitLength(a);c&&(h=sjcl.codec.base32.X);for(c=0;f.length*d<l;)f+=h.charAt((k^a[c]>>>g)>>>e),g<d?(k=a[c]<<d-g,g+=e,c++):(k<<=d,g-=d);for(;f.length&7&&!b;)f+="=";return f},toBits:function(a,b){a=a.replace(/\s|=/g,"").toUpperCase();var c=sjcl.codec.base32.BITS,
|
||||
d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f=[],g,h=0,k=sjcl.codec.base32.B,l=0,n,m="base32";b&&(k=sjcl.codec.base32.X,m="base32hex");for(g=0;g<a.length;g++){n=k.indexOf(a.charAt(g));if(0>n){if(!b)try{return sjcl.codec.base32hex.toBits(a)}catch(p){}throw new sjcl.exception.invalid("this isn't "+m+"!");}h>e?(h-=e,f.push(l^n>>>h),l=n<<c-h):(h+=d,l^=n<<c-h)}h&56&&f.push(sjcl.bitArray.partial(h&56,l,1));return f}};
|
||||
sjcl.codec.base32hex={fromBits:function(a,b){return sjcl.codec.base32.fromBits(a,b,1)},toBits:function(a){return sjcl.codec.base32.toBits(a,1)}};
|
||||
sjcl.codec.base64={B:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(a,b,c){var d="",e=0,f=sjcl.codec.base64.B,g=0,h=sjcl.bitArray.bitLength(a);c&&(f=f.substr(0,62)+"-_");for(c=0;6*d.length<h;)d+=f.charAt((g^a[c]>>>e)>>>26),6>e?(g=a[c]<<6-e,e+=26,c++):(g<<=6,e-=6);for(;d.length&3&&!b;)d+="=";return d},toBits:function(a,b){a=a.replace(/\s|=/g,"");var c=[],d,e=0,f=sjcl.codec.base64.B,g=0,h;b&&(f=f.substr(0,62)+"-_");for(d=0;d<a.length;d++){h=f.indexOf(a.charAt(d));
|
||||
if(0>h)throw new sjcl.exception.invalid("this isn't base64!");26<e?(e-=26,c.push(g^h>>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.O();a?(this.F=a.F.slice(0),this.A=a.A.slice(0),this.l=a.l):this.reset()};sjcl.hash.sha256.hash=function(a){return(new sjcl.hash.sha256).update(a).finalize()};
|
||||
sjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.F=this.Y.slice(0);this.A=[];this.l=0;return this},update:function(a){"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.A=sjcl.bitArray.concat(this.A,a);b=this.l;a=this.l=b+sjcl.bitArray.bitLength(a);if(0x1fffffffffffff<a)throw new sjcl.exception.invalid("Cannot hash more than 2^53 - 1 bits");if("undefined"!==typeof Uint32Array){var d=new Uint32Array(c),e=0;for(b=512+b-(512+b&0x1ff);b<=a;b+=512)u(this,d.subarray(16*e,
|
||||
16*(e+1))),e+=1;c.splice(0,16*e)}else for(b=512+b-(512+b&0x1ff);b<=a;b+=512)u(this,c.splice(0,16));return this},finalize:function(){var a,b=this.A,c=this.F,b=sjcl.bitArray.concat(b,[sjcl.bitArray.partial(1,1)]);for(a=b.length+2;a&15;a++)b.push(0);b.push(Math.floor(this.l/0x100000000));for(b.push(this.l|0);b.length;)u(this,b.splice(0,16));this.reset();return c},Y:[],b:[],O:function(){function a(a){return 0x100000000*(a-Math.floor(a))|0}for(var b=0,c=2,d,e;64>b;c++){e=!0;for(d=2;d*d<=c;d++)if(0===c%d){e=
|
||||
!1;break}e&&(8>b&&(this.Y[b]=a(Math.pow(c,.5))),this.b[b]=a(Math.pow(c,1/3)),b++)}}};
|
||||
function u(a,b){var c,d,e,f=a.F,g=a.b,h=f[0],k=f[1],l=f[2],n=f[3],m=f[4],p=f[5],r=f[6],q=f[7];for(c=0;64>c;c++)16>c?d=b[c]:(d=b[c+1&15],e=b[c+14&15],d=b[c&15]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+b[c&15]+b[c+9&15]|0),d=d+q+(m>>>6^m>>>11^m>>>25^m<<26^m<<21^m<<7)+(r^m&(p^r))+g[c],q=r,r=p,p=m,m=n+d|0,n=l,l=k,k=h,h=d+(k&l^n&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;f[0]=f[0]+h|0;f[1]=f[1]+k|0;f[2]=f[2]+l|0;f[3]=f[3]+n|0;f[4]=f[4]+m|0;f[5]=f[5]+p|0;f[6]=f[6]+r|0;f[7]=
|
||||
f[7]+q|0}
|
||||
sjcl.mode.ccm={name:"ccm",G:[],listenProgress:function(a){sjcl.mode.ccm.G.push(a)},unListenProgress:function(a){a=sjcl.mode.ccm.G.indexOf(a);-1<a&&sjcl.mode.ccm.G.splice(a,1)},fa:function(a){var b=sjcl.mode.ccm.G.slice(),c;for(c=0;c<b.length;c+=1)b[c](a)},encrypt:function(a,b,c,d,e){var f,g=b.slice(0),h=sjcl.bitArray,k=h.bitLength(c)/8,l=h.bitLength(g)/8;e=e||64;d=d||[];if(7>k)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(f=2;4>f&&l>>>8*f;f++);f<15-k&&(f=15-k);c=h.clamp(c,
|
||||
8*(15-f));b=sjcl.mode.ccm.V(a,b,c,d,e,f);g=sjcl.mode.ccm.C(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),k=f.clamp(b,h-e),l=f.bitSlice(b,h-e),h=(h-e)/8;if(7>g)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));k=sjcl.mode.ccm.C(a,k,c,l,e,b);a=sjcl.mode.ccm.V(a,k.data,c,d,e,b);if(!f.equal(k.tag,a))throw new sjcl.exception.corrupt("ccm: tag doesn't match");
|
||||
return k.data},na:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,k=h.i;d=[h.partial(8,(b.length?64:0)|d-2<<2|f-1)];d=h.concat(d,c);d[3]|=e;d=a.encrypt(d);if(b.length)for(c=h.bitLength(b)/8,65279>=c?g=[h.partial(16,c)]:0xffffffff>=c&&(g=h.concat([h.partial(16,65534)],[c])),g=h.concat(g,b),b=0;b<g.length;b+=4)d=a.encrypt(k(d,g.slice(b,b+4).concat([0,0,0])));return d},V:function(a,b,c,d,e,f){var g=sjcl.bitArray,h=g.i;e/=8;if(e%2||4>e||16<e)throw new sjcl.exception.invalid("ccm: invalid tag length");
|
||||
if(0xffffffff<d.length||0xffffffff<b.length)throw new sjcl.exception.bug("ccm: can't deal with 4GiB or more data");c=sjcl.mode.ccm.na(a,d,c,e,g.bitLength(b)/8,f);for(d=0;d<b.length;d+=4)c=a.encrypt(h(c,b.slice(d,d+4).concat([0,0,0])));return g.clamp(c,8*e)},C:function(a,b,c,d,e,f){var g,h=sjcl.bitArray;g=h.i;var k=b.length,l=h.bitLength(b),n=k/50,m=n;c=h.concat([h.partial(8,f-1)],c).concat([0,0,0]).slice(0,4);d=h.bitSlice(g(d,a.encrypt(c)),0,e);if(!k)return{tag:d,data:[]};for(g=0;g<k;g+=4)g>n&&(sjcl.mode.ccm.fa(g/
|
||||
k),n+=m),c[3]++,e=a.encrypt(c),b[g]^=e[0],b[g+1]^=e[1],b[g+2]^=e[2],b[g+3]^=e[3];return{tag:d,data:h.clamp(b,l)}}};
|
||||
sjcl.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");var g,h=sjcl.mode.ocb2.S,k=sjcl.bitArray,l=k.i,n=[0,0,0,0];c=h(a.encrypt(c));var m,p=[];d=d||[];e=e||64;for(g=0;g+4<b.length;g+=4)m=b.slice(g,g+4),n=l(n,m),p=p.concat(l(c,a.encrypt(l(c,m)))),c=h(c);m=b.slice(g);b=k.bitLength(m);g=a.encrypt(l(c,[0,0,0,b]));m=k.clamp(l(m.concat([0,0,0]),g),b);n=l(n,l(m.concat([0,0,0]),g));n=a.encrypt(l(n,l(c,h(c))));
|
||||
d.length&&(n=l(n,f?d:sjcl.mode.ocb2.pmac(a,d)));return p.concat(k.concat(m,k.clamp(n,e)))},decrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");e=e||64;var g=sjcl.mode.ocb2.S,h=sjcl.bitArray,k=h.i,l=[0,0,0,0],n=g(a.encrypt(c)),m,p,r=sjcl.bitArray.bitLength(b)-e,q=[];d=d||[];for(c=0;c+4<r/32;c+=4)m=k(n,a.decrypt(k(n,b.slice(c,c+4)))),l=k(l,m),q=q.concat(m),n=g(n);p=r-32*c;m=a.encrypt(k(n,[0,0,0,p]));m=k(m,h.clamp(b.slice(c),p).concat([0,
|
||||
0,0]));l=k(l,m);l=a.encrypt(k(l,k(n,g(n))));d.length&&(l=k(l,f?d:sjcl.mode.ocb2.pmac(a,d)));if(!h.equal(h.clamp(l,e),h.bitSlice(b,r)))throw new sjcl.exception.corrupt("ocb: tag doesn't match");return q.concat(h.clamp(m,p))},pmac:function(a,b){var c,d=sjcl.mode.ocb2.S,e=sjcl.bitArray,f=e.i,g=[0,0,0,0],h=a.encrypt([0,0,0,0]),h=f(h,d(d(h)));for(c=0;c+4<b.length;c+=4)h=d(h),g=f(g,a.encrypt(f(h,b.slice(c,c+4))));c=b.slice(c);128>e.bitLength(c)&&(h=f(h,d(h)),c=e.concat(c,[-2147483648,0,0,0]));g=f(g,c);
|
||||
return a.encrypt(f(d(f(h,d(h))),g))},S:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^135*(a[0]>>>31)]}};
|
||||
sjcl.mode.gcm={name:"gcm",encrypt:function(a,b,c,d,e){var f=b.slice(0);b=sjcl.bitArray;d=d||[];a=sjcl.mode.gcm.C(!0,a,f,d,c,e||128);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var f=b.slice(0),g=sjcl.bitArray,h=g.bitLength(f);e=e||128;d=d||[];e<=h?(b=g.bitSlice(f,h-e),f=g.bitSlice(f,0,h-e)):(b=f,f=[]);a=sjcl.mode.gcm.C(!1,a,f,d,c,e);if(!g.equal(a.tag,b))throw new sjcl.exception.corrupt("gcm: tag doesn't match");return a.data},ka:function(a,b){var c,d,e,f,g,h=sjcl.bitArray.i;e=[0,0,
|
||||
0,0];f=b.slice(0);for(c=0;128>c;c++){(d=0!==(a[Math.floor(c/32)]&1<<31-c%32))&&(e=h(e,f));g=0!==(f[3]&1);for(d=3;0<d;d--)f[d]=f[d]>>>1|(f[d-1]&1)<<31;f[0]>>>=1;g&&(f[0]^=-0x1f000000)}return e},j:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;d<e;d+=4)b[0]^=0xffffffff&c[d],b[1]^=0xffffffff&c[d+1],b[2]^=0xffffffff&c[d+2],b[3]^=0xffffffff&c[d+3],b=sjcl.mode.gcm.ka(b,a);return b},C:function(a,b,c,d,e,f){var g,h,k,l,n,m,p,r,q=sjcl.bitArray;m=c.length;p=q.bitLength(c);r=q.bitLength(d);h=q.bitLength(e);
|
||||
g=b.encrypt([0,0,0,0]);96===h?(e=e.slice(0),e=q.concat(e,[1])):(e=sjcl.mode.gcm.j(g,[0,0,0,0],e),e=sjcl.mode.gcm.j(g,e,[0,0,Math.floor(h/0x100000000),h&0xffffffff]));h=sjcl.mode.gcm.j(g,[0,0,0,0],d);n=e.slice(0);d=h.slice(0);a||(d=sjcl.mode.gcm.j(g,h,c));for(l=0;l<m;l+=4)n[3]++,k=b.encrypt(n),c[l]^=k[0],c[l+1]^=k[1],c[l+2]^=k[2],c[l+3]^=k[3];c=q.clamp(c,p);a&&(d=sjcl.mode.gcm.j(g,h,c));a=[Math.floor(r/0x100000000),r&0xffffffff,Math.floor(p/0x100000000),p&0xffffffff];d=sjcl.mode.gcm.j(g,d,a);k=b.encrypt(e);
|
||||
d[0]^=k[0];d[1]^=k[1];d[2]^=k[2];d[3]^=k[3];return{tag:q.bitSlice(d,0,f),data:c}}};sjcl.misc.hmac=function(a,b){this.W=b=b||sjcl.hash.sha256;var c=[[],[]],d,e=b.prototype.blockSize/32;this.w=[new b,new b];a.length>e&&(a=b.hash(a));for(d=0;d<e;d++)c[0][d]=a[d]^909522486,c[1][d]=a[d]^1549556828;this.w[0].update(c[0]);this.w[1].update(c[1]);this.R=new b(this.w[0])};
|
||||
sjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(a){if(this.aa)throw new sjcl.exception.invalid("encrypt on already updated hmac called!");this.update(a);return this.digest(a)};sjcl.misc.hmac.prototype.reset=function(){this.R=new this.W(this.w[0]);this.aa=!1};sjcl.misc.hmac.prototype.update=function(a){this.aa=!0;this.R.update(a)};sjcl.misc.hmac.prototype.digest=function(){var a=this.R.finalize(),a=(new this.W(this.w[1])).update(a).finalize();this.reset();return a};
|
||||
sjcl.misc.pbkdf2=function(a,b,c,d,e){c=c||1E4;if(0>d||0>c)throw new sjcl.exception.invalid("invalid params to pbkdf2");"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,k,l=[],n=sjcl.bitArray;for(k=1;32*l.length<(d||1);k++){e=f=a.encrypt(n.concat(b,[k]));for(g=1;g<c;g++)for(f=a.encrypt(f),h=0;h<f.length;h++)e[h]^=f[h];l=l.concat(e)}d&&(l=n.clamp(l,d));return l};
|
||||
sjcl.prng=function(a){this.c=[new sjcl.hash.sha256];this.m=[0];this.P=0;this.H={};this.N=0;this.U={};this.Z=this.f=this.o=this.ha=0;this.b=[0,0,0,0,0,0,0,0];this.h=[0,0,0,0];this.L=void 0;this.M=a;this.D=!1;this.K={progress:{},seeded:{}};this.u=this.ga=0;this.I=1;this.J=2;this.ca=0x10000;this.T=[0,48,64,96,128,192,0x100,384,512,768,1024];this.da=3E4;this.ba=80};
|
||||
sjcl.prng.prototype={randomWords:function(a,b){var c=[],d;d=this.isReady(b);var e;if(d===this.u)throw new sjcl.exception.notReady("generator isn't seeded");if(d&this.J){d=!(d&this.I);e=[];var f=0,g;this.Z=e[0]=(new Date).valueOf()+this.da;for(g=0;16>g;g++)e.push(0x100000000*Math.random()|0);for(g=0;g<this.c.length&&(e=e.concat(this.c[g].finalize()),f+=this.m[g],this.m[g]=0,d||!(this.P&1<<g));g++);this.P>=1<<this.c.length&&(this.c.push(new sjcl.hash.sha256),this.m.push(0));this.f-=f;f>this.o&&(this.o=
|
||||
f);this.P++;this.b=sjcl.hash.sha256.hash(this.b.concat(e));this.L=new sjcl.cipher.aes(this.b);for(d=0;4>d&&(this.h[d]=this.h[d]+1|0,!this.h[d]);d++);}for(d=0;d<a;d+=4)0===(d+1)%this.ca&&y(this),e=z(this),c.push(e[0],e[1],e[2],e[3]);y(this);return c.slice(0,a)},setDefaultParanoia:function(a,b){if(0===a&&"Setting paranoia=0 will ruin your security; use it only for testing"!==b)throw new sjcl.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing");this.M=a},addEntropy:function(a,
|
||||
b,c){c=c||"user";var d,e,f=(new Date).valueOf(),g=this.H[c],h=this.isReady(),k=0;d=this.U[c];void 0===d&&(d=this.U[c]=this.ha++);void 0===g&&(g=this.H[c]=0);this.H[c]=(this.H[c]+1)%this.c.length;switch(typeof a){case "number":void 0===b&&(b=1);this.c[g].update([d,this.N++,1,b,f,1,a|0]);break;case "object":c=Object.prototype.toString.call(a);if("[object Uint32Array]"===c){e=[];for(c=0;c<a.length;c++)e.push(a[c]);a=e}else for("[object Array]"!==c&&(k=1),c=0;c<a.length&&!k;c++)"number"!==typeof a[c]&&
|
||||
(k=1);if(!k){if(void 0===b)for(c=b=0;c<a.length;c++)for(e=a[c];0<e;)b++,e=e>>>1;this.c[g].update([d,this.N++,2,b,f,a.length].concat(a))}break;case "string":void 0===b&&(b=a.length);this.c[g].update([d,this.N++,3,b,f,a.length]);this.c[g].update(a);break;default:k=1}if(k)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[g]+=b;this.f+=b;h===this.u&&(this.isReady()!==this.u&&A("seeded",Math.max(this.o,this.f)),A("progress",this.getProgress()))},
|
||||
isReady:function(a){a=this.T[void 0!==a?a:this.M];return this.o&&this.o>=a?this.m[0]>this.ba&&(new Date).valueOf()>this.Z?this.J|this.I:this.I:this.f>=a?this.J|this.u:this.u},getProgress:function(a){a=this.T[a?a:this.M];return this.o>=a?1:this.f>a?1:this.f/a},startCollectors:function(){if(!this.D){this.a={loadTimeCollector:B(this,this.ma),mouseCollector:B(this,this.oa),keyboardCollector:B(this,this.la),accelerometerCollector:B(this,this.ea),touchCollector:B(this,this.qa)};if(window.addEventListener)window.addEventListener("load",
|
||||
this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new sjcl.exception.bug("can't attach event");
|
||||
this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",
|
||||
this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(a,b){this.K[a][this.ga++]=b},removeEventListener:function(a,b){var c,d,e=this.K[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;c<f.length;c++)d=f[c],delete e[d]},la:function(){C(this,1)},oa:function(a){var b,c;try{b=a.x||a.clientX||a.offsetX||0,c=a.y||a.clientY||a.offsetY||0}catch(d){c=b=0}0!=b&&0!=c&&this.addEntropy([b,c],2,"mouse");C(this,0)},qa:function(a){a=
|
||||
a.touches[0]||a.changedTouches[0];this.addEntropy([a.pageX||a.clientX,a.pageY||a.clientY],1,"touch");C(this,0)},ma:function(){C(this,2)},ea:function(a){a=a.accelerationIncludingGravity.x||a.accelerationIncludingGravity.y||a.accelerationIncludingGravity.z;if(window.orientation){var b=window.orientation;"number"===typeof b&&this.addEntropy(b,1,"accelerometer")}a&&this.addEntropy(a,2,"accelerometer");C(this,0)}};
|
||||
function A(a,b){var c,d=sjcl.random.K[a],e=[];for(c in d)d.hasOwnProperty(c)&&e.push(d[c]);for(c=0;c<e.length;c++)e[c](b)}function C(a,b){"undefined"!==typeof window&&window.performance&&"function"===typeof window.performance.now?a.addEntropy(window.performance.now(),b,"loadtime"):a.addEntropy((new Date).valueOf(),b,"loadtime")}function y(a){a.b=z(a).concat(z(a));a.L=new sjcl.cipher.aes(a.b)}function z(a){for(var b=0;4>b&&(a.h[b]=a.h[b]+1|0,!a.h[b]);b++);return a.L.encrypt(a.h)}
|
||||
function B(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6);
|
||||
a:try{var D,E,F,G;if(G="undefined"!==typeof module&&module.exports){var H;try{H=require("crypto")}catch(a){H=null}G=E=H}if(G&&E.randomBytes)D=E.randomBytes(128),D=new Uint32Array((new Uint8Array(D)).buffer),sjcl.random.addEntropy(D,1024,"crypto['randomBytes']");else if("undefined"!==typeof window&&"undefined"!==typeof Uint32Array){F=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(F);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(F);
|
||||
else break a;sjcl.random.addEntropy(F,1024,"crypto['getRandomValues']")}}catch(a){"undefined"!==typeof window&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(a))}
|
||||
sjcl.json={defaults:{v:1,iter:1E4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.g({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.g(f,c);c=f.adata;"string"===typeof f.salt&&(f.salt=sjcl.codec.base64.toBits(f.salt));"string"===typeof f.iv&&(f.iv=sjcl.codec.base64.toBits(f.iv));if(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||"string"===typeof a&&100>=f.iter||64!==f.ts&&96!==f.ts&&128!==f.ts||128!==f.ks&&192!==f.ks&&0x100!==f.ks||2>f.iv.length||
|
||||
4<f.iv.length)throw new sjcl.exception.invalid("json encrypt: invalid parameters");"string"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,f),a=g.key.slice(0,f.ks/32),f.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.publicKey&&(g=a.kem(),f.kemtag=g.tag,a=g.key.slice(0,f.ks/32));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));"string"===typeof c&&(f.adata=c=sjcl.codec.utf8String.toBits(c));g=new sjcl.cipher[f.cipher](a);e.g(d,f);d.key=a;f.ct="ccm"===f.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&
|
||||
b instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.encrypt(g,b,f.iv,c,f.ts):sjcl.mode[f.mode].encrypt(g,b,f.iv,c,f.ts);return f},encrypt:function(a,b,c,d){var e=sjcl.json,f=e.ja.apply(e,arguments);return e.encode(f)},ia:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json;b=e.g(e.g(e.g({},e.defaults),b),c,!0);var f,g;f=b.adata;"string"===typeof b.salt&&(b.salt=sjcl.codec.base64.toBits(b.salt));"string"===typeof b.iv&&(b.iv=sjcl.codec.base64.toBits(b.iv));if(!sjcl.mode[b.mode]||!sjcl.cipher[b.cipher]||"string"===
|
||||
typeof a&&100>=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4<b.iv.length)throw new sjcl.exception.invalid("json decrypt: invalid parameters");"string"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,b),a=g.key.slice(0,b.ks/32),b.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.secretKey&&(a=a.unkem(sjcl.codec.base64.toBits(b.kemtag)).slice(0,b.ks/32));"string"===typeof f&&(f=sjcl.codec.utf8String.toBits(f));g=new sjcl.cipher[b.cipher](a);f="ccm"===
|
||||
b.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&b.ct instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.decrypt(g,b.ct,b.iv,b.tag,f,b.ts):sjcl.mode[b.mode].decrypt(g,b.ct,b.iv,f,b.ts);e.g(d,b);d.key=a;return 1===c.raw?f:sjcl.codec.utf8String.fromBits(f)},decrypt:function(a,b,c,d){var e=sjcl.json;return e.ia(a,e.decode(b),c,d)},encode:function(a){var b,c="{",d="";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid("json encode: invalid property name");c+=d+'"'+
|
||||
b+'":';d=",";switch(typeof a[b]){case "number":case "boolean":c+=a[b];break;case "string":c+='"'+escape(a[b])+'"';break;case "object":c+='"'+sjcl.codec.base64.fromBits(a[b],0)+'"';break;default:throw new sjcl.exception.bug("json encode: unsupported type");}}return c+"}"},decode:function(a){a=a.replace(/\s/g,"");if(!a.match(/^\{.*\}$/))throw new sjcl.exception.invalid("json decode: this isn't json!");a=a.replace(/^\{|\}$/g,"").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i)))throw new sjcl.exception.invalid("json decode: this isn't json!");
|
||||
null!=d[3]?b[d[2]]=parseInt(d[3],10):null!=d[4]?b[d[2]]=d[2].match(/^(ct|adata|salt|iv)$/)?sjcl.codec.base64.toBits(d[4]):unescape(d[4]):null!=d[5]&&(b[d[2]]="true"===d[5])}return b},g:function(a,b,c){void 0===a&&(a={});if(void 0===b)return a;for(var d in b)if(b.hasOwnProperty(d)){if(c&&void 0!==a[d]&&a[d]!==b[d])throw new sjcl.exception.invalid("required parameter overridden");a[d]=b[d]}return a},sa:function(a,b){var c={},d;for(d in a)a.hasOwnProperty(d)&&a[d]!==b[d]&&(c[d]=a[d]);return c},ra:function(a,
|
||||
b){var c={},d;for(d=0;d<b.length;d++)void 0!==a[b[d]]&&(c[b[d]]=a[b[d]]);return c}};sjcl.encrypt=sjcl.json.encrypt;sjcl.decrypt=sjcl.json.decrypt;sjcl.misc.pa={};sjcl.misc.cachedPbkdf2=function(a,b){var c=sjcl.misc.pa,d;b=b||{};d=b.iter||1E3;c=c[a]=c[a]||{};d=c[d]=c[d]||{firstSalt:b.salt&&b.salt.length?b.salt.slice(0):sjcl.random.randomWords(2,0)};c=void 0===b.salt?d.firstSalt:b.salt;d[c]=d[c]||sjcl.misc.pbkdf2(a,c,b.iter);return{key:d[c].slice(0),salt:c.slice(0)}};
|
||||
"undefined"!==typeof module&&module.exports&&(module.exports=sjcl);"function"===typeof define&&define([],function(){return sjcl});
|
||||
BIN
making-of/assets/static/manic/1.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
making-of/assets/static/manic/10.jpg
Normal file
|
After Width: | Height: | Size: 757 KiB |
BIN
making-of/assets/static/manic/11.jpg
Normal file
|
After Width: | Height: | Size: 660 KiB |
BIN
making-of/assets/static/manic/2.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
making-of/assets/static/manic/3.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
making-of/assets/static/manic/4.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
making-of/assets/static/manic/5.jpg
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
making-of/assets/static/manic/6.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
making-of/assets/static/manic/7.jpg
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
making-of/assets/static/manic/8.jpg
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
making-of/assets/static/manic/9.jpg
Normal file
|
After Width: | Height: | Size: 695 KiB |
478
making-of/assets/static/map.dot
Normal file
@ -0,0 +1,478 @@
|
||||
digraph Map {
|
||||
node[shape="box"]
|
||||
label=""
|
||||
|
||||
// The following must appear before the ally group in order to position them
|
||||
// on the left side.
|
||||
node[group="aside",style="",fontcolor="#111111"]
|
||||
"Aside 1" [href="/aside/1"]
|
||||
"Aside 2" [href="/aside/2"]
|
||||
"Aside 3" [href="/aside/3"]
|
||||
|
||||
"Dreams 1" [href="/aside/dreams/1"]
|
||||
"Dreams 2" [href="/aside/dreams/2"]
|
||||
/* "Dreams 3" [href="/aside/dreams/3"] */
|
||||
|
||||
node[group="dad",style="filled",fillcolor="#cccccc",fontcolor="#222222"]
|
||||
"Dad 1" [href="/dad/1"]
|
||||
"Dad 2" [href="/dad/2"]
|
||||
"Dad 3" [href="/dad/3"]
|
||||
"Dad 4" [href="/dad/4"]
|
||||
"Dad 5" [href="/dad/5"]
|
||||
"Dad 6" [href="/dad/6"]
|
||||
"Dad 7" [href="/dad/7"]
|
||||
"Dad 8" [href="/dad/8"]
|
||||
"Dad 9" [href="/dad/9"]
|
||||
"Dad 10" [href="/dad/10"]
|
||||
"Dad 11" [href="/dad/11"]
|
||||
"Dad 1" -> "Dad 2" -> "Dad 3" -> "Dad 4" -> "Dad 5" ->
|
||||
"Dad 6" -> "Dad 7" -> "Dad 8" -> "Dad 9" -> "Dad 10" ->
|
||||
"Dad 11"
|
||||
|
||||
node[group="pnm",style="filled",fillcolor="#2f082a",fontcolor="#ccccdd"]
|
||||
"Poet and Mystic 1" [href="/poet-and-mystic"]
|
||||
"Poet and Mystic 2" [href="/poet-and-mystic/2"]
|
||||
"Poet and Mystic 3" [href="/poet-and-mystic/3"]
|
||||
"Poet and Mystic 4" [href="/poet-and-mystic/4"]
|
||||
"Poet and Mystic 5" [href="/poet-and-mystic/5"]
|
||||
"Poet and Mystic 6" [href="/poet-and-mystic/6"]
|
||||
"Poet and Mystic 7" [href="/poet-and-mystic/7"]
|
||||
"Poet and Mystic 8" [href="/poet-and-mystic/8"]
|
||||
"Poet and Mystic 9" [href="/poet-and-mystic/9"]
|
||||
"Poet and Mystic 10" [href="/poet-and-mystic/10"]
|
||||
"Poet and Mystic 11" [href="/poet-and-mystic/11"]
|
||||
"Poet and Mystic 12" [href="/poet-and-mystic/12"]
|
||||
"Poet and Mystic 13" [href="/poet-and-mystic/13"]
|
||||
"Poet and Mystic 1" -> "Poet and Mystic 2" -> "Poet and Mystic 3" ->
|
||||
"Poet and Mystic 4" -> "Poet and Mystic 5" -> "Poet and Mystic 6" ->
|
||||
"Poet and Mystic 7" -> "Poet and Mystic 8" -> "Poet and Mystic 9" ->
|
||||
"Poet and Mystic 10" -> "Poet and Mystic 11" -> "Poet and Mystic 12" ->
|
||||
"Poet and Mystic 13"
|
||||
|
||||
node[group="ane",style="",fontcolor="#111111"]
|
||||
"Agony and Ecstasy" [href="/poet-and-mystic/agony-and-ecstasy"]
|
||||
"Audio" [href="/poet-and-mystic/agony-and-ecstasy/audio"]
|
||||
"Video" [href="/poet-and-mystic/agony-and-ecstasy/video"]
|
||||
"Text" [href="/poet-and-mystic/agony-and-ecstasy/text"]
|
||||
"Agony and Ecstasy" -> "Audio"
|
||||
"Agony and Ecstasy" -> "Video"
|
||||
"Agony and Ecstasy" -> "Text"
|
||||
|
||||
node[group="overflowing",style="filled",fillcolor="#aaaaaa",fontcolor="#000000"]
|
||||
"Overflowing" [href="/poet-and-mystic/overflowing"]
|
||||
|
||||
node[group="with",style="filled",fillcolor="#666666",fontcolor="#cccccc"]
|
||||
"With" [href="/poet-and-mystic/overflowing/with"]
|
||||
|
||||
node[group="words",style="filled",fillcolor="#000000",fontcolor="#777777"]
|
||||
"Words 1" [href="/poet-and-mystic/overflowing/with/words"]
|
||||
"Words 2" [href="/poet-and-mystic/overflowing/with/words/2"]
|
||||
"Words 3" [href="/poet-and-mystic/overflowing/with/words/3"]
|
||||
"Words 4" [href="/poet-and-mystic/overflowing/with/words/4"]
|
||||
"Words 5" [href="/poet-and-mystic/overflowing/with/words/5"]
|
||||
"Words 6" [href="/poet-and-mystic/overflowing/with/words/6"]
|
||||
"Words 7" [href="/poet-and-mystic/overflowing/with/words/7"]
|
||||
"Words 8" [href="/poet-and-mystic/overflowing/with/words/8"]
|
||||
"Words 1" -> "Words 2" -> "Words 3" -> "Words 4" -> "Words 5" ->
|
||||
"Words 6" -> "Words 7" -> "Words 8"
|
||||
|
||||
node[group="from-within",style="filled",fillcolor="#333a18",fontcolor="#ccddcc"]
|
||||
"From within 1" [href="/from-within/"]
|
||||
"From within 2" [href="/from-within/2"]
|
||||
"From within 3" [href="/from-within/3",fillcolor="#283a26"]
|
||||
"From within 4" [href="/from-within/4",fillcolor="#082a16",fontcolor="#bbccbb"]
|
||||
"From within 5" [href="/from-within/5",fillcolor="#082010",fontcolor="#aabbaa"]
|
||||
"From within 6" [href="/from-within/i-guess..",fillcolor="#001a06",fontcolor="#aabbaa"]
|
||||
"From within 1" -> "From within 2" -> "From within 3" -> "From within 4" ->
|
||||
"From within 5" -> "From within 6"
|
||||
|
||||
node[group="jay",style="filled",fillcolor="#eeddff",fontcolor="#222288"]
|
||||
"Jay 1" [href="/jay/"]
|
||||
"Jay 2" [href="/jay/2"]
|
||||
"Jay 3" [href="/jay/3"]
|
||||
"Jay 4" [href="/jay/4"]
|
||||
"Jay 5" [href="/jay/5"]
|
||||
"Jay 6" [href="/jay/6"]
|
||||
"Jay 1" -> "Jay 2" -> "Jay 3" -> "Jay 4" -> "Jay 5" -> "Jay 6"
|
||||
|
||||
node[group="liminal",style="",fontcolor="#111111"]
|
||||
"Liminal 1" [href="/liminal"]
|
||||
"Liminal 2" [href="/liminal/2"]
|
||||
"Liminal 3" [href="/liminal/3"]
|
||||
"Liminal 4" [href="/liminal/4"]
|
||||
"Liminal 5" [href="/liminal/5"]
|
||||
"Liminal 6" [href="/liminal/6"]
|
||||
"Liminal 7" [href="/liminal/7"]
|
||||
"Liminal 8" [href="/liminal/8"]
|
||||
"Liminal 1" -> "Liminal 2" -> "Liminal 3" -> "Liminal 4" ->
|
||||
"Liminal 5" -> "Liminal 6" -> "Liminal 7" -> "Liminal 8"
|
||||
|
||||
node[group="poly",style="",fontcolor="#111111"]
|
||||
"Poly 1" [href="/poly"]
|
||||
"Poly 2" [href="/poly/2"]
|
||||
"Poly 3" [href="/poly/3"]
|
||||
"Poly 4" [href="/poly/4"]
|
||||
"Poly 5" [href="/poly/5"]
|
||||
"Poly 6" [href="/poly/6"]
|
||||
"Poly 1" -> "Poly 2" -> "Poly 3" -> "Poly 4" -> "Poly 5" -> "Poly 6"
|
||||
|
||||
node[group="rape",style="filled",fillcolor="#330000",fontcolor="#dccccc"]
|
||||
"Rape 1" [href="/sex/rape"]
|
||||
"Rape 2" [href="/sex/rape/2"]
|
||||
"Rape 3" [href="/sex/rape/3"]
|
||||
"Rape 4" [href="/sex/rape/4"]
|
||||
"Rape 1" -> "Rape 2" -> "Rape 3" -> "Rape 4"
|
||||
|
||||
node[group="sex",style="filled",fillcolor="#eeeef8",fontcolor="#111111"]
|
||||
"Sex 1" [href="/sex"]
|
||||
"Sex 2" [href="/sex/2"]
|
||||
"Sex 3" [href="/sex/3"]
|
||||
"Sex 4" [href="/sex/4"]
|
||||
"Sex 5" [href="/sex/5"]
|
||||
"Sex 6" [href="/sex/6"]
|
||||
"Sex 7" [href="/sex/7"]
|
||||
"Sex 8" [href="/sex/8"]
|
||||
"Sex 9" [href="/sex/9"]
|
||||
"Sex 10" [href="/sex/10"]
|
||||
"Sex 1" -> "Sex 2" -> "Sex 3" -> "Sex 4" -> "Sex 5" -> "Sex 6" -> "Sex 7" ->
|
||||
"Sex 8" -> "Sex 9" -> "Sex 10"
|
||||
|
||||
node[group="kink",style="filled",fillcolor="#17111a",fontcolor="#ffffff"]
|
||||
"Kink 1" [href="/sex/kink"]
|
||||
"Kink 2" [href="/sex/kink/2"]
|
||||
"Kink 3" [href="/sex/kink/3"]
|
||||
"Kink 4" [href="/sex/kink/4"]
|
||||
"Kink 1" -> "Kink 2" -> "Kink 3" -> "Kink 4"
|
||||
|
||||
node[group="aside",style="",fontcolor="#111111"]
|
||||
"Dreams 3" [href="/aside/dreams/3"]
|
||||
|
||||
node[group="software",style="filled",fillcolor="#eaf5ff",fontcolor="#05264c"]
|
||||
"Software 1" [href="https://github.com/makyo/ally/pull/4/commits/c7d73fc7a727d34728b353a2c428b0da71788bf0"]
|
||||
"Software 2" [href="https://github.com/makyo/ally/pull/4/commits/04b7300615386bccbb331caebcf396077f6fc9ea"]
|
||||
"Software 3" [href="https://github.com/makyo/ally/pull/4/commits/d73e63f3fdc0bce89f06334959ade28888a2f7b2"]
|
||||
"Software 4" [href="https://github.com/makyo/ally/pull/4/commits/90acc199cd80944f6c5eb6834a2fa67783db4d7d"]
|
||||
"Software 5" [href="https://github.com/makyo/ally/pull/4/commits/49f83b2148f70151c43f8ef77a061e7252d9b1d4"]
|
||||
"Software 6" [href="https://github.com/makyo/ally/pull/4/commits/ab8302ca2f6ca00c0a5bdfebcb4b2f2291ec9833"]
|
||||
"Software 1" -> "Software 2" -> "Software 3" -> "Software 4" ->
|
||||
"Software 5" -> "Software 6"
|
||||
|
||||
node[group="burnout",style="",fontcolor="#111111"]
|
||||
"Burnout 1" [href="/burnout"]
|
||||
"Burnout 2" [href="/burnout/2"]
|
||||
"Burnout 3" [href="/burnout/3"]
|
||||
"Burnout 4" [href="/burnout/4"]
|
||||
"Burnout 1" -> "Burnout 2" -> "Burnout 3" -> "Burnout 4"
|
||||
|
||||
// This is the central axis
|
||||
node[group="ally",style="",fontcolor="#111111"] // `core` folder
|
||||
"ally 1" [href="/"]
|
||||
"ally 2" [href="/2"]
|
||||
"ally 3" [href="/3"]
|
||||
"ally 4" [href="/4"]
|
||||
"ally 5" [href="/5"]
|
||||
"ally 6" [href="/6"]
|
||||
"ally 7" [href="/7"]
|
||||
"ally 8" [href="/8"]
|
||||
"ally 9" [href="/9"]
|
||||
"ally 10" [href="/10"]
|
||||
"ally 11" [href="/11"]
|
||||
"ally 12" [href="/12"]
|
||||
"ally 13" [href="/13"]
|
||||
"ally 14" [href="/14"]
|
||||
"ally 15" [href="/15"]
|
||||
"ally 16" [href="/16"]
|
||||
"ally 17" [href="/17"]
|
||||
"ally 18" [href="/18"]
|
||||
"ally 19" [href="/19"]
|
||||
"ally 20" [href="/20"]
|
||||
"ally 21" [href="/21"]
|
||||
"ally 22" [href="/22"]
|
||||
"ally 23" [href="/23"]
|
||||
"ally 24" [href="/24"]
|
||||
"ally 25" [href="/25"]
|
||||
"ally 26" [href="/26"]
|
||||
"ally 27" [href="/27"]
|
||||
"ally 28" [href="/28"]
|
||||
"ally 29" [href="/29"]
|
||||
"To be continued..." [shape="none"]
|
||||
"ally 1" -> "ally 2" -> "ally 3" -> "ally 4" -> "ally 5" ->
|
||||
"ally 6" -> "ally 7" -> "ally 8" -> "ally 9" -> "ally 10" ->
|
||||
"ally 11" -> "ally 12" -> "ally 13" -> "ally 14" -> "ally 15" ->
|
||||
"ally 16" -> "ally 17" -> "ally 18" -> "ally 19" -> "ally 20" ->
|
||||
"ally 21" -> "ally 22" -> "ally 23" -> "ally 24" -> "ally 25" ->
|
||||
"ally 26" -> "ally 27" -> "ally 28" -> "ally 29" -> "To be continued..."
|
||||
|
||||
node[group="birds",style="",fontcolor="#111111"]
|
||||
"Birds 1" [href="/birds"]
|
||||
"Birds 2" [href="/birds/2"]
|
||||
"Birds 3" [href="/birds/3"]
|
||||
"Birds 4" [href="/birds/4"]
|
||||
"Birds 5" [href="/birds/5"]
|
||||
"Birds 1" -> "Birds 2" -> "Birds 3" -> "Birds 4" -> "Birds 5"
|
||||
|
||||
// Must come before Furry to position it to the left.
|
||||
node[group="koan",style="filled",fillcolor="#1f183a",fontcolor="#ccccdd"]
|
||||
"Koan 1" [href="/koan/"]
|
||||
"Koan 2" [href="/koan/2"]
|
||||
"Koan 3" [href="/koan/3"]
|
||||
"Koan 4" [href="/koan/4"]
|
||||
"Koan 5" [href="/koan/5"]
|
||||
"Koan 6" [href="/koan/6"]
|
||||
"Koan 1" -> "Koan 2" -> "Koan 3" -> "Koan 4" -> "Koan 5" -> "Koan 6"
|
||||
|
||||
node[group="fursona",style="",fontcolor="#111111"]
|
||||
"Fursoñas 1" [href="/furry/fursona/"]
|
||||
"Fursoñas 2" [href="/furry/fursona/2"]
|
||||
"Fursoñas 3" [href="/furry/fursona/3"]
|
||||
"Fursoñas 4" [href="/furry/fursona/4"]
|
||||
"Fursoñas 5" [href="/furry/fursona/5"]
|
||||
"Fursoñas 6" [href="/furry/fursona/6"]
|
||||
"Fursoñas 7" [href="/furry/fursona/7"]
|
||||
"Fursoñas 8" [href="/furry/fursona/8"]
|
||||
"Fursoñas 1" -> "Fursoñas 2" -> "Fursoñas 3" -> "Fursoñas 4" ->
|
||||
"Fursoñas 5" -> "Fursoñas 6" -> "Fursoñas 7" -> "Fursoñas 8"
|
||||
|
||||
node[group="furry",style="",fontcolor="#111111"]
|
||||
"Furry 1" [href="/furry"]
|
||||
"Furry 2" [href="/furry/2"]
|
||||
"Furry 3" [href="/furry/3"]
|
||||
"Furry 4" [href="/furry/4"]
|
||||
"Furry 5" [href="/furry/5"]
|
||||
"Furry 6" [href="/furry/6"]
|
||||
"Furry 7" [href="/furry/7"]
|
||||
"Furry 1" -> "Furry 2" -> "Furry 3" -> "Furry 4" -> "Furry 5" ->
|
||||
"Furry 6" -> "Furry 7"
|
||||
|
||||
node[group="margaras"]
|
||||
"Margaras 1" [href="/furry/margaras"]
|
||||
"Margaras 2" [href="/furry/margaras/2"]
|
||||
"Margaras 3" [href="/furry/margaras/3"]
|
||||
"Margaras 4" [href="/furry/margaras/4"]
|
||||
"Margaras 5" [href="/furry/margaras/5"]
|
||||
"Margaras 6" [href="/furry/margaras/6"]
|
||||
"Margaras 1" -> "Margaras 2" -> "Margaras 3" -> "Margaras 4" ->
|
||||
"Margaras 5" -> "Margaras 6"
|
||||
|
||||
node[group="younes"]
|
||||
"Younes 1" [href="/furry/younes"]
|
||||
"Younes 2" [href="/furry/younes/2"]
|
||||
"Younes 3" [href="/furry/younes/3"]
|
||||
"Younes 1" -> "Younes 2" -> "Younes 3"
|
||||
|
||||
node[group="mania",style="filled",fillcolor="#000000",fontcolor="#dddddd"]
|
||||
"Manic notes 1" [href="/mania/"]
|
||||
"Manic notes 2" [href="/mania/2"]
|
||||
"Manic notes 3" [href="/mania/3"]
|
||||
"Manic notes 4" [href="/mania/4"]
|
||||
"Manic notes 5" [href="/mania/5"]
|
||||
"Manic notes 1" -> "Manic notes 2" -> "Manic notes 3" -> "Manic notes 4" ->
|
||||
"Manic notes 5"
|
||||
|
||||
node[group="mp",style="",fontcolor="#111111"]
|
||||
"Manifesto Project 1" [href="/manifesto-project"]
|
||||
"Manifesto Project 2" [href="/manifesto-project/2"]
|
||||
"Manifesto Project 3" [href="/manifesto-project/3"]
|
||||
"Manifesto Project 4" [href="/manifesto-project/4"]
|
||||
"Manifesto Project 5" [href="/manifesto-project/5"]
|
||||
"Manifesto Project 6" [href="/manifesto-project/6"]
|
||||
"Manifesto Project 7" [href="/manifesto-project/7"]
|
||||
"Manifesto Project 8" [href="/manifesto-project/8"]
|
||||
"Manifesto Project 9" [href="/manifesto-project/9"]
|
||||
"Manifesto Project 10" [href="/manifesto-project/10"]
|
||||
"Manifesto Project 11" [href="/manifesto-project/11"]
|
||||
"Manifesto Project 12" [href="/manifesto-project/12"]
|
||||
"Manifesto Project 13" [href="/manifesto-project/13"]
|
||||
"Manifesto Project 14" [href="/manifesto-project/14"]
|
||||
"Manifesto Project 1" -> "Manifesto Project 2" -> "Manifesto Project 3" ->
|
||||
"Manifesto Project 4" -> "Manifesto Project 5" -> "Manifesto Project 6" ->
|
||||
"Manifesto Project 7" -> "Manifesto Project 8" -> "Manifesto Project 9" ->
|
||||
"Manifesto Project 10" -> "Manifesto Project 11" ->
|
||||
"Manifesto Project 12" -> "Manifesto Project 13" ->
|
||||
"Manifesto Project 14"
|
||||
|
||||
node[group="gender",style="",fontcolor="#111111"]
|
||||
"Gender 1" [href="/gender"]
|
||||
"Gender 2" [href="/gender/2"]
|
||||
"Gender 3" [href="/gender/3"]
|
||||
"Gender 4" [href="/gender/4"]
|
||||
"Gender 5" [href="/gender/5"]
|
||||
"Gender 6" [href="/gender/6"]
|
||||
"Gender 7" [href="/gender/7"]
|
||||
"Gender 8" [href="/gender/8"]
|
||||
"Gender 9" [href="/gender/9"]
|
||||
"Gender 1" -> "Gender 2" -> "Gender 3" -> "Gender 4" -> "Gender 5" ->
|
||||
"Gender 6" -> "Gender 7" -> "Gender 8" -> "Gender 9"
|
||||
|
||||
node[group="surgery"]
|
||||
"Surgery 1" [href="/gender/surgery"]
|
||||
"Surgery 2" [href="/gender/surgery/2"]
|
||||
"Surgery 3" [href="/gender/surgery/3"]
|
||||
"Surgery 4" [href="/gender/surgery/4"]
|
||||
"Surgery 5" [href="/gender/surgery/5"]
|
||||
"Surgery 6" [href="/gender/surgery/6"]
|
||||
"Surgery 7" [href="/gender/surgery/7"]
|
||||
"Surgery 8" [href="/gender/surgery/8"]
|
||||
"Surgery 9" [href="/gender/surgery/9"]
|
||||
"Surgery 10" [href="/gender/surgery/10"]
|
||||
"Surgery 1" -> "Surgery 2" -> "Surgery 3" -> "Surgery 4" ->
|
||||
"Surgery 5" -> "Surgery 6" -> "Surgery 7" -> "Surgery 8" ->
|
||||
"Surgery 9" -> "Surgery 10"
|
||||
|
||||
node[group="sh",style="filled",fillcolor="#222228",fontcolor="#dddddd"]
|
||||
"Self-harm 1" [href="/self-harm"]
|
||||
"Self-harm 2" [href="/self-harm/2"]
|
||||
"Self-harm 3" [href="/self-harm/3"]
|
||||
"Self-harm 1" -> "Self-harm 2" -> "Self-harm 3"
|
||||
|
||||
node[group="suicide",style="filled",fillcolor="#222222",fontcolor="#aaaaaa"]
|
||||
"Suicide 1" [href="/self-harm/suicide"]
|
||||
"Suicide 2" [href="/self-harm/suicide/2"]
|
||||
"Suicide 3" [href="/self-harm/suicide/3"]
|
||||
"Suicide 4" [href="/self-harm/suicide/4"]
|
||||
"Suicide 5" [href="/self-harm/suicide/5"]
|
||||
"Suicide 6" [href="/self-harm/suicide/6"]
|
||||
"Suicide 7" [href="/self-harm/suicide/7"]
|
||||
"Suicide 8" [href="/self-harm/suicide/8"]
|
||||
"Suicide 9" [href="/self-harm/suicide/9"]
|
||||
"Suicide 10" [href="/self-harm/suicide/10"]
|
||||
"Suicide 11" [href="/self-harm/suicide/11"]
|
||||
"Suicide 12" [href="/self-harm/suicide/12"]
|
||||
"Suicide 13" [href="/self-harm/suicide/13"]
|
||||
"Suicide 1" -> "Suicide 2" -> "Suicide 3" ->
|
||||
"Suicide 4" -> "Suicide 5" -> "Suicide 6" -> "Suicide 7" ->
|
||||
"Suicide 8" -> "Suicide 9" -> "Suicide 10" -> "Suicide 11" ->
|
||||
"Suicide 12" -> "Suicide 13"
|
||||
|
||||
node[group="writing",style="",fontcolor="#111111"]
|
||||
"Writing 1" [href="/writing"]
|
||||
"Writing 2" [href="/writing/2"]
|
||||
"Writing 3" [href="/writing/3"]
|
||||
"Writing 4" [href="/writing/4"]
|
||||
"Writing 5" [href="/writing/5"]
|
||||
"Writing 6" [href="/writing/6"]
|
||||
"Writing 7" [href="/writing/7"]
|
||||
"Writing 1" -> "Writing 2" -> "Writing 3" -> "Writing 4" -> "Writing 5" ->
|
||||
"Writing 6" -> "Writing 7"
|
||||
|
||||
node[group="music",style="",fontcolor="#111111"]
|
||||
"Music 1" [href="/writing/music"]
|
||||
"Music 2" [href="/writing/music/2"]
|
||||
"Music 3" [href="/writing/music/3"]
|
||||
"Music 4" [href="/writing/music/4"]
|
||||
"Music 5" [href="/writing/music/5"]
|
||||
"Music 1" -> "Music 2" -> "Music 3" -> "Music 4" -> "Music 5"
|
||||
|
||||
node[group="movement",style="filled",fillcolor="#e6e6fa",fontcolor="#220000"]
|
||||
"Movement 1" [href="/movement"]
|
||||
"Movement 2" [href="/movement/2"]
|
||||
"Movement 3" [href="/movement/3"]
|
||||
"Movement 4" [href="/movement/4"]
|
||||
"Movement 5" [href="/movement/5"]
|
||||
"Movement 6" [href="/movement/6"]
|
||||
"Movement 7" [href="/movement/7"]
|
||||
"Movement 8" [href="/movement/8"]
|
||||
"Movement 9" [href="/movement/9"]
|
||||
"Movement 1" -> "Movement 2" -> "Movement 3" -> "Movement 4" ->
|
||||
"Movement 5" -> "Movement 6" -> "Movement 7" -> "Movement 8" ->
|
||||
"Movement 9"
|
||||
|
||||
/**
|
||||
Connections
|
||||
|
||||
Connections should only lead from one quest to another the first time that
|
||||
link appears. No need to link to a quest a second time.
|
||||
|
||||
Wasn't the point of this to be intentionally confusing?
|
||||
|
||||
Yeah, but it was grating on me. All of those lines crossing, all those curves, side-quests pushed way down the page because I linked to them too many times.
|
||||
*/
|
||||
|
||||
// Asides
|
||||
"ally 14" -> "Aside 1"
|
||||
"Liminal 4" -> "Aside 2"
|
||||
"Poet and Mystic 7" -> "Aside 3"
|
||||
|
||||
// Birds
|
||||
/* none */
|
||||
|
||||
// ally
|
||||
"ally 8" -> "Manic notes 1"
|
||||
"ally 9" -> "Birds 1"
|
||||
"ally 10" -> "Poly 1"
|
||||
"ally 11" -> "From within 1"
|
||||
"ally 13" -> "Furry 1"
|
||||
"ally 15" -> "Liminal 1"
|
||||
"ally 16" -> "Poet and Mystic 1"
|
||||
"ally 17" -> "Writing 1"
|
||||
"ally 18" -> "Software 1"
|
||||
"ally 23" -> "Movement 1"
|
||||
"ally 29" -> "Burnout 1"
|
||||
|
||||
// Dad
|
||||
"Dad 11" -> "ally 16"
|
||||
|
||||
// From within
|
||||
"From within 6" -> "ally 12"
|
||||
|
||||
// Furry
|
||||
// Fursona
|
||||
/* none */
|
||||
|
||||
// Margaras
|
||||
/* none */
|
||||
|
||||
// Younes
|
||||
"Younes 3" -> "Self-harm 1"
|
||||
"Furry 1" -> "Koan 1"
|
||||
"Furry 2" -> "Fursoñas 1"
|
||||
"Furry 6" -> "Margaras 1"
|
||||
"Furry 7" -> "Younes 1"
|
||||
|
||||
// Jay
|
||||
"Jay 3" -> "Dreams 1"
|
||||
|
||||
// Koan
|
||||
/* none */
|
||||
|
||||
// Liminal
|
||||
"Liminal 8" -> "Dad 1"
|
||||
|
||||
// Manic notes
|
||||
"Manic notes 4" -> "Manifesto Project 1"
|
||||
|
||||
// Manifesto Project
|
||||
/* none */
|
||||
|
||||
// Poet and Mystic
|
||||
/*"Poet and Mystic 1" -> "Manifesto Project 1"*/
|
||||
"Poet and Mystic 13" -> "Agony and Ecstasy"
|
||||
"Poet and Mystic 8" -> "Dreams 2"
|
||||
"Poet and Mystic 11" -> "Overflowing" -> "With" -> "Words 1"
|
||||
|
||||
// Poly
|
||||
"Poly 1" -> "Jay 1"
|
||||
"Poly 6" -> "Sex 1"
|
||||
|
||||
// Self-harm
|
||||
/*"Self-harm 1" -> "Margaras 1"*/
|
||||
"Self-harm 3" -> "Suicide 1"
|
||||
"Self-harm 3" -> "Gender 1"
|
||||
|
||||
// Gender
|
||||
"Gender 6" -> "Surgery 1"
|
||||
|
||||
// Sex
|
||||
"Sex 4" -> "Kink 1"
|
||||
"Sex 8" -> "Rape 1"
|
||||
"Sex 8" -> "Dreams 3"
|
||||
|
||||
// Writing
|
||||
/*"Writing 2" -> "Koans 1"
|
||||
"Writing 2" -> "Birds 1"
|
||||
"Writing 2" -> "Margaras 1"
|
||||
"Writing 2" -> "Dad 1"
|
||||
"Writing 2" -> "Fursoñas 1"
|
||||
"Writing 2" -> "Poet and Mystic 1"*/
|
||||
"Writing 7" -> "Music 1"
|
||||
}
|
||||
BIN
making-of/assets/static/map.png
Normal file
|
After Width: | Height: | Size: 308 KiB |
3585
making-of/assets/static/map.svg
Normal file
|
After Width: | Height: | Size: 172 KiB |
BIN
making-of/assets/static/master.pdf
Normal file
BIN
making-of/assets/static/master.png
Normal file
|
After Width: | Height: | Size: 289 KiB |
BIN
making-of/assets/static/miniatures/1-1.png
Normal file
|
After Width: | Height: | Size: 210 KiB |
BIN
making-of/assets/static/miniatures/1-2.png
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
making-of/assets/static/miniatures/1.mp3
Normal file
BIN
making-of/assets/static/miniatures/2-1.png
Normal file
|
After Width: | Height: | Size: 256 KiB |
BIN
making-of/assets/static/miniatures/2-2.png
Normal file
|
After Width: | Height: | Size: 243 KiB |
BIN
making-of/assets/static/miniatures/2.mp3
Normal file
BIN
making-of/assets/static/miniatures/3-1.png
Normal file
|
After Width: | Height: | Size: 209 KiB |
BIN
making-of/assets/static/miniatures/3.mp3
Normal file
BIN
making-of/assets/static/miniatures/4-1.png
Normal file
|
After Width: | Height: | Size: 261 KiB |
BIN
making-of/assets/static/miniatures/4-2.png
Normal file
|
After Width: | Height: | Size: 235 KiB |
BIN
making-of/assets/static/miniatures/4-3.png
Normal file
|
After Width: | Height: | Size: 257 KiB |
BIN
making-of/assets/static/miniatures/4-4.png
Normal file
|
After Width: | Height: | Size: 234 KiB |
BIN
making-of/assets/static/miniatures/4.mp3
Normal file
BIN
making-of/assets/static/miniatures/5-1.png
Normal file
|
After Width: | Height: | Size: 202 KiB |
BIN
making-of/assets/static/miniatures/5-2.png
Normal file
|
After Width: | Height: | Size: 189 KiB |
BIN
making-of/assets/static/miniatures/5.mp3
Normal file
BIN
making-of/assets/static/movement/copenhotel.jpg
Normal file
|
After Width: | Height: | Size: 144 KiB |
1570
making-of/assets/static/nmap.svg
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
making-of/assets/static/og-logo.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
making-of/assets/static/rock-park.jpg
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
making-of/assets/static/sex/kink/bingo.pdf
Normal file
BIN
making-of/assets/static/sex/kink/bingo.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
248
making-of/assets/static/sex/kink/bingo.svg
Normal file
@ -0,0 +1,248 @@
|
||||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg width="505" height="555" viewbox="0 0 505 555" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css?family=Nunito');
|
||||
|
||||
.bbbingo-card rect.background {
|
||||
fill: #223;
|
||||
stroke-width: 0px;
|
||||
}
|
||||
.bbbingo-card text {
|
||||
font-family: "Nunito", sans-serif;
|
||||
fill: #dcd;
|
||||
}
|
||||
.bbbingo-card text.title {
|
||||
font-size: 45px;
|
||||
font-style: italic;
|
||||
}
|
||||
.bbbingo-card tspan.paler {
|
||||
fill: #656;
|
||||
}
|
||||
.bbbingo-card tspan.pale {
|
||||
fill: #989;
|
||||
}
|
||||
.bbbingo-card rect {
|
||||
fill: none;
|
||||
stroke: #bab;
|
||||
stroke-width: 5px;
|
||||
}
|
||||
.bbbingo-card rect.selected {
|
||||
fill: #445;
|
||||
stroke: #fef;
|
||||
}
|
||||
.bbbingo-card path {
|
||||
fill: #656;
|
||||
opacity: 0.5;
|
||||
}
|
||||
.bbbingo-card text.freespace {
|
||||
font-size: 10pt;
|
||||
opacity: 0.5;
|
||||
}
|
||||
.bbbingo-card .text g text {
|
||||
font-size: 12px;
|
||||
}
|
||||
.bbbingo-card a, a:visited, a:active, a:hover {
|
||||
fill: #dcd;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.bbbingo-card rect.target {
|
||||
fill: transparent;
|
||||
stroke: none;
|
||||
}
|
||||
.bbbingo-card circle.play_marker {
|
||||
display: none;
|
||||
}
|
||||
.bbbingo-card circle.marked {
|
||||
display: block;
|
||||
fill: #f8b;
|
||||
opacity: 0.4;
|
||||
}
|
||||
</style>
|
||||
<g class="bbbingo-card" transform="translate(2.5, 2.25)">
|
||||
<rect class="background" x="-2.5" y="-2.5" width="507.5" height="557.5" />
|
||||
<text class="title" x="0" y="0" dominant-baseline="hanging">
|
||||
<tspan class="paler">b</tspan>
|
||||
<tspan class="pale">b</tspan>
|
||||
b
|
||||
i
|
||||
n
|
||||
g
|
||||
o
|
||||
</text>
|
||||
<text class="name" x="500" y="0" dominant-baseline="hanging" text-anchor="end"><a xlink:href="/preparations-squadrons-voices-spans" target="_blank">Kink Bingo (Maddy)</a> (2)</text>
|
||||
<text class="author" x="500" y="20px" dominant-baseline="hanging" text-anchor="end">by <a xlink:href="/~makyo">makyo</a></text>
|
||||
<g transform="translate(0, 50)">
|
||||
<rect x="0" y="0" width="100" height="100" class="slot_0" />
|
||||
<rect x="100" y="0" width="100" height="100" class="slot_1" />
|
||||
<rect x="200" y="0" width="100" height="100" class="slot_2" />
|
||||
<rect x="300" y="0" width="100" height="100" class="slot_3" />
|
||||
<rect x="400" y="0" width="100" height="100" class="slot_4" />
|
||||
|
||||
<rect x="0" y="100" width="100" height="100" class="slot_5" />
|
||||
<rect x="100" y="100" width="100" height="100" class="slot_6" />
|
||||
<rect x="200" y="100" width="100" height="100" class="slot_7" />
|
||||
<rect x="300" y="100" width="100" height="100" class="slot_8" />
|
||||
<rect x="400" y="100" width="100" height="100" class="slot_9" />
|
||||
|
||||
<rect x="0" y="200" width="100" height="100" class="slot_10" />
|
||||
<rect x="100" y="200" width="100" height="100" class="slot_11" />
|
||||
<rect x="200" y="200" width="100" height="100" class="slot_12" />
|
||||
<rect x="300" y="200" width="100" height="100" class="slot_13" />
|
||||
<rect x="400" y="200" width="100" height="100" class="slot_14" />
|
||||
|
||||
<rect x="0" y="300" width="100" height="100" class="slot_15" />
|
||||
<rect x="100" y="300" width="100" height="100" class="slot_16" />
|
||||
<rect x="200" y="300" width="100" height="100" class="slot_17" />
|
||||
<rect x="300" y="300" width="100" height="100" class="slot_18" />
|
||||
<rect x="400" y="300" width="100" height="100" class="slot_19" />
|
||||
|
||||
<rect x="0" y="400" width="100" height="100" class="slot_20" />
|
||||
<rect x="100" y="400" width="100" height="100" class="slot_21" />
|
||||
<rect x="200" y="400" width="100" height="100" class="slot_22" />
|
||||
<rect x="300" y="400" width="100" height="100" class="slot_23" />
|
||||
<rect x="400" y="400" width="100" height="100" class="slot_24" />
|
||||
|
||||
|
||||
<path d="M 202.5 242.5 l 40 -40 l -40 0 z" />
|
||||
<text class="freespace" transform="rotate(-45) translate(-12.5, 310)">Free</text>
|
||||
|
||||
|
||||
<g class="text">
|
||||
<g transform="translate(0, 0)">
|
||||
<text x="50" y="53" text-anchor="middle">Degradation</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_0" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="0" />
|
||||
</g>
|
||||
<g transform="translate(100, 0)">
|
||||
<text x="50" y="53" text-anchor="middle">Scent marking</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_1" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="1" />
|
||||
</g>
|
||||
<g transform="translate(200, 0)">
|
||||
<text x="50" y="53" text-anchor="middle">Breeding</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_2" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="2" />
|
||||
</g>
|
||||
<g transform="translate(300, 0)">
|
||||
<text x="50" y="53" text-anchor="middle">Non-consensual</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_3" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="3" />
|
||||
</g>
|
||||
<g transform="translate(400, 0)">
|
||||
<text x="50" y="45" text-anchor="middle">Risk of</text><text x="50" y="60" text-anchor="middle">pregnancy</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_4" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="4" />
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, 100)">
|
||||
<text x="50" y="53" text-anchor="middle">Scruff biting</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_5" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="5" />
|
||||
</g>
|
||||
<g transform="translate(100, 100)">
|
||||
<text x="50" y="45" text-anchor="middle">Leash or collar</text><text x="50" y="60" text-anchor="middle">pulling</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_6" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="6" />
|
||||
</g>
|
||||
<g transform="translate(200, 100)">
|
||||
<text x="50" y="53" text-anchor="middle">Teasing</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_7" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="7" />
|
||||
</g>
|
||||
<g transform="translate(300, 100)">
|
||||
<text x="50" y="38" text-anchor="middle">Exhibitionism</text><text x="50" y="53" text-anchor="middle">(primarily</text><text x="50" y="68" text-anchor="middle">public sex)</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_8" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="8" />
|
||||
</g>
|
||||
<g transform="translate(400, 100)">
|
||||
<text x="50" y="30" text-anchor="middle">Identity</text><text x="50" y="45" text-anchor="middle">(gender,</text><text x="50" y="60" text-anchor="middle">species, etc)</text><text x="50" y="75" text-anchor="middle">denial</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_9" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="9" />
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, 200)">
|
||||
<text x="50" y="53" text-anchor="middle">Heat/estrus</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_10" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="10" />
|
||||
</g>
|
||||
<g transform="translate(100, 200)">
|
||||
<text x="50" y="53" text-anchor="middle">Breath control</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_11" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="11" />
|
||||
</g>
|
||||
<g transform="translate(200, 200)">
|
||||
<text x="50" y="53" text-anchor="middle">Humiliation</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_12" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="12" />
|
||||
</g>
|
||||
<g transform="translate(300, 200)">
|
||||
<text x="50" y="53" text-anchor="middle">Knotting/tying</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_13" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="13" />
|
||||
</g>
|
||||
<g transform="translate(400, 200)">
|
||||
<text x="50" y="30" text-anchor="middle">Ear play</text><text x="50" y="45" text-anchor="middle">(teasing,</text><text x="50" y="60" text-anchor="middle">pulling,</text><text x="50" y="75" text-anchor="middle">biting, etc)</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_14" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="14" />
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, 300)">
|
||||
<text x="50" y="38" text-anchor="middle">Discipline</text><text x="50" y="53" text-anchor="middle">or</text><text x="50" y="68" text-anchor="middle">reinforcement</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_15" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="15" />
|
||||
</g>
|
||||
<g transform="translate(100, 300)">
|
||||
<text x="50" y="23" text-anchor="middle">Weakened mental</text><text x="50" y="38" text-anchor="middle">state (hypno,</text><text x="50" y="53" text-anchor="middle">drugs, estrus,</text><text x="50" y="68" text-anchor="middle">exhaustion,</text><text x="50" y="83" text-anchor="middle">etc)</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_16" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="16" />
|
||||
</g>
|
||||
<g transform="translate(200, 300)">
|
||||
<text x="50" y="53" text-anchor="middle">Master/pet</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_17" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="17" />
|
||||
</g>
|
||||
<g transform="translate(300, 300)">
|
||||
<text x="50" y="45" text-anchor="middle">Humiliating</text><text x="50" y="60" text-anchor="middle">instructions</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_18" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="18" />
|
||||
</g>
|
||||
<g transform="translate(400, 300)">
|
||||
<text x="50" y="45" text-anchor="middle">Speech</text><text x="50" y="60" text-anchor="middle">restrictions</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_19" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="19" />
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, 400)">
|
||||
<text x="50" y="38" text-anchor="middle">Pain/blood</text><text x="50" y="53" text-anchor="middle">(accidental</text><text x="50" y="68" text-anchor="middle">or intentional)</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_20" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="20" />
|
||||
</g>
|
||||
<g transform="translate(100, 400)">
|
||||
<text x="50" y="45" text-anchor="middle">Orgasm or</text><text x="50" y="60" text-anchor="middle">pleasure denial</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_21" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="21" />
|
||||
</g>
|
||||
<g transform="translate(200, 400)">
|
||||
<text x="50" y="15" text-anchor="middle">Clothes</text><text x="50" y="30" text-anchor="middle">(bulges, cum</text><text x="50" y="45" text-anchor="middle">stains on</text><text x="50" y="60" text-anchor="middle">clothes,</text><text x="50" y="75" text-anchor="middle">clothed sex,</text><text x="50" y="90" text-anchor="middle">etc)</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_22" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="22" />
|
||||
</g>
|
||||
<g transform="translate(300, 400)">
|
||||
<text x="50" y="23" text-anchor="middle">Post-sex</text><text x="50" y="38" text-anchor="middle">degradation</text><text x="50" y="53" text-anchor="middle">(public</text><text x="50" y="68" text-anchor="middle">parading,</text><text x="50" y="83" text-anchor="middle">etc)</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_23" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="23" />
|
||||
</g>
|
||||
<g transform="translate(400, 400)">
|
||||
<text x="50" y="53" text-anchor="middle">Coercion</text>
|
||||
<circle cx="50" cy="50" r="35" class="play_marker play_24" />
|
||||
<rect x="0" y="0" width="100" height="100" class="target" data-slot="24" />
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
||||
<path d="M 202.5 242.5 l 40 -40 l -40 0 z" />
|
||||
<text class="freespace" transform="rotate(-45) translate(-12.5, 310)">Free</text>
|
||||
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
BIN
making-of/assets/static/ts-graph.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
making-of/assets/the.foxes-3.png
Normal file
|
After Width: | Height: | Size: 17 KiB |