(function () {\n version.extensions['replaceMacro'] = {\n major: 1,\n minor: 3,\n revision: 0\n };\n macros['continue'] = macros['insert'] = macros['replace'] = {\n handler: function (g, e, f, b) {\n var h = insertElement(null, "span", null, "replacement");\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var a = b.source.slice(k);\n var d = -1;\n var c = '';\n var l = 0;\n var el = e.length\n if (e=="continue") {\n d=k+a.length;\n c=a;\n } else for(var i = 0; i < a.length; i++) {\n if(a.substr(i, 7 + el) == '<<end' + e + '>>') {\n if(l == 0) {\n d = k + i + 7 + el;\n break;\n }\n else {\n l--;\n c += a.charAt(i);\n }\n }\n else {\n if(a.substr(i, 2 + el) == '<<' + e) {\n l++;\n }\n c += a.charAt(i);\n }\n }\n if(d != -1) {\n var m = Wikifier.createInternalLink(g, null);\n m.className = "internalLink replaceLink";\n insertText(m, f[0]);\n insertText(h, c);\n g.appendChild(h);\n h.style.display = "none";\n m.onclick = function () {\n var n = this.nextSibling;\n if(n) {\n var t = n.firstChild ? n.firstChild.nodeValue : "";\n removeChildren(n);\n new Wikifier(n, t);\n n.style.display = "inline";\n n.classList.add("replacement-in");\n setTimeout(function () {\n n.classList.remove("replacement-in");\n }, 1);\n scrollWindowTo(n);\n }\n if(e == "insert") {\n var p = document.createElement("span");\n p.innerHTML = this.innerHTML;\n p.className = this.className + " disabled";\n this.parentNode.insertBefore(p, this.nextSibling);\n }\n this.parentNode.removeChild(this);\n }\n b.nextMatch = d;\n }\n else {\n throwError(g, "can't find matching end" + e);\n return;\n }\n }\n }\n macros['endinsert'] = macros['endreplace'] = {\n handler: function () {}\n }\n scrollWindowTo=function(E){var D=window.scrollY?window.scrollY:document.body.scrollTop;\n var G=J(E);if(!G){return;}var C=Math.abs(D-G);var B=0;var I=(D>G)?-1:1;var F=window.setInterval(H,25);\n function H(){B+=0.1;window.scrollTo(0,D+I*(C*Math.easeInOut(B)));if(B>=1){window.clearInterval(F);\n }}function J(N){var O=A(N);var P=O+N.offsetHeight;var K=window.scrollY?window.scrollY:document.body.scrollTop;\n var L=window.innerHeight?window.innerHeight:document.body.clientHeight;var M=K+L;\n if(O>=K){if(P>M){if(N.offsetHeight<L){return(O-(L-N.offsetHeight)+20);}else{return O;\n }}}}function A(K){var L=0;while(K.offsetParent){L+=K.offsetTop;K=K.offsetParent;}return L;\n }};\n}());\n
language is never just [[language]]
[[no|no4]], [[maybe?]]
<<timedremove 8s>>embody this \n<<timedinsert 3s>>negative space<<endtimedinsert>><<endtimedremove>><<timedremove 13s>><<timedinsert 10s>>[img[bathroomsign2.png]]<<endtimedinsert>><<endtimedremove>><<timedinsert 14s>>[[--]]<<endtimedinsert>>
create a beautiful system\n<<timedcontinue 3s>>create [[choice]]
zir [[or|or2]] hir
<<timedremove 4s>>this life and body are sometimes dissonant<<endtimedremove>><<timedinsert 5.5s>> it is different from mere [[noise]]<<endtimedinsert>>
<<timedremove 5s>>how many times have you been underlined\nor circled in red?<<endtimedremove>><<timedinsert 6s>> nearly always seen as a mistake<<endtimedinsert>>\n<<timedcontinue 7s>>as made-up\n<<timedcontinue 2s>>not [[real]]
<<timedremove 2.2s>> it <<endtimedremove>><<timedinsert 3.5s>> <<timedremove 2s>> it<<endtimedremove>><<endtimedinsert>><<timedinsert 7.5s>> <<timedremove 2s>> it<<endtimedremove>><<endtimedinsert>><<timedinsert 12s>><<continue "artist">> artist/ <<continue "queer">> queer/ <<continue "person">> person/ <<continue "body">> body/ <<continue "skin">> skin/ <<continue "flesh">> [[flesh]]<<endtimedinsert>>
<<fadeinsound "children 2.mp3">><<timedremove 7s>>Exibit A: \n\nwill not choose between playing with boys\nand playing with girls\n\nmother is told by teacher that this is unusual<<endtimedremove>><<timedremove 15s>><<timedinsert 9s>>Exibit B:\n\nyoung girl shoved into boys' bathrooms\nbruised, scratched, crying\nconfused by whatever it is they see<<endtimedinsert>><<endtimedremove>><<timedcontinue 17s>>Exibit C:\n\nstares into mirror at developing breasts\n\nremembers a movie in which a girl \nused duct tape\nto make them disappear for a time\n\ndoes not [[blink]] at torn skin
[[he]] <<timedcontinue 2s>> [[she]] <<timedcontinue 2s>> [[it]]
<<continue "artist">> artist/ <<continue "queer">> queer/ <<continue "person">> person/ <<continue "body">> body/ <<continue "skin">> skin/ <<continue "flesh">> flesh/ <<continue "blood">>[[blood]]
my own negation surprises [[me|no4]]\n
[[he?]] [[she?]] [[they?]] [[ze?]]
if that is all we are\n<<timedcontinue 3s>>why do we require more [[evidence]] of our being?
it would have been a half truth\n\n<<timedcontinue 3s>> always half [[truths|no4]]
<<if $he eq 1 and $she eq 1>>\n<<display "next">>\n<<else>>\n<<display "two2">>\n<<endif>>
[[no|archeologists2]]
(function () {\n version.extensions['revisionMacros'] = {\n major: 1,\n minor: 2,\n revision: 0\n };\n\n function tagcontents(b, starttags, desttags, endtags, k) {\n function tagfound(i, e) {\n for (var j = 0; j < e.length; j++) {\n if (a.indexOf(e[j], i) == i) {\n return e[j];\n }\n }\n }\n var a = b.source.slice(k);\n var l = 0;\n var c = "";\n var tg;\n for (var i = 0; i < a.length; i++) {\n if (tg = tagfound(i, starttags)) {\n l++;\n }\n else if ((tg = tagfound(i, desttags)) && l == 0) {\n b.nextMatch = k + i + tg.length;\n return [c, tg];\n }\n else if (tg = tagfound(i, endtags)) {\n l--;\n if (l < 0) {\n return null;\n }\n }\n c += a.charAt(i);\n }\n return null;\n }\n macros['cycle'] = macros['insertion'] = macros['removal'] = macros['revision'] = macros['span'] = {\n handler: function (g, e, f, b) {\n var begintags = ["<<revision", "<<cycle", "<<insertion", "<<removal", "<<span"];\n var becomes = ["<<becomes>>", "<<gains>>"];\n var endtags = ["<<endrevision>>", "<<endcycle>>", "<<endinsertion>>", "<<endremoval>>", "<<endspan>>"];\n var name = f[0].replace(" ", "_");\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var c, vsns, vsn, i, cn, vtype,m,h;\n vsns = [];\n c = tagcontents(b, begintags, becomes.concat(endtags), endtags, k);\n if (c && endtags.indexOf(c[1]) == -1) {\n while (c) {\n vsns.push(c);\n c = tagcontents(b, begintags, becomes, endtags, b.nextMatch);\n }\n c = tagcontents(b, begintags, ["<<end" + e + ">>"], endtags, b.nextMatch);\n }\n if (!c) {\n throwError(g, "can't find matching end" + e);\n return;\n }\n vsns.push(c);\n i = 0;\n cn = 0;\n m = insertElement(g, "span", null, e + " " + name);\n if (vsns.length > 0) {\n h = insertElement(m, "span", null, "revision-span initial");\n }\n else {\n h = m;\n }\n if (e == "insertion") {\n h.style.display = "none";\n }\n h.setAttribute("data-enabled", (e != "insertion") + "");\n vsn = vsns.shift();\n h.tweecode = vsn[0];\n while (vsns.length > 0) {\n i += 1;\n vtype = vsn[1].slice(2, -2);\n vsn = vsns.shift();\n h = insertElement(m, "span", null, "revision-span " + vtype);\n h.tweecode = vsn[0];\n h.setAttribute("data-enabled", "false");\n h.style.display = "none";\n }\n h = m.firstChild;\n new Wikifier(h, h.tweecode);\n }\n }\n var de = "data-enabled";\n\n function revise(rt, rname) {\n var rall, r, rc, rcl, ind, ind2, curr, next, ins, rmv, cyc, rev, rnd;\n rev = (rt == "revert");\n rnd = (rt.indexOf("random") > -1);\n var rsp = "revision-span";\n\n function showVer(n) {\n n.innerHTML = "";\n new Wikifier(n, n.tweecode);\n n.setAttribute(de, "true");\n n.style.display = "inline";\n n.classList.remove(rsp + "-out");\n n.classList.add(rsp + "-in");\n if (n.timeout) clearTimeout(n.timeout);\n n.timeout = setTimeout(function () {\n n.classList.remove(rsp + "-in");\n }, 1);\n }\n\n function hideVer(n) {\n n.setAttribute(de, "false");\n n.classList.remove(rsp + "-in");\n n.classList.add(rsp + "-out");\n if (n.timeout) clearTimeout(n.timeout);\n n.timeout = setTimeout(function () {\n if (n.getAttribute(de) == "false") {\n n.classList.remove(rsp + "-out");\n n.style.display = "none";\n n.innerHTML = "";\n }\n }, 1000);\n }\n\n function doToGainerSpans(n, fn) {\n for (var k = n - 1; k >= 0; k--) {\n if (rc[k + 1].classList.contains("gains")) {\n fn(rc[k]);\n }\n else break;\n }\n }\n rall = document.getElementsByClassName(rname);\n for (var i = 0; i < rall.length; i++) {\n r = rall[i];\n rc = r.childNodes;\n ins = r.classList.contains("insertion");\n rmv = r.classList.contains("removal");\n cyc = r.classList.contains("cycle");\n rcl = rc.length - 1;\n ind = -1;\n for (var k = 0; k <= rcl; k++) {\n if (rc[k].getAttribute(de) == "true") {\n ind = k;\n }\n }\n if (ind == -1) {\n if (ins) {\n ind = -1;\n curr = null;\n }\n else if (rmv) {\n ind = rcl + 1;\n curr = null;\n }\n }\n else {\n if (rev) {\n ind -= 1;\n }\n curr = (ind >= 0 ? rc[ind] : (cyc ? rc[rcl] : null));\n }\n ind2 = ind;\n if (rnd) {\n ind2 = (ind + (Math.floor(Math.random() * rcl))) % rcl;\n }\n next = (ind2 < rcl ? rc[ind2 + 1] : (cyc ? rc[0] : null));\n var docurr = (rev ? showVer : hideVer);\n var donext = (rev ? hideVer : showVer);\n if (curr) {\n if (!(next && next.classList.contains("gains")) || rnd) {\n docurr(curr);\n doToGainerSpans(ind, docurr);\n }\n }\n if (next) {\n donext(next);\n if (rnd) {\n doToGainerSpans(ind2 + 1, donext);\n }\n }\n }\n }\n\n macros['revert'] = macros['revise'] = macros['randomise'] = macros['randomize'] = {\n handler: function (a, b, c) {\n var l, rev, rname;\n\n function disableLink(l) {\n l.style.display = "none";\n }\n\n function enableLink(l) {\n l.style.display = "inline";\n }\n\n function updateLink(l) {\n if (l.className.indexOf("random") > -1) {\n enableLink(l);\n return;\n }\n var rall = document.getElementsByClassName(rname);\n var cannext, canprev;\n for (var i = 0; i < rall.length; i++) {\n var r = rall[i];\n if (r.classList.contains("cycle")) {\n cannext = canprev = true;\n }\n else {\n var rc = r.childNodes;\n var rcl = rc.length;\n var ins = r.classList.contains("insertion");\n var rmv = r.classList.contains("removal");\n var rnd = rname.indexOf("random") > -1;\n var ind = -1;\n for (var k = 0; k < rc.length; k++) {\n if (rc[k].getAttribute(de) == "true") {\n ind = k;\n }\n }\n if (ind == -1 && (ins || rmv)) {\n (ins ? cannext = true : canprev = true);\n }\n if (ind > (ins ? -1 : 0)) {\n canprev = true;\n }\n if (ind > -1 && ind < (rmv ? rcl : rcl - 1)) {\n cannext = true;\n }\n }\n }\n var can = (l.classList.contains("revert") ? canprev : cannext);\n (can ? enableLink : disableLink)(l);\n }\n function toggleText(w) {\n w.classList.toggle(rl + "Enabled");\n w.classList.toggle(rl + "Disabled");\n w.style.display = ((w.style.display == "none") ? "inline" : "none");\n }\n var rl = "reviseLink";\n if (c.length < 2) {\n throwError(a, b + ' macro needs 2 parameters');\n return;\n }\n rname = c.shift().replace(" ", "_");\n l = Wikifier.createInternalLink(a, null);\n l.className = "internalLink " + rl + " " + rl + "_" + rname + " " + b;\n var v = "";\n var end = false;\n var out = false;\n if(c.length>1 && c[0][0] == "$") {\n v = c[0].slice(1);\n c.shift();\n }\n switch(c[c.length - 1]) {\n case "end":\n end = true;\n c.pop();\n break;\n case "out":\n out = true;\n c.pop();\n break;\n }\n var h = state.history[0].variables;\n for(var i = 0; i < c.length; i++) {\n var on = (i == Math.max(c.indexOf(h[v]), 0));\n var d = insertElement(null, "span", null, rl + ((on) ? "En" : "Dis") + "abled");\n if(on) {\n h[v] = c[i];\n l.setAttribute("data-cycle", i);\n } else {\n d.style.display="none";\n }\n insertText(d, c[i]);\n l.appendChild(d);\n }\n l.onclick = function () {\n revise(b, rname);\n var t = this.childNodes;\n var u = this.getAttribute("data-cycle") - 0;\n var m = t.length;\n if((end || out) && u == m - (end ? 2 : 1)) {\n if (end) {\n var n = this.removeChild(t[u + 1]);\n n.className = rl + "End";\n n.style.display = "inline";\n this.parentNode.replaceChild(n, this);\n } else {\n this.parentNode.removeChild(this);\n return;\n }\n } else {\n toggleText(t[u]);\n u = (u + 1) % m;\n if(v) {\n h[v] = c[u];\n }\n toggleText(t[u]);\n this.setAttribute("data-cycle", u);\n }\n var lall = document.getElementsByClassName(rl + "_" + rname);\n for (var i = 0; i < lall.length; i++) {\n updateLink(lall[i]);\n }\n };\n disableLink(l);\n setTimeout(function () {\n updateLink(l);\n }, 1);\n }\n }\n macros['hoverrevise'] = {\n handler: function (a, b, c, d) {\n var endtags = ["<<end" + b + ">>"];\n var t = tagcontents(d, ["<<" + b + ">>"], endtags, endtags, d.source.indexOf('>>', d.matchStart) + 2);\n if (t) {\n var rname = c[0].replace(" ", "_");\n h = insertElement(a, "span", null, "hoverrevise hoverrevise_" + rname);\n new Wikifier(h, t[0]);\n h.onmouseover = function () {\n revise("revise", rname);\n }\n h.onmouseout = function () {\n revise("revert", rname);\n }\n }\n }\n }\n macros['becomes'] = macros['gains'] = macros['endrevision'] = macros['endinsertion'] = macros['endremoval'] = macros[\n 'endcycle'] = macros['endhoverrevise'] = {\n handler: function () {}\n }\n\n}());
(function () {\n version.extensions['timedreplaceMacro'] = {\n major: 2,\n minor: 3,\n revision: 0\n };\n macros['timedcontinue'] = macros['timedinsert'] = macros['timedreplace'] = {\n handler: function (g, e, f, b) {\n function cssTimeUnit(s) {\n if (typeof s == "string") {\n if (s.slice(-2).toLowerCase() == "ms") {\n return Number(s.slice(0, -2)) || 0;\n }\n else if (s.slice(-1).toLowerCase() == "s") {\n return Number(s.slice(0, -1)) * 1000 || 0;\n }\n }\n throwError(g, s + " isn't a CSS time unit");\n return 0;\n }\n\n function tagcontents(starttag, endtag, k) {\n var a = b.source.slice(k);\n var l = 0;\n var c = "";\n for (var i = 0; i < a.length; i++) {\n var w = endtag.length;\n if (a.substr(i, w) == endtag) {\n if (l == 0) {\n b.nextMatch = k + i + w;\n return c;\n }\n else {\n l--;\n c += a.charAt(i);\n }\n }\n else {\n if (a.substr(i, starttag.length) == starttag) {\n l++;\n }\n c += a.charAt(i);\n }\n }\n return "";\n }\n var tr = "<<" + e;\n var rw = "<<replacewith>>";\n var etr = "<<end" + e + ">>";\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var c, d;\n if (e == "timedcontinue") {\n d = b.source.slice(k);\n b.nextMatch = k + d.length;\n }\n else if (e == "timedreplace") {\n c = tagcontents(tr, rw, k);\n d = tagcontents((c ? rw : tr), etr, c ? b.nextMatch : k);\n }\n else if (e == "timedinsert") {\n d = tagcontents(tr, etr, k);\n }\n else if (e == "timedremove") {\n c = tagcontents(tr, etr, k);\n }\n var tm;\n tm = cssTimeUnit(f[0]);\n var h;\n if (c) {\n if (d) {\n g = insertElement(g, "span", null, "timedreplacements");\n }\n h = insertElement(g, "span", null, "timedreplacement timedremove");\n new Wikifier(h, c);\n if (d || e == "timedremove") {\n setTimeout(function () {\n h.classList.add("replacement-out");\n setTimeout(function () {\n h.parentNode.removeChild(h);\n }, 1000);\n }, tm);\n }\n }\n if (d) {\n var m = insertElement(g, "span", null, "timedreplacement timedinsert", d);\n m.style.display = "none";\n setTimeout(function () {\n if (m) {\n var t = m.firstChild ? m.firstChild.nodeValue : "";\n removeChildren(m);\n new Wikifier(m, t);\n m.style.display = "inline";\n m.classList.add("replacement-in");\n setTimeout(function () {\n m.classList.remove("replacement-in");\n }, 1);\n scrollWindowTo(m);\n }\n }, tm);\n }\n else if (!c && e != "timedremove") {\n throwError(g, "can't find matching end" + e);\n return;\n }\n }\n }\n macros['timedremove'] = macros['timedreplace'];\n macros['replacewith'] = macros['endtimedinsert'] = macros['endtimedremove'] = macros['endtimedreplace'] = {\n handler: function () {}\n }\n scrollWindowTo=function(E){var D=window.scrollY?window.scrollY:document.body.scrollTop;\n var G=J(E);if(!G){return;}var C=Math.abs(D-G);var B=0;var I=(D>G)?-1:1;var F=window.setInterval(H,25);\n function H(){B+=0.1;window.scrollTo(0,D+I*(C*Math.easeInOut(B)));if(B>=1){window.clearInterval(F);\n }}function J(N){var O=A(N);var P=O+N.offsetHeight;var K=window.scrollY?window.scrollY:document.body.scrollTop;\n var L=window.innerHeight?window.innerHeight:document.body.clientHeight;var M=K+L;\n if(O>=K){if(P>M){if(N.offsetHeight<L){return(O-(L-N.offsetHeight)+20);}else{return O;\n }}}}function A(K){var L=0;while(K.offsetParent){L+=K.offsetTop;K=K.offsetParent;}return L;\n }};\n}());
(function () {\n version.extensions['replaceMacro'] = {\n major: 1,\n minor: 3,\n revision: 0\n };\n macros['continue'] = macros['insert'] = macros['replace'] = {\n handler: function (g, e, f, b) {\n var h = insertElement(null, "span", null, "replacement");\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var a = b.source.slice(k);\n var d = -1;\n var c = '';\n var l = 0;\n var el = e.length\n if (e=="continue") {\n d=k+a.length;\n c=a;\n } else for(var i = 0; i < a.length; i++) {\n if(a.substr(i, 7 + el) == '<<end' + e + '>>') {\n if(l == 0) {\n d = k + i + 7 + el;\n break;\n }\n else {\n l--;\n c += a.charAt(i);\n }\n }\n else {\n if(a.substr(i, 2 + el) == '<<' + e) {\n l++;\n }\n c += a.charAt(i);\n }\n }\n if(d != -1) {\n var m = Wikifier.createInternalLink(g, null);\n m.className = "internalLink replaceLink";\n insertText(m, f[0]);\n insertText(h, c);\n g.appendChild(h);\n h.style.display = "none";\n m.onclick = function () {\n var n = this.nextSibling;\n if(n) {\n var t = n.firstChild ? n.firstChild.nodeValue : "";\n removeChildren(n);\n new Wikifier(n, t);\n n.style.display = "inline";\n n.classList.add("replacement-in");\n setTimeout(function () {\n n.classList.remove("replacement-in");\n }, 1);\n scrollWindowTo(n);\n }\n if(e == "insert") {\n var p = document.createElement("span");\n p.innerHTML = this.innerHTML;\n p.className = this.className + " disabled";\n this.parentNode.insertBefore(p, this.nextSibling);\n }\n this.parentNode.removeChild(this);\n }\n b.nextMatch = d;\n }\n else {\n throwError(g, "can't find matching end" + e);\n return;\n }\n }\n }\n macros['endinsert'] = macros['endreplace'] = {\n handler: function () {}\n }\n scrollWindowTo=function(E){var D=window.scrollY?window.scrollY:document.body.scrollTop;\n var G=J(E);if(!G){return;}var C=Math.abs(D-G);var B=0;var I=(D>G)?-1:1;var F=window.setInterval(H,25);\n function H(){B+=0.1;window.scrollTo(0,D+I*(C*Math.easeInOut(B)));if(B>=1){window.clearInterval(F);\n }}function J(N){var O=A(N);var P=O+N.offsetHeight;var K=window.scrollY?window.scrollY:document.body.scrollTop;\n var L=window.innerHeight?window.innerHeight:document.body.clientHeight;var M=K+L;\n if(O>=K){if(P>M){if(N.offsetHeight<L){return(O-(L-N.offsetHeight)+20);}else{return O;\n }}}}function A(K){var L=0;while(K.offsetParent){L+=K.offsetTop;K=K.offsetParent;}return L;\n }};\n}());\n
History.prototype.display=function(d,b,a){var c=tale.get(d);this.history.unshift({passage:c,variables:clone(this.history[0].variables)});\nthis.history[0].hash=this.save();var e=c.render();if(a!="offscreen"){removeChildren(document.getElementById("passages"));\ndocument.getElementById("passages").appendChild(e);if(a!="quietly"){fade(e,{fade:"in"});}}if((a=="quietly")||(a=="offscreen")){e.style.visibility="visible";\n}if(a!="offscreen"){document.title=tale.title;document.title+=": "+c.title;window.scroll(0,0);\n}return e;};
head {\n box-shadow: inset 0px 0px 30em #bbb;\n width:100%;\n height:100%;\n display:block;\n position:fixed;\n}\nhead * {\n display:none;\n}\nbody {\n background-color:#fff;\n margin: 0;\n text-align:center;\n}\n#passages {\n border-left: 0;\n margin: 0;\n padding: 0;\n line-height:100vh;\n}\n.passage {\n position:absolute;\n top: 100; bottom: 0; left: 0; right: 0;\n width: 75%;\n height: 75%;\n margin:auto;\n font: 4em/1em courier;\n color: #000;\n \nletter-spacing: -0.05em;\n text-align:center;\n\n}\na.internalLink, a.externalLink {\n color: #444;\ntext-decoration:none;\n}\na.internalLink:hover {\n color: #d26a19;\ntext-decoration:none;\n}\n#sidebar li{visibility: hidden;}\n\n[data-tags~=space] .char { \n transition: opacity 999s step-end; -webkit-transition: opacity 999s step-end;\n}\n[data-tags~=space] .char:hover {\n opacity:0;\n transition: opacity 1ms; -webkit-transition: opacity 1ms;\n}\n\n\n@media screen and (max-width: 960px) {\n body { font-size: 50%; }\n}\n@media screen and (max-width: 840px) {\n body { font-size: 40%; }\n}\n@media screen and (max-width: 720px) {\n body { \n font-size: 30%;\n }\n\n}\n.timedreplacement.replacement-in {\n opacity: 0;\n}\n.timedreplacement {\n transition: 1.5s;\n -webkit-transition: 1s;\n}\n.timedreplacement.replacement-out {\nposition:absolute; \nopacity: 0;\n}\n\n.timedreremove.replacement-in {\n opacity: 0;\n}\n.timedremove {\n transition: 2s;\n -webkit-transition: 1s;\n}\n.timedremove.remove-out {\nposition:absolute; \nopacity: 0;\n}\n[data-tags~=title] {font-size: 60px !important\n}\n\n.transition-in {\n position:absolute;\n opacity:0;\n}\n.passage {\n transition: 1s;\n -webkit-transition: 1s;\n}\n.transition-out {\n position:absolute;\n opacity:0;\n}
(function(){ var render2 = Passage.prototype.render; Passage.prototype.render = function () { var b = render2.call(this); var t = this.tags.join(" "); document.body.setAttribute("data-tags", t); b.setAttribute("data-tags",t); return b; }; if(state) { var tgs = state.history[0].passage.tags.join(" "); var fc = $('passages').firstChild; fc.setAttribute("data-tags",tgs); }}());
Wikifier.formatters.push({name:"char",match:".",handler:function(a){insertElement(a.output,"span",null,"char",a.matchText);\n}});Wikifier.formatters.forEach(function(e){if(e.name=="emdash"){e.handler=function(a){var b=insertElement(a.output,"span",null,"char",String.fromCharCode(8212));\n};}else{if(e.name=="prettyLink"){e.handler=function(a){var b=new RegExp(e.lookahead,"mg");\nb.lastIndex=a.matchStart;var c=b.exec(a.source);if(c&&c.index==a.matchStart&&c[2]){var d=Wikifier.createInternalLink(a.output,c[1]);\nsetPageElement(d,null,c[1]);a.nextMatch+=c[1].length+2;}else{if(c&&c.index==a.matchStart&&c[3]){var f;\nif(tale.has(c[4])){f=Wikifier.createInternalLink(a.output,c[4]);}else{f=Wikifier.createExternalLink(a.output,c[4]);\n}setPageElement(f,null,c[1]);a.nextMatch=c.index+c[0].length;}}};}}});
<<timedremove 9s>>"Escape is the need to get out of oneself\n\n<<timedinsert 3s>>to break that most radical and unalterably binding of chains,<<endtimedinsert>><<endtimedremove>><<timedinsert 10.5s>>the fact that the I [[is]] oneself”<<endtimedinsert>>
heartbeat <<timedcontinue 2s>>skin <<timedcontinue 1s>>sweat <<timedcontinue 1s>>drip\n<<timedremove 8s>><<timedinsert 4s>>my hands become clammy when you stare<<endtimedinsert>><<endtimedremove>><<timedremove 15s>><<timedinsert 9s>>wipe them on my <<cyclinglink "pants" "skirt">><<endtimedinsert>><<endtimedremove>><<timedinsert 17s>>I can't stop the question of whether you are trying to discern what is [[beneath]]<<endtimedinsert>>
\n(function () {\n version.extensions['soundMacros'] = {\n major: 1,\n minor: 1,\n revision: 1\n };\n var p = macros['playsound'] = {\n soundtracks: {},\n handler: function (a, b, c, d) {\n var loop = function (m) {\n if (m.loop == undefined) {\n m.loopfn = function () {\n this.play();\n };\n m.addEventListener('ended', m.loopfn, 0);\n } else m.loop = true;\n m.play();\n };\n var s = eval(d.fullArgs());\n if (s) {\n s = s.toString();\n var m = this.soundtracks[s.slice(0, s.lastIndexOf("."))];\n if (m) {\n if (b == "playsound") {\n m.play();\n } else if (b == "loopsound") {\n loop(m);\n } else if (b == "pausesound") {\n m.pause();\n } else if (b == "unloopsound") {\n if (m.loop != undefined) {\n m.loop = false;\n } else if (m.loopfn) {\n m.removeEventListener('ended', m.loopfn);\n delete m.loopfn;\n }\n } else if (b == "stopsound") {\n m.pause();\n m.currentTime = 0;\n } else if (b == "fadeoutsound" || b == "fadeinsound") {\n if (m.interval) clearInterval(m.interval);\n if (b == "fadeinsound") {\n if (m.currentTime>0) return;\n m.volume = 0;\n loop(m);\n } else {\n if (!m.currentTime) return;\n m.play();\n }\n var v = m.volume;\n m.interval = setInterval(function () {\n v = Math.min(1, Math.max(0, v + 0.005 * (b == "fadeinsound" ? 1 : -1)));\n m.volume = Math.easeInOut(v);\n if (v == 0 || v == 1) clearInterval(m.interval);\n if (v == 0) {\n m.pause();\n m.currentTime = 0;\n m.volume = 1;\n }\n }, 10);\n }\n }\n }\n }\n }\n macros['fadeinsound'] = p;\n macros['fadeoutsound'] = p;\n macros['unloopsound'] = p;\n macros['loopsound'] = p;\n macros['pausesound'] = p;\n macros['stopsound'] = p;\n macros['stopallsound'] = {\n handler: function () {\n var s = macros.playsound.soundtracks;\n for (var j in s) {\n var i = s[j];\n i.pause();\n i.currentTime = 0;\n }\n }\n }\n var div = $("storeArea").firstChild;\n var fe = ["ogg", "mp3", "wav", "webm"];\n while (div) {\n var b = String.fromCharCode(92);\n var q = '"';\n var re = "['" + q + "]([^" + q + "']*?)" + b + ".(ogg|mp3|wav|webm)['" + q + "]";\n k(new RegExp(re, "gi"));\n div = div.nextSibling;\n }\n\n function k(c, e) {\n do {\n var d = c.exec(div.innerHTML);\n if (d) {\n var a = new Audio();\n if (a.canPlayType) {\n for (var i = -1; i < fe.length; i += 1) {\n if (i >= 0) d[2] = fe[i];\n if (a.canPlayType("audio/" + d[2])) break;\n }\n if (i < fe.length) {\n a.setAttribute("src", d[1] + "." + d[2]);\n a.interval = null;\n macros.playsound.soundtracks[d[1]] = a;\n } else console.log("Browser can't play '" + d[1] + "'");\n }\n }\n } while (d);\n }\n}());\n
version.extensions["cyclinglinkMacro"] = {\n major: 3,\n minor: 2,\n revision: 0\n};\nmacros.cyclinglink = {\n handler: function (a, b, c) {\n var rl = "cyclingLink";\n function toggleText(w) {\n w.classList.toggle(rl + "Enabled");\n w.classList.toggle(rl + "Disabled");\n w.style.display = ((w.style.display == "none") ? "inline" : "none");\n }\n switch(c[c.length - 1]) {\n case "end":\n var end = true;\n c.pop();\n break;\n case "out":\n var out = true;\n c.pop();\n break;\n }\n var v = "";\n if(c.length && c[0][0] == "$") {\n v = c[0].slice(1);\n c.shift();\n }\n var h = state.history[0].variables;\n if (out && h[v] === "") {\n return;\n }\n var l = Wikifier.createInternalLink(a, null);\n l.className = "internalLink cyclingLink";\n l.setAttribute("data-cycle", 0);\n for(var i = 0; i < c.length; i++) {\n var on = (i == Math.max(c.indexOf(h[v]), 0));\n var d = insertElement(null, "span", null, "cyclingLink" + ((on) ? "En" : "Dis") + "abled");\n if(on) {\n h[v] = c[i];\n l.setAttribute("data-cycle", i);\n } else {\n d.style.display="none";\n }\n insertText(d, c[i]);\n if (on && end && i==c.length-1) {\n l.parentNode.replaceChild(d,l);\n } else l.appendChild(d);\n }\n l.onclick = function () {\n var t = this.childNodes;\n var u = this.getAttribute("data-cycle") - 0;\n var m = t.length;\n toggleText(t[u]);\n u = (u + 1);\n if (!(out && u==m)) {\n u %= m;\n if(v) {\n h[v] = c[u];\n }\n } else {\n h[v] = "";\n }\n if((end || out) && u == m - (end ? 1 : 0)) {\n if (end) {\n var n = this.removeChild(t[u]);\n n.className = rl + "End";\n n.style.display="inline";\n this.parentNode.replaceChild(n, this);\n } else {\n this.parentNode.removeChild(this);\n return;\n }\n return;\n }\n toggleText(t[u]);\n this.setAttribute("data-cycle", u);\n };\n }\n};\n
that question of [[real|real2]]
it is about what you see\n<<timedcontinue 2s>> what you claim\n<<timedcontinue 2s>> what you inscribe upon the [[body]]
[[he|no3]] [[she|no3]] [[ze]]
[[he|he4]] [[she|she4]]
(function(){ var render2 = Passage.prototype.render; Passage.prototype.render = function () { var b = render2.call(this); var t = this.tags.join(" "); document.body.setAttribute("data-tags", t); b.setAttribute("data-tags",t); return b; }; if(state) { var tgs = state.history[0].passage.tags.join(" "); var fc = $('passages').firstChild; fc.setAttribute("data-tags",tgs); }}());\n\nif(state) (function(){ var it = setInterval(function(){ var fd = $('passages').firstChild; if (fd!=fc) { clearInterval(it); fd.setAttribute("data-tags",tgs); } },0); }());
I'm so tired of this [[question]] of real
<<cyclinglink "yes" "no" "yes" "no" "yes" "no">> <<timedcontinue 4s>> or [[?|no6]]\n\n<<silently>> <<set $he =1>>\n<<endsilently>>
<<fadeoutsound "electronic.mp3">>occupy the [[breaths]] between
one does not have to feel like\n\n<<timedcontinue 2s>>neither\n\n<<timedcontinue 2s>>to feel constrained \nand torn\n\n<<timedcontinue 2s>>by [[two]]
[[please]]
--"stop me if this is not okay to ask...<<timedcontinue 3s>>but isn't it hard to be in that ambiguous space?<<timedcontinue 2s>>Don't you want to be seen as [[something]]?"
<<timedremove 8s>>at a local cafe\nprinted across the bathroom door:\n<<timedcontinue 2.5s>>half of what stands for a woman\n<<timedcontinue 2.5s>>half of what stands for a man<<endtimedremove>><<timedremove 15s>><<timedinsert 10s>>[img[bathroomsign2.png]]<<endtimedinsert>><<endtimedremove>>\n<<timedcontinue 16.5s>>neutrality always seems to be synonymous \n<<timedcontinue 2.5s>> with [[both]]
<<cyclinglink "yes" "no" "yes" "no" "yes" "no">><<timedcontinue 4s>> or [[?|no6]]\n\n<<silently>> <<set $she =1>>\n<<endsilently>>
this <<cyclinglink "is not" "is">> about [[pronouns]]
[[no|both2]]
[[he|he4]] <<timedcontinue 1s>> [[she|she4]]
<<timedremove 3s>>--"but it's not grammatically correct"<<endtimedremove>><<timedremove 7s>><<timedinsert 5s>>--"but it's rather confusing"<<endtimedinsert>><<endtimedremove>><<timedinsert 9s>>--"but you're just one person"<<endtimedinsert>>\n\n\n\n<<timedcontinue 12s>>--"but can't one [[contain]] multitudes?"
[[he|he2]] [[she|she2]] [[they]]
[[no|no4]]\n<<timedcontinue 2.5s>> though once I would have said, "[[yes]]"
let's share this\n<<timedcontinue 3s>>while remaining [[different]]
<<fadeoutsound "children 2.mp3">><<timedcontinue 2s>>must we always be [[archeologists]]?
[[no|no5]]
[[no]]
[[he|no3]] <<timedcontinue 2s>> [[she|no3]] <<timedcontinue 2s>> [[ze]]
[[he|he2]]<<timedcontinue 2s>> [[she|she2]]<<timedcontinue 2s>> [[they]]
[[it|felt]] is <<cyclinglink "relation" "embodied" "political" "felt" end>>
[[no|both2]]
<<fadeinsound "twine 6.mp3">>[[negative space]]\n\n<<silently>>\n<<set $he =0>>\n<<set $she =0>>\n<<endsilently>>
[[he]] [[she]] [[it]]
<<fadeoutsound "club2.mp3">><<timedcontinue 4s>>[[he?]] <<timedcontinue 2s>> [[she?]] <<timedcontinue 2s>> [[they?]] <<timedcontinue 2s>> [[ze?]]
sometimes...<<timedcontinue 3s>> for safety...<<timedcontinue 3s>> or because it is better than what they call its [[opposite|no4]]
<<fadeinsound "electronic.mp3">>skin <<timedcontinue 2s>>crawls\n\n<<timedcontinue 2s>>gnawing\n\n<<timedcontinue 1.5s>>turn me inside out\n\n<<timedcontinue 1.5s>>exposed\n\n<<timedcontinue 1.5s>>and\n\n<<timedcontinue 1.5s>>[[shivering|exposed]]\n\n
[[no]]
be only hypothetical [[or]] poetic
<<fadeinsound "club2.mp3">><<timedremove 25s>>dancing in the Castro\n<<timedcontinue 2s>>he leaned into me\n<<timedcontinue 2s>>pulled me close\n\n<<timedcontinue 1s>>only to be interrupted\n<<timedcontinue 2s>>told I was not a man\n\n<<timedcontinue 2s>>to which he responded\n<<timedcontinue 2s>>with a deep kiss\n\n<<timedcontinue 1s>>only to be interrupted\n\n<<timedcontinue 2s>>as I was pushed away\n<<timedcontinue 1.5s>>felt a hand search for my breasts\n<<timedcontinue 1.5s>>and squeeze tightly\n<<timedcontinue 1.5s>>fingers dug into flesh\n<<timedcontinue 1.5s>>leaving bruises\n<<timedcontinue 1.5s>>and fear<<endtimedremove>>\n<<timedinsert 27s>>this is what I think of when you [[ask]] me out dancing<<endtimedinsert>>
real [[------]] don't [[------]]
<<timedremove 5s>>I can sift through my history\n<<timedcontinue 2.5s>>find the evidence of what was before<<endtimedremove>><<timedcontinue 6.5s>>what if it is all just [[earth]]?
negative space\n\nby maddox pratt\n\n<<timedcontinue 4s>>macros and programming assistance by [[leon arnott|http://l.j-factor.com/]]\n\n<<timedcontinue 3s>> music by [[Goodwill & Hook N Sling|https://soundcloud.com/whompo/goodwill-hook-n-sling-take-you-higher-whomp-club-mix]]\n[[Colin Brogan|https://soundcloud.com/search?q=electronic%20study%201b]]\n
--"I just don't understand how someone can want to be...nothing"\n\n<<timedcontinue 3.5s>>--"I guess it's not a matter of wanting...<<timedcontinue 2s>>nor is the [[nothing]] //nothing//