VimUnDo?MKڊ:~) S=T22 v OSUj end: function end(queue)5_=?>T22 v OSVj end: function end(queue) {}5_>@?U22 v OTVk }5_?A@V22 v OUWk }5_@BAV22 v OUWk },5_ACBWWcvOVXk  Enqueueable, {, enqueue: function enqueue(queue, item) { queue.queued.push(item) react(queue) } }, Reducible, {. reduce: function reduce(f, queue, start) { var promise = defer()F queue.reducers.push({ next: f, state: start, promise: promise }) react(queue)" return go(identity, promise) }5_BDCWWWvOVW 5_CEDWWWvOUW^ })VX^ })5_DFEBVV vOBP^ BD]5_EGFOcc vOyOQk OQj5_FHGNdd vOMOk" return go(identity, promise)5_GIHNdd vOzMOk return promise)5_HJIb dd vObdl bdk5_IKJcee vObdl while ()5_JLKcee vObdl queue.queued.splice()5_KMLcee vOcem cel5_LNMd ff vOcem while ()5_MONcff vOcen cem5_NPOegg vO dfn while (reducers)5_OQPegg vO dfn while (reducers.length)5_PRQegg vO dgn while (reducers.length) {}5_QSRehh vOegp ego5_RTSfii vOegp reducers.shift()5_SUTfii vOegp" reducer = reducers.shift()5_TVUf ii vOfhq fhp5_UWVgjj vO"fhq realize()5_VXWgjj vO$fhq realize(reducers)5_WYXgjj vO2fhq realize(reducer.promise)5_XZYg.jj vO8{fhq/ realize(reducer.promise, reducer.start)5_Y[ZD jj vODFr DFq5_Z\[E kk vODFr if ()5_[j\Ekk vO|DFr if (queue)5_\k^j2 kk vO<24s 24r5_jlk3 ll vOB24s ended: []5_kml3ll vOF~24s ended: [ protocol ]5_lnmdll vO`dfs5_monemm vOade5_npocll vObcet ces5_oqpdmm vOgcet ended: function ended()5_prqdmm vOhcft ended: function ended() {}5_qsrenn vOidfu }5_rtsC nn vOoBDu# record, [ 'queued', 'reducers' ],5_sutC#nn vOqBDu' record, [ 'queued', 'reducers', '' ],5_tvudnn vOvdfv dfu5_uwvdoo vO~cev ended: function ended() {5_vxwe oo vOÁdfv return 5_wyxC)oo vOÛBDv, record, [ 'queued', 'reducers', 'ended' ],5_xzyFoo vOàEGv if (queue.queued)5_y{zFoo vOäEGv if (ended())5_z|{Foo vOåEGv if (ended(queue))5_{}|F oo vOéEGv if (ended(queue)) 5_|~}Foo vOêEGv if (!ended(queue)) 5_}~Foo vOëEGv if (!ended(queue)) {}5_~Goo vOìFHv queue.queued.push(item)5_Hoo vOíGIv react(queue)5_Hoo vOíHJw HJv5_6pp vOö68x68w5_Oqq vOOQy OQx5_P rr vOOQy if ()5_P rr vOOQy if (ended)5_Prr vOOQy if (!ended)5_Prr vOOQy if (!ended())5_Prr vOOQy if (!ended(queue))5_Prr vOOQy if (!ended(queue)) {}5_Qrr vOPRyF queue.reducers.push({ next: f, state: start, promise: promise })5_Rrr vOQSy react(queue)5_Rrr vORTz RTy5_Sss vORUz } else {}5_Stt vOSU| SU{5_Tuu vOSU| realize()5_Tuu vOSU| realize(promise, state)5_nuu vOmo| queue.queued.splice(0)5_nuu vOmo| queue.queued = 05_nnnvOmo| queue.queued = null5_nnnvOmn 5_nnnvOnp| np{5_onnvOnp| queue.queued = null5_n#nnvO%mo|# var reducers = queue.reducers5_pnnvO0oq| while (reducers.length) {5_q&nnvO;pr|& var reducer = reducers.shift()5_qnnvO<pr| var reducer = reducers[]5_k nnvOjl|+ return queue.queued && queue.reducers5_knnvOjl|, return !queue.queued && queue.reducers5_mnnvOwln| end: function end(queue) {5_j nnvOzik|" ended: function ended(queue) {5_jnnvO}ik|# closed: function ended(queue) {5_mnnvOƀln| close: function end(queue) {5_PnnvOƆOQ| if (!ended(queue)) {5_3nnvOƊ24| ended: [ protocol ],5_4nnvOƌ35| end: [ protocol ]5_6nnvOƐ57|var end = Endable.end5_6 nnvOƒ57|var colse = Endable.end5_6nnvOƕ57|var close = Endable.end5_7 nnvOƙ68|var ended = Endable.ended5_7nnvOƛ68|var closed = Endable.ended5_8 nnvOƟ79|exports.end = end5_8nnvOơ79|exports.close = end5_2 nnvOƦ13|var Endable = protocol({5_2 nnvOƪ13|var Closabel = protocol({5_62 2vOƯ57|var close = Endable.close5_72 2vOư68|var closed = Endable.closed5_92 2vOƲ8:|exports.Endable = Endable5_82 2vOƵ79|exports.close = closed5_82 2vOƶ8:}8:|5_H2 2vOGI} if (!ended(queue)) {5_j 2 2vOik} Endable, {5_+2 2vOEG Enqueueable, {/1!exports.Enqueueable = Enqueueable-/!var enqueue = Enqueueable.enqueue*,var Enqueueable = protocol({5_:7 7vO9;}exports.Endable = Closable5_PFL}'/* vim:set ts=2 sw=2 sts=2 expandtab */M/*jshint asi: true undef: true es5: true node: true browser: true devel: true& forin: true latedef: false */1/*global define: true, Cu: true, __URI__: true */2;(function(id, factory) { // Module boilerplate :(3 if (typeof(define) === 'function') { // RequireJS define(factory);: } else if (typeof(require) === 'function') { // CommonJS1 factory.call(this, require, exports, module);= } else if (~String(this).indexOf('BackstagePass')) { // JSM# factory(function require(uri) { var imports = {}; Cu.import(uri, imports); return imports;' }, this, { uri: __URI__, id: id });4 exports.EXPORTED_SYMBOLS = Object.keys(exports); } else { // Browser or alike var globals = this" factory(function require(id) { return globals[id];O }, (globals[id] = {}), { uri: document.location.href + '#' + id, id: id }); }>}).call(this, 'reducers', function(require, exports, module) { 'use strict';0var protocol = require('protocol/core').protocol!var reducers = require('./core'),? Reducible = reducers.Reducible, reduced = reducers.reduced,. is = reducers.is, reduce = reducers.reduce)var eventuals = require('eventual/core'),L defer = eventuals.defer, go = eventuals.go, realize = eventuals.realize, then = eventuals.then$var ego = require('alter-ego/core'),, define = ego.define, record = ego.record=var unbind = Function.call.bind(Function.bind, Function.call)8var slice = Array.slice || unbind(Array.prototype.slice))function identity(value) { return value }var Queueable = protocol({ enqueue: [ protocol, Object ]})var enqueue = Queueable.enqueueexports.enqueue = enqueueexports.Queueable = Queueablevar Closable = protocol({ closed: [ protocol ], close: [ protocol ]})var close = Closable.closevar closed = Closable.closedexports.close = closeexports.closed = closedexports.Closable = Closablevar Reactor = protocol({ react: [ protocol ]})var react = Reactor.reactexports.Reactor = Reactorexports.react = reactvar Queue = define(# record, [ 'queued', 'reducers' ], Queueable, {, enqueue: function enqueue(queue, item) { if (!closed(queue)) { queue.queued.push(item) react(queue) } } }, Reducible, {. reduce: function reduce(f, queue, start) { var promise = defer() if (!closed(queue)) {H queue.reducers.push({ next: f, state: start, promise: promise }) react(queue) } else { realize(promise, start) } return promise } }, Reactor, {" react: function react(queue) { var queued = queue.queued# var reducers = queue.reducers0 while (queued.length && reducers.length) {! var reducer = reducers[0]@ var result = reducer.next(reducer.state, queued.shift())" if (is(result, reduced)) { reducers.shift()0 realize(reducer.promise, result.value) } else { reducer.state = result } } } }, Closable, {$ closed: function closed(queue) {- return !queue.queued && !queue.reducers }," close: function close(queue) {G var reducers = queue.reducers, count = reducers.length, index = 0* queue.queued = queue.reducers = null while (index < count) {' var reducer = reducers[index++]/ realize(reducer.promise, reducer.state) } } })function queue() {( return new Queue(slice(arguments), [])}exports.queue = queue});5_+PI*,P4 value = is(value, reduced) ? value.value : value5_+PI*,P1 value = value, reduced) ? value.value : value5_+*PI*,P@ value = value && value.is === reduced) ? value.value : value5_ PI* P%var reduce = require('./core').reduce5_ #PI, P#var core = require('./core').reduce5_%P1$&Qfunction Queue() {}5_%P9$&Qfunction Queue(channel) {}5_%!P>$'Q"function Queue(channel, queued) {}5_%P?%'S %'R5_&PB%'S thi[]5_&PC%'S this5_&PD%'S this[]5_%PH$&S!function Queue(channel, queued) {5_&PK%'S this[queued]5_&PP&(T &(S5_'PR&(T this[]5_'PT&(T this[source]5_#Pc#%U#%T5_+Pr*,U return !queue.result5_+Py*,U return isClosed()5_+P{*,U return isClosed(queue[])5_( P')U this[source] = channel5_( P')U this[tar] = channel5_$ ( (vP#%Uvar source = Name()5_+( (vP*,U return isClosed(queue[source])5_)( (vP)+V)+U5_*( (vP)+Venqueue.define()5_*( (vP)+V!enqueue.define(Queue, function())5_*,( (vP)+V-enqueue.define(Queue, function(queue, value))5_*.( (vP),V0enqueue.define(Queue, function(queue, value) {})5_*( (vP*,X *,W5_+ ( (vP*,X isOpen()5_+( (vP*,X isOpen(queue)5_+( (vP*,X isOpen(queue) enqueue()5_+( (vP*,X isOpen(queue) enqueue(queue[])5_+%( (vP*,X& isOpen(queue) enqueue(queue[target])5_++( (vP+-X5_+( (vP*,Y- isOpen(queue) enqueue(queue[target], value)5_+( (vP*,Y1 if (isOpen(queue) enqueue(queue[target], value)5_+( (vP+-Z +-Y5_, ( (vP+-Z else this[]5_,( (vP+-Z else this[queued]5_,( (vP+-Z else this[queued].push()5_-( (vP,-5_-( (vP-/Z-/Y5_.( (vP-/Zaccumulate.define()5_.#( (vP-/Z$accumulate.define(Queue, function())5_.%( (vP-0Z'accumulate.define(Queue, function() {})5_."( (vP-/[%accumulate.define(Queue, function() {5_.3( (vP.0\ .0[5_, ( (vP +-\ else this[queued].push(value)5_, ( (vP +-\! else queued[queued].push(value)5_/( (vP".0\ 5_/ ( (vP&.0\ enqueue()5_/ ( (vP).0\ accumulate()5_/( (vP*.0\ accumulate(queue[])5_/( (vP,.0\ accumulate(queue[target])5_/'( (vP/.0\( accumulate(queue[target], next, state)5_/&( (vP1.0\' accumulate(queue[target], next, stat)5_.4/(/"v"P5-/\7accumulate.define(Queue, function(queue, next, start) {5_vPDR\ var Name = require('name')var Method = require('method')var core = require('./core'),0 reduce = core.reduce, reduced = core.reduced-var eventuals = require('eventual/eventual'),8 defer = eventuals.defer, deliver = eventuals.deliver=var unbind = Function.call.bind(Function.bind, Function.call)8var slice = Array.slice || unbind(Array.prototype.slice)5_vPG// Method to enqueue values.5_vPHvar enqueue = Method()5_vPHexports.enqueue = enqueue5_vPH5_vPH// Method to close a queue.5_vPHvar close = Method()5_vPHexports.close = close5_vPI5_vPIvar isClosed = Method()5_vPIexports.isClosed = isClosed5_vPI5_vPIvar react = Method()5_vPIexports.react = react5_vPJ5_vPJvar state = Name()5_vPJvar result = Name()5_vPLvar next = Name()5_vPhANvar core = require('../core'),> into = core.into, flatten = core.flatten, take = core.take-var accumulators = require('../accumulator'), reduce = accumulators.reduce%var channels = require('../channel'),; channel = channels.channel, enqueue = channels.enqueue,9 close = channels.close, isClosed = channels.isClosed, isOpen = channels.isOpen,% sequential = channels.sequential, parallel = channels.parallelvar hubs = require('../hub'), hub = hubs.hub5_ "vPr!"%close.define(Queue, function(queue) {5_  "vPr!" if (!isClosed(queue)) {5_   "vPr!" var value = queue[state]5_   "vPs!"? value = value && value.is === reduced ? value.value : value5_   "vPs!"! deliver(queue[result], value)5_  "vPs!"E queue[next] = queue[state] = queue[result] = queue[queued] = null5_ "vPs!" }5_"vPs!" return queue5_"vPs!"})5_"vPt!"%react.define(Queue, function(queue) {5_"vPt!"- var values = queue[queued], f = queue[next]5_"vPt!" while (values.length && f) {5_"vPt!"2 queue[state] = f(queue[state], values.shift())5_"vPt!"# if (is(queued[state], reduced))5_"vPt!" return close(queue)5_"vPu!" }5_"vPu!"})5_"vPu!"-enqueue.define(Queue, function(queue, item) {5_"vPu!" if (!isClosed(queue)) {5_"vPu!" queue[queued].push(item)5_"vPu!" react(queue)5_"vPv!" }5_"vPv!" return queue5_ "vPv!"})5_! "vPv!"0reduce.define(Queue, function(queue, f, start) {5_ "!"vPv!"# if (isClosed(queue)) return start5_!#""vPv!" queue[state] = start5_"$#"vPw!" queue[next] = f5_#%$"vPw!" react(queue)5_$&%"vPw!" return queue[result]5_%'&"vPw!"})5_&('"vPw!"5_')("vPw!"function queue() {5_(*)"vPx!" var result = new Queue()5_)+*"vPx!"# result[queued] = slice(arguments)5_*,+"vPx!" result[result] = defer()5_+-,"vPx!" result[state] = null5_,.-"vPx!" result[next] = null5_-/."vPx!" return result5_.0/"vPy!"}5_/10"vPy!"exports.queue = queue5_021vP "!5_132% vP%'%5_243& vP%'isOpen.define()5_354& vP% isOpen.define(Queue, function())5_465&$ vP%'%isOpen.define(Queue, function(queue))5_576&& vP%(isOpen.define(Queue, function(queue) {})5_687& vP&(( &('5_798' vP&(( return isOpen()5_8:9' vP&(( return isOpen(queued)5_9;: vP )(5_:<;  vP,#dispose.define(Hub, function(hub) {5_;=< vP,%dispose.define(Hub, function(queue) {5_<>= vP, hub[source] = null5_=?> vP, queue[source] = null5_>@? vP, hub[accumulators] = null5_?A@ vP , queue[accumulators] = null5_@BA$  vP9$&- $&,5_ACB% vP;$&- if ()5_BDC%  vP=$&- if (isOpen())5_CED& vP@$&- if (isOpen(queue))(accumulate(queue[target], next, initial)%'-* accumulate(queue[target], next, initial)5_DFE% vPE$&,= if (isOpen(queue)) accumulate(queue[target], next, initial)5_EGF% vPG$',> if (!isOpen(queue)) accumulate(queue[target], next, initial)5_FHG& vPI%'-* accumulate(queue[target], next, initial)5_GIH& vPI&(. &(-5_HJI$ vP]$)/ $&.5_IKJ% vP`$&21 if (isClosed(hub)) return next(end(), initial)5_JLK% vPg$&20 if (isClosed(hub)) return next(end(), initial)5_KML***+v+Ps)+2, accumulate(queue[target], next, initial)5_LNM%**+v+Pt%'3 %'25_MON&+++v+Pu%'3, accumulate(queue[target], next, initial)5_NPO'+++v+Pw&'8 hub[accumulators].push({ next: next, state: initial })5_OQP(**+v+Pz'(5_PRQ())+v+P{'( if (!isOpen(queue)) {5_QSR(((+v+P{'( 5_RTS(((+v+P|'( }5_SUT'((+v+P&(. if (!isOpen(hub)) open(hub)5_T_U'((+v+P&(. if (!isOpen(queue)) open(hub)5_U`V_(((+v+P(*/(*.5__a`) ((+v+P(*/ open.define()5_`ba)((+v+P(*/open.define(Queue, function())5_acb)"((+v+P(*/#open.define(Queue, function(queue))5_bdc)$((+v+P(+/&open.define(Queue, function(queue) {})5_ced)((+v+P()$open.define(Queue, function(queue) {5_dfe)((+v+P()})5_egf%((+v+P%'/ %'.5_fhg(((vP')/! if (!isOpen(queue)) open(queue)5_gih&((vP%'/ var opened = 5_hji( ((vP ')/ if (!) open(queue)5_ikj((vP0/5_jlk))vP0function open()5_kml))vP0function open() {}5_lnm**vP15_mon++vP2function open() {5_npo++vP2function open(queued) {5_oqp++vP3 25_prq,,vPt435_qsr--vP|var 5_rts%,,vP$&32 if (isOpen(queue)) enqueue(queue[target], value)5_sut%,,vP$&32 if (isOpen(queue)) enqueue(queue[target], value)5_tvu,,vPfunction isReady435_uwv..vP5function isReady()5_vxw..vP5function isReady(queued)5_wyx..vP5function isReady(queue)5_xzy..vP5function isReady(queue) {}5_y{z//vP7 65_z|{00vP7 return isOpen()5_{}|00vP7 return isOpen(queued)5_|~}00vP7function isReady(queue) {5_}~00vP7 return isOpen(queue)5_~ 00vP7! return isOpen(queue) && queue[]5_00vP7' return isOpen(queue) && queue[queued]5_) 00vP(*72 if (isOpen(queue)) enqueue(queue[target], value)5_000vP /17 if (!opened) open(queue)5_ 00vP7function open(queue) {5_00vP7 var 5_00vP(7 var values = queue5_00vP(7 var values = queue[]5_00vP+8 75_ 11vP.8 while ()5_11vP39 85_ 22vP?9 enqueue()5_22vPA9 enqueue(queue[])5_22vPB9 enqueue(queue[target])5_22vPR9 while (values.length)&enqueue(queue[target], values.shift())9* enqueue(queue[target], values.shift())5_11vPU9 85_ 22vP^9 dispose()5_22vPd: 95_3 33vPj35; 35:5_- 33vPq-/< -/;5_744vP<7 channel = channels.channel, close = channels.close,5_44vP channel = channels.channel, 5_ A33vP ;A accumulate = core.accumulate, accumulated = core.accumulated,5_ 33vP ;" accumulate = core.accumulate, accumulator = core.accumulator ;2 end = core.end, accumulator = core.accumulator5_/22vP./2 if (isClosed(queue)) return next(end(), initial)5_11vP5_800vP9;function queued885_:00vP9;function queued()5_:00vP9function queue()5_:00vP9;function queue(target)5_:00vP9function queue(target) {}5_"00vP<;5_11vP channel = channels5_:00vP/:<< :<;5_;00vP6:<< return new Queue()5_<00vPU<<5_=00vPb<exports.queues = queues5_=00vPi<exports.queue = queued5_(00vP(*> (*=5_)11vP(*> console.log()5_)11vP(*> console.log(isDrained())5_)11vP(*> console.log(isDrained(queue))5_)11vP(*> console.log('')5_)11vP(*> console.log('>>>>>>')5_)11vP(*> console.log('>>>>>>', queue)5_))11vP(*>+ console.log('>>>>>>', queue, isDrained())5_)(11vP (*>0 console.log('>>>>>>', queue, isDrained(queue))5_811vP79> return isOpen(queue)5_811vP79> return isOpen(queue[])5_)11vP!()- console.log('>>>>>>', queue, isOpen(queue))5_(00vP(*=5_)11vP(*>5_)11vP(*> console.log()5_)11vP(*> console.log(queue)5_)11vP(*> console.log(queue[])5_)11vP(*> console.log(queue[source])5_)11vP(*> console.log(queue[target])5_)#11vP(*># console.log(isOpen(queue[target])5_)11vP(*>$ console.log(isOpen(queue[target]))5_)11vP()' console.log(isDrained(queue[target]))5_)00vP(+=5 if (isDrained(queue)) enqueue(queue[target], value)5_(11vP(*? (*>5_)22vP(*? console.log()5_)22vP(*? console.log(queue)5_)22vP)+@ )+?5_*33vP)+@ console.log()5_*33vP )+@ console.log('')5_*33vP )+@ console.log('<<')5_*33vP)+@ console.log('<<', isDrained())5_*$33vP#)+@% console.log('<<', isDrained(queue))5_)33vP&(*@ console.log('>>>', queue)5_*+33vP))+@, console.log('<<', isDrained(queue), value)5_:33vP[@: enqueue = channels.enqueue, dispose = channels.dispose5_44vPfA close = queue.close5_(44vP3(*B(*A5_) 55vP8(*Bclose.define()5_)55vP;(*Bclose.define(Queue, function())5_) 55vP;(+B"close.define(Queue, function() {})5_)66vP<)+D )+C5_*77vPB)+D return close()5_)77vPE(*D close.define(Queue, function() {5_*77vPF)+D return close()5_*77vPH)+D return close(queue[])5_)"77vPJ(*D%close.define(Queue, function(queue) {5_*77vPM)+D return close(queue[target])5_))+vPe(*D,close.define(Queue, function(queue, value) {$ return close(queue[target], value)})5_)))vPe()5_<))vPh<@B<>A5_=))vP=?E =?D5_>))vP=?E if ()5_>))vP=?E if (value !== undefined)5_>#))vP=?E$ if (value !== undefined) enqueue()5_?#))vP>@E$ return close(queue[target], value)5_: ))vP:<F :<E5_;))vP:<F console.log()5_;))vP:<F console.log(queue,)5_;))vP:<F console.log('open?', queue,)5_;))vP:<F console.log('open?', queue)5_;))vP:<F console.log('open?', queue[])5_'v'P dispose(queue)5_$'v'P#$'dispose.define(Queue, function(queue) {5_$'v'P#$ queue[target] = null5_$'v'P#$ queue[target] = null5_$'v'P#$})5_'v'PB A5_'v'PB queue[]5_ 'v'P B queue[queued]5_  7'v'P67% console.log('open?', queue[target])5_   &'v'P%&" console.log('>>>', queue, value)5_   &'v'P%&% console.log('<<', isDrained(queue))5_   <'v'P<>@ <>?5_  ='v'P<>@ var value = Object.create()5_ =!'v'P=?A =?@5_<'v'P;=Afunction queue(target) {5_<'v'P;=Afunction queue(input) {5_="<<vP<>A# var value = Object.create(target)5_> <<vP=?A values[]5_><<vP=?A values[target]5_><<vP>@A5_><<vP=?B values[target] = output5_><<vP>@C >@B5_? <<vP>@C values[]5_?<<vP>@C value[]5_?<<vP>@C value[queued]5_?<<vP?AD ?AC5_@<<vP?AD return values5_A<<vP@A5_A<<vP@A return new Queue(target, [])5_%%0v P$&B .enqueue.define(Queue, function(queue, value) { if (isDrained(queue))! enqueue(queue[target], value) else queue[queued].push(value) return queue})9accumulate.define(Queue, function(queue, next, initial) { var opened = isOpen(queue)* accumulate(queue[target], next, initial) if (!opened) drain(queue) return queue})(isClosed.define(Queue, function(queue) {5_ 5%%v P5C75765_! 5%%v P57D57C5_ #!7%%v P57Dqueue.enqueue = function(queue, value) {68D.enqueue.define(Queue, function(queue, value) {5_!$"#;%%v P:<C})5_#%$<%%v P ;=C9accumulate.define(Queue, function(queue, next, initial) {5_$&%<,%%v P;=CLqueue.accumulate = accumulate.define(Queue, function(queue, next, initial) {5_%'&A%%v P@BC})5_&('3%%v P35D 35C5_')(4%%v P&35D enqueue.implement()5_(*)4'%%v P*46E 46D5_)+*5%%v P/46E accumulate.implement()5_*,+C%%v PACEFCEE5_+-,D%%v PICEFqueue.close = function()5_,.-D%%%v PLCEF%queue.close = function(queue, values)5_-/.D'%%v PMCFF(queue.close = function(queue, values) {}5_.0/D%%v PNDFH DFG5_/10E%%v PODFH if ()5_021E %%v PQDFH if (values)5_132E %%v PRDFH if (value)5_243E %%v PUDFH if (value) 5_354E%%v P\DFH if (value !== undefined) 5_465E#%%v P]DFH$ if (value !== undefined) enqueue()5_576E0%%v PeDFH1 if (value !== undefined) enqueue(queue, values)5_687E.%%v PfEGI EGH5_798F%%v PmEGI return close()5_8:9F%%v PnEGI return close(queue[])5_9;:D$%%v PwCEI'queue.close = function(queue, values) {5_:<;  .vP!:!I function Queue(channel, items) { this[queued] = items this[target] = channel}(isClosed.define(Queue, function(queue) { return isClosed(queue[target])})&isOpen.define(Queue, function(queue) { return isOpen(queue[target])}),close.define(Queue, function(queue, value) {0 if (value !== undefined) enqueue(queue, value) return close(queue[target])})5_;=<:  vP9exports.queue = queue5_<>=  vP  :@ accumulate = core.accumulate, accumulator = core.accumulator5_=?>  vP :: convert = core.convert, accumulator = core.accumulator5_>@? 9 vP :W convert = core.convert, accumulate = core.accumulatoraccumulator = core.accumulator5_?A@ 9!!vP ;9 convert = core.convert, accumulate = core.accumulator5_@BA !!vP" " accumulator = core.accumulator5_ACB"# vP5!#:# var value = Object.create(output)5_BDC" vP8!#: var value = convert()5_CED%%(%vPH$&:) enqueue.implement(value, queue.enqueue)5_DFE"%(%vPI"$; "$:5_EGF&&(&vPJ%& 5_FHG&&(&vPK%&/ accumulate.implement(value, queue.accumulate)5_GIH &(&vP 9var target = Name()5_HJI,&(&vP%9> while (values.length) enqueue(queue[target], values.shift())5_IKJ$&(&vP,#%9 value[target] = output5_JLK!&(&vP. "9function queue(output) {5_KML$&(&vP1#%9 value[output] = output5_LNM*&(&vP4)+9! enqueue(queue[target], value)5_MON0&(&vP7/19* accumulate(queue[target], next, initial)5_NPO6&(&vP9579 return close(queue[target])5_OQP"&(&vPI!#9/ var value = convert(output, queue.accumulate)5_PRQ4&(&vP b34&queue.close = function(queue, value) {5_QSR4&(&vP b340 if (value !== undefined) enqueue(queue, value)5_RTS4&(&vP c34 return close(queue[output])5_SYT4P c34}5_TZXY;&(&vP 5; isClosed = channels.isClosed, isOpen = channels.isOpen,5_Y[Z&(&vP 5" isClosed = channels.isClosed, 7enqueue = channels.enqueue, dispose = channels.dispose,5; enqueue = channels.enqueue, dispose = channels.dispose,5_Z\[Y%(%vP 4Y isClosed = channels.isClosed, enqueue = channels.enqueue, dispose = channels.dispose,5_[]\"%(%vP 4= isClosed = channels.isClosed, enqueue = channels.enqueue,5_\^]%(%vP 4 enqueue = channels.enqueue,close = channels.close4 close = channels.close5_]_^$($vP 3( return isOpen(queue) && !queue[queued]5_^_-$($vP ,- var opened = isOpen(queue)5__`. $($vP J-/2 if (!opened) drain(queue)5_.$($vP O-/2 if (!isDrained()) drain(queue)5_...$v$P |-/2% if (!isDrained(queue)) drain(queue)5_,..$v$P |,.3 ,.25_///$v$P ~ ./ 5_,//$v$P ,.3 ,.25_- 00$v$P ,.3 accumulate()5_-00$v$P ,.3 accumulate(append())5_-00$v$P ,.3 accumulate(append(queue[]))5_- 00$v$P ,.3" accumulate(append(queue[queue]))5_-(00$v$P ,.3+ accumulate(append(queue[queue], queue[]))5_-000$v$P ,.31 accumulate(append(queue[queue], queue[output]))5_ 800$v$P   38 convert = core.convert, accumulate = core.accumulate5_-00$v$P -/4 -/35_.11$v$P .045_/22$v$P  .055_, 22$v$P ,.6 ,.55_-33$v$P ,.6 console.log()5_-33$v$P ,.6 console.log(queue[])5_-33$v$P ,.6 console.log(queue[queue])5_.33$v$P  -/6@ accumulate(append(queue[queue], queue[output]), next, initial)5_-33$v$P ,- console.log(queue[queued])5_022$v$P /0% if (!isDrained(queue)) drain(queue)5_011$v$P /0* accumulate(queue[output], next, initial)5_000$v$P  /0 return queue5_/00$v$P ./ return queue5_//$v$P function drain(queue) {5_..$v$P  var values = queue[queued]5_--$v$P > while (values.length) enqueue(queue[output], values.shift())5_,,$v$P  queue[queued] = null5_++$v$P  return queue5_**$v$P }5_))$v$P 5_6(($v$P u*6 enqueue = channels.enqueue, close = channels.close5_(($v$P w* enqueue = channels.enqueue,5_ P  *$var channels = require('./channel'),5_P  * var emit = require('./channel'),5_P  *var emit = require('./signal'),5_P  enqueue = channels.enqueue5_P !! enqueue(queue[output], value)(queue.enqueue = function(queue, value) {) enqueue.implement(value, queue.enqueue)5_P|var Method = require('method')5_P|5_P|5_Pvar Name = require('name')5_ P %N convert = core.convert, accumulate = core.accumulate, append = core.append5_P %Nvar convert = core.convert, accumulate = core.accumulate, append = core.append5_P %Kvar convert = require(), accumulate = core.accumulate, append = core.append5_P %Mvar convert = require(""), accumulate = core.accumulate, append = core.append5_Pvar core = require('./core'),5_$P $Vvar convert = require("./convert"), accumulate = core.accumulate, append = core.append5_P %6var accumulate = core.accumulate, append = core.append5_P %;var accumulate = require().accumulate, append = core.append5_P %=var accumulate = require("").accumulate, append = core.append5_4P %Ivar accumulate = require("./accumulate").accumulate, append = core.append5_'P & %5_ P &var concat = require()5_ P &var concat = require("")5_=P &=var accumulate = require("./accumulate") append = core.append5_ P 5_ P %var queued = Name()5_ P %var queued = ""5_ P %var queued = "queued@"5_P% 'use strict';5_ P% "use strict';5_ P %5_ P 5_ P %var output = Name()5_ P %var output = ""5_ P %var output = "output@"5_!P "%A accumulate(append(queue[queued], queue[output]), next, initial)5_ P= %#var emit = require('./signal').emit5_ !P? %!var emit = require('./emit').emit5_ P@ %var emit = require('./emit')5_ PC %var emit = require('./emit")5_PJ'/* vim:set ts=2 sw=2 sts=2 expandtab */5_PJM/*jshint asi: true undef: true es5: true node: true browser: true devel: true5_ PJ9 forin: true latedef: false globalstrict: true */5_PJ5_P+!/ var value = convert(target, queue.accumulate)5_ P߃ " !5_ Pߎ "function Queue()5_ Pߎ "function Queue() {}5_ Pߏ #5_ Pߡ %  $5_ Pߧ % this[]5_ Pߨ % this[output]5_ P߫ &  %5_ P߭ & this[]5_ P߯ & this[queued]5_ P߱ &function Queue() {5_P߹accumulate.define'&5_P(accumulate.define()5_#&vP(accumulate.define(Queue, )5_'*vP,}),)5_&)vP+ queued = null5_&)vP + queue[queued = null5_vP+9accumulate.define(Queue, function(queue, next, initial) {A accumulate(concat(queue[queued], queue[output]), next, initial) queue[queued] = null})5_##&vP !"'%queue.accumulate = "$(3queue.accumulate = function(queue, next, initial) {A accumulate(concat(queue[queued], queue[output]), next, initial) queued = null}5_vP(accumulate.define(Queue, )5_vP5_vP"5_vP'&5_&vP &((&('5_'vP"&((accumulate.define(Queue, )5_')vP&&)()accumulate.define(Queue, queue.accumulate5_(vP)')) em5_( vP,')) emit.define()5_(vP2#(*)5_vP=$"var convert = require("./convert")5_vP@* )5_vPF%* return new Queue()5_vPJ- var value = convert(null, queue.accumulate)5_vPJ# emit.implement(value, queue.emit)5_vPK value[output] = target5_vPK value[queued] = []5_vPL& return value5_#P","#emit.define(Queue, queue.emit)5_vP-var emit = require("./emit")5_vP%queue.emit = function(queue, value) {5_vP if (isDrained(queue))5_vP emit(queue[output], value)5_vP else queue[queued].push(value)5_vP return queue5_vP}5_vP. function isDrained(queue) {5_vP.  return !queue[queued]5_vP/ }5_ vP0 5_!  vP2"var output = "output@" + module.id5_ "!vP7"var source = "output@" + module.id5_!#" vP:.  this[output] = target5_"$#/vPLA accumulate(concat(queue[queued], queue[output]), next, initial)5_#%$.vPP/@ accumulate(concat(queue[queued], queue[queue]), next, initial)5_$&%/vPRA accumulate(concat(queue[queued], queue[queued]), next, initial)5_%'&+vPT0< accumulate(concat(queue[queued], queue[o]), next, initial)5_&('/vPX1@ accumulate(concat(queue[queued], queue[source), next, initial)5_')( vPQ function buffer  5_(*)vPY function buffer()5_)+*vP[ function buffer(queue)5_*,+vP\ function buffer(queue) {}5_+-,vPm5_,.-vPr5_-/.vP function buffer(queue) {5_.0/vP  5_/10vP }5_021vP 5_132 vP   5_243 vP 5_354 vP 5_465 vP  5_576vP  accumulate5_687vP return new Queue(target)5_798 vP 5_8:9 vP accumulate()5_9;:vP accumulate(target, function())5_:<;!vP# accumulate(target, function() {})5_;=<vP! accumulate(target, function() {5_<>=)vP 5_=?> vP if ()5_>@?vP# if ()5_?A@vP$ if (value[])5_@BAvP& if (value[next])5_ACBvP) 5_BDCvP/ var next = value[]5_CEDvP3 5_DFE vP4 next()5_EGF*vP:- accumulate(target, function(value, state) {5_FHGvPd if (value[reducer])5_GIHvPj var next = value[reducer]5_HJIvPk value[reducer]5_IKJvPq value.reducer()5_JLK vPx function enqueue  5_KMLvP  function enqueue()5_LNMvP  function enqueue(queue, value)5_MON vP  !function enqueue(queue, value) {}5_NPOvP ! function enqueue(queue, value) {5_OQP$vP2 !'function enqueue(queue, value, start) {5_PRQ$vP !'function enqueue(queue, value, state) {5_QSR%vP" !5_RTSvP" if ()5_SUT vP" if (queue[])5_TVUvP" if (queue[queued])5_UWVvP" if (queue[queued].push())5_VXWvP# "5_WYXvP #)function enqueue(queue, value, initial) {5_XZY vP $ #5_Y[ZvP  accumulate5_Z\[vP #,function accumulate(queue, value, initial) {5_[]\vP k5_\^]&vP "& accumulate(target, function(value) {5_]_^vP%" accumulate(target, queue, ta5_^`_vP4" accumulate(target, enqueue, 5__a`vP8 value.reducer(value)5_`bavP9 next(value)5_acbvP9 })5_bdc vPG )function consume(queue, value, initial) {5_ced vPM )function enqueue(queue, value, initial) {5_dfe vPN "function enqueue(value, initial) {5_egf vPQ if (queue[queued].push(value))5_fhg vPR 5_gih vPV if ()5_hji  vP[ if (queue)5_ikj  vP[ if (queue[])5_jlk vPp  5_kml vPx var reducer = ""5_lnm vP{ var reducer = "reducer@"5_mon vP  if (queue[reducer])5_npo vP ! 5_oqp  vP !var state = ""5_prq  vP !var state = "state@"5_qsr vP! if (queue[reducer]) 5_rts vP! if (queue[reducer]) queue[]5_sut" vP!" if (queue[reducer]) queue[state]5_tvu+ vP!, if (queue[reducer]) queue[state] = queue[]5_uwv3 vP!3 if (queue[reducer]) queue[state] = queue[reducer]5_vxw4 vP!5 if (queue[reducer]) queue[state] = queue[reducer]()5_wyxA vP!C if (queue[reducer]) queue[state] = queue[reducer](value, queue[])5_xzyE vP" !5_y{z  vP" else queue[]5_z|{ vP" else queue[queued]5_{}| vP" else queue[queued].push()5_|~} vP# "5_}~  vP$ #5_~ vP$ if ()5_  vP$ if (queued[])5_ vP13 if (queued[reducer])5_ vP8#H if (queue[reducer]) queue[state] = queue[reducer](value, queue[state])5_ vP9% $5_ vP;& %5_ vP=' &5_ vPA' var result = $ queue[reducer](value, queue[state])'6 queue[state] = queue[reducer](value, queue[state])5_ vPC' &5_ vPE' if ()5_ vPG' if (isReduced())5_ vPK' if (isReduced(result))5_ vPN' if (isReduced(result)) 5_ vP^' if 5_ vP_' 5_  vPc' elese 5_  vPi' else 5_  vPm' queue[]5_ vPn' queue[reducer]5_ vPu'( if (isReduced(result)) return result5_+ vP}'9 if (isReduced(result) || value === end) return result5_- vP}'< if (isReduced(result) || value === end) {} return result5_ vP( } return result5_ vP) (5_  vP) queue[]5_ vP) queue[state]5_ vP) queue[state] = void()5_"  vP"$* "$)5_# vP"$* if ()5_# vP"$* if (queue.ended)5_# vP"$* if (queue.ended) accumulate()5_#$ vP"$*& if (queue.ended) accumulate(queue[])5_#+ vP"$*, if (queue.ended) accumulate(queue[queued])5_#3 vP"$*4 if (queue.ended) accumulate(queue[queued].shift())5_"2 vP"$+ "$*5_# vP"$+ var buffered = queue[]5_# vP"$+ var buffered = queue[queue]5_# vP#%, #%+5_$ vP#%, queue[]5_$ vP#%, queue[queued]5_$ vP#%, queue[queued] = void()5_$ vP$&- $&,5_% vP$&- if ()5_% vP$&- if (queue.ended)5_% vP$&- if (queue.ended) accumulate()5_%4 vP%'. %'-5_& vP%'. else accumulate()5_& vP%'. else accumulate(concat())5_&) vP %'., else accumulate(concat(buffered, queue[]))5_&1 vP#4%'.2 else accumulate(concat(buffered, queue[source]))5_P&'5_P)5_P*5_P*5_P+5_P,5_P,(5_P: 5_P: 5_ P;) 5_  vPN  accumulate.define()5_  vPQ accumulate.define(Queue, )5_  vP"var output = "source@" + module.id5_ vP"var source = "source@" + module.id5_ vP  this[source] = target5_vP 5_vP* 5_/vP+A accumulate(concat(queue[queued], queue[source]), next, initial)5_ vP  this[source] = []5_   vPYqueue.accumulate = 5_   vP\ 9accumulate.define(Queue, function(queue, next, initial) {A accumulate(concat(queue[queued], queue[output]), next, initial) queue[queued] = null})5_  vPa5_=P &5_(($v$P (*function queue(source) {5_ (($v$P *var input = Name()5_, 00$v$P ,-2 ,.3 append()5_- 00$v$P ,.3 append(queue[])5_-00$v$P ,.3 append(queue[queued])5_-00$v$P ,.3 append(queue[queued], queue[])5_-00$v$P ,.3" append(queue[queued], queue[ou])5__a`, $($vP ,-2 ,.3 if ()5_`ba-$($vP ,.3 if (isDrained())5_acb-$($vP ,.3 if (!isDrained())5_bdc-$($vP ,.3 if (!isDrained(queue))5_ced-$($vP ,.3 if (!isDrained(queue)) drain()5_dme-$($vP ,.3% if (!isDrained(queue)) drain(queue)5_enfm-$($vP Y,.32 if (!isDrained(queue)) append(queue[drain(queue)5_mon-&$($vP ,.3; if (!isDrained(queue)) append(queue[queued], drain(queue)5_npo-/$($vP ,.3I if (!isDrained(queue)) append(queue[queued], queue[output])drain(queue)5_oqp-$($vP ,.3 if (!isDrained(queue))> accumulateappend(queue[queued], queue[output])drain(queue)-/? accumulate(append(queue[queued], queue[output])drain(queue)5_prq.?$($vP -/45 accumulate(append(queue[queued], queue[output]), 5_qsr.5$($vP -/4C accumulate(append(queue[queued], queue[output]), next, initial)5_rts-$($vP ,.4 if (!isDrained(queue)) {}5_sut-$($vP ,.4 if (!isDrained(queue)) {5_tvu.$($vP ./4 .05 }5_uwv6$($vP 56 enqueue = channels.enqueue, close = channels.close5_vxw 8$($vP  5N convert = core.convert, accumulate = core.accumulate, append = core.append5_wyx-$($vP -.5 -/6 queue5_xzy.$($vP -/5_y{z.$($vP ./5 .06 queue[]5_z|{/ $($vP .06 queue[queued]5_{}|/$($vP .06 queue[queued] = null5_|~}0$($vP /16 } else {}5_}~0 $($vP /16 } else {5_~1$($vP 026, accumulate(queue[output], next, initial)5_1$($vP 126 137 }5_3$($vP 245_egmf/$($vP .05_fig 8$($vP  2N convert = core.convert, accumulate = core.accumulate, append = core.append5_gjhi'$($vP -&(2 if (isDrained(queue)) append()5_ikj'$($vP 2&(2' if (isDrained(queue)) append(value[])5_jlk'%$($vP 3&(2, if (isDrained(queue)) append(value[queue])5_kl'+$($vP 5&(25 if (isDrained(queue)) append(value[queue], queue[])5_gih'$($vP &&(2 if (isDrained(queue)) append()5_TUYX/P 2/05 /16 isDrained()5_TVXU/P .05_UWV0 P /14 if (!isDrained()) drain(queue)5_VW0P /14% if (!isDrained(queue)) drain(queue)5_!#"6%%v P57C0queue.enqueue = function enqueue(queue, value) {5_'v'PqF return isOpen(queue) && 5_ 'v'PuF, return !queue[queued] && isOpen(queue) && 5_,'v'PxF( return !queue[queued] && isOpen(queue)5_*))vP)+5_*))vP)+5_*))vP)+5_*))vP)+5_!55vPz!"A !#B Object.create()5_"55vP!#B Object.create(channel)5_"55vP!#B% var queued = Object.create(channel)5_" 55vP!#B$ var queue = Object.create(channel)5_#55vP"$B queued[queued] = items5_#55vP"$B queue[queued] = items5_$$$vP#%B queue[target] = channel5_$$$vP#%B 5_"%%vP"#B "$C queue[target] = channel5_%%%vP$&C return queue5_' %%vP'(C ')D dispose()5_( %%vP')D dispose(queue.target)5_(%%vP')D dispose(queue[target)5_(%%vP')D dispose(queue[target])5_*%%vP)+D queue[queue] = null5_* %%vP)+D queue[queued] = null5_(%%vP')5_9%%vP8:5_9%%vP8:5_9%%vP8:5_9%%vP8:5_9%%vP8:5_9"% v P8:5_"55vP!#B Object.create(target)5_UW_V$"vP.&dispose.define(Queue, function(self) {5_VXW"vP. self[target] = null5_WYX"vP. self[target] = null5_XZY $"vP!.-enqueue.define(Queue, function(self, value) {5_Y[Z!""vP ".1 if (isOpen(queue)) enqueue(self[target], value)5_Z\[" "vP!#. else self[queued].push(value)5_[]\!"vP ".0 if (isOpen(self)) enqueue(self[target], value)5_\^]%"vP$&.1 if (isClosed(self)) return next(end(), initial)5_]^$'"vP#%.8accumulate.define(Queue, function(self, next, initial) {5_:2 2vO9;}exports.Closable = Closable5_2O13var Closeable = protocol({57var close = Closeable.close68var closed = Closeable.closed9;exports.Closeable = Closeableik Closeable, {5_\_]j^2 2 2vO13rvar Closable = protocol({5_^`_32 2vO24r close: [ protocol ]5__a`22 2vO23r 24s isOpen: []5_`ba3 2 2vO24s isOpen: [ protocol ]5_acb32 2vO24s isOpen: [ protocol ],5_bdc62 2vO57svar close = Endable.end5_ced62 2vO57svar close = Closable.end5_dfe62 2vO57svar close = Closable.close5_egf7 2 2vO"68sexports.close = end5_fhg72 2vO$68sexports.close = close5_gih82 2vO(79sexports.Closable = Endable5_hi82 2vO*}79sexports.Closable = Closable5_\^]Dll vODEr DFs var queued = queue.queued5_H FCFvO$GIa( var reducer = reducers.shift()5_C66vOBD5_C66vOBD5_C66vOBD5_C66vOBD5_C66vOBDb2 while (reducers.length && reducers.length) {5