text: !function(e){function r(e,r,t,n){function o(){for(var e,r,t=o[p],n=t.length,i=o[l],f=i.length,s=o[_];n--;)if(r=t[n].apply(this,arguments),u(r)&&r.$skip===!0)return r.$data;for(e=s.apply(this,arguments);f--;)if(r=i[f].apply(this,arguments),u(r)&&r.$skip===!0)return e;return e}return e[a]===e?(e[p].push(r),e[l].push(t),e[c].push(n),e):(s(o,e,0,!0),i(e)&&(o.prototype=e.prototype),o[p]=[r],o[l]=[t],o[_]=e,o[c]=[n],o[a]=o,o.$super=e.$super,o.$superp=e.$superp,o)}function t(e,r){var n,o,i;if(e&&e===e[a])if(r){for(o=i=e[c].length;o--&&e[c][o]!==r;);if(o>=0){if(1===i)return t(e);e[c].splice(o,1),e[p].splice(o,1),e[l].splice(o,1)}}else n=e[_],delete e[_],delete e[c],delete e[p],delete e[l],delete e[a];return n}function n(e,r,n,o,i,f){function s(r,n){var i,s,a,p;for(i in r)s=i/1==i?r[i]:i,a="constructor"===s,p=o&&e[s],"constructor"===s&&o?u=t(o,n):(e[s]&&(e[s]=t(e[s],n)),f[s]&&(f[s]=t(f[s],n)))}var u,p,l;if("remove"===r)if(n)s(n,n);else{u=o&&e===e[a]&&e[_];for(var c in f)f[c]=t(f[c])||f[c];for(var c in e)e[c]=t(e[c])||e[c]}else{if(null===(p=/^remove /.exec(r)))throw"Invalid params";l=r.replace(p,"").split(" "),s(l)}return u||e}var o=e.jsface||require("./jsface"),i=(o.Class,o.classOrNil),f=o.functionOrNil,s=o.extend,u=o.mapOrNil,a="___wrapper___",p="___before_fns___",l="___after_fns___",_="___origin_fn___",c="___advisors___",d=function(){};o.pointcut=function(e,t){var o,s,a,p=i(e)||f(e),l=u(e),_=null!==/^remove ?/.exec(t),c=_&&arguments[2];if(!p&&!l||!u(t)&&!_)throw"Invalid params";if(o=p?e.prototype:e,_)return n(e,t,c,p,l,o);for(s in t){a=t[s],a=f(a)?{before:a}:a;var v=u(a)&&!a.before?d:a.before,h=u(a)&&!a.after?d:a.after,m=!1;if(!f(v))throw"Invalid "+s+":before";if(!f(h))throw"Invalid "+s+":after";if(l){if(!f(o[s]))throw"Non-function property named "+s+" on instance";o[s]=r(o[s],v,h,t)}else if("constructor"===s)e=r(e,v,h,t);else if(f(e[s])&&(e[s]=r(e[s],v,h,t),m=!0),f(o[s])&&(o[s]=r(o[s],v,h,t),m=!0),!m)throw"Non-function property named "+s+" on class"}return e},"undefined"!=typeof module&&module.exports&&(module.exports=o.pointcut)}(this);