typeof rison=="undefined"&&(window.rison={}),rison.uri_ok={"~":!0,"!":!0,"*":!0,"(":!0,")":!0,"-":!0,_:!0,".":!0,",":!0,":":!0,"@":!0,$:!0,"'":!0,"/":!0},function(){for(var i=[],t,r,n=0;n<16;n++)for(t=0;t<16;t++)n+t!=0&&(r=String.fromCharCode(n*16+t),/\w|[-_.\/~]/.test(r)||i.push("\\u00"+n.toString(16)+t.toString(16)));rison.not_idchar=i.join("")}(),rison.not_idchar=" '!:(),*@$",rison.not_idstart="-0123456789",function(){var n="[^"+rison.not_idstart+rison.not_idchar+"][^"+rison.not_idchar+"]*";rison.id_ok=new RegExp("^"+n+"$"),rison.next_id=new RegExp(n,"g")}(),rison.quote=function(n){return/^[-A-Za-z0-9~!*()_.',:@$\/]*$/.test(n)?n:encodeURIComponent(n).replace("%2C",",","g").replace("%3A",":","g").replace("%40","@","g").replace("%24","$","g").replace("%2F","/","g").replace("%20","+","g")},function(){var t={"'":!0,"!":!0},n={array:function(t){for(var i=["!("],e,f,o=t.length,r,u=0;u<o;u+=1)r=t[u],f=n[typeof r],f&&(r=f(r),typeof r=="string"&&(e&&(i[i.length]=","),i[i.length]=r,e=!0));return i[i.length]=")",i.join("")},boolean:function(n){return n?"!t":"!f"},"null":function(){return"!n"},number:function(n){return isFinite(n)?String(n).replace(/\+/,""):"!n"},object:function(t){if(t){if(t instanceof Array)return n.array(t);if(typeof t.__prototype__=="object"&&typeof t.__prototype__.encode_rison!="undefined")return t.encode_rison();var i=["("],s,o,u,r,e,f=[];for(u in t)f[f.length]=u;for(f.sort(),e=0;e<f.length;e++)u=f[e],r=t[u],o=n[typeof r],o&&(r=o(r),typeof r=="string"&&(s&&(i[i.length]=","),i.push(n.string(u),":",r),s=!0));return i[i.length]=")",i.join("")}return"!n"},string:function(n){return n==""?"''":rison.id_ok.test(n)?n:(n=n.replace(/(['!])/g,function(n,i){return t[i]?"!"+i:i}),"'"+n+"'")},undefined:function(){throw new Error("rison can't encode the undefined value");}};rison.encode=function(t){return n[typeof t](t)},rison.encode_object=function(t){if(typeof t!="object"||t===null||t instanceof Array)throw new Error("rison.encode_object expects an object argument");var i=n[typeof t](t);return i.substring(1,i.length-1)},rison.encode_array=function(t){if(!(t instanceof Array))throw new Error("rison.encode_array expects an array argument");var i=n[typeof t](t);return i.substring(2,i.length-1)},rison.encode_uri=function(t){return rison.quote(n[typeof t](t))}}(),rison.decode=function(n){var t=function(n){throw Error("rison decoder error: "+n);},i=new rison.parser(t);return i.parse(n)},rison.decode_object=function(n){return rison.decode("("+n+")")},rison.decode_array=function(n){return rison.decode("!("+n+")")},rison.parser=function(n){this.errorHandler=n},rison.parser.WHITESPACE="",rison.parser.prototype.setOptions=function(n){n.errorHandler&&(this.errorHandler=n.errorHandler)},rison.parser.prototype.parse=function(n){this.string=n,this.index=0,this.message=null;var t=this.readValue();return!this.message&&this.next()&&(t=this.error("unable to parse string as rison: '"+rison.encode(n)+"'")),this.message&&this.errorHandler&&this.errorHandler(this.message,this.index),t},rison.parser.prototype.error=function(n){return typeof console!="undefined"&&console.log("rison parser error: ",n),this.message=n,undefined},rison.parser.prototype.readValue=function(){var n=this.next(),u=n&&this.table[n],f,t,i,r;return u?u.apply(this):(f=this.string,t=this.index-1,rison.next_id.lastIndex=t,i=rison.next_id.exec(f),i.length>0)?(r=i[0],this.index=t+r.length,r):n?this.error("invalid character: '"+n+"'"):this.error("empty expression")},rison.parser.parse_array=function(n){for(var i=[],t,r;(t=n.next())!=")";){if(!t)return n.error("unmatched '!('");if(i.length)t!=","&&n.error("missing ','");else{if(t==",")return n.error("extra ','");--n.index}if(r=n.readValue(),typeof r=="undefined")return undefined;i.push(r)}return i},rison.parser.bangs={t:!0,f:!1,n:null,"(":rison.parser.parse_array},rison.parser.prototype.table={"!":function(){var i=this.string,t=i.charAt(this.index++),n;return t?(n=rison.parser.bangs[t],typeof n=="function")?n.call(null,this):typeof n=="undefined"?this.error('unknown literal: "!'+t+'"'):n:this.error('"!" at end of input')},"(":function(){for(var r={},n,u=0,t,i;(n=this.next())!=")";){if(u)n!=","&&this.error("missing ','");else{if(n==",")return this.error("extra ','");--this.index}if(t=this.readValue(),typeof t=="undefined")return undefined;if(this.next()!=":")return this.error("missing ':'");if(i=this.readValue(),typeof i=="undefined")return undefined;r[t]=i,u++}return r},"'":function(){for(var u=this.string,n=this.index,r=n,i=[],t;(t=u.charAt(n++))!="'";){if(!t)return this.error('unmatched "\'"');if(t=="!"){if(r<n-1&&i.push(u.slice(r,n-1)),t=u.charAt(n++),"!'".indexOf(t)>=0)i.push(t);else return this.error('invalid string escape: "!'+t+'"');r=n}}return r<n-1&&i.push(u.slice(r,n-1)),this.index=n,i.length==1?i[0]:i.join("")},"-":function(){var t=this.string,i=this.index,f=i-1,r="int",u="-",e={"int+.":"frac","int+e":"exp","frac+e":"exp"},n;do{if(n=t.charAt(i++),!n)break;if(!("0"<=n)||!(n<="9")){if(u.indexOf(n)>=0){u="";continue}r=e[r+"+"+n.toLowerCase()],r=="exp"&&(u="-")}}while(r);return(this.index=--i,t=t.slice(f,i),t=="-")?this.error("invalid number"):Number(t)}},function(n){for(var t=0;t<=9;t++)n[String(t)]=n["-"]}(rison.parser.prototype.table),rison.parser.prototype.next=function(){var i=this.string,n=this.index,t;do{if(n==i.length)return undefined;t=i.charAt(n++)}while(rison.parser.WHITESPACE.indexOf(t)>=0);return this.index=n,t}