git ssb

0+

Zach! / music-visions



Commit 16b15178d85688fc180af5d4c05fe1b924fbb754

refactor with template literals

Zach committed on 5/21/2018, 10:32:18 PM
Parent: ff1a418d0029c04d3d05537027bbd381a540dbbe

Files changed

bundle.jschanged
stores/songs.jschanged
bundle.jsView
@@ -1,224 +1,29 @@
1-(function(){
2-var _$browser_4 = {};
3-var cachedSetTimeout,cachedClearTimeout,process=_$browser_4={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(fun){if(cachedSetTimeout===setTimeout)return setTimeout(fun,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(fun,0);try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}!function(){try{cachedSetTimeout="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var currentQueue,queue=[],draining=!1,queueIndex=-1;function cleanUpNextTick(){draining&&currentQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var timeout=runTimeout(cleanUpNextTick);draining=!0;for(var len=queue.length;len;){for(currentQueue=queue,queue=[];++queueIndex<len;)currentQueue&&currentQueue[queueIndex].run();queueIndex=-1,len=queue.length}currentQueue=null,draining=!1,function(marker){if(cachedClearTimeout===clearTimeout)return clearTimeout(marker);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(marker);try{cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}(timeout)}}function Item(fun,array){this.fun=fun,this.array=array}function noop(){}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)args[i-1]=arguments[i];queue.push(new Item(fun,args)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title="browser",process.browser=!0,process.env={},process.argv=[],process.version="",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(name){return[]},process.binding=function(name){throw new Error("process.binding is not supported")},process.cwd=function(){return"/"},process.chdir=function(dir){throw new Error("process.chdir is not supported")},process.umask=function(){return 0};
4-
5-var _$pathBrowserify_24 = {};
6-(function (process){
7-function normalizeArray(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];"."===last?parts.splice(i,1):".."===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up--;up)parts.unshift("..");return parts}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};function filter(xs,f){if(xs.filter)return xs.filter(f);for(var res=[],i=0;i<xs.length;i++)f(xs[i],i,xs)&&res.push(xs[i]);return res}_$pathBrowserify_24.resolve=function(){for(var resolvedPath="",resolvedAbsolute=!1,i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();if("string"!=typeof path)throw new TypeError("Arguments to path.resolve must be strings");path&&(resolvedPath=path+"/"+resolvedPath,resolvedAbsolute="/"===path.charAt(0))}return resolvedPath=normalizeArray(filter(resolvedPath.split("/"),function(p){return!!p}),!resolvedAbsolute).join("/"),(resolvedAbsolute?"/":"")+resolvedPath||"."},_$pathBrowserify_24.normalize=function(path){var isAbsolute=_$pathBrowserify_24.isAbsolute(path),trailingSlash="/"===substr(path,-1);return(path=normalizeArray(filter(path.split("/"),function(p){return!!p}),!isAbsolute).join("/"))||isAbsolute||(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},_$pathBrowserify_24.isAbsolute=function(path){return"/"===path.charAt(0)},_$pathBrowserify_24.join=function(){var paths=Array.prototype.slice.call(arguments,0);return _$pathBrowserify_24.normalize(filter(paths,function(p,index){if("string"!=typeof p)throw new TypeError("Arguments to path.join must be strings");return p}).join("/"))},/* common-shake removed: exports.relative = */ void 0, function(from,to){function trim(arr){for(var start=0;start<arr.length&&""===arr[start];start++);for(var end=arr.length-1;end>=0&&""===arr[end];end--);return start>end?[]:arr.slice(start,end-start+1)}from=_$pathBrowserify_24.resolve(from).substr(1),to=_$pathBrowserify_24.resolve(to).substr(1);for(var fromParts=trim(from.split("/")),toParts=trim(to.split("/")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;i<length;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}var outputParts=[];for(i=samePartsLength;i<fromParts.length;i++)outputParts.push("..");return(outputParts=outputParts.concat(toParts.slice(samePartsLength))).join("/")},/* common-shake removed: exports.sep = */ "/",/* common-shake removed: exports.delimiter = */ ":",/* common-shake removed: exports.dirname = */ void 0, function(path){var result=splitPath(path),root=result[0],dir=result[1];return root||dir?(dir&&(dir=dir.substr(0,dir.length-1)),root+dir):"."},/* common-shake removed: exports.basename = */ void 0, function(path,ext){var f=splitPath(path)[2];return ext&&f.substr(-1*ext.length)===ext&&(f=f.substr(0,f.length-ext.length)),f},/* common-shake removed: exports.extname = */ void 0, function(path){return splitPath(path)[3]};var substr="b"==="ab".substr(-1)?function(str,start,len){return str.substr(start,len)}:function(str,start,len){return start<0&&(start=str.length+start),str.substr(start,len)};
8-
9-}).call(this,_$browser_4)
10-var _$punycode_25 = { exports: {} };
11-(function (global){
12-!function(root){var freeExports="object"==typeof _$punycode_25.exports&&_$punycode_25.exports&&!_$punycode_25.exports.nodeType&&_$punycode_25.exports,freeModule="object"=="object"&&_$punycode_25&&!_$punycode_25.nodeType&&_$punycode_25,freeGlobal="object"==typeof global&&global;freeGlobal.global!==freeGlobal&&freeGlobal.window!==freeGlobal&&freeGlobal.self!==freeGlobal||(root=freeGlobal);var punycode,key,maxInt=2147483647,base=36,tMin=1,tMax=26,skew=38,damp=700,initialBias=72,initialN=128,delimiter="-",regexPunycode=/^xn--/,regexNonASCII=/[^\x20-\x7E]/,regexSeparators=/[\x2E\u3002\uFF0E\uFF61]/g,errors={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode;function error(type){throw new RangeError(errors[type])}function map(array,fn){for(var length=array.length,result=[];length--;)result[length]=fn(array[length]);return result}function mapDomain(string,fn){var parts=string.split("@"),result="";return parts.length>1&&(result=parts[0]+"@",string=parts[1]),result+map((string=string.replace(regexSeparators,".")).split("."),fn).join(".")}function ucs2decode(string){for(var value,extra,output=[],counter=0,length=string.length;counter<length;)(value=string.charCodeAt(counter++))>=55296&&value<=56319&&counter<length?56320==(64512&(extra=string.charCodeAt(counter++)))?output.push(((1023&value)<<10)+(1023&extra)+65536):(output.push(value),counter--):output.push(value);return output}function ucs2encode(array){return map(array,function(value){var output="";return value>65535&&(output+=stringFromCharCode((value-=65536)>>>10&1023|55296),value=56320|1023&value),output+=stringFromCharCode(value)}).join("")}function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((0!=flag)<<5)}function adapt(delta,numPoints,firstTime){var k=0;for(delta=firstTime?floor(delta/damp):delta>>1,delta+=floor(delta/numPoints);delta>baseMinusTMin*tMax>>1;k+=base)delta=floor(delta/baseMinusTMin);return floor(k+(baseMinusTMin+1)*delta/(delta+skew))}function decode(input){var out,basic,j,index,oldi,w,k,digit,t,baseMinusT,codePoint,output=[],inputLength=input.length,i=0,n=initialN,bias=initialBias;for((basic=input.lastIndexOf(delimiter))<0&&(basic=0),j=0;j<basic;++j)input.charCodeAt(j)>=128&&error("not-basic"),output.push(input.charCodeAt(j));for(index=basic>0?basic+1:0;index<inputLength;){for(oldi=i,w=1,k=base;index>=inputLength&&error("invalid-input"),((digit=(codePoint=input.charCodeAt(index++))-48<10?codePoint-22:codePoint-65<26?codePoint-65:codePoint-97<26?codePoint-97:base)>=base||digit>floor((maxInt-i)/w))&&error("overflow"),i+=digit*w,!(digit<(t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias));k+=base)w>floor(maxInt/(baseMinusT=base-t))&&error("overflow"),w*=baseMinusT;bias=adapt(i-oldi,out=output.length+1,0==oldi),floor(i/out)>maxInt-n&&error("overflow"),n+=floor(i/out),i%=out,output.splice(i++,0,n)}return ucs2encode(output)}function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,inputLength,handledCPCountPlusOne,baseMinusT,qMinusT,output=[];for(inputLength=(input=ucs2decode(input)).length,n=initialN,delta=0,bias=initialBias,j=0;j<inputLength;++j)(currentValue=input[j])<128&&output.push(stringFromCharCode(currentValue));for(handledCPCount=basicLength=output.length,basicLength&&output.push(delimiter);handledCPCount<inputLength;){for(m=maxInt,j=0;j<inputLength;++j)(currentValue=input[j])>=n&&currentValue<m&&(m=currentValue);for(m-n>floor((maxInt-delta)/(handledCPCountPlusOne=handledCPCount+1))&&error("overflow"),delta+=(m-n)*handledCPCountPlusOne,n=m,j=0;j<inputLength;++j)if((currentValue=input[j])<n&&++delta>maxInt&&error("overflow"),currentValue==n){for(q=delta,k=base;!(q<(t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias));k+=base)qMinusT=q-t,baseMinusT=base-t,output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0))),q=floor(qMinusT/baseMinusT);output.push(stringFromCharCode(digitToBasic(q,0))),bias=adapt(delta,handledCPCountPlusOne,handledCPCount==basicLength),delta=0,++handledCPCount}++delta,++n}return output.join("")}if(punycode={version:"1.4.1",ucs2:{decode:ucs2decode,encode:ucs2encode},decode:decode,encode:encode,toASCII:function(input){return mapDomain(input,function(string){return regexNonASCII.test(string)?"xn--"+encode(string):string})},toUnicode:function(input){return mapDomain(input,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string})}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return punycode});else if(freeExports&&freeModule)if(_$punycode_25.exports==freeExports)freeModule.exports=punycode;else for(key in punycode)punycode.hasOwnProperty(key)&&(freeExports[key]=punycode[key]);else root.punycode=punycode}(this);
13-
14-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
15-_$punycode_25 = _$punycode_25.exports
16-"use strict";function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}var _$decode_26=function(qs,sep,eq,options){sep=sep||"&",eq=eq||"=";var obj={};if("string"!=typeof qs||0===qs.length)return obj;var regexp=/\+/g;qs=qs.split(sep);var maxKeys=1e3;options&&"number"==typeof options.maxKeys&&(maxKeys=options.maxKeys);var len=qs.length;maxKeys>0&&len>maxKeys&&(len=maxKeys);for(var i=0;i<len;++i){var kstr,vstr,k,v,x=qs[i].replace(regexp,"%20"),idx=x.indexOf(eq);idx>=0?(kstr=x.substr(0,idx),vstr=x.substr(idx+1)):(kstr=x,vstr=""),k=decodeURIComponent(kstr),v=decodeURIComponent(vstr),hasOwnProperty(obj,k)?isArray(obj[k])?obj[k].push(v):obj[k]=[obj[k],v]:obj[k]=v}return obj};var isArray=Array.isArray||function(xs){return"[object Array]"===Object.prototype.toString.call(xs)};
17-
18-"use strict";var stringifyPrimitive=function(v){switch(typeof v){case"string":return v;case"boolean":return v?"true":"false";case"number":return isFinite(v)?v:"";default:return""}};var _$encode_27=function(obj,sep,eq,name){return sep=sep||"&",eq=eq||"=",null===obj&&(obj=void 0),"object"==typeof obj?map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;return __isArray_27(obj[k])?map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v))}).join(sep):ks+encodeURIComponent(stringifyPrimitive(obj[k]))}).join(sep):name?encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj)):""};var __isArray_27=Array.isArray||function(xs){return"[object Array]"===Object.prototype.toString.call(xs)};function map(xs,f){if(xs.map)return xs.map(f);for(var res=[],i=0;i<xs.length;i++)res.push(f(xs[i],i));return res}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj)Object.prototype.hasOwnProperty.call(obj,key)&&res.push(key);return res};
19-
20-var _$querystringEs3_28 = {};
21-"use strict";/* common-shake removed: exports.decode = */ void 0, _$querystringEs3_28.parse=_$decode_26,/* common-shake removed: exports.encode = */ void 0, _$querystringEs3_28.stringify=_$encode_27;
22-
23-"use strict";var _$util_32={isString:function(arg){return"string"==typeof arg},isObject:function(arg){return"object"==typeof arg&&null!==arg},isNull:function(arg){return null===arg},isNullOrUndefined:function(arg){return null==arg}};
24-
25-var _$url_31 = {};
26-"use strict";var __dummy_31$0 = 0,__dummy_31$1 = 0;function Url(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}/* common-shake removed: exports.parse = */ urlParse,/* common-shake removed: exports.resolve = */ void 0, function(source,relative){return urlParse(source,!1,!0).resolve(relative)},/* common-shake removed: exports.resolveObject = */ void 0, function(source,relative){return source?urlParse(source,!1,!0).resolveObject(relative):relative},_$url_31.format=function(obj){_$util_32.isString(obj)&&(obj=urlParse(obj));return obj instanceof Url?obj.format():Url.prototype.format.call(obj)},/* common-shake removed: exports.Url = */ Url;var protocolPattern=/^([a-z0-9.+-]+:)/i,portPattern=/:[0-9]*$/,simplePathPattern=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,unwise=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),autoEscape=["'"].concat(unwise),nonHostChars=["%","/","?",";","#"].concat(autoEscape),hostEndingChars=["/","?","#"],hostnamePartPattern=/^[+a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,unsafeProtocol={javascript:!0,"javascript:":!0},hostlessProtocol={javascript:!0,"javascript:":!0},slashedProtocol={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},__dummy_31$2 = 0;function urlParse(url,parseQueryString,slashesDenoteHost){if(url&&_$util_32.isObject(url)&&url instanceof Url)return url;var u=new Url;return u.parse(url,parseQueryString,slashesDenoteHost),u}Url.prototype.parse=function(url,parseQueryString,slashesDenoteHost){if(!_$util_32.isString(url))throw new TypeError("Parameter 'url' must be a string, not "+typeof url);var queryIndex=url.indexOf("?"),splitter=-1!==queryIndex&&queryIndex<url.indexOf("#")?"?":"#",uSplit=url.split(splitter);uSplit[0]=uSplit[0].replace(/\\/g,"/");var rest=url=uSplit.join(splitter);if(rest=rest.trim(),!slashesDenoteHost&&1===url.split("#").length){var simplePath=simplePathPattern.exec(rest);if(simplePath)return this.path=rest,this.href=rest,this.pathname=simplePath[1],simplePath[2]?(this.search=simplePath[2],this.query=parseQueryString?_$querystringEs3_28.parse(this.search.substr(1)):this.search.substr(1)):parseQueryString&&(this.search="",this.query={}),this}var proto=protocolPattern.exec(rest);if(proto){var lowerProto=(proto=proto[0]).toLowerCase();this.protocol=lowerProto,rest=rest.substr(proto.length)}if(slashesDenoteHost||proto||rest.match(/^\/\/[^@\/]+@[^@\/]+/)){var slashes="//"===rest.substr(0,2);!slashes||proto&&hostlessProtocol[proto]||(rest=rest.substr(2),this.slashes=!0)}if(!hostlessProtocol[proto]&&(slashes||proto&&!slashedProtocol[proto])){for(var auth,atSign,hostEnd=-1,i=0;i<hostEndingChars.length;i++){-1!==(hec=rest.indexOf(hostEndingChars[i]))&&(-1===hostEnd||hec<hostEnd)&&(hostEnd=hec)}-1!==(atSign=-1===hostEnd?rest.lastIndexOf("@"):rest.lastIndexOf("@",hostEnd))&&(auth=rest.slice(0,atSign),rest=rest.slice(atSign+1),this.auth=decodeURIComponent(auth)),hostEnd=-1;for(i=0;i<nonHostChars.length;i++){var hec;-1!==(hec=rest.indexOf(nonHostChars[i]))&&(-1===hostEnd||hec<hostEnd)&&(hostEnd=hec)}-1===hostEnd&&(hostEnd=rest.length),this.host=rest.slice(0,hostEnd),rest=rest.slice(hostEnd),this.parseHost(),this.hostname=this.hostname||"";var ipv6Hostname="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!ipv6Hostname)for(var hostparts=this.hostname.split(/\./),l=(i=0,hostparts.length);i<l;i++){var part=hostparts[i];if(part&&!part.match(hostnamePartPattern)){for(var newpart="",j=0,k=part.length;j<k;j++)part.charCodeAt(j)>127?newpart+="x":newpart+=part[j];if(!newpart.match(hostnamePartPattern)){var validParts=hostparts.slice(0,i),notHost=hostparts.slice(i+1),bit=part.match(hostnamePartStart);bit&&(validParts.push(bit[1]),notHost.unshift(bit[2])),notHost.length&&(rest="/"+notHost.join(".")+rest),this.hostname=validParts.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),ipv6Hostname||(this.hostname=_$punycode_25.toASCII(this.hostname));var p=this.port?":"+this.port:"",h=this.hostname||"";this.host=h+p,this.href+=this.host,ipv6Hostname&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==rest[0]&&(rest="/"+rest))}if(!unsafeProtocol[lowerProto])for(i=0,l=autoEscape.length;i<l;i++){var ae=autoEscape[i];if(-1!==rest.indexOf(ae)){var esc=encodeURIComponent(ae);esc===ae&&(esc=escape(ae)),rest=rest.split(ae).join(esc)}}var hash=rest.indexOf("#");-1!==hash&&(this.hash=rest.substr(hash),rest=rest.slice(0,hash));var qm=rest.indexOf("?");if(-1!==qm?(this.search=rest.substr(qm),this.query=rest.substr(qm+1),parseQueryString&&(this.query=_$querystringEs3_28.parse(this.query)),rest=rest.slice(0,qm)):parseQueryString&&(this.search="",this.query={}),rest&&(this.pathname=rest),slashedProtocol[lowerProto]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){p=this.pathname||"";var s=this.search||"";this.path=p+s}return this.href=this.format(),this},Url.prototype.format=function(){var auth=this.auth||"";auth&&(auth=(auth=encodeURIComponent(auth)).replace(/%3A/i,":"),auth+="@");var protocol=this.protocol||"",pathname=this.pathname||"",hash=this.hash||"",host=!1,query="";this.host?host=auth+this.host:this.hostname&&(host=auth+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(host+=":"+this.port)),this.query&&_$util_32.isObject(this.query)&&Object.keys(this.query).length&&(query=_$querystringEs3_28.stringify(this.query));var search=this.search||query&&"?"+query||"";return protocol&&":"!==protocol.substr(-1)&&(protocol+=":"),this.slashes||(!protocol||slashedProtocol[protocol])&&!1!==host?(host="//"+(host||""),pathname&&"/"!==pathname.charAt(0)&&(pathname="/"+pathname)):host||(host=""),hash&&"#"!==hash.charAt(0)&&(hash="#"+hash),search&&"?"!==search.charAt(0)&&(search="?"+search),protocol+host+(pathname=pathname.replace(/[?#]/g,function(match){return encodeURIComponent(match)}))+(search=search.replace("#","%23"))+hash},Url.prototype.resolve=function(relative){return this.resolveObject(urlParse(relative,!1,!0)).format()},Url.prototype.resolveObject=function(relative){if(_$util_32.isString(relative)){var rel=new Url;rel.parse(relative,!1,!0),relative=rel}for(var result=new Url,tkeys=Object.keys(this),tk=0;tk<tkeys.length;tk++){var tkey=tkeys[tk];result[tkey]=this[tkey]}if(result.hash=relative.hash,""===relative.href)return result.href=result.format(),result;if(relative.slashes&&!relative.protocol){for(var rkeys=Object.keys(relative),rk=0;rk<rkeys.length;rk++){var rkey=rkeys[rk];"protocol"!==rkey&&(result[rkey]=relative[rkey])}return slashedProtocol[result.protocol]&&result.hostname&&!result.pathname&&(result.path=result.pathname="/"),result.href=result.format(),result}if(relative.protocol&&relative.protocol!==result.protocol){if(!slashedProtocol[relative.protocol]){for(var keys=Object.keys(relative),v=0;v<keys.length;v++){var k=keys[v];result[k]=relative[k]}return result.href=result.format(),result}if(result.protocol=relative.protocol,relative.host||hostlessProtocol[relative.protocol])result.pathname=relative.pathname;else{for(var relPath=(relative.pathname||"").split("/");relPath.length&&!(relative.host=relPath.shift()););relative.host||(relative.host=""),relative.hostname||(relative.hostname=""),""!==relPath[0]&&relPath.unshift(""),relPath.length<2&&relPath.unshift(""),result.pathname=relPath.join("/")}if(result.search=relative.search,result.query=relative.query,result.host=relative.host||"",result.auth=relative.auth,result.hostname=relative.hostname||relative.host,result.port=relative.port,result.pathname||result.search){var p=result.pathname||"",s=result.search||"";result.path=p+s}return result.slashes=result.slashes||relative.slashes,result.href=result.format(),result}var isSourceAbs=result.pathname&&"/"===result.pathname.charAt(0),isRelAbs=relative.host||relative.pathname&&"/"===relative.pathname.charAt(0),mustEndAbs=isRelAbs||isSourceAbs||result.host&&relative.pathname,removeAllDots=mustEndAbs,srcPath=result.pathname&&result.pathname.split("/")||[],psychotic=(relPath=relative.pathname&&relative.pathname.split("/")||[],result.protocol&&!slashedProtocol[result.protocol]);if(psychotic&&(result.hostname="",result.port=null,result.host&&(""===srcPath[0]?srcPath[0]=result.host:srcPath.unshift(result.host)),result.host="",relative.protocol&&(relative.hostname=null,relative.port=null,relative.host&&(""===relPath[0]?relPath[0]=relative.host:relPath.unshift(relative.host)),relative.host=null),mustEndAbs=mustEndAbs&&(""===relPath[0]||""===srcPath[0])),isRelAbs)result.host=relative.host||""===relative.host?relative.host:result.host,result.hostname=relative.hostname||""===relative.hostname?relative.hostname:result.hostname,result.search=relative.search,result.query=relative.query,srcPath=relPath;else if(relPath.length)srcPath||(srcPath=[]),srcPath.pop(),srcPath=srcPath.concat(relPath),result.search=relative.search,result.query=relative.query;else if(!_$util_32.isNullOrUndefined(relative.search)){if(psychotic)result.hostname=result.host=srcPath.shift(),(authInHost=!!(result.host&&result.host.indexOf("@")>0)&&result.host.split("@"))&&(result.auth=authInHost.shift(),result.host=result.hostname=authInHost.shift());return result.search=relative.search,result.query=relative.query,_$util_32.isNull(result.pathname)&&_$util_32.isNull(result.search)||(result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")),result.href=result.format(),result}if(!srcPath.length)return result.pathname=null,result.search?result.path="/"+result.search:result.path=null,result.href=result.format(),result;for(var last=srcPath.slice(-1)[0],hasTrailingSlash=(result.host||relative.host||srcPath.length>1)&&("."===last||".."===last)||""===last,up=0,i=srcPath.length;i>=0;i--)"."===(last=srcPath[i])?srcPath.splice(i,1):".."===last?(srcPath.splice(i,1),up++):up&&(srcPath.splice(i,1),up--);if(!mustEndAbs&&!removeAllDots)for(;up--;up)srcPath.unshift("..");!mustEndAbs||""===srcPath[0]||srcPath[0]&&"/"===srcPath[0].charAt(0)||srcPath.unshift(""),hasTrailingSlash&&"/"!==srcPath.join("/").substr(-1)&&srcPath.push("");var authInHost,isAbsolute=""===srcPath[0]||srcPath[0]&&"/"===srcPath[0].charAt(0);psychotic&&(result.hostname=result.host=isAbsolute?"":srcPath.length?srcPath.shift():"",(authInHost=!!(result.host&&result.host.indexOf("@")>0)&&result.host.split("@"))&&(result.auth=authInHost.shift(),result.host=result.hostname=authInHost.shift()));return(mustEndAbs=mustEndAbs||result.host&&srcPath.length)&&!isAbsolute&&srcPath.unshift(""),srcPath.length?result.pathname=srcPath.join("/"):(result.pathname=null,result.path=null),_$util_32.isNull(result.pathname)&&_$util_32.isNull(result.search)||(result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")),result.auth=relative.auth||result.auth,result.slashes=result.slashes||relative.slashes,result.href=result.format(),result},Url.prototype.parseHost=function(){var host=this.host,port=portPattern.exec(host);port&&(":"!==(port=port[0])&&(this.port=port.substr(1)),host=host.substr(0,host.length-port.length)),host&&(this.hostname=host)};
27-
28-var _$mutable_36=function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source)__hasOwnProperty_36.call(source,key)&&(target[key]=source[key])}return target};var __hasOwnProperty_36=Object.prototype.hasOwnProperty;
29-
30-var _$serviceWorker_5 = {};
31-(function (__dirname){
32-/* removed: var _$mutable_36=require("xtend/mutable"); */;_$serviceWorker_5=serviceWorker;var events=serviceWorker.events={INSTALLED:"sw:installed",UPDATED:"sw:updated",REDUNDANT:"sw:redundant",POST_MESSAGE:"sw:postMessage",MESSAGE:"sw:message",SYNC:"sw:sync",NOTIFICATION_REQUEST:"sw:notificationRequest",ERROR:"log:error"};function serviceWorker(name,opts){return name=name||"/sw.js",opts=opts||{},function(state,emitter){emitter.on(state.events.DOMCONTENTLOADED,function(){if((opts=_$mutable_36({scope:"/"},opts)).electron){var __dummy_5$0 = 0,__dummy_5$1 = 0;opts.scope=_$pathBrowserify_24.join(__dirname,opts.scope),name=_$url_31.format({pathname:_$pathBrowserify_24.join(__dirname,name.replace(/^\//,"")),protocol:"file:",slashes:!0}),delete opts.electron}if(window.onmessage=function(event){emitter.emit(events.MESSAGE,{data:event.data,channel:"window",port:null})},window.MessageChannel){var messageChannel=new MessageChannel;messageChannel.port1.onmessage=function(event){emitter.emit(events.MESSAGE,{data:event.data,channel:"messageChannel",port:"port1"})},messageChannel.port2.onmessage=function(event){emitter.emit(events.MESSAGE,{data:event.data,channel:"messageChannel",port:"port2"})}}emitter.on(events.NOTIFICATION_REQUEST,function(cb){Notification.requestPermission(function(result){"function"==typeof result&&cb(result)})}),navigator.serviceWorker&&navigator.onLine&&(navigator.serviceWorker.onmessage=function(event){emitter.emit(events.MESSAGE,{data:event.data,channel:"navigator.serviceWorker",port:null})},navigator.serviceWorker.register(name,opts).then(function(registration){registration.onupdatefound=function(){var installingWorker=registration.installing;installingWorker.onstatechange=function(){"installed"===installingWorker.state?navigator.serviceWorker.controller?emitter.emit(events.UPDATED,registration):emitter.emit(events.INSTALLED,registration):"redundant"===installingWorker.state&&emitter.emit(events.REDUNDANT,registration)}},registration.sync&&function(registration){registration.sync.getTags().then(function(tags){state.syncTags=tags}).catch(function(err){emitter.emit(events.ERROR,err)})}(registration)}).catch(function(err){emitter.emit(events.ERROR,err)}),navigator.serviceWorker.ready.then(function(registration){new Promise(function(resolve){var worker=registration.active;"activated"!==worker.state?(worker.addEventListener("statechange",resolve,{once:!0}),emitter.on(events.POST_MESSAGE,function(message){worker.postMessage(message)})):resolve()}).then(function(){registration.navigationPreload&&registration.navigationPreload.enable()}),emitter.on(events.SYNC,function(tag){registration.sync.register(tag).then(function(){return registration.sync.getTags()}).then(function(tags){state.syncTags=tags}).catch(function(err){emitter.emit(events.ERROR,err)})})}).catch(function(err){emitter.emit(events.ERROR,err)}))})}}
33-
34-}).call(this,"/node_modules/choo-service-worker")
35-var trailingNewlineRegex=/\n[\s]+$/,leadingNewlineRegex=/^\n[\s]+/,trailingSpaceRegex=/[\s]+$/,leadingSpaceRegex=/^[\s]+/,multiSpaceRegex=/[\n\s]+/g,TEXT_TAGS=["a","abbr","b","bdi","bdo","br","cite","data","dfn","em","i","kbd","mark","q","rp","rt","rtc","ruby","s","amp","small","span","strong","sub","sup","time","u","var","wbr"],VERBATIM_TAGS=["code","pre","textarea"];var _$appendChild_2=function appendChild(el,childs){if(Array.isArray(childs))for(var value,leader,nodeName=el.nodeName.toLowerCase(),hadText=!1,i=0,len=childs.length;i<len;i++){var node=childs[i];if(Array.isArray(node))appendChild(el,node);else{("number"==typeof node||"boolean"==typeof node||"function"==typeof node||node instanceof Date||node instanceof RegExp)&&(node=node.toString());var lastChild=el.childNodes[el.childNodes.length-1];if("string"==typeof node)hadText=!0,lastChild&&"#text"===lastChild.nodeName?lastChild.nodeValue+=node:(node=document.createTextNode(node),el.appendChild(node),lastChild=node),i===len-1&&(hadText=!1,-1===TEXT_TAGS.indexOf(nodeName)&&-1===VERBATIM_TAGS.indexOf(nodeName)?""===(value=lastChild.nodeValue.replace(leadingNewlineRegex,"").replace(trailingSpaceRegex,"").replace(trailingNewlineRegex,"").replace(multiSpaceRegex," "))?el.removeChild(lastChild):lastChild.nodeValue=value:-1===VERBATIM_TAGS.indexOf(nodeName)&&(leader=0===i?"":" ",value=lastChild.nodeValue.replace(leadingNewlineRegex,leader).replace(leadingSpaceRegex," ").replace(trailingSpaceRegex,"").replace(trailingNewlineRegex,"").replace(multiSpaceRegex," "),lastChild.nodeValue=value));else if(node&&node.nodeType){hadText&&(hadText=!1,-1===TEXT_TAGS.indexOf(nodeName)&&-1===VERBATIM_TAGS.indexOf(nodeName)?""===(value=lastChild.nodeValue.replace(leadingNewlineRegex,"").replace(trailingNewlineRegex,"").replace(multiSpaceRegex," "))?el.removeChild(lastChild):lastChild.nodeValue=value:-1===VERBATIM_TAGS.indexOf(nodeName)&&(value=lastChild.nodeValue.replace(leadingSpaceRegex," ").replace(leadingNewlineRegex,"").replace(trailingNewlineRegex,"").replace(multiSpaceRegex," "),lastChild.nodeValue=value));var _nodeName=node.nodeName;_nodeName&&(nodeName=_nodeName.toLowerCase()),el.appendChild(node)}}}};
36-
37-var _$hyperscriptAttributeToProperty_10=function(h){return function(tagName,attrs,children){for(var attr in attrs)attr in transform&&(attrs[transform[attr]]=attrs[attr],delete attrs[attr]);return h(tagName,attrs,children)}};var transform={class:"className",for:"htmlFor","http-equiv":"httpEquiv"};
38-
39-var __dummy_11$0 = 0,TEXT=1,OPEN=2,CLOSE=3,ATTR=4,ATTR_KEY=5,ATTR_KEY_W=6,ATTR_VALUE_W=7,ATTR_VALUE=8,ATTR_VALUE_SQ=9,ATTR_VALUE_DQ=10,ATTR_EQ=11,ATTR_BREAK=12,COMMENT=13;function quot(state){return state===ATTR_VALUE_SQ||state===ATTR_VALUE_DQ}var _$hyperx_11=function(h,opts){opts||(opts={});var concat=opts.concat||function(a,b){return String(a)+String(b)};return!1!==opts.attrToProp&&(h=_$hyperscriptAttributeToProperty_10(h)),function(strings){for(var state=TEXT,reg="",arglen=arguments.length,parts=[],i=0;i<strings.length;i++)if(i<arglen-1){var arg=arguments[i+1],p=parse(strings[i]),xstate=state;xstate===ATTR_VALUE_DQ&&(xstate=ATTR_VALUE),xstate===ATTR_VALUE_SQ&&(xstate=ATTR_VALUE),xstate===ATTR_VALUE_W&&(xstate=ATTR_VALUE),xstate===ATTR&&(xstate=ATTR_KEY),xstate===OPEN?"/"===reg?(p.push([OPEN,"/",arg]),reg=""):p.push([OPEN,arg]):p.push([0,xstate,arg]),parts.push.apply(parts,p)}else parts.push.apply(parts,parse(strings[i]));var tag,tree=[null,{},[]],stack=[[tree,-1]];for(i=0;i<parts.length;i++){var cur=stack[stack.length-1][0],s=(p=parts[i])[0];if(s===OPEN&&/^\//.test(p[1])){var ix=stack[stack.length-1][1];stack.length>1&&(stack.pop(),stack[stack.length-1][0][2][ix]=h(cur[0],cur[1],cur[2].length?cur[2]:void 0))}else if(s===OPEN){var c=[p[1],{},[]];cur[2].push(c),stack.push([c,cur[2].length-1])}else if(s===ATTR_KEY||0===s&&p[1]===ATTR_KEY){for(var copyKey,key="";i<parts.length;i++)if(parts[i][0]===ATTR_KEY)key=concat(key,parts[i][1]);else{if(0!==parts[i][0]||parts[i][1]!==ATTR_KEY)break;if("object"!=typeof parts[i][2]||key)key=concat(key,parts[i][2]);else for(copyKey in parts[i][2])parts[i][2].hasOwnProperty(copyKey)&&!cur[1][copyKey]&&(cur[1][copyKey]=parts[i][2][copyKey])}parts[i][0]===ATTR_EQ&&i++;for(var j=i;i<parts.length;i++)if(parts[i][0]===ATTR_VALUE||parts[i][0]===ATTR_KEY)cur[1][key]?""===parts[i][1]||(cur[1][key]=concat(cur[1][key],parts[i][1])):cur[1][key]=strfn(parts[i][1]);else{if(0!==parts[i][0]||parts[i][1]!==ATTR_VALUE&&parts[i][1]!==ATTR_KEY){!key.length||cur[1][key]||i!==j||parts[i][0]!==CLOSE&&parts[i][0]!==ATTR_BREAK||(cur[1][key]=key.toLowerCase()),parts[i][0]===CLOSE&&i--;break}cur[1][key]?""===parts[i][2]||(cur[1][key]=concat(cur[1][key],parts[i][2])):cur[1][key]=strfn(parts[i][2])}}else if(s===ATTR_KEY)cur[1][p[1]]=!0;else if(0===s&&p[1]===ATTR_KEY)cur[1][p[2]]=!0;else if(s===CLOSE){if(tag=cur[0],closeRE.test(tag)&&stack.length){ix=stack[stack.length-1][1];stack.pop(),stack[stack.length-1][0][2][ix]=h(cur[0],cur[1],cur[2].length?cur[2]:void 0)}}else if(0===s&&p[1]===TEXT)void 0===p[2]||null===p[2]?p[2]="":p[2]||(p[2]=concat("",p[2])),Array.isArray(p[2][0])?cur[2].push.apply(cur[2],p[2]):cur[2].push(p[2]);else if(s===TEXT)cur[2].push(p[1]);else if(s!==ATTR_EQ&&s!==ATTR_BREAK)throw new Error("unhandled: "+s)}if(tree[2].length>1&&/^\s*$/.test(tree[2][0])&&tree[2].shift(),tree[2].length>2||2===tree[2].length&&/\S/.test(tree[2][1]))throw new Error("multiple root elements must be wrapped in an enclosing tag");return Array.isArray(tree[2][0])&&"string"==typeof tree[2][0][0]&&Array.isArray(tree[2][0][2])&&(tree[2][0]=h(tree[2][0][0],tree[2][0][1],tree[2][0][2])),tree[2][0];function parse(str){var res=[];state===ATTR_VALUE_W&&(state=ATTR);for(var i=0;i<str.length;i++){var c=str.charAt(i);state===TEXT&&"<"===c?(reg.length&&res.push([TEXT,reg]),reg="",state=OPEN):">"!==c||quot(state)||state===COMMENT?state===COMMENT&&/-$/.test(reg)&&"-"===c?(opts.comments&&res.push([ATTR_VALUE,reg.substr(0,reg.length-1)],[CLOSE]),reg="",state=TEXT):state===OPEN&&/^!--$/.test(reg)?(opts.comments&&res.push([OPEN,reg],[ATTR_KEY,"comment"],[ATTR_EQ]),reg=c,state=COMMENT):state===TEXT||state===COMMENT?reg+=c:state===OPEN&&"/"===c&&reg.length||(state===OPEN&&/\s/.test(c)?(reg.length&&res.push([OPEN,reg]),reg="",state=ATTR):state===OPEN?reg+=c:state===ATTR&&/[^\s"'=/]/.test(c)?(state=ATTR_KEY,reg=c):state===ATTR&&/\s/.test(c)?(reg.length&&res.push([ATTR_KEY,reg]),res.push([ATTR_BREAK])):state===ATTR_KEY&&/\s/.test(c)?(res.push([ATTR_KEY,reg]),reg="",state=ATTR_KEY_W):state===ATTR_KEY&&"="===c?(res.push([ATTR_KEY,reg],[ATTR_EQ]),reg="",state=ATTR_VALUE_W):state===ATTR_KEY?reg+=c:state!==ATTR_KEY_W&&state!==ATTR||"="!==c?state!==ATTR_KEY_W&&state!==ATTR||/\s/.test(c)?state===ATTR_VALUE_W&&'"'===c?state=ATTR_VALUE_DQ:state===ATTR_VALUE_W&&"'"===c?state=ATTR_VALUE_SQ:state===ATTR_VALUE_DQ&&'"'===c?(res.push([ATTR_VALUE,reg],[ATTR_BREAK]),reg="",state=ATTR):state===ATTR_VALUE_SQ&&"'"===c?(res.push([ATTR_VALUE,reg],[ATTR_BREAK]),reg="",state=ATTR):state!==ATTR_VALUE_W||/\s/.test(c)?state===ATTR_VALUE&&/\s/.test(c)?(res.push([ATTR_VALUE,reg],[ATTR_BREAK]),reg="",state=ATTR):state!==ATTR_VALUE&&state!==ATTR_VALUE_SQ&&state!==ATTR_VALUE_DQ||(reg+=c):(state=ATTR_VALUE,i--):(res.push([ATTR_BREAK]),/[\w-]/.test(c)?(reg+=c,state=ATTR_KEY):state=ATTR):(res.push([ATTR_EQ]),state=ATTR_VALUE_W)):(state===OPEN&&reg.length?res.push([OPEN,reg]):state===ATTR_KEY?res.push([ATTR_KEY,reg]):state===ATTR_VALUE&&reg.length&&res.push([ATTR_VALUE,reg]),res.push([CLOSE]),reg="",state=TEXT)}return state===TEXT&&reg.length?(res.push([TEXT,reg]),reg=""):state===ATTR_VALUE&&reg.length?(res.push([ATTR_VALUE,reg]),reg=""):state===ATTR_VALUE_DQ&&reg.length?(res.push([ATTR_VALUE,reg]),reg=""):state===ATTR_VALUE_SQ&&reg.length?(res.push([ATTR_VALUE,reg]),reg=""):state===ATTR_KEY&&(res.push([ATTR_KEY,reg]),reg=""),res}};function strfn(x){return"function"==typeof x?x:"string"==typeof x?x:x&&"object"==typeof x?x:concat("",x)}};Object.prototype.hasOwnProperty;var closeRE=RegExp("^("+["area","base","basefont","bgsound","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr","!--","animate","animateTransform","circle","cursor","desc","ellipse","feBlend","feColorMatrix","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","font-face-format","font-face-name","font-face-uri","glyph","glyphRef","hkern","image","line","missing-glyph","mpath","path","polygon","polyline","rect","set","stop","tref","use","view","vkern"].join("|")+")(?:[.#][a-zA-Z0-9\x7f-\uffff_:-]+)*$");
40-
41-var _$browser_3 = {};
42-var __dummy_3$0 = 0,__dummy_3$1 = 0,SVGNS="http://www.w3.org/2000/svg",XLINKNS="http://www.w3.org/1999/xlink",BOOL_PROPS=["autofocus","checked","defaultchecked","disabled","formnovalidate","indeterminate","readonly","required","selected","willvalidate"],COMMENT_TAG="!--",SVG_TAGS=["svg","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"];function belCreateElement(tag,props,children){var el;-1!==SVG_TAGS.indexOf(tag)&&(props.namespace=SVGNS);var ns=!1;if(props.namespace&&(ns=props.namespace,delete props.namespace),ns)el=document.createElementNS(ns,tag);else{if(tag===COMMENT_TAG)return document.createComment(props.comment);el=document.createElement(tag)}for(var p in props)if(props.hasOwnProperty(p)){var key=p.toLowerCase(),val=props[p];if("classname"===key&&(key="class",p="class"),"htmlFor"===p&&(p="for"),-1!==BOOL_PROPS.indexOf(key))if("true"===val)val=key;else if("false"===val)continue;"on"===key.slice(0,2)?el[p]=val:ns?"xlink:href"===p?el.setAttributeNS(XLINKNS,p,val):/^xmlns($|:)/i.test(p)||el.setAttributeNS(null,p,val):el.setAttribute(p,val)}return _$appendChild_2(el,children),el}_$browser_3=_$hyperx_11(belCreateElement,{comments:!0}),_$browser_3.default=_$browser_3,_$browser_3.createElement=belCreateElement;
43-
44-var _$html_7=_$browser_3;
45-
46-var _$nanolru_15 = {};
47-function LRU(opts){if(!(this instanceof LRU))return new LRU(opts);"number"==typeof opts&&(opts={max:opts}),opts||(opts={}),this.cache={},this.head=this.tail=null,this.length=0,this.max=opts.max||1e3,this.maxAge=opts.maxAge||0}_$nanolru_15=LRU,Object.defineProperty(LRU.prototype,"keys",{get:function(){return Object.keys(this.cache)}}),LRU.prototype.clear=function(){this.cache={},this.head=this.tail=null,this.length=0},LRU.prototype.remove=function(key){if("string"!=typeof key&&(key=""+key),this.cache.hasOwnProperty(key)){var element=this.cache[key];return delete this.cache[key],this._unlink(key,element.prev,element.next),element.value}},LRU.prototype._unlink=function(key,prev,next){this.length--,0===this.length?this.head=this.tail=null:this.head===key?(this.head=prev,this.cache[this.head].next=null):this.tail===key?(this.tail=next,this.cache[this.tail].prev=null):(this.cache[prev].next=next,this.cache[next].prev=prev)},LRU.prototype.peek=function(key){if(this.cache.hasOwnProperty(key)){var element=this.cache[key];if(this._checkAge(key,element))return element.value}},LRU.prototype.set=function(key,value){var element;if("string"!=typeof key&&(key=""+key),this.cache.hasOwnProperty(key)){if((element=this.cache[key]).value=value,this.maxAge&&(element.modified=Date.now()),key===this.head)return value;this._unlink(key,element.prev,element.next)}else element={value:value,modified:0,next:null,prev:null},this.maxAge&&(element.modified=Date.now()),this.cache[key]=element,this.length===this.max&&this.evict();return this.length++,element.next=null,element.prev=this.head,this.head&&(this.cache[this.head].next=key),this.head=key,this.tail||(this.tail=key),value},LRU.prototype._checkAge=function(key,element){return!(this.maxAge&&Date.now()-element.modified>this.maxAge)||(this.remove(key),!1)},LRU.prototype.get=function(key){if("string"!=typeof key&&(key=""+key),this.cache.hasOwnProperty(key)){var element=this.cache[key];if(this._checkAge(key,element))return this.head!==key&&(key===this.tail?(this.tail=element.next,this.cache[this.tail].prev=null):this.cache[element.prev].next=element.next,this.cache[element.next].prev=element.prev,this.cache[this.head].next=key,element.prev=this.head,element.next=null,this.head=key),element.value}},LRU.prototype.evict=function(){this.tail&&this.remove(this.tail)};
48-
49-var _$cache_6 = {};
50-/* removed: var _$nanolru_15=require("nanolru"); */;function ChooComponentCache(state,emit,lru){this.cache="number"==typeof lru?new _$nanolru_15(lru):lru||new _$nanolru_15(100),this.state=state,this.emit=emit}function newCall(Cls){return new(Cls.bind.apply(Cls,arguments))}_$cache_6=ChooComponentCache,ChooComponentCache.prototype.render=function(Component,id){var el=this.cache.get(id);if(!el){for(var args=[],i=2,len=arguments.length;i<len;i++)args.push(arguments[i]);args.unshift(Component,id,this.state,this.emit),el=newCall.apply(newCall,args),this.cache.set(id,el)}return el};
51-
52-"use strict";var _$documentReady_9=function(callback){var state=document.readyState;if("complete"===state||"interactive"===state)return setTimeout(callback,0);document.addEventListener("DOMContentLoaded",function(){callback()})};
53-
54-var _$nanoscheduler_22 = {};
55-var hasWindow="undefined"!=typeof window;function NanoScheduler(hasWindow){this.hasWindow=hasWindow,this.hasIdle=this.hasWindow&&window.requestIdleCallback,this.method=this.hasIdle?window.requestIdleCallback.bind(window):this.setTimeout,this.scheduled=!1,this.queue=[]}NanoScheduler.prototype.push=function(cb){this.queue.push(cb),this.schedule()},NanoScheduler.prototype.schedule=function(){if(!this.scheduled){this.scheduled=!0;var self=this;this.method(function(idleDeadline){for(;self.queue.length&&idleDeadline.timeRemaining()>0;)self.queue.shift()(idleDeadline);self.scheduled=!1,self.queue.length&&self.schedule()})}},NanoScheduler.prototype.setTimeout=function(cb){setTimeout(cb,0,{timeRemaining:function(){return 1}})},_$nanoscheduler_22=function(){var scheduler;return hasWindow?(window._nanoScheduler||(window._nanoScheduler=new NanoScheduler(!0)),scheduler=window._nanoScheduler):scheduler=new NanoScheduler,scheduler};
56-
57-var perf,scheduler=_$nanoscheduler_22();nanotiming.disabled=!0;try{perf=window.performance,nanotiming.disabled="true"===window.localStorage.DISABLE_NANOTIMING||!perf.mark}catch(e){}function nanotiming(name){if(nanotiming.disabled)return __noop_23;var uuid=(1e4*perf.now()).toFixed()%Number.MAX_SAFE_INTEGER,startName="start-"+uuid+"-"+name;function end(cb){var endName="end-"+uuid+"-"+name;perf.mark(endName),scheduler.push(function(){var err=null;try{var measureName=name+" ["+uuid+"]";perf.measure(measureName,startName,endName),perf.clearMarks(startName),perf.clearMarks(endName)}catch(e){err=e}cb&&cb(err,name)})}return perf.mark(startName),end.uuid=uuid,end}function __noop_23(cb){cb&&scheduler.push(function(){cb(new Error("nanotiming: performance API unavailable"))})}var _$nanotiming_23=nanotiming;
58-
59-"use strict";var _$removeArrayItems_29=function(arr,startIdx,removeCount){var i,length=arr.length;if(!(startIdx>=length||0===removeCount)){var len=length-(removeCount=startIdx+removeCount>length?length-startIdx:removeCount);for(i=startIdx;i<len;++i)arr[i]=arr[i+removeCount];arr.length=len}};
60-
61-var _$nanobus_12 = {};
62-var __dummy_12$0 = 0,__dummy_12$1 = 0;function Nanobus(name){if(!(this instanceof Nanobus))return new Nanobus(name);this._name=name||"nanobus",this._starListeners=[],this._listeners={}}_$nanobus_12=Nanobus,Nanobus.prototype.emit=function(eventName){for(var data=[],i=1,len=arguments.length;i<len;i++)data.push(arguments[i]);var emitTiming=_$nanotiming_23(this._name+"('"+eventName+"')"),listeners=this._listeners[eventName];return listeners&&listeners.length>0&&this._emit(this._listeners[eventName],data),this._starListeners.length>0&&this._emit(this._starListeners,eventName,data,emitTiming.uuid),emitTiming(),this},Nanobus.prototype.on=Nanobus.prototype.addListener=function(eventName,listener){return"*"===eventName?this._starListeners.push(listener):(this._listeners[eventName]||(this._listeners[eventName]=[]),this._listeners[eventName].push(listener)),this},Nanobus.prototype.prependListener=function(eventName,listener){return"*"===eventName?this._starListeners.unshift(listener):(this._listeners[eventName]||(this._listeners[eventName]=[]),this._listeners[eventName].unshift(listener)),this},Nanobus.prototype.once=function(eventName,listener){var self=this;return this.on(eventName,function once(){listener.apply(self,arguments);self.removeListener(eventName,once)}),this},Nanobus.prototype.prependOnceListener=function(eventName,listener){var self=this;return this.prependListener(eventName,function once(){listener.apply(self,arguments);self.removeListener(eventName,once)}),this},Nanobus.prototype.removeListener=function(eventName,listener){return"*"===eventName?(this._starListeners=this._starListeners.slice(),remove(this._starListeners,listener)):(void 0!==this._listeners[eventName]&&(this._listeners[eventName]=this._listeners[eventName].slice()),remove(this._listeners[eventName],listener));function remove(arr,listener){if(arr){var index=arr.indexOf(listener);return-1!==index?(_$removeArrayItems_29(arr,index,1),!0):void 0}}},Nanobus.prototype.removeAllListeners=function(eventName){return eventName?"*"===eventName?this._starListeners=[]:this._listeners[eventName]=[]:(this._starListeners=[],this._listeners={}),this},Nanobus.prototype.listeners=function(eventName){var listeners="*"!==eventName?this._listeners[eventName]:this._starListeners,ret=[];if(listeners)for(var ilength=listeners.length,i=0;i<ilength;i++)ret.push(listeners[i]);return ret},Nanobus.prototype._emit=function(arr,eventName,data,uuid){if(void 0!==arr&&0!==arr.length){void 0===data&&(data=eventName,eventName=null),eventName&&(data=void 0!==uuid?[eventName].concat(data,uuid):[eventName].concat(data));for(var length=arr.length,i=0;i<length;i++){var listener=arr[i];listener.apply(listener,data)}}};
63-
64-var safeExternalLink=/(noopener|noreferrer) (noopener|noreferrer)/,protocolLink=/^[\w-_]+:/;var _$nanohref_13=function(cb,root){root=root||window.document,window.addEventListener("click",function(e){if(!(e.button&&0!==e.button||e.ctrlKey||e.metaKey||e.altKey||e.shiftKey||e.defaultPrevented)){var anchor=function traverse(node){if(node&&node!==root)return"a"!==node.localName||void 0===node.href?traverse(node.parentNode):node}(e.target);anchor&&(window.location.origin!==anchor.origin||anchor.hasAttribute("download")||"_blank"===anchor.getAttribute("target")&&safeExternalLink.test(anchor.getAttribute("rel"))||protocolLink.test(anchor.getAttribute("href"))||(e.preventDefault(),cb(anchor)))}})};
65-
66-var _$nanolocation_14=function(){var pathname=window.location.pathname.replace(/\/$/,""),hash=window.location.hash.replace(/^#/,"/");return pathname+hash};
67-
68-var _$events_17=["onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmousemove","onmouseout","onmouseenter","onmouseleave","ontouchcancel","ontouchend","ontouchmove","ontouchstart","ondragstart","ondrag","ondragenter","ondragleave","ondragover","ondrop","ondragend","onkeydown","onkeypress","onkeyup","onunload","onabort","onerror","onresize","onscroll","onselect","onchange","onsubmit","onreset","onfocus","onblur","oninput","oncontextmenu","onfocusin","onfocusout"];
69-
70-var __dummy_18$0 = 0,eventsLength=_$events_17.length,ELEMENT_NODE=1,TEXT_NODE=3,COMMENT_NODE=8;function updateAttribute(newNode,oldNode,name){newNode[name]!==oldNode[name]&&(oldNode[name]=newNode[name],newNode[name]?oldNode.setAttribute(name,""):oldNode.removeAttribute(name))}var _$morph_18=function(newNode,oldNode){var nodeType=newNode.nodeType,nodeName=newNode.nodeName;nodeType===ELEMENT_NODE&&function(newNode,oldNode){for(var oldAttrs=oldNode.attributes,newAttrs=newNode.attributes,attrNamespaceURI=null,attrValue=null,attrName=null,attr=null,i=newAttrs.length-1;i>=0;--i)attr=newAttrs[i],attrName=attr.name,attrNamespaceURI=attr.namespaceURI,attrValue=attr.value,attrNamespaceURI?(attrName=attr.localName||attrName,oldNode.getAttributeNS(attrNamespaceURI,attrName)!==attrValue&&oldNode.setAttributeNS(attrNamespaceURI,attrName,attrValue)):oldNode.hasAttribute(attrName)?oldNode.getAttribute(attrName)!==attrValue&&("null"===attrValue||"undefined"===attrValue?oldNode.removeAttribute(attrName):oldNode.setAttribute(attrName,attrValue)):oldNode.setAttribute(attrName,attrValue);for(var j=oldAttrs.length-1;j>=0;--j)!1!==(attr=oldAttrs[j]).specified&&(attrName=attr.name,(attrNamespaceURI=attr.namespaceURI)?(attrName=attr.localName||attrName,newNode.hasAttributeNS(attrNamespaceURI,attrName)||oldNode.removeAttributeNS(attrNamespaceURI,attrName)):newNode.hasAttributeNS(null,attrName)||oldNode.removeAttribute(attrName))}(newNode,oldNode);nodeType!==TEXT_NODE&&nodeType!==COMMENT_NODE||oldNode.nodeValue!==newNode.nodeValue&&(oldNode.nodeValue=newNode.nodeValue);"INPUT"===nodeName?function(newNode,oldNode){var newValue=newNode.value,oldValue=oldNode.value;updateAttribute(newNode,oldNode,"checked"),updateAttribute(newNode,oldNode,"disabled"),newValue!==oldValue&&(oldNode.setAttribute("value",newValue),oldNode.value=newValue);"null"===newValue&&(oldNode.value="",oldNode.removeAttribute("value"));newNode.hasAttributeNS(null,"value")?"range"===oldNode.type&&(oldNode.value=newValue):oldNode.removeAttribute("value")}(newNode,oldNode):"OPTION"===nodeName?function(newNode,oldNode){updateAttribute(newNode,oldNode,"selected")}(newNode,oldNode):"TEXTAREA"===nodeName&&function(newNode,oldNode){var newValue=newNode.value;newValue!==oldNode.value&&(oldNode.value=newValue);if(oldNode.firstChild&&oldNode.firstChild.nodeValue!==newValue){if(""===newValue&&oldNode.firstChild.nodeValue===oldNode.placeholder)return;oldNode.firstChild.nodeValue=newValue}}(newNode,oldNode);!function(newNode,oldNode){for(var i=0;i<eventsLength;i++){var ev=_$events_17[i];newNode[ev]?oldNode[ev]=newNode[ev]:oldNode[ev]&&(oldNode[ev]=void 0)}}(newNode,oldNode)};
71-
72-var __dummy_16$0 = 0,__TEXT_NODE_16=3;function walk(newNode,oldNode){return oldNode?newNode?newNode.isSameNode&&newNode.isSameNode(oldNode)?oldNode:newNode.tagName!==oldNode.tagName?newNode:(_$morph_18(newNode,oldNode),function(newNode,oldNode){for(var oldChild,newChild,morphed,oldMatch,offset=0,i=0;oldChild=oldNode.childNodes[i],newChild=newNode.childNodes[i-offset],oldChild||newChild;i++)if(newChild)if(oldChild)if(same(newChild,oldChild))(morphed=walk(newChild,oldChild))!==oldChild&&(oldNode.replaceChild(morphed,oldChild),offset++);else{oldMatch=null;for(var j=i;j<oldNode.childNodes.length;j++)if(same(oldNode.childNodes[j],newChild)){oldMatch=oldNode.childNodes[j];break}oldMatch?((morphed=walk(newChild,oldMatch))!==oldMatch&&offset++,oldNode.insertBefore(morphed,oldChild)):newChild.id||oldChild.id?(oldNode.insertBefore(newChild,oldChild),offset++):(morphed=walk(newChild,oldChild))!==oldChild&&(oldNode.replaceChild(morphed,oldChild),offset++)}else oldNode.appendChild(newChild),offset++;else oldNode.removeChild(oldChild),i--}(newNode,oldNode),oldNode):null:newNode}function same(a,b){return a.id?a.id===b.id:a.isSameNode?a.isSameNode(b):a.tagName===b.tagName&&(a.type===__TEXT_NODE_16&&a.nodeValue===b.nodeValue)}var _$nanomorph_16=function(oldTree,newTree){return walk(newTree,oldTree)};
73-
74-var reg=/([^?=&]+)(=([^&]*))?/g;var _$browser_19=function(url){var obj={};return url.replace(/^.*\?/,"").replace(reg,function(a0,a1,a2,a3){obj[decodeURIComponent(a1)]=decodeURIComponent(a3)}),obj};
75-
76-"use strict";var _$nanoraf_20=function(render,raf){raf||(raf=window.requestAnimationFrame);var redrawScheduled=!1,args=null;return function(){null!==args||redrawScheduled||(redrawScheduled=!0,raf(function(){redrawScheduled=!1;for(var length=args.length,_args=new Array(length),i=0;i<length;i++)_args[i]=args[i];render.apply(render,_args),args=null})),args=arguments}};
77-
78-var _$immutable_35=function(){for(var target={},i=0;i<arguments.length;i++){var source=arguments[i];for(var key in source)__hasOwnProperty_35.call(source,key)&&(target[key]=source[key])}return target};var __hasOwnProperty_35=Object.prototype.hasOwnProperty;
79-
80-var _$trie_34 = {};
81-var __dummy_34$0 = 0,__dummy_34$1 = 0;function Trie(){if(!(this instanceof Trie))return new Trie;this.trie={nodes:{}}}_$trie_34=Trie,Trie.prototype.create=function(route){var routes=route.replace(/^\//,"").split("/");return function createNode(index,trie){var thisRoute=routes.hasOwnProperty(index)&&routes[index];if(!1===thisRoute)return trie;var node=null;return/^:|^\*/.test(thisRoute)?(trie.nodes.hasOwnProperty("$$")?node=trie.nodes.$$:(node={nodes:{}},trie.nodes.$$=node),"*"===thisRoute[0]&&(trie.wildcard=!0),trie.name=thisRoute.replace(/^:|^\*/,"")):trie.nodes.hasOwnProperty(thisRoute)?node=trie.nodes[thisRoute]:(node={nodes:{}},trie.nodes[thisRoute]=node),createNode(index+1,node)}(0,this.trie)},Trie.prototype.match=function(route){var routes=route.replace(/^\//,"").split("/"),params={};var node=function search(index,trie){if(void 0!==trie){var thisRoute=routes[index];if(void 0===thisRoute)return trie;if(trie.nodes.hasOwnProperty(thisRoute))return search(index+1,trie.nodes[thisRoute]);if(trie.name){try{params[trie.name]=decodeURIComponent(thisRoute)}catch(e){return search(index,void 0)}return search(index+1,trie.nodes.$$)}if(trie.wildcard){try{params.wildcard=decodeURIComponent(routes.slice(index).join("/"))}catch(e){return search(index,void 0)}return trie.nodes.$$}return search(index+1)}}(0,this.trie);if(node)return(node=_$immutable_35(node)).params=params,node},Trie.prototype.mount=function(route,trie){var split=route.replace(/^\//,"").split("/"),node=null,key=null;if(1===split.length)key=split[0],node=this.create(key);else{var head=split.join("/");key=split[0],node=this.create(head)}_$mutable_36(node.nodes,trie.nodes),trie.name&&(node.name=trie.name),node.nodes[""]&&(Object.keys(node.nodes[""]).forEach(function(key){"nodes"!==key&&(node[key]=node.nodes[""][key])}),_$mutable_36(node.nodes,node.nodes[""].nodes),delete node.nodes[""].nodes)};
82-
83-/* removed: var _$trie_34=require("./trie"); */;var _$Wayfarer_33=function Wayfarer(dft){if(!(this instanceof Wayfarer))return new Wayfarer(dft);var _default=(dft||"").replace(/^\//,"");var _trie=_$trie_34();emit._trie=_trie;emit.on=function(route,cb){if(route=route||"/",cb.route=route,cb&&cb._wayfarer&&cb._trie)_trie.mount(route,cb._trie.trie);else{var node=_trie.create(route);node.cb=cb}return emit};emit.emit=emit;emit.match=match;emit._wayfarer=!0;return emit;function emit(route){var matched=match(route),args=new Array(arguments.length);args[0]=matched.params;for(var i=1;i<args.length;i++)args[i]=arguments[i];return matched.cb.apply(matched.cb,args)}function match(route){var matched=_trie.match(route);if(matched&&matched.cb)return new Route(matched);var dft=_trie.match(_default);if(dft&&dft.cb)return new Route(dft);throw new Error("route '"+route+"' did not match")}function Route(matched){this.cb=matched.cb,this.route=matched.cb.route,this.params=matched.params}};
84-
85-var _$nanorouter_21 = {};
86-var __dummy_21$0 = 0,isLocalFile=/file:\/\//.test("object"==typeof window&&window.location&&window.location.origin),stripElectron=new RegExp("^(file://|/)(.*.html?/?)?"),prefix=new RegExp("^(http(s)?(://))?(www.)?[a-zA-Z0-9-_.]+(:[0-9]{1,5})?(/{1})?"),normalize=new RegExp("#"),suffix=new RegExp("[?].*$");function Nanorouter(opts){if(!(this instanceof Nanorouter))return new Nanorouter(opts);opts=opts||{},this.router=_$Wayfarer_33(opts.default||"/404")}function pathname(routename,isElectron){return routename=isElectron?routename.replace(stripElectron,""):routename.replace(prefix,""),decodeURI(routename.replace(suffix,"").replace(normalize,"/"))}_$nanorouter_21=Nanorouter,Nanorouter.prototype.on=function(routename,listener){routename=routename.replace(/^[#/]/,""),this.router.on(routename,listener)},Nanorouter.prototype.emit=function(routename){return routename=pathname(routename,isLocalFile),this.router.emit(routename)},Nanorouter.prototype.match=function(routename){return routename=pathname(routename,isLocalFile),this.router.match(routename)};
87-
88-var _$scrollToAnchor_30=function(anchor,options){if(anchor)try{var el=document.querySelector(anchor);el&&el.scrollIntoView(options)}catch(e){}};
89-
90-var __dummy_8$0 = 0,__dummy_8$1 = 0,__dummy_8$2 = 0,__dummy_8$3 = 0,__dummy_8$4 = 0,__dummy_8$5 = 0,__dummy_8$6 = 0,__dummy_8$7 = 0,__dummy_8$8 = 0,__dummy_8$9 = 0,__dummy_8$10 = 0,__dummy_8$11 = 0;var _$Choo_8=Choo;var HISTORY_OBJECT={};function Choo(opts){if(!(this instanceof Choo))return new Choo(opts);opts=opts||{};var self=this;this._events={DOMCONTENTLOADED:"DOMContentLoaded",DOMTITLECHANGE:"DOMTitleChange",REPLACESTATE:"replaceState",PUSHSTATE:"pushState",NAVIGATE:"navigate",POPSTATE:"popState",RENDER:"render"},this._historyEnabled=void 0===opts.history||opts.history,this._hrefEnabled=void 0===opts.href||opts.href,this._hasWindow="undefined"!=typeof window,this._createLocation=_$nanolocation_14,this._cache=opts.cache,this._loaded=!1,this._stores=[],this._tree=null;var _state={events:this._events,components:{}};this._hasWindow?(this.state=window.initialState?_$immutable_35(window.initialState,_state):_state,delete window.initialState):this.state=_state,this.router=_$nanorouter_21({curry:!0}),this.emitter=_$nanobus_12("choo.emit"),this.emit=this.emitter.emit.bind(this.emitter),this._hasWindow&&(this.state.title=document.title),this.emitter.prependListener(this._events.DOMTITLECHANGE,function(title){self.state.title=title,self._hasWindow&&(document.title=title)})}Choo.prototype.route=function(route,handler){this.router.on(route,handler)},Choo.prototype.use=function(cb){var self=this;this._stores.push(function(state){var msg="choo.use";msg=cb.storeName?msg+"("+cb.storeName+")":msg;var endTiming=_$nanotiming_23(msg);cb(state,self.emitter,self),endTiming()})},Choo.prototype.start=function(){var self=this;return this._historyEnabled&&(this.emitter.prependListener(this._events.NAVIGATE,function(){self._matchRoute(),self._loaded&&(self.emitter.emit(self._events.RENDER),setTimeout(_$scrollToAnchor_30.bind(null,window.location.hash),0))}),this.emitter.prependListener(this._events.POPSTATE,function(){self.emitter.emit(self._events.NAVIGATE)}),this.emitter.prependListener(this._events.PUSHSTATE,function(href){window.history.pushState(HISTORY_OBJECT,null,href),self.emitter.emit(self._events.NAVIGATE)}),this.emitter.prependListener(this._events.REPLACESTATE,function(href){window.history.replaceState(HISTORY_OBJECT,null,href),self.emitter.emit(self._events.NAVIGATE)}),window.onpopstate=function(){self.emitter.emit(self._events.POPSTATE)},self._hrefEnabled&&_$nanohref_13(function(location){var href=location.href;href!==window.location.href&&self.emitter.emit(self._events.PUSHSTATE,href)})),this._setCache(this.state),this._stores.forEach(function(initStore){initStore(self.state)}),this._matchRoute(),this._tree=this._prerender(this.state),this.emitter.prependListener(self._events.RENDER,_$nanoraf_20(function(){var renderTiming=_$nanotiming_23("choo.render"),newTree=self._prerender(self.state),morphTiming=_$nanotiming_23("choo.morph");_$nanomorph_16(self._tree,newTree),morphTiming(),renderTiming()})),_$documentReady_9(function(){self.emitter.emit(self._events.DOMCONTENTLOADED),self._loaded=!0}),this._tree},Choo.prototype.mount=function(selector){if("object"!=typeof window)return this.selector=selector,this;var self=this;_$documentReady_9(function(){var renderTiming=_$nanotiming_23("choo.render"),newTree=self.start();self._tree="string"==typeof selector?document.querySelector(selector):selector;var morphTiming=_$nanotiming_23("choo.morph");_$nanomorph_16(self._tree,newTree),morphTiming(),renderTiming()})},Choo.prototype.toString=function(location,state){this.state=_$immutable_35(this.state,state||{});var self=this;this._setCache(this.state),this._stores.forEach(function(initStore){initStore(self.state)}),this._matchRoute(location);var html=this._prerender(this.state);return"string"==typeof html.outerHTML?html.outerHTML:html.toString()},Choo.prototype._matchRoute=function(locationOverride){var location,queryString;locationOverride?(location=locationOverride.replace(/\?.+$/,""),queryString=locationOverride):(location=this._createLocation(),queryString=window.location.search);var matched=this.router.match(location);return this._handler=matched.cb,this.state.href=location,this.state.query=_$browser_19(queryString),this.state.route=matched.route,this.state.params=matched.params,this.state},Choo.prototype._prerender=function(state){var routeTiming=_$nanotiming_23("choo.prerender('"+state.route+"')"),res=this._handler(state,this.emit);return routeTiming(),res},Choo.prototype._setCache=function(state){var cache=new _$cache_6(state,this.emitter.emit.bind(this.emitter),this._cache);function renderComponent(Component,id){for(var args=[],i=0,len=arguments.length;i<len;i++)args.push(arguments[i]);return cache.render.apply(cache,args)}state.cache=renderComponent,renderComponent.toJSON=function(){return null}};
91-
92-var _$songs_37={"songs": [
93- {title: 'introduction',
94- post: ['In the spring of 2018, I set out on a personal project as part of my work at Enspiral Dev Academy. The goal of the project was to make a successful contribution to a decentralized app. I started the course because I wanted to help build a better solarpunk future, and so I figured I should spend my personal project energy on learning how these awesome future applications are made.',
95- 'The decentralized app I chose was Datradio--a punk2punk music player. Datradio is a site you can access through the Beaker Browser, where you can create playlists on your computer and then share them through the magic, person-powered fabric that is decentralized technology.',
96- 'I made a small pull request to datradio (fixing a small bug), but the creator of the project (@cbglh) told me what would really help is some long-term envisioning of what datradio <em>could</em> be. I thought I would write a couple thoughts on features. Instead, I ended up with this entire site.',
97-'Datradio exists in an entirely new space, using entirely new technology. I did not want to give any long-term future for it, unless that future vision was also entirely new. I think this technology will allow us to create something truly meaningful for music scenes, and for the future romances of future youth. That is really exciting to me , and so this project might have ended up a bit sincere. But hey, the future <em>is</em> sincere.'
98- ]
99- },
100- {title: 'the structure',
101- post: [
102- "This site is a mix of my thoughts on the future, memories, favorite albums, feelings i wanna express but cannot quite articulate, and some practical roadmapping. There is some mention of good features or things to build, but it is largely a collage of tones that I hope gives forth an idea of where datradio could go.",
103- "There are practical thoughts within here, but none are given that linear. This is partly just a personal hurdle, that I have a hard time with 'linear thought', but it's also that I didn't want to narrow the possibilities of datradio by trying to construct a logical argument for an emotional thing. I wanted to give you a prairie, instead of a few blades of glass, carefully arranged in a line."
104- ]
105- },
106- {title: 'some context',
107- post: ["It is 11:50 at night. I am in a mint-green room, with thick muslin curtains, on top of a mountain in New Zealand. But I'm also feeling homesick and wistful and listening to Bright Eyes. I have a window open, to let the wonderfully crisp night air in. Exotic moths keep finding their way into my room, drawn by the light of this computer screen. They crawl for a minute over these words then fly back out again."]},
108- {title: 'the playlist as offering',
109- post: [
110- 'You seek out songs and bands to explore your own history and place. The details of a narrative you feel called to own.',
111- 'Songs often hold our first experience with an emotion, a tremble, a hue of a color you could name but not see. You are reminded of your personal introduction to these feelings when you hear those songs again. And so our favorite songs are like droplets of amber, containing a reflection of the place you heard them, the time you heard them. They contain a reflection of you.',
112- 'And so, the gift of a mixtape is a literal offering of yourself. the mixtape is a form of oral storytelling, like the folktales of old that act as song, lesson, and map all at once.',
113- 'The myths that contain maps, the myths whose style and rhythm of telling are important for within that is held a map.'
114- ]
115- },
116- {
117- title: 'datradio survey',
118- post: ["Datradio is a single page, filled mostly with text. The left hand side contains a list of playlists you've made or subscribed to. The right is a list of commands you can run to change the appearance of each playlist's page, along with the tracklistings and names and other commands. In the center is a terminal window to enter these commands.",
119- "Within this text window you can also throw in links to dat archives. If that archive includes mp3s, they suddenly fill up the center column and you now have a true blue playlist. You can then run commands to move these freshly imported tracks around, or change the name and appearance of the list.",
120- "After you've made all these changes, you can go into the beaker library of your datradio and see a bunch of changes to review. You review them, publish teh changes, and now all your customization will be saved in the configurations of the site.",
121- "To add a new playlist, you have to have a link to a dat archive. And so, you must first upload a folder of mp3's to your dat. You do this through the beaker library too--you click 'new > import folder' and then choose the folder from your computer. You publish your changes, view this dat archive to copy it's link, then throw this link back into your datradio site.",
122- "In other words, using dat is a balance between the nitty gritty of file management and a simple, two color interface. You are continually aware that everything you're doing lives as some tangible object on your computer, and you can easily make changes to files to see these changes reflected on your site and vice versa."]
123- },
124- { title: 'four views into datradio',
125- post: ["The view of the listener, who wants to pick a playlist to have in the background, and personalize their unique datradio fork. This is datradio as boombox, with each link entered into the window like a cassette being added to the deck.",
126- "The view of the artist, who wants to upload their latest album or mix. They are navigating between a file structure and the dat instance, and making sure their specific playlist has the colors, shape, appearance, and tracklisting that they want. They are not concerned with the larger collection, just the shape of this particular datarchive.",
127- "The view of the explorer and voyeur, who is visiting their friend's datradio. They trust their friend's taste, and want to find something new to listen to. So they browse through the friend's list of playlists, and find ones that look interesting. If they click on one, and the first song is great, and the appearance of that playlist is ownderful, then they'll copy the link and add it to their own personal collection. In this case, the view into the friend's collection is likely different from the friend's own view,b ut v. similar. In the way that the tapes you display in your room is different than the walkman you have on you.",
128- "And so there is the view of the curator, who wants to display the playlists they've collected, the albums they've found. This may not be all of their music, and it may look different than their personal view. This is offering their entire collection to the grander chorus."
129- ]
130- },
131- {
132- title: "language",
133- post: [
134- "I will hold fast to language, because in language culture is preserverd. Worldviews are articulated. The world is not made by humans, but our understanding of the world is, as our understanding is carried forth by language.",
135-"The forcing of another lanugage is the forcing of a worldview. colonization no longer requires physical space. colonization can happen entirely in the digital. The suprresion of a culture through the forced assimilation of another."
136- ]
137- },
138- {title: "the means of distribution",
139- post: [
140- "We must own the means of distribution. There are so many diverse physical methods, the style of play is imnportant. Not the way you chooose to distribute that style. Like--people will want to listen to a tape, or a cd, or a record. And, if they big ol' audiophiles, they may appreciate a certain thickness of vinyl or quality of tape. But there are few, if zero, people who would say 'I only listen to bands who press vinyl specifically with VinylCo. Pressing plant. And I only listen to bands who use RCA-DVI for distribution. If that 180gram vinyl came to me through any other means, than fucking NO way will I listen.",
141-"That concept is absurd, but it's a value we've been forced into adapting through digital music. People ultimately want to stream music, or listen to it all on a single device instead of having to swtich out hard packages. But the streaming type of play has become fully intertwined with the distribution methods of that particular streaming file. You choose whether you want to be on spotify or google play or Tidal or deezer or whatever shit, and then you mostly only listen to bands that are licensed there. And if you are a band, you make sure you are distributed with these channels, even if they don't agree with yo ur values, because you want people to be able to hear your music.",
142-"Band sshould own the means for distribution, while still being able to be in the preent moment. Autonomy doesn't have to mean adapting older styles only. You should be able to have a tape, vinyl, cd, mpp3, and streaming and have autonomy over each. We are in the future, that's entirely possible."
143- ]
144- },
145- {
146- title:'greatgatsby.js',
147- post:[
148- "Code is art. It is a beautiful form of human expression, but it has a disadvantage when compared to other art forms: code doesn't get to stick around and resonate. Books get better with time, when the words have sunk in over generations. Music can be ahead of its time, with the full influence of an album finally coming through decades later. But it's rare when we re-appraise source code, rediscover the coder's original intent and the imagination they were trying to manifest. If code is successful, then it gets blotted out by its fanmade sequels, and we only appraise it by how it stands today.",
149- "The web is a work built upon an original piece of code that maybe we misunderstood. And maybe even that original proposal was built upon ideas that Tim Berners-Lee didn't really understand.",
150- "Ted Nelson's Xanadu is a beautiful thought that is now maligned because 'the web won', as if the fact Xanadu was never built negates the strength of its dream.",
151- "Can we learn from past technology and past visions beyond just stating 'where they went wrong'? Can we appreciate the artistic importance of a book even if it never became a movie?"
152- ]
153- },
154- {
155- title: "the spotify alternative",
156- post:[
157- "We will polish and sculpt datradio and want to share it widely, and the first batch of feedback will include, 'Is this a spotify alternative?' Or 'What are you going to do to really take out spotify?' or 'You're going to need a lot more features if you want to take on itunes.' 'I love this,' they'll say, so that they can add, 'and here' swhat I think you need to be a true soundcloud replacement: discovery, embeddable urls, more licenses, a business plan.'",
158- "I wanna urge you to listen to none of this. They are positioning an argument that is absurd and damaging--this notion that we are trying to 'replace' a shitty thing, to assume it's spot, and to do so we should have feature parity with that shitty thing.",
159- "That's like someone listing to the music on the radio and saying, 'All of this music sucks, I guess I'll just have to start a band to make music I wanna hear. And I beter make sure my music recreactes this radio song exactly...it's gotta have hooks, a bridge, an overlong guitar solo. But, y'know, this time <em>i'm</em> the one wanking.'"
160- ]
161- },
162- {
163- title: "discovery",
164- post: [
165- "Discovery is important, otherwise you are just making a personal cloud music player--which is not really exciting to me. So how can we include discovery?",
166- "I think we should think jof how discovery worked before algorithms? Those methods worked for millennia, somehow we've always been able to find new music, and playlists today that are helped by playlists are especially bland.",
167- "So how did discovery work before?",
168- "through the ability to dive in and to recommend and through hubs.",
169- "the hub of a venue",
170- "the hub of a record store",
171- "the hub of a message board.",
172- "hubs are natural, but can form anywhere and shift over time."
173- ]
174- },
175- {
176- title: "supporting not hoarding",
177- post: [
178- "What is the tool that builds support, and sharing. That doesn't promote hoarding. That doesn't encourage you to grab an entire discography cos you can, but instead to intentionally seed the things you love, and inspire you to create your own too?"
179- ]
180-}
181- ]
182-}
183-
184-
185-var _$songs_38=function(state,emitter){/* removed: var _$songs_37=require("../songs.json"); */;state.songs=_$songs_37.songs,state.currentSong="",state.songList=[],emitter.on("DOMContentLoaded",function(){emitter.on("changeSong",function(song){song=song.replace(/\s+/g,"-").toLowerCase(),emitter.emit("pushState","/#songbook/"+song),setTimeout("document.getElementById('track').classList.toggle('change-color')",1500)})}),emitter.on("DOMContentLoaded",function(){emitter.on("close",function(song){state.lastSong=song,emitter.emit("pushState","/#songbook")})}),emitter.on("DOMContentLoaded",function(){var archive=new DatArchive(window.location.host);archive.readdir("songs").then(contents=>{state.songList=contents,console.log(state.songList)})})};
186-
187-/* removed: const _$html_7=require("choo/html"); */;var _$main_39=(()=>_$html_7`
1+!function(){var e,t,n,o=e={};function r(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===r||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:r}catch(e){t=r}try{n="function"==typeof clearTimeout?clearTimeout:i}catch(e){n=i}}();var s,h=[],l=!1,u=-1;function c(){l&&s&&(l=!1,s.length?h=s.concat(h):u=-1,h.length&&f())}function f(){if(!l){var e=a(c);l=!0;for(var t=h.length;t;){for(s=h,h=[];++u<t;)s&&s[u].run();u=-1,t=h.length}s=null,l=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===i||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function d(e,t){this.fun=e,this.array=t}function p(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];h.push(new d(e,t)),1!==h.length||l||a(f)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=p,o.addListener=p,o.once=p,o.off=p,o.removeListener=p,o.removeAllListeners=p,o.emit=p,o.prependListener=p,o.prependOnceListener=p,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0};var m={};(function(e){function t(e,t){for(var n=0,o=e.length-1;o>=0;o--){var r=e[o];"."===r?e.splice(o,1):".."===r?(e.splice(o,1),n++):n&&(e.splice(o,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function n(e,t){if(e.filter)return e.filter(t);for(var n=[],o=0;o<e.length;o++)t(e[o],o,e)&&n.push(e[o]);return n}m.resolve=function(){for(var o="",r=!1,i=arguments.length-1;i>=-1&&!r;i--){var a=i>=0?arguments[i]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(o=a+"/"+o,r="/"===a.charAt(0))}return o=t(n(o.split("/"),function(e){return!!e}),!r).join("/"),(r?"/":"")+o||"."},m.normalize=function(e){var r=m.isAbsolute(e),i="/"===o(e,-1);return(e=t(n(e.split("/"),function(e){return!!e}),!r).join("/"))||r||(e="."),e&&i&&(e+="/"),(r?"/":"")+e},m.isAbsolute=function(e){return"/"===e.charAt(0)},m.join=function(){var e=Array.prototype.slice.call(arguments,0);return m.normalize(n(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))};var o="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,e);var g={exports:{}};function y(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(function(e){!function(t){var n="object"==typeof g.exports&&g.exports&&!g.exports.nodeType&&g.exports,o=g&&!g.nodeType&&g,r="object"==typeof e&&e;r.global!==r&&r.window!==r&&r.self!==r||(t=r);var i,a,s=2147483647,h=36,l=1,u=26,c=38,f=700,d=72,p=128,m="-",y=/^xn--/,v=/[^\x20-\x7E]/,w=/[\x2E\u3002\uFF0E\uFF61]/g,b={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},A=h-l,k=Math.floor,T=String.fromCharCode;function _(e){throw new RangeError(b[e])}function x(e,t){for(var n=e.length,o=[];n--;)o[n]=t(e[n]);return o}function E(e,t){var n=e.split("@"),o="";return n.length>1&&(o=n[0]+"@",e=n[1]),o+x((e=e.replace(w,".")).split("."),t).join(".")}function I(e){for(var t,n,o=[],r=0,i=e.length;r<i;)(t=e.charCodeAt(r++))>=55296&&t<=56319&&r<i?56320==(64512&(n=e.charCodeAt(r++)))?o.push(((1023&t)<<10)+(1023&n)+65536):(o.push(t),r--):o.push(t);return o}function O(e){return x(e,function(e){var t="";return e>65535&&(t+=T((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+T(e)}).join("")}function S(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function N(e,t,n){var o=0;for(e=n?k(e/f):e>>1,e+=k(e/t);e>A*u>>1;o+=h)e=k(e/A);return k(o+(A+1)*e/(e+c))}function C(e){var t,n,o,r,i,a,c,f,g,y,v,w=[],b=e.length,A=0,T=p,x=d;for((n=e.lastIndexOf(m))<0&&(n=0),o=0;o<n;++o)e.charCodeAt(o)>=128&&_("not-basic"),w.push(e.charCodeAt(o));for(r=n>0?n+1:0;r<b;){for(i=A,a=1,c=h;r>=b&&_("invalid-input"),((f=(v=e.charCodeAt(r++))-48<10?v-22:v-65<26?v-65:v-97<26?v-97:h)>=h||f>k((s-A)/a))&&_("overflow"),A+=f*a,!(f<(g=c<=x?l:c>=x+u?u:c-x));c+=h)a>k(s/(y=h-g))&&_("overflow"),a*=y;x=N(A-i,t=w.length+1,0==i),k(A/t)>s-T&&_("overflow"),T+=k(A/t),A%=t,w.splice(A++,0,T)}return O(w)}function L(e){var t,n,o,r,i,a,c,f,g,y,v,w,b,A,x,E=[];for(w=(e=I(e)).length,t=p,n=0,i=d,a=0;a<w;++a)(v=e[a])<128&&E.push(T(v));for(o=r=E.length,r&&E.push(m);o<w;){for(c=s,a=0;a<w;++a)(v=e[a])>=t&&v<c&&(c=v);for(c-t>k((s-n)/(b=o+1))&&_("overflow"),n+=(c-t)*b,t=c,a=0;a<w;++a)if((v=e[a])<t&&++n>s&&_("overflow"),v==t){for(f=n,g=h;!(f<(y=g<=i?l:g>=i+u?u:g-i));g+=h)x=f-y,A=h-y,E.push(T(S(y+x%A,0))),f=k(x/A);E.push(T(S(f,0))),i=N(n,b,o==r),n=0,++o}++n,++t}return E.join("")}if(i={version:"1.4.1",ucs2:{decode:I,encode:O},decode:C,encode:L,toASCII:function(e){return E(e,function(e){return v.test(e)?"xn--"+L(e):e})},toUnicode:function(e){return E(e,function(e){return y.test(e)?C(e.slice(4).toLowerCase()):e})}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return i});else if(n&&o)if(g.exports==n)o.exports=i;else for(a in i)i.hasOwnProperty(a)&&(n[a]=i[a]);else t.punycode=i}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}),g=g.exports;var v=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},w=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},b=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function A(e,t){if(e.map)return e.map(t);for(var n=[],o=0;o<e.length;o++)n.push(t(e[o],o));return n}var k=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},T={parse:function(e,t,n,o){t=t||"&",n=n||"=";var r={};if("string"!=typeof e||0===e.length)return r;var i=/\+/g;e=e.split(t);var a=1e3;o&&"number"==typeof o.maxKeys&&(a=o.maxKeys);var s=e.length;a>0&&s>a&&(s=a);for(var h=0;h<s;++h){var l,u,c,f,d=e[h].replace(i,"%20"),p=d.indexOf(n);p>=0?(l=d.substr(0,p),u=d.substr(p+1)):(l=d,u=""),c=decodeURIComponent(l),f=decodeURIComponent(u),y(r,c)?v(r[c])?r[c].push(f):r[c]=[r[c],f]:r[c]=f}return r},stringify:function(e,t,n,o){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?A(k(e),function(o){var r=encodeURIComponent(w(o))+n;return b(e[o])?A(e[o],function(e){return r+encodeURIComponent(w(e))}).join(t):r+encodeURIComponent(w(e[o]))}).join(t):o?encodeURIComponent(w(o))+n+encodeURIComponent(w(e)):""}},_={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}},x={};function E(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}x.format=function(e){return _.isString(e)&&(e=$(e)),e instanceof E?e.format():E.prototype.format.call(e)};var I=/^([a-z0-9.+-]+:)/i,O=/:[0-9]*$/,S=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,N=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),C=["'"].concat(N),L=["%","/","?",";","#"].concat(C),j=["/","?","#"],R=/^[+a-z0-9A-Z_-]{0,63}$/,D=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,P={javascript:!0,"javascript:":!0},M={javascript:!0,"javascript:":!0},q={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function $(e,t,n){if(e&&_.isObject(e)&&e instanceof E)return e;var o=new E;return o.parse(e,t,n),o}E.prototype.parse=function(e,t,n){if(!_.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var o=e.indexOf("?"),r=-1!==o&&o<e.indexOf("#")?"?":"#",i=e.split(r);i[0]=i[0].replace(/\\/g,"/");var a=e=i.join(r);if(a=a.trim(),!n&&1===e.split("#").length){var s=S.exec(a);if(s)return this.path=a,this.href=a,this.pathname=s[1],s[2]?(this.search=s[2],this.query=t?T.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var h=I.exec(a);if(h){var l=(h=h[0]).toLowerCase();this.protocol=l,a=a.substr(h.length)}if(n||h||a.match(/^\/\/[^@\/]+@[^@\/]+/)){var u="//"===a.substr(0,2);!u||h&&M[h]||(a=a.substr(2),this.slashes=!0)}if(!M[h]&&(u||h&&!q[h])){for(var c,f,d=-1,p=0;p<j.length;p++)-1!==(m=a.indexOf(j[p]))&&(-1===d||m<d)&&(d=m);for(-1!==(f=-1===d?a.lastIndexOf("@"):a.lastIndexOf("@",d))&&(c=a.slice(0,f),a=a.slice(f+1),this.auth=decodeURIComponent(c)),d=-1,p=0;p<L.length;p++){var m;-1!==(m=a.indexOf(L[p]))&&(-1===d||m<d)&&(d=m)}-1===d&&(d=a.length),this.host=a.slice(0,d),a=a.slice(d),this.parseHost(),this.hostname=this.hostname||"";var y="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!y)for(var v=this.hostname.split(/\./),w=(p=0,v.length);p<w;p++){var b=v[p];if(b&&!b.match(R)){for(var A="",k=0,x=b.length;k<x;k++)b.charCodeAt(k)>127?A+="x":A+=b[k];if(!A.match(R)){var E=v.slice(0,p),O=v.slice(p+1),N=b.match(D);N&&(E.push(N[1]),O.unshift(N[2])),O.length&&(a="/"+O.join(".")+a),this.hostname=E.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),y||(this.hostname=g.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,y&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!P[l])for(p=0,w=C.length;p<w;p++){var V=C[p];if(-1!==a.indexOf(V)){var G=encodeURIComponent(V);G===V&&(G=escape(V)),a=a.split(V).join(G)}}var B=a.indexOf("#");-1!==B&&(this.hash=a.substr(B),a=a.slice(0,B));var F=a.indexOf("?");if(-1!==F?(this.search=a.substr(F),this.query=a.substr(F+1),t&&(this.query=T.parse(this.query)),a=a.slice(0,F)):t&&(this.search="",this.query={}),a&&(this.pathname=a),q[l]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){$=this.pathname||"";var W=this.search||"";this.path=$+W}return this.href=this.format(),this},E.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",o=this.hash||"",r=!1,i="";this.host?r=e+this.host:this.hostname&&(r=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&_.isObject(this.query)&&Object.keys(this.query).length&&(i=T.stringify(this.query));var a=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||q[t])&&!1!==r?(r="//"+(r||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):r||(r=""),o&&"#"!==o.charAt(0)&&(o="#"+o),a&&"?"!==a.charAt(0)&&(a="?"+a),t+r+(n=n.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(a=a.replace("#","%23"))+o},E.prototype.resolve=function(e){return this.resolveObject($(e,!1,!0)).format()},E.prototype.resolveObject=function(e){if(_.isString(e)){var t=new E;t.parse(e,!1,!0),e=t}for(var n=new E,o=Object.keys(this),r=0;r<o.length;r++){var i=o[r];n[i]=this[i]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var a=Object.keys(e),s=0;s<a.length;s++){var h=a[s];"protocol"!==h&&(n[h]=e[h])}return q[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!q[e.protocol]){for(var l=Object.keys(e),u=0;u<l.length;u++){var c=l[u];n[c]=e[c]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||M[e.protocol])n.pathname=e.pathname;else{for(var f=(e.pathname||"").split("/");f.length&&!(e.host=f.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==f[0]&&f.unshift(""),f.length<2&&f.unshift(""),n.pathname=f.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var d=n.pathname||"",p=n.search||"";n.path=d+p}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var m=n.pathname&&"/"===n.pathname.charAt(0),g=e.host||e.pathname&&"/"===e.pathname.charAt(0),y=g||m||n.host&&e.pathname,v=y,w=n.pathname&&n.pathname.split("/")||[],b=(f=e.pathname&&e.pathname.split("/")||[],n.protocol&&!q[n.protocol]);if(b&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===f[0]?f[0]=e.host:f.unshift(e.host)),e.host=null),y=y&&(""===f[0]||""===w[0])),g)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,w=f;else if(f.length)w||(w=[]),w.pop(),w=w.concat(f),n.search=e.search,n.query=e.query;else if(!_.isNullOrUndefined(e.search))return b&&(n.hostname=n.host=w.shift(),(I=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=I.shift(),n.host=n.hostname=I.shift())),n.search=e.search,n.query=e.query,_.isNull(n.pathname)&&_.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var A=w.slice(-1)[0],k=(n.host||e.host||w.length>1)&&("."===A||".."===A)||""===A,T=0,x=w.length;x>=0;x--)"."===(A=w[x])?w.splice(x,1):".."===A?(w.splice(x,1),T++):T&&(w.splice(x,1),T--);if(!y&&!v)for(;T--;T)w.unshift("..");!y||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),k&&"/"!==w.join("/").substr(-1)&&w.push("");var I,O=""===w[0]||w[0]&&"/"===w[0].charAt(0);return b&&(n.hostname=n.host=O?"":w.length?w.shift():"",(I=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=I.shift(),n.host=n.hostname=I.shift())),(y=y||n.host&&w.length)&&!O&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),_.isNull(n.pathname)&&_.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},E.prototype.parseHost=function(){var e=this.host,t=O.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};var U=function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)V.call(n,o)&&(e[o]=n[o])}return e},V=Object.prototype.hasOwnProperty,G={};(function(e){G=n;var t=n.events={INSTALLED:"sw:installed",UPDATED:"sw:updated",REDUNDANT:"sw:redundant",POST_MESSAGE:"sw:postMessage",MESSAGE:"sw:message",SYNC:"sw:sync",NOTIFICATION_REQUEST:"sw:notificationRequest",ERROR:"log:error"};function n(n,o){return n=n||"/sw.js",o=o||{},function(r,i){i.on(r.events.DOMCONTENTLOADED,function(){if((o=U({scope:"/"},o)).electron){o.scope=m.join(e,o.scope),n=x.format({pathname:m.join(e,n.replace(/^\//,"")),protocol:"file:",slashes:!0}),delete o.electron}if(window.onmessage=function(e){i.emit(t.MESSAGE,{data:e.data,channel:"window",port:null})},window.MessageChannel){var a=new MessageChannel;a.port1.onmessage=function(e){i.emit(t.MESSAGE,{data:e.data,channel:"messageChannel",port:"port1"})},a.port2.onmessage=function(e){i.emit(t.MESSAGE,{data:e.data,channel:"messageChannel",port:"port2"})}}i.on(t.NOTIFICATION_REQUEST,function(e){Notification.requestPermission(function(t){"function"==typeof t&&e(t)})}),navigator.serviceWorker&&navigator.onLine&&(navigator.serviceWorker.onmessage=function(e){i.emit(t.MESSAGE,{data:e.data,channel:"navigator.serviceWorker",port:null})},navigator.serviceWorker.register(n,o).then(function(e){e.onupdatefound=function(){var n=e.installing;n.onstatechange=function(){"installed"===n.state?navigator.serviceWorker.controller?i.emit(t.UPDATED,e):i.emit(t.INSTALLED,e):"redundant"===n.state&&i.emit(t.REDUNDANT,e)}},e.sync&&function(e){e.sync.getTags().then(function(e){r.syncTags=e}).catch(function(e){i.emit(t.ERROR,e)})}(e)}).catch(function(e){i.emit(t.ERROR,e)}),navigator.serviceWorker.ready.then(function(e){new Promise(function(n){var o=e.active;"activated"!==o.state?(o.addEventListener("statechange",n,{once:!0}),i.on(t.POST_MESSAGE,function(e){o.postMessage(e)})):n()}).then(function(){e.navigationPreload&&e.navigationPreload.enable()}),i.on(t.SYNC,function(n){e.sync.register(n).then(function(){return e.sync.getTags()}).then(function(e){r.syncTags=e}).catch(function(e){i.emit(t.ERROR,e)})})}).catch(function(e){i.emit(t.ERROR,e)}))})}}}).call(this,"/node_modules/choo-service-worker");var B=/\n[\s]+$/,F=/^\n[\s]+/,W=/[\s]+$/,z=/^[\s]+/,Y=/[\n\s]+/g,H=["a","abbr","b","bdi","bdo","br","cite","data","dfn","em","i","kbd","mark","q","rp","rt","rtc","ruby","s","amp","small","span","strong","sub","sup","time","u","var","wbr"],K=["code","pre","textarea"],Z=function e(t,n){if(Array.isArray(n))for(var o,r,i=t.nodeName.toLowerCase(),a=!1,s=0,h=n.length;s<h;s++){var l=n[s];if(Array.isArray(l))e(t,l);else{("number"==typeof l||"boolean"==typeof l||"function"==typeof l||l instanceof Date||l instanceof RegExp)&&(l=l.toString());var u=t.childNodes[t.childNodes.length-1];if("string"==typeof l)a=!0,u&&"#text"===u.nodeName?u.nodeValue+=l:(l=document.createTextNode(l),t.appendChild(l),u=l),s===h-1&&(a=!1,-1===H.indexOf(i)&&-1===K.indexOf(i)?""===(o=u.nodeValue.replace(F,"").replace(W,"").replace(B,"").replace(Y," "))?t.removeChild(u):u.nodeValue=o:-1===K.indexOf(i)&&(r=0===s?"":" ",o=u.nodeValue.replace(F,r).replace(z," ").replace(W,"").replace(B,"").replace(Y," "),u.nodeValue=o));else if(l&&l.nodeType){a&&(a=!1,-1===H.indexOf(i)&&-1===K.indexOf(i)?""===(o=u.nodeValue.replace(F,"").replace(B,"").replace(Y," "))?t.removeChild(u):u.nodeValue=o:-1===K.indexOf(i)&&(o=u.nodeValue.replace(z," ").replace(F,"").replace(B,"").replace(Y," "),u.nodeValue=o));var c=l.nodeName;c&&(i=c.toLowerCase()),t.appendChild(l)}}}},X={class:"className",for:"htmlFor","http-equiv":"httpEquiv"},Q=1,J=2,ee=3,te=4,ne=5,oe=6,re=7,ie=8,ae=9,se=10,he=11,le=12,ue=13;function ce(e){return e===ae||e===se}Object.prototype.hasOwnProperty;var fe=RegExp("^("+["area","base","basefont","bgsound","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr","!--","animate","animateTransform","circle","cursor","desc","ellipse","feBlend","feColorMatrix","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","font-face-format","font-face-name","font-face-uri","glyph","glyphRef","hkern","image","line","missing-glyph","mpath","path","polygon","polyline","rect","set","stop","tref","use","view","vkern"].join("|")+")(?:[.#][a-zA-Z0-9\x7f-\uffff_:-]+)*$"),de={},pe="http://www.w3.org/2000/svg",me="http://www.w3.org/1999/xlink",ge=["autofocus","checked","defaultchecked","disabled","formnovalidate","indeterminate","readonly","required","selected","willvalidate"],ye="!--",ve=["svg","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"];function we(e,t,n){var o;-1!==ve.indexOf(e)&&(t.namespace=pe);var r=!1;if(t.namespace&&(r=t.namespace,delete t.namespace),r)o=document.createElementNS(r,e);else{if(e===ye)return document.createComment(t.comment);o=document.createElement(e)}for(var i in t)if(t.hasOwnProperty(i)){var a=i.toLowerCase(),s=t[i];if("classname"===a&&(a="class",i="class"),"htmlFor"===i&&(i="for"),-1!==ge.indexOf(a))if("true"===s)s=a;else if("false"===s)continue;"on"===a.slice(0,2)?o[i]=s:r?"xlink:href"===i?o.setAttributeNS(me,i,s):/^xmlns($|:)/i.test(i)||o.setAttributeNS(null,i,s):o.setAttribute(i,s)}return Z(o,n),o}(de=function(e,t){t||(t={});var n=t.concat||function(e,t){return String(e)+String(t)};return!1!==t.attrToProp&&(e=function(e){return function(t,n,o){for(var r in n)r in X&&(n[X[r]]=n[r],delete n[r]);return e(t,n,o)}}(e)),function(r){for(var i=Q,a="",s=arguments.length,h=[],l=0;l<r.length;l++)if(l<s-1){var u=arguments[l+1],c=T(r[l]),f=i;f===se&&(f=ie),f===ae&&(f=ie),f===re&&(f=ie),f===te&&(f=ne),f===J?"/"===a?(c.push([J,"/",u]),a=""):c.push([J,u]):c.push([0,f,u]),h.push.apply(h,c)}else h.push.apply(h,T(r[l]));var d,p=[null,{},[]],m=[[p,-1]];for(l=0;l<h.length;l++){var g=m[m.length-1][0],y=(c=h[l])[0];if(y===J&&/^\//.test(c[1])){var v=m[m.length-1][1];m.length>1&&(m.pop(),m[m.length-1][0][2][v]=e(g[0],g[1],g[2].length?g[2]:void 0))}else if(y===J){var w=[c[1],{},[]];g[2].push(w),m.push([w,g[2].length-1])}else if(y===ne||0===y&&c[1]===ne){for(var b,A="";l<h.length;l++)if(h[l][0]===ne)A=n(A,h[l][1]);else{if(0!==h[l][0]||h[l][1]!==ne)break;if("object"!=typeof h[l][2]||A)A=n(A,h[l][2]);else for(b in h[l][2])h[l][2].hasOwnProperty(b)&&!g[1][b]&&(g[1][b]=h[l][2][b])}h[l][0]===he&&l++;for(var k=l;l<h.length;l++)if(h[l][0]===ie||h[l][0]===ne)g[1][A]?""===h[l][1]||(g[1][A]=n(g[1][A],h[l][1])):g[1][A]=o(h[l][1]);else{if(0!==h[l][0]||h[l][1]!==ie&&h[l][1]!==ne){!A.length||g[1][A]||l!==k||h[l][0]!==ee&&h[l][0]!==le||(g[1][A]=A.toLowerCase()),h[l][0]===ee&&l--;break}g[1][A]?""===h[l][2]||(g[1][A]=n(g[1][A],h[l][2])):g[1][A]=o(h[l][2])}}else if(y===ne)g[1][c[1]]=!0;else if(0===y&&c[1]===ne)g[1][c[2]]=!0;else if(y===ee)d=g[0],fe.test(d)&&m.length&&(v=m[m.length-1][1],m.pop(),m[m.length-1][0][2][v]=e(g[0],g[1],g[2].length?g[2]:void 0));else if(0===y&&c[1]===Q)void 0===c[2]||null===c[2]?c[2]="":c[2]||(c[2]=n("",c[2])),Array.isArray(c[2][0])?g[2].push.apply(g[2],c[2]):g[2].push(c[2]);else if(y===Q)g[2].push(c[1]);else if(y!==he&&y!==le)throw new Error("unhandled: "+y)}if(p[2].length>1&&/^\s*$/.test(p[2][0])&&p[2].shift(),p[2].length>2||2===p[2].length&&/\S/.test(p[2][1]))throw new Error("multiple root elements must be wrapped in an enclosing tag");return Array.isArray(p[2][0])&&"string"==typeof p[2][0][0]&&Array.isArray(p[2][0][2])&&(p[2][0]=e(p[2][0][0],p[2][0][1],p[2][0][2])),p[2][0];function T(e){var n=[];i===re&&(i=te);for(var o=0;o<e.length;o++){var r=e.charAt(o);i===Q&&"<"===r?(a.length&&n.push([Q,a]),a="",i=J):">"!==r||ce(i)||i===ue?i===ue&&/-$/.test(a)&&"-"===r?(t.comments&&n.push([ie,a.substr(0,a.length-1)],[ee]),a="",i=Q):i===J&&/^!--$/.test(a)?(t.comments&&n.push([J,a],[ne,"comment"],[he]),a=r,i=ue):i===Q||i===ue?a+=r:i===J&&"/"===r&&a.length||(i===J&&/\s/.test(r)?(a.length&&n.push([J,a]),a="",i=te):i===J?a+=r:i===te&&/[^\s"'=/]/.test(r)?(i=ne,a=r):i===te&&/\s/.test(r)?(a.length&&n.push([ne,a]),n.push([le])):i===ne&&/\s/.test(r)?(n.push([ne,a]),a="",i=oe):i===ne&&"="===r?(n.push([ne,a],[he]),a="",i=re):i===ne?a+=r:i!==oe&&i!==te||"="!==r?i!==oe&&i!==te||/\s/.test(r)?i===re&&'"'===r?i=se:i===re&&"'"===r?i=ae:i===se&&'"'===r?(n.push([ie,a],[le]),a="",i=te):i===ae&&"'"===r?(n.push([ie,a],[le]),a="",i=te):i!==re||/\s/.test(r)?i===ie&&/\s/.test(r)?(n.push([ie,a],[le]),a="",i=te):i!==ie&&i!==ae&&i!==se||(a+=r):(i=ie,o--):(n.push([le]),/[\w-]/.test(r)?(a+=r,i=ne):i=te):(n.push([he]),i=re)):(i===J&&a.length?n.push([J,a]):i===ne?n.push([ne,a]):i===ie&&a.length&&n.push([ie,a]),n.push([ee]),a="",i=Q)}return i===Q&&a.length?(n.push([Q,a]),a=""):i===ie&&a.length?(n.push([ie,a]),a=""):i===se&&a.length?(n.push([ie,a]),a=""):i===ae&&a.length?(n.push([ie,a]),a=""):i===ne&&(n.push([ne,a]),a=""),n}};function o(e){return"function"==typeof e?e:"string"==typeof e?e:e&&"object"==typeof e?e:n("",e)}}(we,{comments:!0})).default=de,de.createElement=we;var be=de,Ae={};function ke(e){if(!(this instanceof ke))return new ke(e);"number"==typeof e&&(e={max:e}),e||(e={}),this.cache={},this.head=this.tail=null,this.length=0,this.max=e.max||1e3,this.maxAge=e.maxAge||0}Ae=ke,Object.defineProperty(ke.prototype,"keys",{get:function(){return Object.keys(this.cache)}}),ke.prototype.clear=function(){this.cache={},this.head=this.tail=null,this.length=0},ke.prototype.remove=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];return delete this.cache[e],this._unlink(e,t.prev,t.next),t.value}},ke.prototype._unlink=function(e,t,n){this.length--,0===this.length?this.head=this.tail=null:this.head===e?(this.head=t,this.cache[this.head].next=null):this.tail===e?(this.tail=n,this.cache[this.tail].prev=null):(this.cache[t].next=n,this.cache[n].prev=t)},ke.prototype.peek=function(e){if(this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return t.value}},ke.prototype.set=function(e,t){var n;if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){if((n=this.cache[e]).value=t,this.maxAge&&(n.modified=Date.now()),e===this.head)return t;this._unlink(e,n.prev,n.next)}else n={value:t,modified:0,next:null,prev:null},this.maxAge&&(n.modified=Date.now()),this.cache[e]=n,this.length===this.max&&this.evict();return this.length++,n.next=null,n.prev=this.head,this.head&&(this.cache[this.head].next=e),this.head=e,this.tail||(this.tail=e),t},ke.prototype._checkAge=function(e,t){return!(this.maxAge&&Date.now()-t.modified>this.maxAge&&(this.remove(e),1))},ke.prototype.get=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return this.head!==e&&(e===this.tail?(this.tail=t.next,this.cache[this.tail].prev=null):this.cache[t.prev].next=t.next,this.cache[t.next].prev=t.prev,this.cache[this.head].next=e,t.prev=this.head,t.next=null,this.head=e),t.value}},ke.prototype.evict=function(){this.tail&&this.remove(this.tail)};var Te={};function _e(e,t,n){this.cache="number"==typeof n?new Ae(n):n||new Ae(100),this.state=e,this.emit=t}function xe(e){return new(e.bind.apply(e,arguments))}Te=_e,_e.prototype.render=function(e,t){var n=this.cache.get(t);if(!n){for(var o=[],r=2,i=arguments.length;r<i;r++)o.push(arguments[r]);o.unshift(e,t,this.state,this.emit),n=xe.apply(xe,o),this.cache.set(t,n)}return n};var Ee=function(e){var t=document.readyState;if("complete"===t||"interactive"===t)return setTimeout(e,0);document.addEventListener("DOMContentLoaded",function(){e()})},Ie="undefined"!=typeof window;function Oe(e){this.hasWindow=e,this.hasIdle=this.hasWindow&&window.requestIdleCallback,this.method=this.hasIdle?window.requestIdleCallback.bind(window):this.setTimeout,this.scheduled=!1,this.queue=[]}Oe.prototype.push=function(e){this.queue.push(e),this.schedule()},Oe.prototype.schedule=function(){if(!this.scheduled){this.scheduled=!0;var e=this;this.method(function(t){for(;e.queue.length&&t.timeRemaining()>0;)e.queue.shift()(t);e.scheduled=!1,e.queue.length&&e.schedule()})}},Oe.prototype.setTimeout=function(e){setTimeout(e,0,{timeRemaining:function(){return 1}})};var Se,Ne=function(){var e;return Ie?(window._nanoScheduler||(window._nanoScheduler=new Oe(!0)),e=window._nanoScheduler):e=new Oe,e}();Ce.disabled=!0;try{Se=window.performance,Ce.disabled="true"===window.localStorage.DISABLE_NANOTIMING||!Se.mark}catch(e){}function Ce(e){if(Ce.disabled)return Le;var t=(1e4*Se.now()).toFixed()%Number.MAX_SAFE_INTEGER,n="start-"+t+"-"+e;function o(o){var r="end-"+t+"-"+e;Se.mark(r),Ne.push(function(){var i=null;try{var a=e+" ["+t+"]";Se.measure(a,n,r),Se.clearMarks(n),Se.clearMarks(r)}catch(e){i=e}o&&o(i,e)})}return Se.mark(n),o.uuid=t,o}function Le(e){e&&Ne.push(function(){e(new Error("nanotiming: performance API unavailable"))})}var je=Ce,Re=function(e,t,n){var o,r=e.length;if(!(t>=r||0===n)){var i=r-(n=t+n>r?r-t:n);for(o=t;o<i;++o)e[o]=e[o+n];e.length=i}},De={};function Pe(e){if(!(this instanceof Pe))return new Pe(e);this._name=e||"nanobus",this._starListeners=[],this._listeners={}}De=Pe,Pe.prototype.emit=function(e){for(var t=[],n=1,o=arguments.length;n<o;n++)t.push(arguments[n]);var r=je(this._name+"('"+e+"')"),i=this._listeners[e];return i&&i.length>0&&this._emit(this._listeners[e],t),this._starListeners.length>0&&this._emit(this._starListeners,e,t,r.uuid),r(),this},Pe.prototype.on=Pe.prototype.addListener=function(e,t){return"*"===e?this._starListeners.push(t):(this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)),this},Pe.prototype.prependListener=function(e,t){return"*"===e?this._starListeners.unshift(t):(this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].unshift(t)),this},Pe.prototype.once=function(e,t){var n=this;return this.on(e,function o(){t.apply(n,arguments),n.removeListener(e,o)}),this},Pe.prototype.prependOnceListener=function(e,t){var n=this;return this.prependListener(e,function o(){t.apply(n,arguments),n.removeListener(e,o)}),this},Pe.prototype.removeListener=function(e,t){return"*"===e?(this._starListeners=this._starListeners.slice(),n(this._starListeners,t)):(void 0!==this._listeners[e]&&(this._listeners[e]=this._listeners[e].slice()),n(this._listeners[e],t));function n(e,t){if(e){var n=e.indexOf(t);return-1!==n?(Re(e,n,1),!0):void 0}}},Pe.prototype.removeAllListeners=function(e){return e?"*"===e?this._starListeners=[]:this._listeners[e]=[]:(this._starListeners=[],this._listeners={}),this},Pe.prototype.listeners=function(e){var t="*"!==e?this._listeners[e]:this._starListeners,n=[];if(t)for(var o=t.length,r=0;r<o;r++)n.push(t[r]);return n},Pe.prototype._emit=function(e,t,n,o){if(void 0!==e&&0!==e.length){void 0===n&&(n=t,t=null),t&&(n=void 0!==o?[t].concat(n,o):[t].concat(n));for(var r=e.length,i=0;i<r;i++){var a=e[i];a.apply(a,n)}}};var Me=/(noopener|noreferrer) (noopener|noreferrer)/,qe=/^[\w-_]+:/,$e=function(){return window.location.pathname.replace(/\/$/,"")+window.location.hash.replace(/^#/,"/")},Ue=["onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmousemove","onmouseout","onmouseenter","onmouseleave","ontouchcancel","ontouchend","ontouchmove","ontouchstart","ondragstart","ondrag","ondragenter","ondragleave","ondragover","ondrop","ondragend","onkeydown","onkeypress","onkeyup","onunload","onabort","onerror","onresize","onscroll","onselect","onchange","onsubmit","onreset","onfocus","onblur","oninput","oncontextmenu","onfocusin","onfocusout"],Ve=Ue.length;function Ge(e,t,n){e[n]!==t[n]&&(t[n]=e[n],e[n]?t.setAttribute(n,""):t.removeAttribute(n))}var Be=function(e,t){var n=e.nodeType,o=e.nodeName;1===n&&function(e,t){for(var n=t.attributes,o=e.attributes,r=null,i=null,a=null,s=null,h=o.length-1;h>=0;--h)a=(s=o[h]).name,r=s.namespaceURI,i=s.value,r?(a=s.localName||a,t.getAttributeNS(r,a)!==i&&t.setAttributeNS(r,a,i)):t.hasAttribute(a)?t.getAttribute(a)!==i&&("null"===i||"undefined"===i?t.removeAttribute(a):t.setAttribute(a,i)):t.setAttribute(a,i);for(var l=n.length-1;l>=0;--l)!1!==(s=n[l]).specified&&(a=s.name,(r=s.namespaceURI)?(a=s.localName||a,e.hasAttributeNS(r,a)||t.removeAttributeNS(r,a)):e.hasAttributeNS(null,a)||t.removeAttribute(a))}(e,t),3!==n&&8!==n||t.nodeValue!==e.nodeValue&&(t.nodeValue=e.nodeValue),"INPUT"===o?function(e,t){var n=e.value,o=t.value;Ge(e,t,"checked"),Ge(e,t,"disabled"),n!==o&&(t.setAttribute("value",n),t.value=n),"null"===n&&(t.value="",t.removeAttribute("value")),e.hasAttributeNS(null,"value")?"range"===t.type&&(t.value=n):t.removeAttribute("value")}(e,t):"OPTION"===o?function(e,t){Ge(e,t,"selected")}(e,t):"TEXTAREA"===o&&function(e,t){var n=e.value;if(n!==t.value&&(t.value=n),t.firstChild&&t.firstChild.nodeValue!==n){if(""===n&&t.firstChild.nodeValue===t.placeholder)return;t.firstChild.nodeValue=n}}(e,t),function(e,t){for(var n=0;n<Ve;n++){var o=Ue[n];e[o]?t[o]=e[o]:t[o]&&(t[o]=void 0)}}(e,t)},Fe=3;function We(e,t){return e.id?e.id===t.id:e.isSameNode?e.isSameNode(t):e.tagName===t.tagName&&e.type===Fe&&e.nodeValue===t.nodeValue}var ze=function(e,t){return function e(t,n){return n?t?t.isSameNode&&t.isSameNode(n)?n:t.tagName!==n.tagName?t:(Be(t,n),function(t,n){for(var o,r,i,a,s=0,h=0;o=n.childNodes[h],r=t.childNodes[h-s],o||r;h++)if(r)if(o)if(We(r,o))(i=e(r,o))!==o&&(n.replaceChild(i,o),s++);else{a=null;for(var l=h;l<n.childNodes.length;l++)if(We(n.childNodes[l],r)){a=n.childNodes[l];break}a?((i=e(r,a))!==a&&s++,n.insertBefore(i,o)):r.id||o.id?(n.insertBefore(r,o),s++):(i=e(r,o))!==o&&(n.replaceChild(i,o),s++)}else n.appendChild(r),s++;else n.removeChild(o),h--}(t,n),n):null:t}(t,e)},Ye=/([^?=&]+)(=([^&]*))?/g,He=function(){for(var e={},t=0;t<arguments.length;t++){var n=arguments[t];for(var o in n)Ke.call(n,o)&&(e[o]=n[o])}return e},Ke=Object.prototype.hasOwnProperty,Ze={};function Xe(){if(!(this instanceof Xe))return new Xe;this.trie={nodes:{}}}Ze=Xe,Xe.prototype.create=function(e){var t=e.replace(/^\//,"").split("/");return function e(n,o){var r=t.hasOwnProperty(n)&&t[n];if(!1===r)return o;var i=null;return/^:|^\*/.test(r)?(o.nodes.hasOwnProperty("$$")?i=o.nodes.$$:(i={nodes:{}},o.nodes.$$=i),"*"===r[0]&&(o.wildcard=!0),o.name=r.replace(/^:|^\*/,"")):o.nodes.hasOwnProperty(r)?i=o.nodes[r]:(i={nodes:{}},o.nodes[r]=i),e(n+1,i)}(0,this.trie)},Xe.prototype.match=function(e){var t=e.replace(/^\//,"").split("/"),n={},o=function e(o,r){if(void 0!==r){var i=t[o];if(void 0===i)return r;if(r.nodes.hasOwnProperty(i))return e(o+1,r.nodes[i]);if(r.name){try{n[r.name]=decodeURIComponent(i)}catch(t){return e(o,void 0)}return e(o+1,r.nodes.$$)}if(r.wildcard){try{n.wildcard=decodeURIComponent(t.slice(o).join("/"))}catch(t){return e(o,void 0)}return r.nodes.$$}return e(o+1)}}(0,this.trie);if(o)return(o=He(o)).params=n,o},Xe.prototype.mount=function(e,t){var n=e.replace(/^\//,"").split("/"),o=null,r=null;if(1===n.length)r=n[0],o=this.create(r);else{var i=n.join("/");r=n[0],o=this.create(i)}U(o.nodes,t.nodes),t.name&&(o.name=t.name),o.nodes[""]&&(Object.keys(o.nodes[""]).forEach(function(e){"nodes"!==e&&(o[e]=o.nodes[""][e])}),U(o.nodes,o.nodes[""].nodes),delete o.nodes[""].nodes)};var Qe=function e(t){if(!(this instanceof e))return new e(t);var n=(t||"").replace(/^\//,""),o=Ze();return r._trie=o,r.on=function(e,t){(e=e||"/",t.route=e,t&&t._wayfarer&&t._trie)?o.mount(e,t._trie.trie):o.create(e).cb=t;return r},r.emit=r,r.match=i,r._wayfarer=!0,r;function r(e){var t=i(e),n=new Array(arguments.length);n[0]=t.params;for(var o=1;o<n.length;o++)n[o]=arguments[o];return t.cb.apply(t.cb,n)}function i(e){var t=o.match(e);if(t&&t.cb)return new a(t);var r=o.match(n);if(r&&r.cb)return new a(r);throw new Error("route '"+e+"' did not match")}function a(e){this.cb=e.cb,this.route=e.cb.route,this.params=e.params}},Je={},et=/file:\/\//.test("object"==typeof window&&window.location&&window.location.origin),tt=new RegExp("^(file://|/)(.*.html?/?)?"),nt=new RegExp("^(http(s)?(://))?(www.)?[a-zA-Z0-9-_.]+(:[0-9]{1,5})?(/{1})?"),ot=new RegExp("#"),rt=new RegExp("[?].*$");function it(e){if(!(this instanceof it))return new it(e);e=e||{},this.router=Qe(e.default||"/404")}function at(e,t){return e=t?e.replace(tt,""):e.replace(nt,""),decodeURI(e.replace(rt,"").replace(ot,"/"))}Je=it,it.prototype.on=function(e,t){e=e.replace(/^[#/]/,""),this.router.on(e,t)},it.prototype.emit=function(e){return e=at(e,et),this.router.emit(e)},it.prototype.match=function(e){return e=at(e,et),this.router.match(e)};var st=lt,ht={};function lt(e){if(!(this instanceof lt))return new lt(e);e=e||{};var t=this;this._events={DOMCONTENTLOADED:"DOMContentLoaded",DOMTITLECHANGE:"DOMTitleChange",REPLACESTATE:"replaceState",PUSHSTATE:"pushState",NAVIGATE:"navigate",POPSTATE:"popState",RENDER:"render"},this._historyEnabled=void 0===e.history||e.history,this._hrefEnabled=void 0===e.href||e.href,this._hasWindow="undefined"!=typeof window,this._createLocation=$e,this._cache=e.cache,this._loaded=!1,this._stores=[],this._tree=null;var n={events:this._events,components:{}};this._hasWindow?(this.state=window.initialState?He(window.initialState,n):n,delete window.initialState):this.state=n,this.router=Je({curry:!0}),this.emitter=De("choo.emit"),this.emit=this.emitter.emit.bind(this.emitter),this._hasWindow&&(this.state.title=document.title),this.emitter.prependListener(this._events.DOMTITLECHANGE,function(e){t.state.title=e,t._hasWindow&&(document.title=e)})}lt.prototype.route=function(e,t){this.router.on(e,t)},lt.prototype.use=function(e){var t=this;this._stores.push(function(n){var o="choo.use";o=e.storeName?o+"("+e.storeName+")":o;var r=je(o);e(n,t.emitter,t),r()})},lt.prototype.start=function(){var e,t,n=this;return this._historyEnabled&&(this.emitter.prependListener(this._events.NAVIGATE,function(){n._matchRoute(),n._loaded&&(n.emitter.emit(n._events.RENDER),setTimeout(function(e,t){if(e)try{var n=document.querySelector(e);n&&n.scrollIntoView(t)}catch(e){}}.bind(null,window.location.hash),0))}),this.emitter.prependListener(this._events.POPSTATE,function(){n.emitter.emit(n._events.NAVIGATE)}),this.emitter.prependListener(this._events.PUSHSTATE,function(e){window.history.pushState(ht,null,e),n.emitter.emit(n._events.NAVIGATE)}),this.emitter.prependListener(this._events.REPLACESTATE,function(e){window.history.replaceState(ht,null,e),n.emitter.emit(n._events.NAVIGATE)}),window.onpopstate=function(){n.emitter.emit(n._events.POPSTATE)},n._hrefEnabled&&(e=function(e){var t=e.href;t!==window.location.href&&n.emitter.emit(n._events.PUSHSTATE,t)},t=t||window.document,window.addEventListener("click",function(n){if(!(n.button&&0!==n.button||n.ctrlKey||n.metaKey||n.altKey||n.shiftKey||n.defaultPrevented)){var o=function e(n){if(n&&n!==t)return"a"!==n.localName||void 0===n.href?e(n.parentNode):n}(n.target);o&&(window.location.origin!==o.origin||o.hasAttribute("download")||"_blank"===o.getAttribute("target")&&Me.test(o.getAttribute("rel"))||qe.test(o.getAttribute("href"))||(n.preventDefault(),e(o)))}}))),this._setCache(this.state),this._stores.forEach(function(e){e(n.state)}),this._matchRoute(),this._tree=this._prerender(this.state),this.emitter.prependListener(n._events.RENDER,function(e,t){t||(t=window.requestAnimationFrame);var n=!1,o=null;return function(){null!==o||n||(n=!0,t(function(){n=!1;for(var t=o.length,r=new Array(t),i=0;i<t;i++)r[i]=o[i];e.apply(e,r),o=null})),o=arguments}}(function(){var e=je("choo.render"),t=n._prerender(n.state),o=je("choo.morph");ze(n._tree,t),o(),e()})),Ee(function(){n.emitter.emit(n._events.DOMCONTENTLOADED),n._loaded=!0}),this._tree},lt.prototype.mount=function(e){if("object"!=typeof window)return this.selector=e,this;var t=this;Ee(function(){var n=je("choo.render"),o=t.start();t._tree="string"==typeof e?document.querySelector(e):e;var r=je("choo.morph");ze(t._tree,o),r(),n()})},lt.prototype.toString=function(e,t){this.state=He(this.state,t||{});var n=this;this._setCache(this.state),this._stores.forEach(function(e){e(n.state)}),this._matchRoute(e);var o=this._prerender(this.state);return"string"==typeof o.outerHTML?o.outerHTML:o.toString()},lt.prototype._matchRoute=function(e){var t,n;e?(t=e.replace(/\?.+$/,""),n=e):(t=this._createLocation(),n=window.location.search);var o,r=this.router.match(t);return this._handler=r.cb,this.state.href=t,this.state.query=(o={},n.replace(/^.*\?/,"").replace(Ye,function(e,t,n,r){o[decodeURIComponent(t)]=decodeURIComponent(r)}),o),this.state.route=r.route,this.state.params=r.params,this.state},lt.prototype._prerender=function(e){var t=je("choo.prerender('"+e.route+"')"),n=this._handler(e,this.emit);return t(),n},lt.prototype._setCache=function(e){var t=new Te(e,this.emitter.emit.bind(this.emitter),this._cache);function n(e,n){for(var o=[],r=0,i=arguments.length;r<i;r++)o.push(arguments[r]);return t.render.apply(t,o)}e.cache=n,n.toJSON=function(){return null}};var ut=[{title:"introduction",post:["In the spring of 2018, I set out on a personal project as part of my work at Enspiral Dev Academy. The goal of the project was to make a successful contribution to a decentralized app. I started the course because I wanted to help build a better solarpunk future, and so I figured I should spend my personal project energy on learning how these awesome future applications are made.","The decentralized app I chose was Datradio--a punk2punk music player. Datradio is a site you can access through the Beaker Browser, where you can create playlists on your computer and then share them through the magic, person-powered fabric that is decentralized technology.","I made a small pull request to datradio (fixing a small bug), but the creator of the project (@cbglh) told me what would really help is some long-term envisioning of what datradio <em>could</em> be. I thought I would write a couple thoughts on features. Instead, I ended up with this entire site.","Datradio exists in an entirely new space, using entirely new technology. I did not want to give any long-term future for it, unless that future vision was also entirely new. I think this technology will allow us to create something truly meaningful for music scenes, and for the future romances of future youth. That is really exciting to me , and so this project might have ended up a bit sincere. But hey, the future <em>is</em> sincere."]},{title:"the structure",post:["This site is a mix of my thoughts on the future, memories, favorite albums, feelings i wanna express but cannot quite articulate, and some practical roadmapping. There is some mention of good features or things to build, but it is largely a collage of tones that I hope gives forth an idea of where datradio could go.","There are practical thoughts within here, but none are given that linear. This is partly just a personal hurdle, that I have a hard time with 'linear thought', but it's also that I didn't want to narrow the possibilities of datradio by trying to construct a logical argument for an emotional thing. I wanted to give you a prairie, instead of a few blades of glass, carefully arranged in a line."]},{title:"some context",post:["It is 11:50 at night. I am in a mint-green room, with thick muslin curtains, on top of a mountain in New Zealand. But I'm also feeling homesick and wistful and listening to Bright Eyes. I have a window open, to let the wonderfully crisp night air in. Exotic moths keep finding their way into my room, drawn by the light of this computer screen. They crawl for a minute over these words then fly back out again."]},{title:"the playlist as offering",post:["You seek out songs and bands to explore your own history and place. The details of a narrative you feel called to own.","Songs often hold our first experience with an emotion, a tremble, a hue of a color you could name but not see. You are reminded of your personal introduction to these feelings when you hear those songs again. And so our favorite songs are like droplets of amber, containing a reflection of the place you heard them, the time you heard them. They contain a reflection of you.","And so, the gift of a mixtape is a literal offering of yourself. the mixtape is a form of oral storytelling, like the folktales of old that act as song, lesson, and map all at once.","The myths that contain maps, the myths whose style and rhythm of telling are important for within that is held a map."]},{title:"datradio survey",post:["Datradio is a single page, filled mostly with text. The left hand side contains a list of playlists you've made or subscribed to. The right is a list of commands you can run to change the appearance of each playlist's page, along with the tracklistings and names and other commands. In the center is a terminal window to enter these commands.","Within this text window you can also throw in links to dat archives. If that archive includes mp3s, they suddenly fill up the center column and you now have a true blue playlist. You can then run commands to move these freshly imported tracks around, or change the name and appearance of the list.","After you've made all these changes, you can go into the beaker library of your datradio and see a bunch of changes to review. You review them, publish teh changes, and now all your customization will be saved in the configurations of the site.","To add a new playlist, you have to have a link to a dat archive. And so, you must first upload a folder of mp3's to your dat. You do this through the beaker library too--you click 'new > import folder' and then choose the folder from your computer. You publish your changes, view this dat archive to copy it's link, then throw this link back into your datradio site.","In other words, using dat is a balance between the nitty gritty of file management and a simple, two color interface. You are continually aware that everything you're doing lives as some tangible object on your computer, and you can easily make changes to files to see these changes reflected on your site and vice versa."]},{title:"four views into datradio",post:["The view of the listener, who wants to pick a playlist to have in the background, and personalize their unique datradio fork. This is datradio as boombox, with each link entered into the window like a cassette being added to the deck.","The view of the artist, who wants to upload their latest album or mix. They are navigating between a file structure and the dat instance, and making sure their specific playlist has the colors, shape, appearance, and tracklisting that they want. They are not concerned with the larger collection, just the shape of this particular datarchive.","The view of the explorer and voyeur, who is visiting their friend's datradio. They trust their friend's taste, and want to find something new to listen to. So they browse through the friend's list of playlists, and find ones that look interesting. If they click on one, and the first song is great, and the appearance of that playlist is ownderful, then they'll copy the link and add it to their own personal collection. In this case, the view into the friend's collection is likely different from the friend's own view,b ut v. similar. In the way that the tapes you display in your room is different than the walkman you have on you.","And so there is the view of the curator, who wants to display the playlists they've collected, the albums they've found. This may not be all of their music, and it may look different than their personal view. This is offering their entire collection to the grander chorus."]},{title:"language",post:["I will hold fast to language, because in language culture is preserverd. Worldviews are articulated. The world is not made by humans, but our understanding of the world is, as our understanding is carried forth by language.","The forcing of another lanugage is the forcing of a worldview. colonization no longer requires physical space. colonization can happen entirely in the digital. The suprresion of a culture through the forced assimilation of another."]},{title:"the means of distribution",post:["We must own the means of distribution. There are so many diverse physical methods, the style of play is imnportant. Not the way you chooose to distribute that style. Like--people will want to listen to a tape, or a cd, or a record. And, if they big ol' audiophiles, they may appreciate a certain thickness of vinyl or quality of tape. But there are few, if zero, people who would say 'I only listen to bands who press vinyl specifically with VinylCo. Pressing plant. And I only listen to bands who use RCA-DVI for distribution. If that 180gram vinyl came to me through any other means, than fucking NO way will I listen.","That concept is absurd, but it's a value we've been forced into adapting through digital music. People ultimately want to stream music, or listen to it all on a single device instead of having to swtich out hard packages. But the streaming type of play has become fully intertwined with the distribution methods of that particular streaming file. You choose whether you want to be on spotify or google play or Tidal or deezer or whatever shit, and then you mostly only listen to bands that are licensed there. And if you are a band, you make sure you are distributed with these channels, even if they don't agree with yo ur values, because you want people to be able to hear your music.","Band sshould own the means for distribution, while still being able to be in the preent moment. Autonomy doesn't have to mean adapting older styles only. You should be able to have a tape, vinyl, cd, mpp3, and streaming and have autonomy over each. We are in the future, that's entirely possible."]},{title:"greatgatsby.js",post:["Code is art. It is a beautiful form of human expression, but it has a disadvantage when compared to other art forms: code doesn't get to stick around and resonate. Books get better with time, when the words have sunk in over generations. Music can be ahead of its time, with the full influence of an album finally coming through decades later. But it's rare when we re-appraise source code, rediscover the coder's original intent and the imagination they were trying to manifest. If code is successful, then it gets blotted out by its fanmade sequels, and we only appraise it by how it stands today.","The web is a work built upon an original piece of code that maybe we misunderstood. And maybe even that original proposal was built upon ideas that Tim Berners-Lee didn't really understand.","Ted Nelson's Xanadu is a beautiful thought that is now maligned because 'the web won', as if the fact Xanadu was never built negates the strength of its dream.","Can we learn from past technology and past visions beyond just stating 'where they went wrong'? Can we appreciate the artistic importance of a book even if it never became a movie?"]},{title:"the spotify alternative",post:["We will polish and sculpt datradio and want to share it widely, and the first batch of feedback will include, 'Is this a spotify alternative?' Or 'What are you going to do to really take out spotify?' or 'You're going to need a lot more features if you want to take on itunes.' 'I love this,' they'll say, so that they can add, 'and here' swhat I think you need to be a true soundcloud replacement: discovery, embeddable urls, more licenses, a business plan.'","I wanna urge you to listen to none of this. They are positioning an argument that is absurd and damaging--this notion that we are trying to 'replace' a shitty thing, to assume it's spot, and to do so we should have feature parity with that shitty thing.","That's like someone listing to the music on the radio and saying, 'All of this music sucks, I guess I'll just have to start a band to make music I wanna hear. And I beter make sure my music recreactes this radio song exactly...it's gotta have hooks, a bridge, an overlong guitar solo. But, y'know, this time <em>i'm</em> the one wanking.'"]},{title:"discovery",post:["Discovery is important, otherwise you are just making a personal cloud music player--which is not really exciting to me. So how can we include discovery?","I think we should think jof how discovery worked before algorithms? Those methods worked for millennia, somehow we've always been able to find new music, and playlists today that are helped by playlists are especially bland.","So how did discovery work before?","through the ability to dive in and to recommend and through hubs.","the hub of a venue","the hub of a record store","the hub of a message board.","hubs are natural, but can form anywhere and shift over time."]},{title:"supporting not hoarding",post:["What is the tool that builds support, and sharing. That doesn't promote hoarding. That doesn't encourage you to grab an entire discography cos you can, but instead to intentionally seed the things you love, and inspire you to create your own too?"]}];const ct=()=>be`
1882 <div class='paper-splash'>
1893 <h1>music</h1>
1904 <h1>visions</h1>
1915 <a href='#songbook'>~enter~</a>
1926 </div>
193- `);
194-
195-/* removed: const _$html_7=require("choo/html"); */;var _$song_40=function(state,emit){var song=state.songs.find(song=>song.title==state.params.song.replace(/-/g," "));return console.log({song:song}),_$html_7`
196- <div class='wrapper'>
197- <div id='track' class='track'>
198- <h1>${song.title}</h1>
199- <div id='text'>
200- ${song.post.map(function(post){return _$html_7`<p>${post}</p>`})}
201- </div>
202- <a href='/#songbook' onclick=${function(){emit("close",song.title)}}>x close x</a>
203- </div>
204- </div>
205- `};
206-
207-_$Choo_8;/* removed: const _$html_7=require("choo/html"); */;var _$songbook_41=function(state,emit){return function(state,emit){return _$html_7`
7+ `,ft=st();ft.use(G()),ft.use(function(e,t){e.songs=ut,e.currentSong="",e.songList=[],t.on("DOMContentLoaded",function(){t.on("changeSong",function(e){e=e.replace(/\s+/g,"-").toLowerCase(),t.emit("pushState",`/#songbook/${e}`),setTimeout("document.getElementById('track').classList.toggle('change-color')",1500)})}),t.on("DOMContentLoaded",function(){t.on("close",function(n){e.lastSong=n,t.emit("pushState","/#songbook")})}),t.on("DOMContentLoaded",function(){new DatArchive(window.location.host).readdir("songs").then(t=>{e.songList=t,console.log(e.songList)})})}),ft.route("/",ct),ft.route("#songbook",function(e,t){return function(e,t){return be`
2088 <div class='wrapper'>
2099 <div class='paper'>
21010 <h1>M U S I C V I S I O N S </h1>
21111 <div id='tracklist'>
21212 <ul>
213- ${state.songs.map(listTracks)}
13+ ${e.songs.map(n)}
21414 </ul>
21515 </div>
216- <h1>Last Track: ${state.lastSong}</h1>
16+ <h1>Last Track: ${e.lastSong}</h1>
21717 </div>
21818 </div>
219- `}(state);function listTracks(song){return _$html_7`<li onclick=${change}>${song.title}</li>`}function change(data){console.log(data.target.innerHTML),song=data.target.innerHTML,emit("changeSong",song)}};
220-
221-var _$musicVisions_1 = {};
222-const __dummy_1$0 = 0,main=(_$html_7,_$main_39),__dummy_1$1 = 0,__dummy_1$2 = 0,app=_$Choo_8();app.use(_$serviceWorker_5()),app.use(_$songs_38),app.route("/",main),app.route("#songbook",_$songbook_41),app.route("#songbook/:song",_$song_40),app.mount("div");
223-
224-}());
19+ `}(e);function n(e){return be`<li onclick=${o}>${e.title}</li>`}function o(e){console.log(e.target.innerHTML),song=e.target.innerHTML,t("changeSong",song)}}),ft.route("#songbook/:song",function(e,t){var n=e.songs.find(t=>t.title==e.params.song.replace(/-/g," "));return console.log({song:n}),be`
20+ <div class='wrapper'>
21+ <div id='track' class='track'>
22+ <h1>${n.title}</h1>
23+ <div id='text'>
24+ ${n.post.map(function(e){return be`<p>${e}</p>`})}
25+ </div>
26+ <a href='/#songbook' onclick=${function(){t("close",n.title)}}>x close x</a>
27+ </div>
28+ </div>
29+ `}),ft.mount("div")}();
stores/songs.jsView
@@ -8,9 +8,9 @@
88
99 emitter.on('DOMContentLoaded', function () {
1010 emitter.on('changeSong', function (song) {
1111 song = song.replace(/\s+/g, '-').toLowerCase()
12- emitter.emit('pushState', '/#songbook/'+song)
12+ emitter.emit('pushState', `/#songbook/${song}`)
1313 setTimeout("document.getElementById('track').classList.toggle('change-color')", 1500)
1414 })
1515 })
1616 emitter.on('DOMContentLoaded', function (){

Built with git-ssb-web