{"version":3,"sources":["webpack://[name]/./node_modules/classnames/index.js","webpack://[name]/./node_modules/mithril/mithril.mjs","webpack://[name]/./node_modules/process/browser.js","webpack://[name]/./node_modules/setimmediate/setImmediate.js","webpack://[name]/./node_modules/timers-browserify/main.js","webpack://[name]/(webpack)/buildin/amd-options.js","webpack://[name]/(webpack)/buildin/global.js","webpack://[name]/(webpack)/buildin/module.js"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","key","call","join","module","exports","define","window","process","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","Error","defaultClearTimeout","setTimeout","e","clearTimeout","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","nextTick","args","Item","array","prototype","title","browser","env","argv","version","versions","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","global","undefined","setImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","registerImmediate","callback","Function","task","clearImmediate","handle","runIfPresent","installNextTickImplementation","canUsePostMessage","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","installPostMessageImplementation","messagePrefix","Math","random","onGlobalMessage","event","source","data","indexOf","slice","addEventListener","attachEvent","installMessageChannelImplementation","channel","MessageChannel","port1","port2","installReadyStateChangeImplementation","html","documentElement","script","createElement","onreadystatechange","removeChild","appendChild","installSetTimeoutImplementation","attachTo","Object","getPrototypeOf","toString","self","scope","Timeout","setInterval","clearInterval","close","id","clearFn","_id","_clearFn","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","onTimeout","_onTimeout","require","g","webpackPolyfill","deprecate","paths","children","defineProperty","enumerable","get","l"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;;AACA;AAEC,aAAY;AACZ;;AAEA,MAAIA,MAAM,GAAG,GAAGC,cAAhB;;AAEA,WAASC,UAAT,GAAuB;AACtB,QAAIC,OAAO,GAAG,EAAd;;AAEA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,SAAS,CAACC,MAA9B,EAAsCF,CAAC,EAAvC,EAA2C;AAC1C,UAAIG,GAAG,GAAGF,SAAS,CAACD,CAAD,CAAnB;AACA,UAAI,CAACG,GAAL,EAAU;;AAEV,UAAIC,OAAO,WAAUD,GAAV,CAAX;;AAEA,UAAIC,OAAO,KAAK,QAAZ,IAAwBA,OAAO,KAAK,QAAxC,EAAkD;AACjDL,eAAO,CAACM,IAAR,CAAaF,GAAb;AACA,OAFD,MAEO,IAAIG,KAAK,CAACC,OAAN,CAAcJ,GAAd,KAAsBA,GAAG,CAACD,MAA9B,EAAsC;AAC5C,YAAIM,KAAK,GAAGV,UAAU,CAACW,KAAX,CAAiB,IAAjB,EAAuBN,GAAvB,CAAZ;;AACA,YAAIK,KAAJ,EAAW;AACVT,iBAAO,CAACM,IAAR,CAAaG,KAAb;AACA;AACD,OALM,MAKA,IAAIJ,OAAO,KAAK,QAAhB,EAA0B;AAChC,aAAK,IAAIM,GAAT,IAAgBP,GAAhB,EAAqB;AACpB,cAAIP,MAAM,CAACe,IAAP,CAAYR,GAAZ,EAAiBO,GAAjB,KAAyBP,GAAG,CAACO,GAAD,CAAhC,EAAuC;AACtCX,mBAAO,CAACM,IAAR,CAAaK,GAAb;AACA;AACD;AACD;AACD;;AAED,WAAOX,OAAO,CAACa,IAAR,CAAa,GAAb,CAAP;AACA;;AAED,MAAI,SAAiCC,MAAM,CAACC,OAA5C,EAAqD;AACpDhB,cAAU,WAAV,GAAqBA,UAArB;AACAe,UAAM,CAACC,OAAP,GAAiBhB,UAAjB;AACA,GAHD,MAGO,IAAI,SAAgC,QAAOiB,gGAAP,MAAsB,QAAtD,IAAkEA,gGAAtE,EAAkF;AACxF;AACAA,qCAAqB,EAAf,mCAAmB,YAAY;AACpC,aAAOjB,UAAP;AACA,KAFK;AAAA,oGAAN;AAGA,GALM,MAKA;AACNkB,UAAM,CAAClB,UAAP,GAAoBA,UAApB;AACA;AACD,CA5CA,GAAD,C;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA,mCAAmC;AACnC,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,mCAAmC,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6BAA6B,YAAY;AACtD,GAAG;AACH;AACA;AACA;AACA,8DAA8D,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,YAAY;AACZ,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,0DAA0D;AAC1D,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C,iCAAiC,OAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B,YAAY,eAAe;AAC3B;AACA,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,eAAe;AAC3B;AACA;AACA,YAAY,+BAA+B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB;AAChC;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,gEAAgE;AAChE,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,aAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB,YAAY,eAAe,YAAY;AAC9E;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,EAAE;AAChE;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,cAAc;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,gEAAC;AAChB;;;;;;;;;;;;;;AC7iDA;AACA,IAAImB,OAAO,GAAGJ,MAAM,CAACC,OAAP,GAAiB,EAA/B,C,CAEA;AACA;AACA;AACA;;AAEA,IAAII,gBAAJ;AACA,IAAIC,kBAAJ;;AAEA,SAASC,gBAAT,GAA4B;AACxB,QAAM,IAAIC,KAAJ,CAAU,iCAAV,CAAN;AACH;;AACD,SAASC,mBAAT,GAAgC;AAC5B,QAAM,IAAID,KAAJ,CAAU,mCAAV,CAAN;AACH;;AACA,aAAY;AACT,MAAI;AACA,QAAI,OAAOE,UAAP,KAAsB,UAA1B,EAAsC;AAClCL,sBAAgB,GAAGK,UAAnB;AACH,KAFD,MAEO;AACHL,sBAAgB,GAAGE,gBAAnB;AACH;AACJ,GAND,CAME,OAAOI,CAAP,EAAU;AACRN,oBAAgB,GAAGE,gBAAnB;AACH;;AACD,MAAI;AACA,QAAI,OAAOK,YAAP,KAAwB,UAA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","file":"js/commons.bundle.js","sourcesContent":["/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function Vnode(tag, key, attrs0, children0, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs0, children: children0, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node != null && typeof node !== \"object\") return Vnode(\"#\", undefined, undefined, node === false ? \"\" : node, undefined, undefined)\n\treturn node\n}\nVnode.normalizeChildren = function(input) {\n\tvar children0 = []\n\tfor (var i = 0; i < input.length; i++) {\n\t\tchildren0[i] = Vnode.normalize(input[i])\n\t}\n\treturn children0\n}\n// Call via `hyperscriptVnode0.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript0` and `fragment` factories and define this as\n// `hyperscriptVnode0(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// var hyperscriptVnode = function(attrs1, ...children1) {\n// if (attrs1 == null || typeof attrs1 === \"object\" && attrs1.tag == null && !Array.isArray(attrs1)) {\n// if (children1.length === 1 && Array.isArray(children1[0])) children1 = children1[0]\n// } else {\n// children1 = children1.length === 0 && Array.isArray(attrs1) ? attrs1 : [attrs1, ...children1]\n// attrs1 = undefined\n// }\n//\n// if (attrs1 == null) attrs1 = {}\n// return Vnode(\"\", attrs1.key, attrs1, children1)\n// }\nvar hyperscriptVnode = function() {\n\tvar attrs1 = arguments[this], start = this + 1, children1\n\tif (attrs1 == null) {\n\t\tattrs1 = {}\n\t} else if (typeof attrs1 !== \"object\" || attrs1.tag != null || Array.isArray(attrs1)) {\n\t\tattrs1 = {}\n\t\tstart = this\n\t}\n\tif (arguments.length === start + 1) {\n\t\tchildren1 = arguments[start]\n\t\tif (!Array.isArray(children1)) children1 = [children1]\n\t} else {\n\t\tchildren1 = []\n\t\twhile (start < arguments.length) children1.push(arguments[start++])\n\t}\n\treturn Vnode(\"\", attrs1.key, attrs1, children1)\n}\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar children = Vnode.normalizeChildren(vnode.children)\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\tvnode.tag = state.tag\n\tvnode.attrs = null\n\tvnode.children = undefined\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]\n\t\t}\n\t\tattrs = newAttrs\n\t}\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key) && key !== \"className\" && !hasOwn.call(attrs, key)){\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className != null || state.attrs.className != null) attrs.className =\n\t\tclassName != null\n\t\t\t? state.attrs.className != null\n\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t: className\n\t\t\t: state.attrs.className != null\n\t\t\t\t? state.attrs.className\n\t\t\t\t: null\n\tif (hasClass) attrs.class = null\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\tvnode.attrs = attrs\n\t\t\tbreak\n\t\t}\n\t}\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\tvnode.text = children[0].children\n\t} else {\n\t\tvnode.children = children\n\t}\n\treturn vnode\n}\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\tif (typeof selector === \"string\") {\n\t\treturn execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t} else {\n\t\tvnode.tag = selector\n\t\treturn vnode\n\t}\n}\nhyperscript.trust = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\nhyperscript.fragment = function() {\n\tvar vnode2 = hyperscriptVnode.apply(0, arguments)\n\tvnode2.tag = \"[\"\n\tvnode2.children = Vnode.normalizeChildren(vnode2.children)\n\treturn vnode2\n}\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.prototype.finally = function(callback) {\n\treturn this.then(\n\t\tfunction(value) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn value\n\t\t\t})\n\t\t},\n\t\tfunction(reason) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn PromisePolyfill.reject(reason);\n\t\t\t})\n\t\t}\n\t)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") {\n\t\twindow.Promise = PromisePolyfill\n\t} else if (!window.Promise.prototype.finally) {\n\t\twindow.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tvar PromisePolyfill = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") {\n\t\tglobal.Promise = PromisePolyfill\n\t} else if (!global.Promise.prototype.finally) {\n\t\tglobal.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tvar PromisePolyfill = global.Promise\n} else {\n}\nvar buildQueryString = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\treturn args.join(\"&\")\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\nvar _12 = function($window, Promise) {\n\tvar callbackCount = 0\n\tvar oncompletion\n\tfunction makeRequest(factory) {\n\t\treturn function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise0 = new Promise(function(resolve, reject) {\n\t\t\t\tfactory(url, args, function (data) {\n\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\t\t\t\tdata[i] = new args.type(data[i])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse data = new args.type(data)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(data)\n\t\t\t\t}, reject)\n\t\t\t})\n\t\t\tif (args.background === true) return promise0\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\t\t\treturn wrap(promise0)\n\t\t\tfunction wrap(promise0) {\n\t\t\t\tvar then0 = promise0.then\n\t\t\t\tpromise0.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then0.apply(promise0, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise0\n\t\t\t}\n\t\t}\n\t}\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif ({}.hasOwnProperty.call(args.headers, key) && name.test(key)) return true\n\t\t}\n\t\treturn false\n\t}\n\tfunction interpolate(url, data, assemble) {\n\t\tif (data == null) return url\n\t\turl = url.replace(/:([^\\/]+)/gi, function (m0, key) {\n\t\t\treturn data[key] != null ? data[key] : m0\n\t\t})\n\t\tif (assemble && data != null) {\n\t\t\tvar querystring = buildQueryString(data)\n\t\t\tif (querystring) url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + querystring\n\t\t}\n\t\treturn url\n\t}\n\treturn {\n\t\trequest: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar useBody = method !== \"GET\" && method !== \"TRACE\" &&\n\t\t\t\t(typeof args.useBody !== \"boolean\" || args.useBody)\n\t\t\tvar data = args.data\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(data instanceof $window.FormData)\n\t\t\tif (useBody) {\n\t\t\t\tif (typeof args.serialize === \"function\") data = args.serialize(data)\n\t\t\t\telse if (!(data instanceof $window.FormData)) data = JSON.stringify(data)\n\t\t\t}\n\t\t\tvar xhr = new $window.XMLHttpRequest(),\n\t\t\t\taborted = false,\n\t\t\t\t_abort = xhr.abort\n\t\t\txhr.abort = function abort() {\n\t\t\t\taborted = true\n\t\t\t\t_abort.call(xhr)\n\t\t\t}\n\t\t\txhr.open(method, interpolate(url, args.data, !useBody), typeof args.async !== \"boolean\" || args.async, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\t\t\tif (assumeJSON && useBody && !hasHeader(args, /^content-type0$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, /^accept$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\tif (args.responseType) xhr.responseType = args.responseType\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof args.config === \"function\") xhr = args.config(xhr, args) || xhr\n\t\t\txhr.onreadystatechange = function() {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif(aborted) return\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\tvar response = xhr.responseText\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(xhr, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttry {response = response ? JSON.parse(response) : null}\n\t\t\t\t\t\t\tcatch (e) {throw new Error(\"Invalid JSON: \" + response)}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) resolve(response)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar error = new Error(xhr.responseText)\n\t\t\t\t\t\t\terror.code = xhr.status\n\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (useBody && data != null) xhr.send(data)\n\t\t\telse xhr.send()\n\t\t}),\n\t\tjsonp: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(data)\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t\tdelete $window[callbackName]\n\t\t\t}\n\t\t\turl = interpolate(url, args.data, true)\n\t\t\tscript.src = url + (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") +\n\t\t\t\tencodeURIComponent(args.callbackKey || \"callback\") + \"=\" +\n\t\t\t\tencodeURIComponent(callbackName)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t}),\n\t\tsetCompletionCallback: function(callback) {\n\t\t\toncompletion = callback\n\t\t},\n\t}\n}\nvar requestService = _12(window, PromisePolyfill)\nvar coreRenderer = function($window) {\n\tvar $doc = $window.document\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\tvar redraw0\n\tfunction setRedraw(callback) {return redraw0 = callback}\n\tfunction getNameSpace(vnode3) {\n\t\treturn vnode3.attrs && vnode3.attrs.xmlns || nameSpace[vnode3.tag]\n\t}\n\t//sanity check to discourage people from doing `vnode3.state = ...`\n\tfunction checkState(vnode3, original) {\n\t\tif (vnode3.state !== original) throw new Error(\"`vnode.state` must not be modified\")\n\t}\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode3` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode3) {\n\t\tvar original = vnode3.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode3, original)\n\t\t}\n\t}\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error1, and heavy-handidly return null.\n\tfunction activeElement() {\n\t\ttry {\n\t\t\treturn $doc.activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode3 = vnodes[i]\n\t\t\tif (vnode3 != null) {\n\t\t\t\tcreateNode(parent, vnode3, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode3, hooks, ns, nextSibling) {\n\t\tvar tag = vnode3.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode3.state = {}\n\t\t\tif (vnode3.attrs != null) initLifecycle(vnode3.attrs, vnode3, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode3, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode3, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode3, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode3, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode3, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode3, nextSibling) {\n\t\tvnode3.dom = $doc.createTextNode(vnode3.children)\n\t\tinsertNode(parent, vnode3.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode3, ns, nextSibling) {\n\t\tvar match0 = vnode3.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"ij\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no in sight.\n\t\tvar temp = $doc.createElement(possibleParents[match0[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"\" + vnode3.children + \"\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode3.children\n\t\t}\n\t\tvnode3.dom = temp.firstChild\n\t\tvnode3.domSize = temp.childNodes.length\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode3, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode3.children != null) {\n\t\t\tvar children3 = vnode3.children\n\t\t\tcreateNodes(fragment, children3, 0, children3.length, hooks, null, ns)\n\t\t}\n\t\tvnode3.dom = fragment.firstChild\n\t\tvnode3.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode3, hooks, ns, nextSibling) {\n\t\tvar tag = vnode3.tag\n\t\tvar attrs2 = vnode3.attrs\n\t\tvar is = attrs2 && attrs2.is\n\t\tns = getNameSpace(vnode3) || ns\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode3.dom = element\n\t\tif (attrs2 != null) {\n\t\t\tsetAttrs(vnode3, attrs2, ns)\n\t\t}\n\t\tinsertNode(parent, element, nextSibling)\n\t\tif (attrs2 != null && attrs2.contenteditable != null) {\n\t\t\tsetContentEditable(vnode3)\n\t\t}\n\t\telse {\n\t\t\tif (vnode3.text != null) {\n\t\t\t\tif (vnode3.text !== \"\") element.textContent = vnode3.text\n\t\t\t\telse vnode3.children = [Vnode(\"#\", undefined, undefined, vnode3.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode3.children != null) {\n\t\t\t\tvar children3 = vnode3.children\n\t\t\t\tcreateNodes(element, children3, 0, children3.length, hooks, null, ns)\n\t\t\t\tif (vnode3.tag === \"select\" && attrs2 != null) setLateSelectAttrs(vnode3, attrs2)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode3, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode3.tag.view === \"function\") {\n\t\t\tvnode3.state = Object.create(vnode3.tag)\n\t\t\tsentinel = vnode3.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode3.state = void 0\n\t\t\tsentinel = vnode3.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode3.state = (vnode3.tag.prototype != null && typeof vnode3.tag.prototype.view === \"function\") ? new vnode3.tag(vnode3) : vnode3.tag(vnode3)\n\t\t}\n\t\tinitLifecycle(vnode3.state, vnode3, hooks)\n\t\tif (vnode3.attrs != null) initLifecycle(vnode3.attrs, vnode3, hooks)\n\t\tvnode3.instance = Vnode.normalize(callHook.call(vnode3.state.view, vnode3))\n\t\tif (vnode3.instance === vnode3) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode3, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode3, hooks)\n\t\tif (vnode3.instance != null) {\n\t\t\tcreateNode(parent, vnode3.instance, hooks, ns, nextSibling)\n\t\t\tvnode3.dom = vnode3.instance.dom\n\t\t\tvnode3.domSize = vnode3.dom != null ? vnode3.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode3.domSize = 0\n\t\t}\n\t}\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next0 DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match0 nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index0 (for the old list), then1 iterate\n\t// over the new list and for each new vnode3, find the corresponding vnode3 in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match0 the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next0 sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index0, the DOM nodes up to the previous\n\t// vnode3 reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next0 sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next0 sibling (cached in the `nextSibling` variable).\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs0 because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\t//\n\t// The fourth part of the diff currently inserts nodes unconditionally, leading to issues\n\t// like #1791 and #1999. We need to be smarter about those situations where adjascent old\n\t// nodes remain together in the new list in a way that isn't covered by parts one and\n\t// three of the diff algo.\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(old, 0, old.length)\n\t\telse {\n\t\t\tvar start = 0, oldStart = 0, isOldKeyed = null, isKeyed = null\n\t\t\tfor (; oldStart < old.length; oldStart++) {\n\t\t\t\tif (old[oldStart] != null) {\n\t\t\t\t\tisOldKeyed = old[oldStart].key != null\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (; start < vnodes.length; start++) {\n\t\t\t\tif (vnodes[start] != null) {\n\t\t\t\t\tisKeyed = vnodes[start].key != null\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isKeyed === null && isOldKeyed == null) return // both lists are full of nulls\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index0 past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index0 on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe == null) oldEnd--\n\t\t\t\t\telse if (ve == null) end--\n\t\t\t\t\telse if (oe.key === ve.key) {\n\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\toldEnd--, end--\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o == null) oldStart++\n\t\t\t\t\telse if (v == null) start++\n\t\t\t\t\telse if (o.key === v.key) {\n\t\t\t\t\t\toldStart++, start++\n\t\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (o == null) oldStart++\n\t\t\t\t\telse if (v == null) start++\n\t\t\t\t\telse if (oe == null) oldEnd--\n\t\t\t\t\telse if (ve == null) end--\n\t\t\t\t\telse if (start === end) break\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\t\tinsertNode(parent, toFragment(oe), topSibling)\n\t\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\t\tif (++start <= --end) insertNode(parent, toFragment(o), nextSibling)\n\t\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\t}\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe == null) oldEnd--\n\t\t\t\t\telse if (ve == null) end--\n\t\t\t\t\telse if (oe.key === ve.key) {\n\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\toldEnd--, end--\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tif (ve != null) {\n\t\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse insertNode(parent, toFragment(v), nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode3, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode3.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode3.state = old.state\n\t\t\tvnode3.events = old.events\n\t\t\tif (shouldNotUpdate(vnode3, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode3.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode3.attrs, vnode3, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode3); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode3, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode3, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode3, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode3, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(old)\n\t\t\tcreateNode(parent, vnode3, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode3) {\n\t\tif (old.children.toString() !== vnode3.children.toString()) {\n\t\t\told.dom.nodeValue = vnode3.children\n\t\t}\n\t\tvnode3.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode3, ns, nextSibling) {\n\t\tif (old.children !== vnode3.children) {\n\t\t\ttoFragment(old)\n\t\t\tcreateHTML(parent, vnode3, ns, nextSibling)\n\t\t}\n\t\telse vnode3.dom = old.dom, vnode3.domSize = old.domSize\n\t}\n\tfunction updateFragment(parent, old, vnode3, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode3.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children3 = vnode3.children\n\t\tvnode3.dom = null\n\t\tif (children3 != null) {\n\t\t\tfor (var i = 0; i < children3.length; i++) {\n\t\t\t\tvar child = children3[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode3.dom == null) vnode3.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode3.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode3, hooks, ns) {\n\t\tvar element = vnode3.dom = old.dom\n\t\tns = getNameSpace(vnode3) || ns\n\t\tif (vnode3.tag === \"textarea\") {\n\t\t\tif (vnode3.attrs == null) vnode3.attrs = {}\n\t\t\tif (vnode3.text != null) {\n\t\t\t\tvnode3.attrs.value = vnode3.text //FIXME handle0 multiple children3\n\t\t\t\tvnode3.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode3, old.attrs, vnode3.attrs, ns)\n\t\tif (vnode3.attrs != null && vnode3.attrs.contenteditable != null) {\n\t\t\tsetContentEditable(vnode3)\n\t\t}\n\t\telse if (old.text != null && vnode3.text != null && vnode3.text !== \"\") {\n\t\t\tif (old.text.toString() !== vnode3.text.toString()) old.dom.firstChild.nodeValue = vnode3.text\n\t\t}\n\t\telse {\n\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\tif (vnode3.text != null) vnode3.children = [Vnode(\"#\", undefined, undefined, vnode3.text, undefined, undefined)]\n\t\t\tupdateNodes(element, old.children, vnode3.children, hooks, null, ns)\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode3, hooks, nextSibling, ns) {\n\t\tvnode3.instance = Vnode.normalize(callHook.call(vnode3.state.view, vnode3))\n\t\tif (vnode3.instance === vnode3) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode3.state, vnode3, hooks)\n\t\tif (vnode3.attrs != null) updateLifecycle(vnode3.attrs, vnode3, hooks)\n\t\tif (vnode3.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode3.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode3.instance, hooks, nextSibling, ns)\n\t\t\tvnode3.dom = vnode3.instance.dom\n\t\t\tvnode3.domSize = vnode3.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(old.instance)\n\t\t\tvnode3.dom = undefined\n\t\t\tvnode3.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode3.dom = old.dom\n\t\t\tvnode3.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode3 = vnodes[start]\n\t\t\tif (vnode3 != null) {\n\t\t\t\tvar key = vnode3.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequece\n\tfunction makeLisIndices(a) {\n\t\tvar p = a.slice()\n\t\tvar result = []\n\t\tresult.push(0)\n\t\tvar u\n\t\tvar v\n\t\tfor (var i = 0, il = a.length; i < il; ++i) {\n\t\t\tif (a[i] === -1) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\tvar c = ((u + v) / 2) | 0 // eslint-disable-line no-bitwise\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) {\n\t\t\t\t\tp[i] = result[u - 1]\n\t\t\t\t}\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = p[v]\n\t\t}\n\t\treturn result\n\t}\n\tfunction toFragment(vnode3) {\n\t\tvar count0 = vnode3.domSize\n\t\tif (count0 != null || vnode3.dom == null) {\n\t\t\tvar fragment = $doc.createDocumentFragment()\n\t\t\tif (count0 > 0) {\n\t\t\t\tvar dom = vnode3.dom\n\t\t\t\twhile (--count0) fragment.appendChild(dom.nextSibling)\n\t\t\t\tfragment.insertBefore(dom, fragment.firstChild)\n\t\t\t}\n\t\t\treturn fragment\n\t\t}\n\t\telse return vnode3.dom\n\t}\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\tfunction setContentEditable(vnode3) {\n\t\tvar children3 = vnode3.children\n\t\tif (children3 != null && children3.length === 1 && children3[0].tag === \"<\") {\n\t\t\tvar content = children3[0].children\n\t\t\tif (vnode3.dom.innerHTML !== content) vnode3.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode3.text != null || children3 != null && children3.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t}\n\t//remove\n\tfunction removeNodes(vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode3 = vnodes[i]\n\t\t\tif (vnode3 != null) removeNode(vnode3)\n\t\t}\n\t}\n\tfunction removeNode(vnode3) {\n\t\tvar expected = 1, called = 0\n\t\tvar original = vnode3.state\n\t\tif (typeof vnode3.tag !== \"string\" && typeof vnode3.state.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode3.state.onbeforeremove, vnode3)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tif (vnode3.attrs && typeof vnode3.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode3.attrs.onbeforeremove, vnode3)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\texpected++\n\t\t\t\tresult.then(continuation, continuation)\n\t\t\t}\n\t\t}\n\t\tcontinuation()\n\t\tfunction continuation() {\n\t\t\tif (++called === expected) {\n\t\t\t\tcheckState(vnode3, original)\n\t\t\t\tonremove(vnode3)\n\t\t\t\tif (vnode3.dom) {\n\t\t\t\t\tvar parent = vnode3.dom.parentNode\n\t\t\t\t\tvar count0 = vnode3.domSize || 1\n\t\t\t\t\twhile (--count0) parent.removeChild(vnode3.dom.nextSibling)\n\t\t\t\t\tparent.removeChild(vnode3.dom)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction onremove(vnode3) {\n\t\tif (typeof vnode3.tag !== \"string\" && typeof vnode3.state.onremove === \"function\") callHook.call(vnode3.state.onremove, vnode3)\n\t\tif (vnode3.attrs && typeof vnode3.attrs.onremove === \"function\") callHook.call(vnode3.attrs.onremove, vnode3)\n\t\tif (typeof vnode3.tag !== \"string\") {\n\t\t\tif (vnode3.instance != null) onremove(vnode3.instance)\n\t\t} else {\n\t\t\tvar children3 = vnode3.children\n\t\t\tif (Array.isArray(children3)) {\n\t\t\t\tfor (var i = 0; i < children3.length; i++) {\n\t\t\t\t\tvar child = children3[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//attrs2\n\tfunction setAttrs(vnode3, attrs2, ns) {\n\t\tfor (var key in attrs2) {\n\t\t\tsetAttr(vnode3, key, null, attrs2[key], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode3, key, old, value, ns) {\n\t\tif (key === \"key\" || key === \"is\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode3, key)) && typeof value !== \"object\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode3, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode3.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode3.dom, old, value)\n\t\telse if (hasPropertyKey(vnode3, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\tif ((vnode3.tag === \"input\" || vnode3.tag === \"textarea\") && vnode3.dom.value === \"\" + value && vnode3.dom === activeElement()) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode3.tag === \"select\" && old !== null && vnode3.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode3.tag === \"option\" && old !== null && vnode3.dom.value === \"\" + value) return\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\t// If you assign an input type1 that is not supported by IE 11 with an assignment expression, an error1 will occur.\n\t\t\tif (vnode3.tag === \"input\" && key === \"type\") vnode3.dom.setAttribute(key, value)\n\t\t\telse vnode3.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode3.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode3.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode3.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode3, key, old, ns) {\n\t\tif (key === \"key\" || key === \"is\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\" && !isLifecycleMethod(key)) updateEvent(vnode3, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode3.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode3, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode3.tag === \"option\"\n\t\t\t\t|| vnode3.tag === \"select\" && vnode3.dom.selectedIndex === -1 && vnode3.dom === activeElement()\n\t\t\t))\n\t\t\t&& !(vnode3.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode3.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode3.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode3, attrs2) {\n\t\tif (\"value\" in attrs2) {\n\t\t\tif(attrs2.value === null) {\n\t\t\t\tif (vnode3.dom.selectedIndex !== -1) vnode3.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs2.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode3.dom.value !== normalized || vnode3.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode3.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs2) setAttr(vnode3, \"selectedIndex\", null, attrs2.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode3, old, attrs2, ns) {\n\t\tif (attrs2 != null) {\n\t\t\tfor (var key in attrs2) {\n\t\t\t\tsetAttr(vnode3, key, old && old[key], attrs2[key], ns)\n\t\t\t}\n\t\t}\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs2 == null || attrs2[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode3, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode3, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode3.dom === activeElement() || vnode3.tag === \"option\" && vnode3.dom.parentNode === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode3, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode3.tag.indexOf(\"-\") > -1 || vnode3.attrs != null && vnode3.attrs.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode3.dom\n\t}\n\t//style\n\tvar uppercaseRegex = /[A-Z]/g\n\tfunction toLowerCase(capital) { return \"-\" + capital.toLowerCase() }\n\tfunction normalizeKey(key) {\n\t\treturn key[0] === \"-\" && key[1] === \"-\" ? key :\n\t\t\tkey === \"cssFloat\" ? \"float\" :\n\t\t\t\tkey.replace(uppercaseRegex, toLowerCase)\n\t}\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style.cssText = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style.cssText = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style.cssText = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) element.style.setProperty(normalizeKey(key), String(value))\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\telement.style.setProperty(normalizeKey(key), value)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove style properties that no longer exist\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\telement.style.removeProperty(normalizeKey(key))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method0.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler0 before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler0 = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler0 === \"function\") result = handler0.call(ev.currentTarget, ev)\n\t\telse if (typeof handler0.handleEvent === \"function\") handler0.handleEvent(ev)\n\t\tif (ev.redraw === false) ev.redraw = undefined\n\t\telse if (typeof redraw0 === \"function\") redraw0()\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\t//event\n\tfunction updateEvent(vnode3, key, value) {\n\t\tif (vnode3.events != null) {\n\t\t\tif (vnode3.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode3.events[key] == null) vnode3.dom.addEventListener(key.slice(2), vnode3.events, false)\n\t\t\t\tvnode3.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode3.events[key] != null) vnode3.dom.removeEventListener(key.slice(2), vnode3.events, false)\n\t\t\t\tvnode3.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode3.events = new EventDict()\n\t\t\tvnode3.dom.addEventListener(key.slice(2), vnode3.events, false)\n\t\t\tvnode3.events[key] = value\n\t\t}\n\t}\n\t//lifecycle\n\tfunction initLifecycle(source, vnode3, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode3)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode3))\n\t}\n\tfunction updateLifecycle(source, vnode3, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode3))\n\t}\n\tfunction shouldNotUpdate(vnode3, old) {\n\t\tdo {\n\t\t\tif (vnode3.attrs != null && typeof vnode3.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode3.attrs.onbeforeupdate, vnode3, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode3.tag !== \"string\" && typeof vnode3.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode3.state.onbeforeupdate, vnode3, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode3.dom = old.dom\n\t\tvnode3.domSize = old.domSize\n\t\tvnode3.instance = old.instance\n\t\treturn true\n\t}\n\tfunction render(dom, vnodes) {\n\t\tif (!dom) throw new Error(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = activeElement()\n\t\tvar namespace = dom.namespaceURI\n\t\t// First time rendering0 into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\tdom.vnodes = vnodes\n\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\tif (active != null && activeElement() !== active && typeof active.focus === \"function\") active.focus()\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t}\n\treturn {render: render, setRedraw: setRedraw}\n}\nfunction throttle(callback) {\n\tvar pending = null\n\treturn function() {\n\t\tif (pending === null) {\n\t\t\tpending = requestAnimationFrame(function() {\n\t\t\t\tpending = null\n\t\t\t\tcallback()\n\t\t\t})\n\t\t}\n\t}\n}\nvar _15 = function($window, throttleMock) {\n\tvar renderService = coreRenderer($window)\n\tvar callbacks = []\n\tvar rendering = false\n\tfunction subscribe(key, callback) {\n\t\tunsubscribe(key)\n\t\tcallbacks.push(key, callback)\n\t}\n\tfunction unsubscribe(key) {\n\t\tvar index = callbacks.indexOf(key)\n\t\tif (index > -1) callbacks.splice(index, 2)\n\t}\n\tfunction sync() {\n\t\tif (rendering) throw new Error(\"Nested m.redraw.sync() call\")\n\t\trendering = true\n\t\tfor (var i = 1; i < callbacks.length; i+=2) try {callbacks[i]()} catch (e) {if (typeof console !== \"undefined\") console.error(e)}\n\t\trendering = false\n\t}\n\tvar redraw = (throttleMock || throttle)(sync)\n\tredraw.sync = sync\n\trenderService.setRedraw(redraw)\n\treturn {subscribe: subscribe, unsubscribe: unsubscribe, redraw: redraw, render: renderService.render}\n}\nvar redrawService = _15(window)\nrequestService.setCompletionCallback(redrawService.redraw)\nvar _20 = function(redrawService0) {\n\treturn function(root, component) {\n\t\tif (component === null) {\n\t\t\tredrawService0.render(root, [])\n\t\t\tredrawService0.unsubscribe(root)\n\t\t\treturn\n\t\t}\n\t\t\n\t\tif (component.view == null && typeof component !== \"function\") throw new Error(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t\n\t\tvar run0 = function() {\n\t\t\tredrawService0.render(root, Vnode(component))\n\t\t}\n\t\tredrawService0.subscribe(root, run0)\n\t\trun0()\n\t}\n}\nm.mount = _20(redrawService)\nvar Promise = PromisePolyfill\nvar parseQueryString = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\tvar entries = string.split(\"&\"), data2 = {}, counters = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key2 = decodeURIComponent(entry[0])\n\t\tvar value0 = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\t\tif (value0 === \"true\") value0 = true\n\t\telse if (value0 === \"false\") value0 = false\n\t\tvar levels = key2.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data2\n\t\tif (key2.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j0 = 0; j0 < levels.length; j0++) {\n\t\t\tvar level = levels[j0], nextLevel = levels[j0 + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tvar isValue = j0 === levels.length - 1\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key2 = levels.slice(0, j0).join()\n\t\t\t\tif (counters[key2] == null) counters[key2] = 0\n\t\t\t\tlevel = counters[key2]++\n\t\t\t}\n\t\t\tif (cursor[level] == null) {\n\t\t\t\tcursor[level] = isValue ? value0 : isNumber ? [] : {}\n\t\t\t}\n\t\t\tcursor = cursor[level]\n\t\t}\n\t}\n\treturn data2\n}\nvar coreRouter = function($window) {\n\tvar supportsPushState = typeof $window.history.pushState === \"function\"\n\tvar callAsync0 = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction normalize(fragment0) {\n\t\tvar data1 = $window.location[fragment0].replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\tif (fragment0 === \"pathname\" && data1[0] !== \"/\") data1 = \"/\" + data1\n\t\treturn data1\n\t}\n\tvar asyncId\n\tfunction debounceAsync(callback) {\n\t\treturn function() {\n\t\t\tif (asyncId != null) return\n\t\t\tasyncId = callAsync0(function() {\n\t\t\t\tasyncId = null\n\t\t\t\tcallback()\n\t\t\t})\n\t\t}\n\t}\n\tfunction parsePath(path, queryData, hashData) {\n\t\tvar queryIndex = path.indexOf(\"?\")\n\t\tvar hashIndex = path.indexOf(\"#\")\n\t\tvar pathEnd = queryIndex > -1 ? queryIndex : hashIndex > -1 ? hashIndex : path.length\n\t\tif (queryIndex > -1) {\n\t\t\tvar queryEnd = hashIndex > -1 ? hashIndex : path.length\n\t\t\tvar queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd))\n\t\t\tfor (var key1 in queryParams) queryData[key1] = queryParams[key1]\n\t\t}\n\t\tif (hashIndex > -1) {\n\t\t\tvar hashParams = parseQueryString(path.slice(hashIndex + 1))\n\t\t\tfor (var key1 in hashParams) hashData[key1] = hashParams[key1]\n\t\t}\n\t\treturn path.slice(0, pathEnd)\n\t}\n\tvar router = {prefix: \"#!\"}\n\trouter.getPath = function() {\n\t\tvar type2 = router.prefix.charAt(0)\n\t\tswitch (type2) {\n\t\t\tcase \"#\": return normalize(\"hash\").slice(router.prefix.length)\n\t\t\tcase \"?\": return normalize(\"search\").slice(router.prefix.length) + normalize(\"hash\")\n\t\t\tdefault: return normalize(\"pathname\").slice(router.prefix.length) + normalize(\"search\") + normalize(\"hash\")\n\t\t}\n\t}\n\trouter.setPath = function(path, data1, options) {\n\t\tvar queryData = {}, hashData = {}\n\t\tpath = parsePath(path, queryData, hashData)\n\t\tif (data1 != null) {\n\t\t\tfor (var key1 in data1) queryData[key1] = data1[key1]\n\t\t\tpath = path.replace(/:([^\\/]+)/g, function(match1, token) {\n\t\t\t\tdelete queryData[token]\n\t\t\t\treturn data1[token]\n\t\t\t})\n\t\t}\n\t\tvar query = buildQueryString(queryData)\n\t\tif (query) path += \"?\" + query\n\t\tvar hash = buildQueryString(hashData)\n\t\tif (hash) path += \"#\" + hash\n\t\tif (supportsPushState) {\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\t$window.onpopstate()\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, router.prefix + path)\n\t\t\telse $window.history.pushState(state, title, router.prefix + path)\n\t\t}\n\t\telse $window.location.href = router.prefix + path\n\t}\n\trouter.defineRoutes = function(routes, resolve, reject) {\n\t\tfunction resolveRoute() {\n\t\t\tvar path = router.getPath()\n\t\t\tvar params = {}\n\t\t\tvar pathname = parsePath(path, params, params)\n\t\t\tvar state = $window.history.state\n\t\t\tif (state != null) {\n\t\t\t\tfor (var k in state) params[k] = state[k]\n\t\t\t}\n\t\t\tfor (var route0 in routes) {\n\t\t\t\tvar matcher = new RegExp(\"^\" + route0.replace(/:[^\\/]+?\\.{3}/g, \"(.*?)\").replace(/:[^\\/]+/g, \"([^\\\\/]+)\") + \"\\/?$\")\n\t\t\t\tif (matcher.test(pathname)) {\n\t\t\t\t\tpathname.replace(matcher, function() {\n\t\t\t\t\t\tvar keys = route0.match(/:[^\\/]+/g) || []\n\t\t\t\t\t\tvar values = [].slice.call(arguments, 1, -2)\n\t\t\t\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\t\t\t\tparams[keys[i].replace(/:|\\./g, \"\")] = decodeURIComponent(values[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(routes[route0], params, path, route0)\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\treject(path, params)\n\t\t}\n\t\tif (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)\n\t\telse if (router.prefix.charAt(0) === \"#\") $window.onhashchange = resolveRoute\n\t\tresolveRoute()\n\t}\n\treturn router\n}\nvar _24 = function($window, redrawService0) {\n\tvar routeService = coreRouter($window)\n\tvar identity = function(v0) {return v0}\n\tvar render1, component, attrs3, currentPath, lastUpdate\n\tvar route = function(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\tfunction run1() {\n\t\t\tif (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3)))\n\t\t}\n\t\tvar redraw3 = function() {\n\t\t\trun1()\n\t\t\tredraw3 = redrawService0.redraw\n\t\t}\n\t\tredrawService0.subscribe(root, run1)\n\t\tvar bail = function(path) {\n\t\t\tif (path !== defaultRoute) routeService.setPath(defaultRoute, null, {replace: true})\n\t\t\telse throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t}\n\t\trouteService.defineRoutes(routes, function(payload, params, path) {\n\t\t\tvar update = lastUpdate = function(routeResolver, comp) {\n\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\tattrs3 = params, currentPath = path, lastUpdate = null\n\t\t\t\trender1 = (routeResolver.render || identity).bind(routeResolver)\n\t\t\t\tredraw3()\n\t\t\t}\n\t\t\tif (payload.view || typeof payload === \"function\") update({}, payload)\n\t\t\telse {\n\t\t\t\tif (payload.onmatch) {\n\t\t\t\t\tPromise.resolve(payload.onmatch(params, path)).then(function(resolved) {\n\t\t\t\t\t\tupdate(payload, resolved)\n\t\t\t\t\t}, bail)\n\t\t\t\t}\n\t\t\t\telse update(payload, \"div\")\n\t\t\t}\n\t\t}, bail)\n\t}\n\troute.set = function(path, data0, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\trouteService.setPath(path, data0, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = function(prefix) {routeService.prefix = prefix}\n\tvar link = function(options, vnode5) {\n\t\tvnode5.dom.setAttribute(\"href\", routeService.prefix + vnode5.attrs.href)\n\t\tvnode5.dom.onclick = function(e) {\n\t\t\tif (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return\n\t\t\te.preventDefault()\n\t\t\te.redraw = false\n\t\t\tvar href = this.getAttribute(\"href\")\n\t\t\tif (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length)\n\t\t\troute.set(href, undefined, options)\n\t\t}\n\t}\n\troute.link = function(args0) {\n\t\tif (args0.tag == null) return link.bind(link, args0)\n\t\treturn link({}, args0)\n\t}\n\troute.param = function(key0) {\n\t\tif(typeof attrs3 !== \"undefined\" && typeof key0 !== \"undefined\") return attrs3[key0]\n\t\treturn attrs3\n\t}\n\treturn route\n}\nm.route = _24(window, redrawService)\nvar _31 = coreRenderer(window)\nm.render = _31.render\nm.redraw = redrawService.redraw\nm.request = requestService.request\nm.jsonp = requestService.jsonp\nm.parseQueryString = parseQueryString\nm.buildQueryString = buildQueryString\nm.version = \"2.0.0-rc.3\"\nm.vnode = Vnode\nm.PromisePolyfill = PromisePolyfill\n\nexport default m\nvar _m = m.m,_trust = m.trust,_fragment = m.fragment,_mount = m.mount,_route = m.route,_render = m.render,_redraw = m.redraw,_request = m.request,_jsonp = m.jsonp,_parseQueryString = m.parseQueryString,_buildQueryString = m.buildQueryString,_version = m.version,_vnode = m.vnode,_PromisePolyfill = m.PromisePolyfill\nexport {_m as m,_trust as trust,_fragment as fragment,_mount as mount,_route as route,_render as render,_redraw as redraw,_request as request,_jsonp as jsonp,_parseQueryString as parseQueryString,_buildQueryString as buildQueryString,_version as version,_vnode as vnode,_PromisePolyfill as PromisePolyfill}","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a