!function(a){"object"==typeof module&&"object"==typeof module.exports?module.exports=a():window.Pro=window.ProAct=window.P=a()}(function(){function a(a,b){a&&!P.U.isString(a)&&(b=a,a=null),P.U.defValProp(this,"listeners",!1,!1,!0,this.defaultListeners()),P.U.defValProp(this,"listener",!1,!1,!0,null),P.U.defValProp(this,"errListener",!1,!1,!0,null),P.U.defValProp(this,"closeListener",!1,!1,!0,null),P.U.defValProp(this,"parent",!1,!1,!0,null),P.U.defValProp(this,"queueName",!1,!1,!1,a),P.U.defValProp(this,"transforms",!1,!1,!0,b?b:[]),P.U.defValProp(this,"state",!1,!1,!0,P.States.init),this.init()}function b(a,b,c){this.source=a,this.target=b,this.type=c,this.args=qb.call(arguments,3)}function c(a,b){this.shell=a,this.state=P.States.init,this.meta=b||{},this.queueName=this.meta.p&&this.meta.p.queueName&&P.U.isString(this.meta.p.queueName)?this.meta.p.queueName:null,P.Actor.call(this,this.queueName)}function d(){}function e(a,b){return d.provide(a,b)}function f(a,b,c){a&&!P.U.isString(a)&&(c=b,b=a,a=null),P.Actor.call(this,a,c),this.sourceNumber=0,b&&this.into(b)}function g(a,b,c){a&&!P.U.isString(a)&&(c=b,b=a,a=null),P.S.call(this,a,b,c),this.buffer=[]}function h(a,b,c,d){if(a&&!P.U.isString(a)&&(d=c,c=b,b=a,a=null),"number"==typeof b?(d=b,b=null):"number"==typeof c&&(d=c,c=null),P.BS.call(this,a,b,c),!d)throw new Error("SizeBufferedStream must contain size!");this.size=d}function i(a,b,c,d){a&&!P.U.isString(a)&&(d=c,c=b,b=a,a=null),"number"==typeof b?(d=b,b=null):P.U.isObject(b)&&"number"==typeof c&&(d=c,c=null),P.BS.call(this,a,b,c),this.delayId=null,this.setDelay(d)}function j(a,b,c,d){P.DBS.call(this,a,b,c,d)}function k(a,b,c,d){P.DBS.call(this,a,b,c,d)}function l(a,b,c,d){P.S.call(this,b,c,d),this.subscribe=a,this.unsubscribe=null,this.subscriptions=0}function m(a,b,c,d){var e;return a?P.U.isFunction(a)?e=new ab.SubscribableStream(a,d,c,b):P.U.isString(a)&&(e=f.fromString(a,qb.call(arguments,1))):e=new ab.Stream(d,c,b),e.trigger=wb.trigger,e.triggerErr=wb.triggerErr,e.triggerClose=wb.triggerClose,e}function n(){return P.stream().close()}function o(a,b){var c=P.stream();return window.setTimeout(function(){c.trigger(b),c.close()},a),c}function p(a,b){var c=P.stream();return window.setInterval(function(){c.trigger(b)},a),c}function q(a,b){var c,d=P.stream();return b.length>0&&(c=function(){var e=b.shift();d.trigger(e),0===b.length?d.close():window.setTimeout(c,a)},window.setTimeout(c,a)),d}function r(a,b){var c=P.stream(),d=0;return b.length>0&&window.setInterval(function(){d===b.length&&(d=0);var a=b[d++];c.trigger(a)},a),c}function s(a,b){var c,d=P.stream();return c=window.setInterval(function(){var a=b.call();a!==ab.close?d.trigger(a):(d.close(),window.clearInterval(c))},a),d}function t(a){var b=P.stream();return a(function(a){b.trigger(a),b.close()}),b}function u(a,b){var c,d,e,f,g,h=$.length;for(c=0;h>c;c++)if(f=$[c],g=a[f],g&&P.U.isFunction(g)){d=f,e=Z[f];break}return void 0===d?null:new ab.SubscribableStream(function(c){return a[d](b,c.trigger),function(c){a[e](b,c.trigger)}})}function v(a,b){var c=ab.Event.Types.value,d=qb.call(arguments,2);ab.Event.apply(this,[a,b,c].concat(d)),this.object=d[0],this.oldVal=d[1],this.newVal=d[2]}function w(a,b,c,d,e){a&&!P.U.isString(a)&&(e=d,d=c,c=b,b=a,a=null),b||c||(c="v",b={v:null}),P.U.defValProp(this,"proObject",!1,!1,!0,b),this.property=c,this.proObject.__pro__||P.U.defValProp(b,"__pro__",!1,!1,!0,new ab.ObjectCore(b)),this.proObject.__pro__.properties[c]=this,this.get=d||P.P.defaultGetter(this),this.set=e||P.P.defaultSetter(this),this.oldVal=null,this.val=b[c],this.g=this.get,this.s=this.set,P.Actor.call(this,a),this.parent=this.proObject.__pro__;var f=this.parent.meta.p;this.isStaticTyped=f&&f.statics&&-1!==f.statics.indexOf(this.property)}function x(){}function y(a,b,c){a&&!P.U.isString(a)&&(c=b,b=a,a=null),this.func=b[c];var d=this,e=function(){d.addCaller();var a,b=P.currentCaller,c=P.P.defaultGetter(d),e=P.P.defaultSetter(d,function(a){return d.func.call(d.proObject,a)}),f=arguments;return P.currentCaller=d.makeListener(),a=function(){d.val=d.func.apply(d.proObject,f)},P.flow.run(function(){P.flow.pushOnce(a)}),P.currentCaller=b,P.P.defineProp(d.proObject,d.property,c,e),d.state=P.States.ready,d.val=P.Actor.transform(d,d.val),d.val};P.P.call(this,a,b,c,e,function(){})}function z(a,b,c){a&&!P.U.isString(a)&&(c=b,b=a,a=null);var d,e=this;d=function(){e.addCaller(),e.val.__pro__||P.prob(e.val);var a=P.P.defaultGetter(e),b=function(a){if(e.val!=a){if(e.oldVal=e.val,e.val=a,null===e.val||void 0===e.val)return P.P.reProb(e).update(),e;if(e.oldVal){if(e.val.__pro__||P.prob(e.val),P.U.isArray(this))return void ab.ActorUtil.update.call(e);var b,c,d,f,g,h,i,j,k,l,m,n=e.oldVal.__pro__.properties,o=e.val.__pro__.properties,p=[];for(b in n)if(n.hasOwnProperty(b)){if(d=o[b],!d)continue;for(g=d.listeners.change,c=n[b],f=c.listeners.change,j=f.length,h=0;j>h;h++){for(l=!0,i=0;k>i;i++)f[h]==g[i]&&(l=!1);l&&(d.on(f[h]),p.push(h))}for(m=p.length,h=0;m>h;h++)f.splice[(p[h],1)];p=[]}}_.update.call(e)}};return P.P.defineProp(e.proObject,e.property,a,b),e.state=P.States.ready,e.val},P.P.call(this,a,b,c,d,function(){})}function A(a,b,c,d){a&&!P.U.isString(a)&&(d=c,c=b,b=a,a=null);var e,f,g=this;e=function(){return g.addCaller(),d.val},f=function(a){return d.val!==a?(d.oldVal=d.val,d.val=P.Actor.transform(g,a),null===d.val||void 0===d.val?void P.P.reProb(d).update():void _.update.call(d)):void 0},P.P.call(this,a,b,c,e,f),this.target=d,this.target.on(this.makeListener())}function B(){}function C(a,b){this.properties={},P.C.call(this,a,b)}function D(){}function E(a,b,c,d){if(!a||!b)return null;P.U.isProObject(b)||(b=ab.prob(b,d)),c&&P.U.isObject(c)||(c={});var e,f=b.__pro__.properties;for(e in f)a.hasOwnProperty(e)||(a[e]=null,c[e]=f[e]);return a=ab.prob(a,c)}function F(a){return a&&ab.U.isObject(a)&&void 0!==a.__pro__&&ab.U.isObject(a.__pro__.properties)}function G(a,b,c){a&&!P.U.isString(a)&&(c=b,b=a,a=null);var d,e=this;d=function(){var b=P.AU.isProArray;e.addCaller(),b(e.val)||(e.val=new P.A(e.val));var c=P.P.defaultGetter(e),d=function(c){if(e.val!=c&&e.val.valueOf()!=c){if(e.oldVal=e.val,e.val=c,null===e.val||void 0===e.val)return P.P.reProb(e).update(),e;if(b(e.val)||(e.val=new P.A(e.val),a&&(e.val.core.queueName=a)),e.oldVal){var d,f,g,h=[],i=e.oldVal.__pro__.listeners.index,j=i.length,k=e.val.__pro__.listeners.index,l=e.oldVal.__pro__.listeners.length,m=l.length,n=e.val.__pro__.listeners.length;for(d=0;j>d;d++)f=i[d],f.property&&f.property.proObject===e.proObject&&(k.push(f),h.push(d));for(g=h.length,d=0;g>d;d++)i.splice[(h[d],1)];for(h=[],d=0;m>d;d++)f=l[d],f.property&&f.property.proObject===e.proObject&&(n.push(f),h.push(d));for(g=h.length,d=0;g>d;d++)l.splice[(h[d],1)];h=[]}_.update.call(e)}};return P.P.defineProp(e.proObject,e.property,c,d),e.state=P.States.ready,e.val},P.P.call(this,a,b,c,d,function(){})}function H(){}function I(){this.providers={}}function J(){this.stored={}}function K(){P.R.Provider.call(this)}function L(){P.R.Provider.call(this)}function M(){P.R.Provider.call(this)}function N(a){var b;return 2===a.length&&(b=a[0],a[0]=a[1]),[b].concat(a)}{var O,Q,R,S,T,U,V,W,X,Y,Z,$,_,ab=Pro=P={},bb=Array.prototype,cb=bb.concat,db=bb.every,eb=bb.filter,fb=bb.forEach,gb=bb.indexOf,hb=bb.join,ib=bb.lastIndexOf,jb=bb.map,kb=bb.pop,lb=bb.push,mb=bb.reduce,nb=bb.reduceRight,ob=bb.reverse,pb=bb.shift,qb=bb.slice,rb=bb.some,sb=bb.sort,tb=bb.splice,ub=bb.toLocaleString,vb=bb.toString;bb.unshift}ab.VERSION="1.3.1",ab.States={init:1,ready:2,destroyed:3,error:4,closed:5},ab.Utils=Pro.U={uuid:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})},isFunction:function(a){return"function"==typeof a},isString:function(a){return"string"==typeof a},isObject:function(a){return"object"==typeof a},isEmptyObject:function(a){var b;for(b in a)if(a.hasOwnProperty(b))return!1;return!0},isError:function(a){return null!==a&&a instanceof Error},isArray:function(a){return P.U.isObject(a)&&"[object Array]"===Object.prototype.toString.call(a)},clone:function(a){if(P.U.isArray(a)){var b,c=a.length,d=[];for(b=0;c>b;b++)d.push(P.U.clone(a[b]));return d}return a},ex:function(a,b){var c;for(c in b)b.hasOwnProperty(c)&&(a[c]=P.U.clone(b[c]));return a},extendClass:function(a){var b=this,c=function(){b.apply(this,qb.call(arguments))};return P.U.ex(c,b),c.initData={},P.U.ex(c.initData,b.initData),P.U.ex(c.prototype,b.prototype),P.U.ex(c.initData,a),c.uuid=P.U.uuid(),c.prototype.constructor=c,c},bind:function(a,b){return function(){return b.apply(a,arguments)}},remove:function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)},diff:function(a,b){var c,d,e,f=-1,g=a.length,h=b.length,i={};if(g>=h){for(c=0;h>c;c++)d=a[c],e=b[c],d!==e?(-1===f&&(f=c),i[f]=i[f]||{o:[],n:[]},i[f].o.push(d),i[f].n.push(e)):f=-1;for(-1===f&&(f=c),i[f]=i[f]||{o:[],n:[]};g>c;c++)d=a[c],i[f].o.push(d)}else{i=P.U.diff(b,a);for(c in i)el1=i[c],el2=el1.n,el1.n=el1.o,el1.o=el2}return i},defValProp:function(a,b,c,d,e,f){try{Object.defineProperty(a,b,{enumerable:c,configurable:d,writable:e,value:f})}catch(g){a[b]=f}}},ab.Configuration={keyprops:!0,keypropList:["p"]},ab.N=function(){},ab.Queue=P.Q=function(a,b){this.name=a||"proq",this.options=b||{},this._queue=[]},ab.Queue.runAction=function(a,b,c,d,e){if(d&&d.length>0)if(e)try{c.apply(b,d)}catch(f){if(f.fromFlow)throw f;f.fromFlow=!0,e(a,f)}else c.apply(b,d);else if(e)try{c.call(b)}catch(f){if(f.fromFlow)throw f;f.fromFlow=!0,e(a,f)}else c.call(b)},P.Q.prototype={constructor:ab.Queue,length:function(){return this._queue.length/4},isEmpty:function(){return 0===this.length()},push:function(a,b,c){a&&"function"==typeof a&&(c=b,b=a,a=null),this._queue.push(a,b,c,1)},pushOnce:function(a,b,c){a&&"function"==typeof a&&(c=b,b=a,a=null);var d,e,f,g=this._queue,h=g.length;for(f=0;h>f;f+=4)if(d=g[f],e=g[f+1],d===a&&e===b)return g[f+2]=c,void(g[f+3]=g[f+3]+1);this.push(a,b,c)},go:function(a){var b,c,d,e,f,g=this._queue,h=this.options,i=(this.runs,g.length),j=h&&h.before,k=h&&h.after,l=h&&h.err,m=i,n=!0,o=1,p=m;for(i&&j&&j(this);n;){for(n=!1,m=p,b=0;m>b;b+=4)c=g[b],d=g[b+1],e=g[b+2],f=g[b+3],f===o?P.Q.runAction(this,c,d,e,l):f>o&&(n=!0,p=b+4);o+=1}i&&k&&k(this),g.length>i?(this._queue=g.slice(i),a||this.go()):this._queue.length=0}},P.Q.prototype.defer=P.Q.prototype.enque=P.Q.prototype.add=P.Q.prototype.push,P.Q.prototype.deferOnce=P.Q.prototype.enqueOnce=P.Q.prototype.addOnce=P.Q.prototype.pushOnce,P.Q.prototype.run=P.Q.prototype.go,ab.Queues=P.QQ=function(a,b){a||(a=["proq"]),this.queueNames=a,this.options=b||{},this._queues={};var c,d=this.queueNames.length;for(c=0;d>c;c++)this._queues[this.queueNames[c]]=new P.Q(this.queueNames[c],this.options.queue)},P.QQ.prototype={constructor:ab.Queues,isEmpty:function(){var a,b,c,d=this._queues,e=this.queueNames,f=e.length;for(a=0;f>a;a++)if(b=e[a],c=d[b],!c.isEmpty())return!1;return!0},push:function(a,b,c,d){a&&"string"!=typeof a&&(d=c,c=b,b=a,a=this.queueNames[0]),a||(a=this.queueNames[0]);var e=this._queues[a];e&&e.push(b,c,d)},pushOnce:function(a,b,c,d){a&&"string"!=typeof a&&(d=c,c=b,b=a,a=this.queueNames[0]),a||(a=this.queueNames[0]);var e=this._queues[a];e&&e.pushOnce(b,c,d)},go:function(a){var b,c,d,e,f=0,g=this._queues,h=this.queueNames,i=this.queueNames.length;if(a)for(b=0;i>b;b++)h[b]===a&&(f=b);for(;i>f;)c=h[f],d=g[c],d.go(!0),-1===(e=this._probePrevIndex(f))?f+=1:f=e},_probePrevIndex:function(a){var b,c,d,e=this._queues,f=this.queueNames;for(b=0;a>=b;b++)if(c=f[b],d=e[c],!d.isEmpty())return b;return-1}},P.QQ.prototype.defer=P.QQ.prototype.enque=P.QQ.prototype.add=P.QQ.prototype.push,P.QQ.prototype.deferOnce=P.QQ.prototype.enqueOnce=P.QQ.prototype.addOnce=P.QQ.prototype.pushOnce,P.QQ.prototype.flush=P.QQ.prototype.run=P.QQ.prototype.go,ab.Flow=P.F=function(a,b){this.setQueues(a),this.options=b||{},this.flowInstance=null,this.flowInstances=[],this.pauseMode=!1;try{Object.defineProperty(this,"closingQueue",{enumerable:!1,configurable:!1,writable:!1,value:new ab.Queue("closing")})}catch(c){this.closingQueue=new ab.Queue("closing")}},P.F.prototype={constructor:ab.Flow,start:function(){var a=this.flowInstance,b=this.options,c=b&&b.start,d=this.queueNames;a&&this.flowInstances.push(a),this.flowInstance=new P.Queues(d,b.flowInstance),c&&c(this.flowInstance)},addQueue:function(a){this.queueNames.push(a)},setQueues:function(a){a||(a=["proq"]),this.queueNames=a},stop:function(){var a,b=this.flowInstance,c=this.options,d=c&&c.stop;if(b)try{b.go()}finally{this.flowInstance=null,this.flowInstances.length&&(a=this.flowInstances.pop(),this.flowInstance=a),d&&d(b),this.closingQueue.go()}},pause:function(){this.pauseMode=!0},resume:function(){this.pauseMode=!1},run:function(a,b){var c=this.options,d=c.err;this.start(),b||(b=a,a=null);try{if(d)try{b.call(a)}catch(e){if(e.fromFlow)throw e;e.fromFlow=!0,d(e)}else b.call(a)}finally{this.stop()}},isRunning:function(){return null!==this.flowInstance&&void 0!==this.flowInstance},isPaused:function(){return this.isRunning()&&this.pauseMode},push:function(a,b,c,d){if(!this.flowInstance)throw new Error("Not in running flow!");this.isPaused()||this.flowInstance.push(a,b,c,d)},pushOnce:function(a,b,c,d){if(!this.flowInstance)throw new Error("Not in running flow!");this.isPaused()||this.flowInstance.pushOnce(a,b,c,d)},pushClose:function(a,b,c){this.closingQueue.pushOnce(a,b,c)}},ab.flow=new ab.Flow(["proq"],{err:function(a){console.log(a)},flowInstance:{queue:{err:function(a,b){b.queue=a,console.log(b)}}}}),P.F.prototype.begin=P.F.prototype.start,P.F.prototype.end=P.F.prototype.stop,P.F.prototype.defer=P.F.prototype.enque=P.F.prototype.add=P.F.prototype.push,P.F.prototype.deferOnce=P.F.prototype.enqueOnce=P.F.prototype.addOnce=P.F.prototype.pushOnce,P.F.prototype.flush=P.F.prototype.go=P.F.prototype.run,_={update:function(a,b,c){if(this.state===ab.States.destroyed)throw new Error("You can not trigger actions on destroyed actors!");if(this.state!==ab.States.closed){var d=this;return P.flow.isRunning()?_.doUpdate.call(d,a,b,c):P.flow.run(function(){_.doUpdate.call(d,a,b,c)}),this}},doUpdate:function(a,b,c){b||(b=this.defaultActions());var d,e,f,g,h,i,j;if(P.U.isString(b))h=this.listeners[b];else{for(;-1!==b.indexOf("close");)P.U.remove(b,"close");if(h=[],d=b.length,null===this.parent&&0===b.length)return this;for(e=0;d>e;e++)if(listenersForAction=this.listeners[b[e]]){for(f=0;fe;e++){if(g=h[e],!g)throw new Error("Invalid null listener for actions : "+b);P.U.isString(b)&&g.destroyed?this.off(b,g):(this.defer(j,g),g.property&&_.doUpdate.call(g.property,j))}return this.parent&&this.parent.call&&this.defer(j,this.parent),"close"===b&&P.flow.pushClose(this,this.doClose),this}},P.U.defValProp(ab,"ActorUtil",!1,!1,!1,_),ab.Actor=P.Pro=a,P.U.ex(P.Actor,{BadValue:{},Close:{},transform:function(a,b){var c,d=a.transforms,e=d.length;for(c=0;e>c&&(b=d[c].call(a,b),b!==P.Actor.BadValue)&&b!==P.Actor.Close;c++);return b}}),P.Actor.prototype={constructor:ab.Actor,init:function(){this.state===P.States.init&&(this.doInit(),this.afterInit())},doInit:function(){},afterInit:function(){this.state=P.States.ready},close:function(){return this.state!==P.States.closed?_.update.call(this,P.Actor.Close,"close"):void 0},canClose:function(){return!0},doClose:function(){this.state=P.States.closed,this.offAll(),this.listener&&(this.listener.closed=!0)},beforeDestroy:function(){},destroy:function(){this.state!==P.States.destroyed&&(this.beforeDestroy(),this.listeners=void 0,this.listener&&(this.listener.destroyed=!0),this.listener=void 0,this.errListener=void 0,this.closeListener=void 0,this.parent=void 0,this.queueName=void 0,this.transforms=void 0,this.state=P.States.destroyed)},defaultListeners:function(){return{change:[],error:[],close:[]}},defaultActions:function(){return"change"},makeListener:P.N,makeErrListener:P.N,makeCloseListener:P.N,makeEvent:function(a){return new P.Event(a,this,P.Event.Types.value)},on:function(a,b){P.U.isString(a)||P.U.isArray(a)||(b=a,a=this.defaultActions()),P.U.isArray(a)||(a=[a]);var c,d,e,f=a.length;for(d=0;f>d;d++)c=a[d],e=this.listeners[c],e||(e=this.listeners[c]=[]),e.push(b);return this},off:function(a,b){if(!a&&!b)return this.listeners=this.defaultListeners(),this;P.U.isString(a)||P.U.isArray(a)||(b=a,a=this.defaultActions()),P.U.isArray(a)||(a=[a]);var c,d,e,f=a.length;for(d=0;f>d;d++)c=a[d],e=this.listeners[c],e&&P.U.remove(e,b);return this},onErr:function(a){return this.on("error",a)},offErr:function(a){return this.off("error",a)},onClose:function(a){return this.on("close",a)},offClose:function(a){return this.off("close",a)},onAll:function(a){return this.on(a).onClose(a).onErr(a)},offAll:function(a){return this.off(a),this.off("error",a),this.off("close",a)},into:function(){var a,b,c=qb.call(arguments),d=c.length;for(a=0;d>a;a++)b=c[a],b.on(this.makeListener()),b.onErr(this.makeErrListener()),b.onClose(this.makeCloseListener());return this},out:function(a){return a.into(this),this},transform:function(a){return this.transforms.push(a),this},transformStored:function(a){return this.transform(a)},mapping:function(a){return this.transformStored(a,"map")},filtering:function(a){var b=this,c=a.call?function(c){return a.call(b,c)?c:P.Actor.BadValue}:a;return this.transformStored(c,"filter")},accumulation:function(a,b){b||(b=a,a=void 0);var c=this,d=a,e=b.call?function(a){return d=b.call(c,d,a)}:b;return this.transformStored(e,"acc")},map:P.N,filter:P.N,accumulate:P.N,defer:function(a,b){var c=b.queueName?b.queueName:this.queueName;return P.U.isFunction(b)?P.flow.pushOnce(c,b,[a]):P.flow.pushOnce(c,b,b.call,[a]),this}},ab.Event=P.E=b,P.U.ex(ab.Event,{make:function(a,b,c,d){return"array"===c||c===P.E.Types.array?P.E.makeArray(d[0],d.slice(1)):void 0},makeArray:function(a,b,c,d){var e=P.E.Types.array;return"remove"===c||c===P.A.Operations.remove?new P.E(a,b,e,P.A.Operations.remove,d[0],d[1],d[2]):"splice"===c||c===P.A.Operations.splice?(P.U.isArray(d[1])||(d[1]=new Array(d[1])),new P.E(a,b,e,P.A.Operations.splice,d[0],d[1],d[2])):void 0},simple:function(a,b,c,d){if(!("array"!==a&&"a"!==a||"pop"!==b&&"shift"!==b))return P.E.makeArray(null,d,"remove",["shift"===b?0:1]);if(("array"===a||"a"===a)&&"splice"===b)return P.E.makeArray(null,d,"splice",[c,1]);if(!("array"!==a&&"a"!==a||"deleteElement"!==b&&"del"!==b)){if(!d)return P.E.makeArray(null,d,"splice",[null,[c]]);var e=d.indexOf(c);if(-1!==e)return P.E.makeArray(null,d,"splice",[e,1])}return null}}),ab.Event.Types={value:0,array:1,close:2,error:3},ab.Core=P.C=c,ab.Core.prototype=P.U.ex(Object.create(P.Actor.prototype),{constructor:ab.Core,value:function(){return this},prob:function(){var a=ab.Configuration,b=a.keyprops,c=a.keypropList;try{this.setup(),b&&-1!==c.indexOf("p")&&P.U.defValProp(this.shell,"p",!1,!1,!1,P.U.bind(this,this.value)),this.state=P.States.ready}catch(d){throw this.state=P.States.error,d}return this},setup:function(){throw Error("Abstract, implement!")},call:function(a){_.update.call(this,a)}}),ab.ProbProvider=d,d.prototype={constructor:d,filter:function(){throw new Error("Implement!")},provide:function(){throw new Error("Implement!")}},function(a){var b=[];a.U.ex(a.ProbProvider,{register:function(a){b.push(a)},provide:function(a,c){var d,e=b.length,f=null,g=null;for(d=0;e>d&&(g=b[d],!g.filter(a,c));d++)g=null;return g&&(f=g.provide(a,c)),f}})}(P),ab.prob=e;var wb={go:function(a,b){if(0===this.listeners.change.length)return this;if(b)try{a=P.Actor.transform(this,a)}catch(c){return wb.triggerErr.call(this,c),this}return a===P.Actor.BadValue?this:_.update.call(this,a)},triggerMany:function(){var a,b=qb.call(arguments),c=b.length;for(a=0;c>a;a++)this.trigger(b[a],!0);return this},trigger:function(a,b){return void 0===b&&(b=!0),wb.go.call(this,a,b)},triggerErr:function(a){return _.update.call(this,a,"error")},triggerClose:function(a){return _.update.call(this,a,"close")}};ab.Stream=ab.S=f,P.U.ex(P.S,{fromString:function(){throw new Error("Stream.fromString is not implemented!")}}),ab.Stream.prototype=P.U.ex(Object.create(P.Actor.prototype),{constructor:ab.Stream,makeEvent:function(a){return a},makeListener:function(){if(!this.listener){var a=this;this.listener=function(b){a.trigger?a.trigger(b,!0):wb.trigger.call(a,b,!0)}}return this.listener},makeErrListener:function(){if(!this.errListener){var a=this;this.errListener=function(b){a.triggerErr?a.triggerErr(event):wb.triggerErr.call(a,b)}}return this.errListener},makeCloseListener:function(){if(!this.closeListener){var a=this;this.closeListener=function(b){a.triggerClose?a.triggerClose(b):wb.triggerClose.call(a,b)}}return this.closeListener},defer:function(a,b){if(b){if(b.property)return void P.Actor.prototype.defer.call(this,a,b);var c=b.queueName?b.queueName:this.queueName;P.U.isFunction(b)?P.flow.push(c,b,[a]):P.flow.push(c,b,b.call,[a])}},map:function(a){return new P.S(this).mapping(a)},filter:function(a){return new P.S(this).filtering(a)},accumulate:function(a,b){return new P.S(this).accumulation(a,b)},merge:function(){var a=[this].concat(qb.call(arguments)),b=new P.S;return P.S.prototype.into.apply(b,a)},into:function(){return ab.Actor.prototype.into.apply(this,arguments),this.sourceNumber+=arguments.length,this},canClose:function(){return this.sourceNumber-=1,this.sourceNumber<=0}}),P.U.ex(P.Actor.prototype,{toStream:function(){return new P.S(this.queueName,this)},skip:function(a){var b=a,c=this;return this.fromLambda(function(a,d){return d===ab.Actor.Close?void a.close():(b--,void(0>b&&(c.offAll(a.lambda),a.into(c),a.trigger(d))))})},skipWhile:function(a){var b=this,c=a?a:function(a){return a};return this.fromLambda(function(a,d){return d===ab.Actor.close?void a.close():void(c(d)||(b.offAll(a.lambda),a.into(b),a.trigger(d)))})},skipDuplicates:function(a){var b=void 0,c=a?a:function(a,b){return a===b};return this.fromLambda(function(a,d){c(b,d)||(a.trigger(d),b=d)})},diff:function(a,b){var c=a;return this.fromLambda(function(a,d){return d===ab.Actor.close?void a.close():void 0===c?void(c=d):(a.trigger(b(c,d)),void(c=d))})},take:function(a){var b=a;return this.fromLambda(function(a,c){b--,b>=0&&a.trigger(c,!0),0>=b&&a.state===ab.States.ready&&a.close()})},takeWhile:function(a){return this.fromLambda(function(b,c){a.call(null,c)?b.trigger(c):b.close()})},fromLambda:function(a){var b=new ab.Stream(this.queueName),c=function(c){b.trigger=wb.trigger,b.triggerErr=wb.triggerErr,b.triggerClose=wb.triggerClose,a.call(null,b,c),b.trigger=void 0,b.triggerErr=void 0,b.triggerClose=void 0};return this.onAll(c),b.lambda=c,b},flatMap:function(a){return this.fromLambda(function(b,c){if(c!==P.Actor.Close){var d=a?a.call(null,c):c;b.into(d)}})},flatMapLimited:function(a,b){var c=[],d=0,e=function(a,f){f&&(b>d?(d++,a.into(f),f.onClose(function(){d--,f.offAll(a.makeListener()),e(a,c.shift())})):c.push(f))};return this.fromLambda(function(b,c){var d=a?a.call(null,c):c;e(b,d)})},flatMapLast:function(a){var b;return this.fromLambda(function(c,d){var e=a?a.call(null,d):d;b&&b.offAll(c.makeListener()),b=e,c.into(e)})},flatMapFirst:function(a){var b;return this.fromLambda(function(c,d){if(!b||b.state===ab.States.closed){var e=a?a.call(null,d):d;b&&b.offAll(c.makeListener()),b=e,c.into(e)}})}}),P.S.prototype.t=P.S.prototype.trigger,P.S.prototype.tt=P.S.prototype.triggerMany,ab.BufferedStream=P.BS=g,ab.BufferedStream.prototype=P.U.ex(Object.create(P.S.prototype),{constructor:ab.BufferedStream,flush:function(){var a,b=this,c=this.buffer,d=c.length;return P.flow.run(function(){for(a=0;d>a;a+=2)wb.go.call(b,c[a],c[a+1]);b.buffer=[]}),this}}),ab.SizeBufferedStream=P.SBS=h,ab.SizeBufferedStream.prototype=P.U.ex(Object.create(P.BS.prototype),{constructor:ab.SizeBufferedStream,trigger:function(a,b){return this.buffer.push(a,b),null!==this.size&&this.buffer.length/2===this.size&&this.flush(),this}}),P.U.ex(P.S.prototype,{bufferit:function(a){return new P.SBS(this,this.queueName,a)}}),P.SBS.prototype.t=P.SBS.prototype.trigger,ab.DelayedStream=P.DBS=i,ab.DelayedStream.prototype=P.U.ex(Object.create(P.BS.prototype),{constructor:ab.DelayedStream,trigger:function(a,b){return this.buffer.push(a,b),this},cancelDelay:function(){return null!==this.delayId&&(clearInterval(this.delayId),this.delayId=null),this},setDelay:function(a){if(this.delay=a,this.cancelDelay(),this.delay){var b=this;return this.delayId=setInterval(function(){b.flush()},this.delay),this}}}),P.U.ex(P.S.prototype,{delay:function(a){return new P.DBS(this,this.queueName,a)}}),P.DBS.prototype.t=P.DBS.prototype.trigger,ab.ThrottlingStream=P.TDS=j,ab.ThrottlingStream.prototype=P.U.ex(Object.create(P.DBS.prototype),{constructor:ab.ThrottlingStream,trigger:function(a,b){return this.buffer[0]=a,this.buffer[1]=b,this}}),P.U.ex(P.Stream.prototype,{throttle:function(a){return new P.TDS(this,a)}}),P.TDS.prototype.t=P.TDS.prototype.trigger,ab.DebouncingStream=P.DDS=k,ab.DebouncingStream.prototype=P.U.ex(Object.create(P.DBS.prototype),{constructor:ab.DebouncingStream,trigger:function(a,b){this.buffer=[],this.cancelDelay(),this.setDelay(this.delay),this.buffer.push(a,b)}}),P.U.ex(P.Stream.prototype,{debounce:function(a){return new P.DDS(this,this.queueName,a)}}),P.DDS.prototype.t=P.DDS.prototype.trigger,ab.SubscribableStream=P.SUS=l,ab.SubscribableStream.prototype=P.U.ex(Object.create(P.S.prototype),{constructor:ab.SubscribableStream,on:function(a,b){return 0===this.subscriptions&&(this.unsubscribe=this.subscribe(this)),this.subscriptions++,P.S.prototype.on.call(this,a,b)},off:function(a,b){return this.subscriptions--,a||b||(this.subscriptions=0),this.subscriptions<0&&(this.subscriptions=0),0===this.subscriptions&&this.unsubscribe&&this.unsubscribe(this),P.S.prototype.off.call(this,a,b)}}),ab.stream=m,ab.closed=P.never=n,ab.timeout=ab.later=o,ab.interval=p,ab.seq=q,ab.repeat=r,ab.fromInvoke=s,ab.fromCallback=t,Z={addEventListener:"removeEventListener",addListener:"removeListener",on:"off"},$=Object.keys(Z),ab.fromEventDispatcher=u,ab.ValueEvent=P.VE=v,v.prototype=P.U.ex(Object.create(ab.Event.prototype),{constructor:v,fromVal:function(){return this.object&&this.object.__pro__&&this.object.__pro__.properties[this.target].type()===P.P.Types.auto?this.object.__pro__.properties[this.target].oldVal:this.oldVal},toVal:function(){return this.object&&this.object.__pro__&&this.object.__pro__.properties[this.target].type()===P.P.Types.auto?this.object.__pro__.properties[this.target].val:this.newVal}}),ab.Property=P.P=w,P.U.ex(ab.Property,{Types:{simple:"simple",auto:{},object:{},nil:{},type:function(a){return null===a?P.P.Types.nil:P.U.isFunction(a)?P.P.Types.auto:P.U.isObject(a)?P.P.Types.object:P.P.Types.simple}},defaultGetter:function(a){return function(){return a.addCaller(),a.val}},defaultSetter:function(a,b){return function(c){return a.state==P.States.ready&&(c=P.Actor.transform(a,c),c!==P.Actor.BadValue&&a.val!==c)?(a.oldVal=a.val,a.val=b?b.call(a.proObject,c):c,a.type()!==P.P.Types.auto&&P.P.Types.type(a.val)!==a.type()?void P.P.reProb(a).update():void _.update.call(a)):void 0}},defineProp:function(a,b,c,d){Object.defineProperty(a,b,{get:c,set:d,enumerable:!0,configurable:!0})},reProb:function(a){if(!a.isStaticTyped&&a.state===P.States.ready){var b=a.proObject,c=a.property,d=a.listeners.change;return a.destroy(),b.__pro__.makeProp(c,d)}},constant:function(a,b,c){return P.P.value(a,b,c).close()},value:function(a,b,c){var d=P.P.lazyValue(a,b,c);return d.get(),d},lazyValue:function(a,b,c){b&&(P.U.isString(b)||P.U.isArray(b))&&(b={v:b}),b=b||{},b.p=b.p||{},b.p.statics=b.p.statics||["v"],c&&(b.p.queueName=c);var d={v:a},e=new C(d,b);return P.U.defValProp(d,"__pro__",!1,!1,!1,e),e.prob(),e.properties.v}}),ab.Property.prototype=P.U.ex(Object.create(P.Actor.prototype),{constructor:ab.Property,type:function(){return P.P.Types.simple},makeEvent:function(a){return new P.VE(a,this.property,this.proObject,this.oldVal,this.val)},makeListener:function(){if(!this.listener){var a=this;this.listener={property:a,queueName:a.queueName,call:function(b){b&&void 0!==b.type&&b.type===P.E.Types.value&&3===b.args.length&&b.target&&(b=b.args[0][b.target]),a.set(b)}}}return this.listener},doInit:function(){P.P.defineProp(this.proObject,this.property,this.get,this.set),P.P.defineProp(this,"v",this.get,this.set)},addCaller:function(){var a=P.currentCaller;a&&a.property!==this&&this.on(a)},beforeDestroy:function(){delete this.proObject.__pro__.properties[this.property],this.oldVal=void 0,P.U.defValProp(this.proObject,this.property,!0,!0,!0,this.val),this.get=this.set=this.property=this.proObject=void 0,this.g=this.s=void 0,this.val=void 0,this.isStaticTyped=void 0,delete this.v},map:function(a){var b=P.P.value(this.val,{},this.queueName).mapping(a).into(this);return _.update.call(this),b},filter:function(a){var b=P.P.value(this.val,{},this.queueName).filtering(a).into(this);return _.update.call(this),b},accumulate:function(a,b){var c=P.P.value(this.val,{},this.queueName).accumulation(a,b).into(this);return _.update.call(this),c},toString:function(){return this.val+""},valueOf:function(){return this.val}}),P.U.ex(P.Actor.prototype,{reduce:function(a,b){return P.P.value(a).into(this.accumulate(a,b))},toProperty:function(){return P.P.value(this.val,{},this.queueName).into(this)}}),x.prototype=P.U.ex(Object.create(P.ProbProvider.prototype),{constructor:x,filter:function(a){return null===a||!P.U.isObject(a)&&!P.U.isArray(a)},provide:function(a,b){return P.P.lazyValue(a,b)}}),P.ProbProvider.register(new x),ab.AutoProperty=P.FP=y,ab.AutoProperty.prototype=P.U.ex(Object.create(P.P.prototype),{constructor:ab.AutoProperty,type:function(){return P.P.Types.auto},makeListener:function(){if(!this.listener){var a=this;this.listener={property:a,queueName:a.queueName,call:function(){a.oldVal=a.val,a.val=P.Actor.transform(a,a.func.call(a.proObject))}}}return this.listener},afterInit:function(){}}),ab.ObjectProperty=P.OP=z,ab.ObjectProperty.prototype=P.U.ex(Object.create(P.P.prototype),{constructor:ab.ObjectProperty,type:function(){return P.P.Types.object},afterInit:function(){}}),ab.ProxyProperty=P.PXP=A,ab.ProxyProperty.prototype=P.U.ex(Object.create(P.P.prototype),{constructor:ab.ProxyProperty,type:function(){return this.target.type()},makeListener:function(){if(!this.listener){var a=this;this.listener={property:a,queueName:a.queueName,call:P.N}}return this.listener}}),ab.PropertyProvider=P.PP=B,function(a){var b=[];a.U.ex(a.PP,{registerProvider:function(a){b.push(a)},prependProvider:function(a){b.unshift(a)},unregisterProvider:function(c){a.U.remove(b,c)},clearProviders:function(){b=[]},provide:function(c,d,e,f){c&&!a.U.isString(c)&&(f=e,e=d,d=c,c=null);var g,h=b.length,i=null,j=null;for(g=0;h>g&&(j=b[g],!j.filter(d,e,f));g++)j=null;return j&&(i=j.provide(c,d,e,f)),i}})}(P),ab.PropertyProvider.prototype={constructor:ab.PropertyProvider,filter:function(){throw new Error("Abstract! Implement!")},provide:function(){throw new Error("Abstract! Implement!")}},ab.SimplePropertyProvider=P.SPP=function(){P.PP.call(this)},ab.SimplePropertyProvider.prototype=P.U.ex(Object.create(P.PP.prototype),{constructor:ab.SimplePropertyProvider,filter:function(a,b){var c=a[b];return null===c||void 0===c||!P.U.isFunction(c)&&!P.U.isArray(c)&&!P.U.isObject(c)},provide:function(a,b,c){return new P.P(a,b,c)}}),ab.AutoPropertyProvider=P.FPP=function(){P.PP.call(this)},ab.AutoPropertyProvider.prototype=P.U.ex(Object.create(P.PP.prototype),{constructor:ab.AutoPropertyProvider,filter:function(a,b){return P.U.isFunction(a[b])},provide:function(a,b,c){return new P.FP(a,b,c)}}),ab.ObjectPropertyProvider=P.OPP=function(){P.PP.call(this)},ab.ObjectPropertyProvider.prototype=P.U.ex(Object.create(P.PP.prototype),{constructor:ab.ObjectPropertyProvider,filter:function(a,b){return P.U.isObject(a[b]) },provide:function(a,b,c){return new P.OP(a,b,c)}}),ab.ProxyPropertyProvider=P.PXPP=function(){P.PP.call(this)},ab.ProxyPropertyProvider.prototype=P.U.ex(Object.create(P.PP.prototype),{constructor:ab.ProxyPropertyProvider,filter:function(a,b,c){return c&&c instanceof ab.Property?c instanceof ab.Property:!1},provide:function(a,b,c,d){return new P.PXP(a,b,c,d)}}),P.PP.registerProvider(new P.ProxyPropertyProvider),P.PP.registerProvider(new P.SimplePropertyProvider),P.PP.registerProvider(new P.AutoPropertyProvider),P.PP.registerProvider(new P.ObjectPropertyProvider),ab.ObjectCore=P.OC=C,ab.ObjectCore.prototype=P.U.ex(Object.create(P.C.prototype),{constructor:ab.ObjectCore,value:function(a){return a&&"*"!==a?this.properties[a]:this},setup:function(){var a,b=this.shell;for(a in b)this.makeProp(a,null,this.meta[a])},makeProp:function(a,b,c){var d,e=this.shell,f=ab.Configuration,g=f.keyprops,h=f.keypropList;if(c&&("noprop"===c||c.indexOf&&c.indexOf("noprop")>=0))return null;if(g&&-1!==h.indexOf(a))throw Error("The property name "+a+" is a key word for pro objects! Objects passed to ProAct.prob can not contain properties named as keyword properties.");return e.hasOwnProperty(a)&&(d=P.PP.provide(this.queueName,e,a,c)),d?(b&&(this.properties[a].listeners.change=this.properties[a].listeners.change.concat(b)),this.applyMeta(c,d),d):null},applyMeta:function(){},set:function(a,b){var c=this.shell;c[a]=b,this.properties[a]||this.makeProp(a)}}),D.prototype=P.U.ex(Object.create(P.ProbProvider.prototype),{constructor:D,filter:function(a){return P.U.isObject(a)&&!P.U.isArray(a)},provide:function(a,b){var c=new P.OC(a,b);return P.U.defValProp(a,"__pro__",!1,!1,!1,c),c.prob(),a}}),P.ProbProvider.register(new D),ab.proxy=E,ab.Utils.isProObject=F,ab.currentCaller=null,ab.ArrayUtils=Pro.AU={isProArray:function(a){return null!==a&&P.U.isObject(a)&&P.U.isArray(a._array)&&void 0!==a.length&&void 0!=a.core},isArrayObject:function(a){return P.U.isArray(a)||P.ArrayUtils.isProArray(a)}},ab.ArrayProperty=P.AP=G,ab.ArrayProperty.prototype=P.U.ex(Object.create(P.P.prototype),{constructor:ab.ArrayProperty,type:function(){return P.P.Types.array},afterInit:function(){}}),ab.ArrayPropertyProvider=P.APP=function(){P.PP.call(this)},ab.ArrayPropertyProvider.prototype=P.U.ex(Object.create(P.PP.prototype),{constructor:ab.ArrayPropertyProvider,filter:function(a,b){return P.AU.isArrayObject(a[b])},provide:function(a,b,c){return new P.AP(a,b,c)}}),P.PP.registerProvider(new P.ArrayPropertyProvider);var xb=P.P.Types.type;P.U.ex(P.Property.Types,{array:{},type:function(a){return P.U.isArray(a)?P.P.Types.array:xb(a)}}),ab.ArrayCore=P.AC=function(a,b){P.C.call(this,a,b),this.lastIndexCaller=null,this.lastLengthCaller=null},ab.ArrayCore.prototype=P.U.ex(Object.create(P.C.prototype),{constructor:ab.ArrayCore,actionFunction:function(a){var b=this;return function(){var c,d=P.currentCaller,e=arguments[1];return P.currentCaller=b.indexListener(e),c=a.apply(this,qb.call(arguments,0)),P.currentCaller=d,c}},indexListener:function(a){this.indexListeners||(this.indexListeners={});var b=this,c=b.shell;return this.indexListeners[a]||(this.indexListeners[a]={call:function(d){b.makeListener(new P.E(d,c,P.E.Types.array,[P.A.Operations.set,a,c._array[a],c._array[a]]))},property:b}),this.indexListeners[a]},makeListener:function(){if(!this.listener){var a=this.shell;this.listener={queueName:this.queueName,call:function(b){if(!(b&&b instanceof P.E))return void a.push(b);if(b.type===P.E.Types.value)return void a.push(b.args[2]);var c,d=b.args[0],e=b.args[1],f=b.args[2],g=b.args[3],h=P.Array.Operations;if(d===h.set)a[e]=g;else if(d===h.add)c=qb.call(g,0),0===e?R.unshift.apply(a,c):R.push.apply(a,c);else if(d===h.remove)0===e?a.shift():a.pop();else if(d===h.setLength)a.length=g;else if(d===h.reverse)a.reverse();else if(d===h.sort)P.U.isFunction(g)?a.sort(g):a.sort();else if(d===h.splice){if(c=g?qb.call(g,0):[],(null===e||void 0===e)&&(e=a.indexOf(f[0]),-1===e))return;R.splice.apply(a,[e,f.length].concat(c))}}}}return this.listener},defaultListeners:function(){return{index:[],length:[]}},defaultActions:function(){return["length","index"]},makeEvent:function(a,b){if(!b)return new P.E(a,this.shell,P.E.Types.array,Q.setLength,-1,this.shell.length,this.shell.length);var c=b[0],d=b[1],e=b[2],f=b[3];return new P.E(a,this.shell,P.E.Types.array,c,d,e,f)},addCaller:function(a){if(!a)return this.addCaller("index"),void this.addCaller("length");var b=P.currentCaller,c=a.charAt(0).toUpperCase()+a.slice(1),d="last"+c+"Caller",e=this[d];b&&e!==b&&(this.on(a,b),this[d]=b)},updateSplice:function(a,b,c){var d,e=Q.splice;if(b&&c&&(0!==b.length||0!==c.length))return b.length===c.length?d="index":c.length&&b.length||(d="length"),_.update.call(this,null,d,[e,a,b,c])},updateByDiff:function(a){var b,c,d=P.U.diff(a,this.shell._array);for(b in d)c=d[b],c&&this.updateSplice(b,c.o,c.n);return this},setup:function(){var a,b,c,d,e=this,f=this.shell,g=f._array.length;for(d=0;g>d;d++)this.defineIndexProp(d);a=function(){return e.addCaller("length"),f._array.length},b=function(a){return f._array.length!==a?(c=f._array.length,f._array.length=a,_.update.call(e,null,"length",[Q.setLength,-1,c,a]),a):void 0},Object.defineProperty(f,"length",{configurable:!1,enumerable:!0,get:a,set:b})},defineIndexProp:function(a){var b,c=this,d=this.shell,e=d._array,f=P.U.isArray,g=P.U.isObject,h=P.U.isFunction;f(e[a])?new P.ArrayProperty(e,a):h(e[a])||null===e[a]||g(e[a])&&(this.isComplex=!0,new P.ObjectProperty(e,a)),Object.defineProperty(d,a,{enumerable:!0,configurable:!0,get:function(){return c.addCaller("index"),e[a]},set:function(d){e[a]!==d&&(b=e[a],e[a]=d,_.update.call(c,null,"index",[Q.set,a,b,d]))}})}}),ab.Array=P.A=O=function(){var a,b;a=0===arguments.length?[]:1===arguments.length&&P.U.isArray(arguments[0])?arguments[0]:qb.call(arguments),P.U.defValProp(this,"_array",!1,!1,!0,a),b=new P.AC(this),P.U.defValProp(this,"__pro__",!1,!1,!1,b),P.U.defValProp(this,"core",!1,!1,!1,b),b.prob()},P.U.ex(P.A,{Operations:{set:0,add:1,remove:2,setLength:3,reverse:4,sort:5,splice:6},reFilter:function(a,b,c){var d=b._array;b._array=eb.apply(a._array,c),b.core.updateByDiff(d)}}),Q=O.Operations,ab.Array.prototype=R=P.U.ex(Object.create(bb),{constructor:ab.Array,concat:function(){var a,b;return 1===arguments.length&&P.AU.isProArray(arguments[0])&&(b=arguments[0],arguments[0]=b._array),a=new P.A(cb.apply(this._array,arguments)),b?(this.core.on(S.leftConcat(a,this,b)),b.core.on(S.rightConcat(a,this,b))):this.core.on(S.leftConcat(a,this,qb.call(arguments,0))),a},every:function(a,b){return this.core.addCaller(),this.core.isComplex&&(a=this.core.actionFunction(a)),db.call(this._array,a,b)},pevery:function(){var a=P.P.lazyValue(db.apply(this._array,arguments));return this.core.on(S.every(a,this,arguments)),a},some:function(){return this.core.addCaller(),rb.apply(this._array,arguments)},psome:function(){var a=P.P.lazyValue(rb.apply(this._array,arguments));return this.core.on(S.some(a,this,arguments)),a},forEach:function(){return this.core.addCaller(),fb.apply(this._array,arguments)},filter:function(a,b,c){(this.core.isComplex||c)&&(a=this.core.actionFunction(a));var d=new P.A(eb.apply(this._array,arguments)),e=S.filter(d,this,arguments);return this.core.on(e),d.core.filteringListener=e,d},map:function(){var a=new P.A(jb.apply(this._array,arguments));return this.core.on(S.map(a,this,arguments)),a},reduce:function(){return this.core.addCaller(),mb.apply(this._array,arguments)},preduce:function(){var a=P.P.lazyValue(mb.apply(this._array,arguments));return this.core.on(S.reduce(a,this,arguments)),a},reduceRight:function(){return this.core.addCaller(),nb.apply(this._array,arguments)},preduceRight:function(){var a=P.P.lazyValue(nb.apply(this._array,arguments));return this.core.on(S.reduceRight(a,this,arguments)),a},indexOf:function(){return this.core.addCaller(),gb.apply(this._array,arguments)},pindexOf:function(){var a=P.P.lazyValue(gb.apply(this._array,arguments));return this.core.on(S.indexOf(a,this,arguments)),a},lastIndexOf:function(){return this.core.addCaller(),ib.apply(this._array,arguments)},plastindexOf:function(){var a=P.P.lazyValue(ib.apply(this._array,arguments));return this.core.on(S.lastIndexOf(a,this,arguments)),a},join:function(){return this.core.addCaller(),hb.apply(this._array,arguments)},pjoin:function(a){var b=this.preduce(function(b,c){return b+a+c},""),c=P.P.lazyValue(function(){return b.v?b.v.substring(1):""});return c},toLocaleString:function(){return this.core.addCaller(),ub.apply(this._array,arguments)},toString:function(){return this.core.addCaller(),vb.apply(this._array,arguments)},valueOf:function(){return this.toArray()},slice:function(){var a=new P.A(qb.apply(this._array,arguments));return this.core.on(S.slice(a,this,arguments)),a},reverse:function(){if(0!==this._array.length){var a=ob.apply(this._array,arguments);return _.update.call(this.core,null,"index",[Q.reverse,-1,null,null]),a}},sort:function(){if(0!==this._array.length){var a=(sb.apply(this._array,arguments),arguments);return _.update.call(this.core,null,"index",[Q.sort,-1,null,a]),this}},splice:function(a,b){var c,d=this._array.length,e=tb.apply(this._array,arguments),f=this._array.length,g=qb.call(arguments,2);if(a=~a?a:f-a,b=(null==b?f-a:b)||0,g.length>b)for(c=g.length-b;c--;)this.core.defineIndexProp(d++);else if(b>g.length)for(c=b-g.length;c--;)delete this[--d];return this.core.updateSplice(a,e,g),new P.A(e)},pop:function(){if(0!==this._array.length){var a=kb.apply(this._array,arguments),b=this._array.length;return delete this[b],_.update.call(this.core,null,"length",[Q.remove,this._array.length,a,null]),a}},push:function(){var a,b,c=arguments,d=arguments.length;for(a=0;d>a;a++)b=this._array.length,lb.call(this._array,arguments[a]),this.core.defineIndexProp(b);return _.update.call(this.core,null,"length",[Q.add,this._array.length-1,null,qb.call(c,0)]),this._array.length},shift:function(){if(0!==this._array.length){var a=pb.apply(this._array,arguments),b=this._array.length;return delete this[b],_.update.call(this.core,null,"length",[Q.remove,0,a,null]),a}},unshift:function(){for(var a,b=qb.call(arguments,0),c=arguments.length,d=this._array,a=0;c>a;a++)d.splice(a,0,arguments[a]),this.core.defineIndexProp(d.length-1);return _.update.call(this.core,null,"length",[Q.add,0,null,b]),d.length},toArray:function(){var a,b,c=[],d=this._array,e=d.length,f=P.AU.isProArray;for(a=0;e>a;a++)b=d[a],f(b)&&(b=b.toArray()),c.push(b);return c},toJSON:function(){return JSON.stringify(this._array)}}),P.U.ex(P.Actor.prototype,{toProArray:function(){var a=new P.A;return a.core.queueName=this.queueName,a.core.into(this),a}}),H.prototype=P.U.ex(Object.create(P.ProbProvider.prototype),{constructor:H,filter:function(a){return P.U.isArray(a)},provide:function(a,b){var c=new P.A(a);return b&&b.p&&b.p.queueName&&P.U.isString(b.p.queueName)&&(c.core.queueName=b.p.queueName),c}}),P.ProbProvider.register(new H),ab.Array.Listeners=P.A.L=S={check:function(a){if(a.type!==P.E.Types.array)throw Error("Not implemented for non array events")},leftConcat:function(a,b,c){return function(d){S.check(d);var e,f,g=d.args[0],h=d.args[1],i=d.args[2],j=d.args[3],k=c.length;g===Q.set?a[h]=j:g===Q.add?(e=qb.call(j,0),0===h?R.unshift.apply(a,e):R.splice.apply(a,[a._array.length-k,0].concat(e))):g===Q.remove?0===h?R.shift.call(a,i):R.splice.apply(a,[a._array.length-k-1,1]):g===Q.setLength?(e=i-j,e>0?R.splice.apply(a,[j,e]):(f=[i,0],f.length=2-e,R.splice.apply(a,f))):g===Q.reverse||g===Q.sort?(e=a._array,f=P.AU.isProArray(c)?c._array:c,a._array.length=0,lb.apply(a._array,cb.apply(b._array,f)),a.core.updateByDiff(e)):g===Q.splice&&R.splice.apply(a,[h,i.length].concat(j))}},rightConcat:function(a,b,c){return function(d){S.check(d);var e,f=d.args[0],g=d.args[1],h=d.args[2],i=d.args[3],j=b._array.length;f===Q.set?a[j+g]=i:f===Q.add?0===g?R.splice.apply(a,[j,0].concat(i)):R.push.apply(a,i):f===Q.remove?0===g?R.splice.call(a,j,1):R.pop.call(a,h):f===Q.setLength?a.length=j+i:f===Q.reverse||f===Q.sort?(e=a._array,a._array.length=0,lb.apply(a._array,cb.apply(b._array,c._array)),a.core.updateByDiff(e)):f===Q.splice&&R.splice.apply(a,[g+j,h.length].concat(i))}},every:function(a,b,c){var d=c[0],e=c[1];return function(f){S.check(f);var g,h=f.args[0],i=(f.args[1],f.args[2]),j=f.args[3];h===Q.set?(g=d.call(e,j),a.valueOf()!==!0||g?a.valueOf()===!1&&g&&(a.v=db.apply(b._array,c)):a.v=!1):h===Q.add?a.valueOf()===!0&&(a.v=db.call(j,d,e)):h===Q.remove?a.valueOf()!==!1||d.call(e,i)||(a.v=db.apply(b._array,c)):h===Q.setLength?a.valueOf()===!1&&(a.v=db.apply(b._array,c)):h===Q.splice&&(a.valueOf()===!0?a.v=db.call(j,d,e):db.call(j,d,e)&&!db.call(i,d,e)&&(a.v=db.apply(b._array,c)))}},some:function(a,b,c){var d=c[0],e=c[1];return function(f){S.check(f);var g,h=f.args[0],i=(f.args[1],f.args[2]),j=f.args[3];h===Q.set?(g=d.call(e,j),a.valueOf()===!1&&g?a.v=!0:a.valueOf()!==!0||g||(a.v=rb.apply(b._array,c))):h===Q.add?a.valueOf()===!1&&(a.v=rb.call(j,d,e)):h===Q.remove?a.valueOf()===!0&&d.call(e,i)&&(a.v=rb.apply(b._array,c)):h===Q.setLength?a.valueOf()===!0&&(a.v=rb.apply(b._array,c)):h===Q.splice&&(a.valueOf()===!1?a.v=rb.call(j,d,e):rb.call(i,d,e)&&!rb.call(j,d,e)&&(a.v=rb.apply(b._array,c)))}},filter:function(a,b,c){var d=c[0],e=c[1];return function(f){if(P.U.isFunction(f))return c[0]=d=f,void O.reFilter(b,a,c);S.check(f);var g,h,i,j,k,l,m=f.args[0],n=f.args[1],o=f.args[2],p=f.args[3];if(m===Q.set)g=d.call(e,p),h=d.call(e,o),(h===!0||g===!0)&&O.reFilter(b,a,c);else if(m===Q.add)if(j=[],i=qb.call(p,0),l=i.length,0===n){for(k=l-1;k>=0;)d.apply(e,[i[k],k,b._array])&&j.unshift(i[k]),k--;j.length&&R.unshift.apply(a,j)}else{for(k=0;l>k;)d.apply(e,[i[k],b._array.length-(l-k),b._array])&&j.push(i[k]),k++;j.length&&R.push.apply(a,j)}else m===Q.remove?d.apply(e,[o,n,b._array])&&(0===n?a.shift():a.pop()):m===Q.setLength?O.reFilter(b,a,c):m===Q.reverse?a.reverse():m===Q.sort?R.sort.apply(a,p):m===Q.splice&&O.reFilter(b,a,c)}},map:function(a,b,c){var d=c[0],e=c[1];return function(c){S.check(c);var f,g,h,i,j=c.args[0],k=c.args[1],l=c.args[2],m=c.args[3];if(j===Q.set)a[k]=d.call(e,m);else if(j===Q.add)if(i=[],f=qb.call(m,0),h=f.length,0===k){for(g=h-1;g>=0;)i[g]=d.apply(e,[f[g],g,b._array]),g--;R.unshift.apply(a,i)}else{for(g=0;h>g;)i[g]=d.apply(e,[f[g],b._array.length-(h-g),b._array]),g++;R.push.apply(a,i)}else if(j===Q.remove)0===k?a.shift():a.pop();else if(j===Q.setLength)a.length=m;else if(j===Q.reverse)a.reverse();else if(j===Q.sort)R.sort.apply(a,m);else if(j===Q.splice){for(i=[],g=0;g=d&&0===i.length?mb.apply(j,[e,a.valueOf()]):mb.apply(b._array,c),d=b._array.length}},reduceRight:function(a,b,c){var d=c[0];return function(e){S.check(e);var f=e.args[0],g=e.args[1],h=e.args[2],i=e.args[3];a.v=f===Q.add&&0===g||f===Q.splice&&0===g&&0===h.length?nb.apply(i,[d,a.valueOf()]):nb.apply(b._array,c)}},indexOf:function(a,b,c){var d=c[0],e=c[1],f=!!e;return function(g){S.check(g);var h,i,j=g.args[0],k=g.args[1],l=g.args[2],m=g.args[3],n=a.valueOf();j===Q.set?l===d?a.v=gb.apply(b._array,c):m===d&&(n>k||-1===n)&&(!f||k>=e)&&(a.v=k):j===Q.add?(h=m.indexOf(d),0===k?-1!==h&&(!f||k>=e)?a.v=h:-1!==n&&(a.v=n+m.length):-1===n&&(!f||k>=e)&&-1!==h&&(a.v=k)):j===Q.remove?-1!==n&&(0===k?a.v=l!==d||f?n-1:gb.apply(b._array,c):d===l&&(a.v=-1)):j===Q.setLength&&n>=m?a.v=-1:j===Q.reverse||j===Q.sort?a.v=gb.apply(b._array,c):j===Q.splice&&(h=m.indexOf(d),i=h+k,n>=k?-1!==h&&n>i&&(!f||i>=e)?a.v=i:m.length!==l.length&&-1===l.indexOf(d)?(n+=m.length-l.length,a.v=!f||n>=e?n:gb.apply(b._array,c)):a.v=gb.apply(b._array,c):-1===n&&-1!==h&&(a.v=i))}},lastIndexOf:function(a,b,c){var d=c[0],e=c[1],f=!!e;return function(g){S.check(g);var h,i=g.args[0],j=g.args[1],k=g.args[2],l=g.args[3],m=a.valueOf();i===Q.set?k===d?a.v=ib.apply(b._array,c):l===d&&(j>m||-1===m)&&(!f||e>=j)&&(a.v=j):i===Q.add?(h=l.indexOf(d),0===j?-1!==h&&-1===m&&(!f||e>=j)?a.v=h:-1!==m&&(a.v=m+l.length):-1!==h&&(!f||e>=j+h)&&(a.v=j+h)):i===Q.remove?-1!==m&&(0===j?a.v=m-1:d===k&&(a.v=ib.apply(b._array,c))):(i===Q.splice||i===Q.reverse||i===Q.sort||i===Q.setLength&&k>l)&&(a.v=ib.apply(b._array,c))}},slice:function(a,b,c){var d=c[0],e=c[1],f=!!e;return function(g){S.check(g);var h,i=g.args[0],j=g.args[1],k=(g.args[2],g.args[3]);i===Q.set?j>=d&&(!f||e>j)&&(a[j-d]=k):(h=a._array,a._array.length=0,lb.apply(a._array,qb.apply(b._array,c)),a.core.updateByDiff(h))}}},ab.Registry=P.R=I,ab.Registry.prototype=T={constructor:ab.Registry,register:function(a,b){if(this.providers[a])throw new Error(a+"is already registered in this registry.");return this.providers[a]=b,b.registered&&b.registered(this),this},getProviderByName:function(a){var b=a.split(":");return[this.providers[b[0]],b[1],b.slice(2)]},setup:function(a,b,c){return U.run.apply(null,[a,b,this].concat(c))},make:function(a,b){var c,d=qb.call(arguments,2),e=this.getProviderByName(a);return e[0]?(c=e[0].make.apply(e[0],[e[1],e[2]].concat(d)),this.setup(c,b,d)):null},store:function(a,b){var c=qb.call(arguments,2),d=this.getProviderByName(a);return d[0]?d[0].store.apply(d[0],[d[1],b,d[2]].concat(c)):null},get:function(a){var b=this.getProviderByName(a);return b[0]?b[0].get(b[1]):null},toObjectArray:function(a){var b=this;return P.U.isArray(a)?jb.call(a,function(a){return b.toObject(a)}):this.toObject(a)},toObject:function(a){if(P.U.isString(a)){var b=this.get(a);return b?b:a}return a}},P.U.ex(P.Actor.prototype,{transformStored:function(a,b){return P.U.isString(a)?(P.DSL.run(this,b+"("+a+")",P.registry),this):this.transform(a)}}),P.U.ex(P.S,{fromString:function(a,b){return P.registry.setup(new ab.Stream,a,b)}}),P.U.ex(P.ObjectCore.prototype,{applyMeta:function(a,b){a&&P.registry&&(P.U.isArray(a)||(a=[a]),a[0]instanceof ab.Property||P.registry.setup.apply(P.registry,[b].concat(a)))}}),ab.OpStore={all:{simpleOp:function(a,b){return{sym:b,match:function(a){return a.substring(0,b.length)===b},setupArgument:function(a,b,c,d){var e,f;return"$"===a.charAt(0)?a=b[parseInt(a.substring(1),10)-1]:c&&"&"===a.charAt(0)?(e=a.lastIndexOf("&"),f=a.substring(0,e),c[f]&&(a=c[f].call(null,a.substring(e+1)))):c&&"!"===a.charAt(0)?(a=this.setupArgument(a.substring(1),b,c,d),a&&(f=a,a=function(){return!f.apply(null,arguments)})):c&&c[a]&&(a=c[a],P.U.isArray(a)&&(d.push.apply(d,a),a=void 0)),a},toOptions:function(b,c){var d,e,f,g=new RegExp(V[a].sym+"(\\w*)\\(([\\s\\S]*)\\)"),h=g.exec(c),i=h[1],j=h[2],k=[],l=qb.call(arguments,2),m=U.predefined[a];if(i&&k.push(i),j)for(j=j.split(","),f=j.length,e=0;f>e;e++)d=j[e].trim(),d=this.setupArgument(d,l,m,k),void 0!==d&&k.push(d);b[a]?P.U.isArray(b[a][0])?b[a].push(k):b[a]=[b[a],k]:b[a]=k,b.order=b.order||[],b.order.push(a)},action:function(b,c){if(!c||!c[a])return b;var d=c[a];return P.U.isArray(d)||(d=[d]),"accumulation"===a&&P.U.isArray(d[0])&&2==d[0].length&&P.U.isFunction(d[0][1])&&(d=d[0]),b[a].apply(b,d)}}}}},W=P.OpStore.all,ab.DSL={separator:"|",ops:{into:W.simpleOp("into","<<"),out:W.simpleOp("out",">>"),on:W.simpleOp("on","@"),mapping:W.simpleOp("mapping","map"),filtering:W.simpleOp("filtering","filter"),accumulation:W.simpleOp("accumulation","acc")},predefined:{mapping:{"-":function(a){return-a},pow:function(a){return a*a},sqrt:function(a){return Math.sqrt(a)},"int":function(a){return parseInt(a,10)},"&.":function(a){return function(b){var c=b[a];return c?P.U.isFunction(c)?c.call(b):c:b}},pop:function(){return P.E.simple("array","pop")},shift:function(){return P.E.simple("array","shift")},eventToVal:function(a){return a.args[0][a.target]},"true":function(){return!0},"!":function(a){return!a},time:function(a){return P.U.isObject(a)&&(a.time=(new Date).getTime()),a}},filtering:{odd:function(a){return a%2!==0},even:function(a){return a%2===0},"+":function(a){return a>=0},"-":function(a){return 0>=a},"&.":function(a){return function(b){if(this.action)return this.action.call(this.context,b);var c=b[a];return c?P.U.isFunction(c)?(this.action=c,void(this.context=b)):c:b}},defined:function(a){return void 0!==a.args[0][a.target]},originalEvent:function(a){return void 0===a.source||null===a.source},all:function(){return!0}},accumulation:{"+":[0,function(a,b){return a+b}],"*":[1,function(a,b){return a*b}],"+str":["",function(a,b){return a+b}]}},defPredefined:function(a,b,c){("m"===a||"map"===a)&&(a="mapping"),("f"===a||"filter"===a)&&(a="filtering"),("a"===a||"acc"===a||"accumulate"===a)&&(a="accumulation"),ab.DSL.predefined[a][b]=c},optionsFromString:function(a){return U.optionsFromArray.apply(null,[a.split(U.separator)].concat(qb.call(arguments,1)))},optionsFromArray:function(a){{var b,c,d,e={},f=a.length;P.R.ops}for(b=0;f>b;b++){c=a[b];for(d in P.DSL.ops)if(d=P.DSL.ops[d],d.match(c)){d.toOptions.apply(d,[e,c].concat(qb.call(arguments,1)));break}}return e},run:function(a,b,c){var d,e,f,g,h,i=P.U.isString,j=qb.call(arguments,3),k={};if(b&&i(b)&&(b=U.optionsFromString.apply(null,[b].concat(j))),b&&b instanceof P.Actor&&(b={into:b}),b&&b.order)for(f=b.order.length,e=0;f>e;e++)d=b.order[e],(g=V[d])&&(c&&(b.order.indexOf(d)!==b.order.lastIndexOf(d)&&(void 0===k[d]&&(k[d]=-1),k[d]=k[d]+1,h=b[d],b[d]=b[d][k[d]]),b[d]=c.toObjectArray(b[d])),g.action(a,b),h?(b[d]=h,h=void 0,k[d]>=b[d].length-1&&delete b[d]):delete b[d]);for(g in V)b&&(d=b[g])&&(b[g]=c.toObjectArray(d)),g=V[g],g.action(a,b);return a}},U=P.DSL,V=U.ops,P.U.ex(ab.Registry,{Provider:J,StreamProvider:K,FunctionProvider:L,ProObjectProvider:M}),ab.Registry.Provider.prototype={constructor:ab.Registry.Provider,make:function(a){var b,c=qb.call(arguments,1);return this.stored[a]=b=this.provide.apply(this,c),b},store:function(a,b){return this.stored[a]=b},get:function(a){return this.stored[a]},del:function(a){var b=this.get(a);return delete this.stored[a],b},registered:function(){},types:{basic:function(){throw new Error("Abstract: implement!")}},provide:function(a){if(a){var b,c,d,e=a[0],f=qb.call(arguments,1);if(e&&"basic"!==e&&(b=new RegExp("(\\w*)\\(([\\s\\S]*)\\)"),c=b.exec(e),d=c[2],d&&(d=d.split(",")),e=c[1],e&&this.types[e]))return this.types[e].apply(this,[d].concat(f))}return this.types.basic.apply(this,arguments)}},ab.Registry.StreamProvider.prototype=P.U.ex(Object.create(P.R.Provider.prototype),{constructor:ab.Registry.StreamProvider,registered:function(a){a.s=a.stream=P.U.bind(this,this.get)},types:{basic:function(a){return P.stream(void 0,void 0,void 0,a[0])},delayed:function(a){var a=N(a);return new P.DBS(a[0],parseInt(a[1],10))},size:function(a){var a=N(a);return new P.SBS(a[0],parseInt(a[1],10))},debouncing:function(a){var a=N(a);return new P.DDS(a[0],parseInt(a[1],10))},throttling:function(a){var a=N(a);return new P.TDS(a[0],parseInt(a[1],10))}}});var yb={split:function(a,b,c){var d,e=c.split(b),f=e.length,g=[];for(d=0;f>d;d++)g.push(a.get(e[d].trim()));return g},accumulator:function(a,b,c){return function(){var d,e=a.length,f=b;for(d=0;e>d;d++)f=c(f,a[d].apply(null,arguments));return f}},or:function(a,b){return a||b},and:function(a,b){return a&&b}};return ab.Registry.FunctionProvider.prototype=P.U.ex(Object.create(P.R.Provider.prototype),{constructor:ab.Registry.FunctionProvider,predefinedActions:{map:"mapping",filter:"filtering",acc:"accumulation"},get:function(a){var b,c,d,e,f;return-1!==a.indexOf("OR")?yb.accumulator(yb.split(this,"OR",a),!1,yb.or):-1!==a.indexOf("AND")?yb.accumulator(yb.split(this,"AND",a),!0,yb.and):0===a.indexOf("!")?(b=this.get(a.substring(1)),function(){return!b.apply(null,arguments)}):(b=this.stored[a],b||(c=new RegExp("(\\w*)\\(([\\s\\S]*)\\)"),d=c.exec(a),d&&(e=d[1],f=d[2],b=U.predefined[this.predefinedActions[e]][f])),b)}}),ab.Registry.ProObjectProvider.prototype=P.U.ex(Object.create(P.R.Provider.prototype),{constructor:ab.Registry.ProObjectProvider,registered:function(a){a.po=a.proObject=P.U.bind(this,this.get),a.prob=P.U.bind(this,function(a,b,c){return this.make(a,null,b,c)})},types:{stat:function(a,b,c){return P.P.value(b,c)},basic:function(a,b,c){return P.prob(b,c)}}}),X=new P.R.StreamProvider,Y=new P.R.FunctionProvider,proObjectProvider=new P.R.ProObjectProvider,ab.registry=(new P.R).register("s",X).register("po",proObjectProvider).register("obj",proObjectProvider).register("f",Y).register("l",Y),Pro});