From 0245b172033516fb4937eccc5566b9902b23c80a Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 18 Nov 2016 01:36:51 +0800 Subject: [PATCH] Improved WebSocketClient --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 14 +++++++------- package.json | 2 +- src/CopyRight.js | 2 +- src/WebSocketClient.js | 18 +++++++----------- 7 files changed, 20 insertions(+), 24 deletions(-) diff --git a/bower.json b/bower.json index 27a094e..7a6938e 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.24", + "version": "2.0.25", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 21d6d17..c54d455 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.24 +// Hprose for HTML5 v2.0.25 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -6,4 +6,4 @@ !function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&Q(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return Y(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function a(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(e){return a(e)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){j(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function h(){return l(arguments)}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){j(e).fill(t)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){j(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){var r=j(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var t=function(){return this}(),r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e){return"function"==typeof e.next&&"function"==typeof e.throw}function m(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||w(t.prototype))}function b(e){var t=function(){return this}(),n=new r;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))}),n}function T(e){return function(){var t=Array.slice(arguments,0),n=this,i=new r;t.push(function(){n=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(n,t)})}}}function _(e){return function(){var t=Array.slice(arguments,0),n=new r;t.push(function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))});try{e.apply(this,t)}catch(e){n.reject(e)}return n}}function j(e){return e?i(e)?e:m(e)||w(e)?O(e):"function"==typeof e?b(e):s(e):s(e)}function O(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function n(t){try{i(e.throw(t))}catch(e){return s.reject(e)}}function i(e){e.done?s.resolve(e.value):j(e.value).then(t,n)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var s=new r;return e&&"function"==typeof e.next?(t(),s):s.resolve(e)}function E(e,t){return function(){return t=t||this,l(arguments).then(function(r){var n=e.apply(t,r);return m(n)?O.call(t,n):n})}}function S(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.forEach(t,r)})}function B(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.every(t,r)})}function A(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.some(t,r)})}function k(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.filter(t,r)})}function C(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.map(t,r)})}function I(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function x(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function R(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function P(e,r,n){return l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function M(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function U(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.find(t,r)})}function L(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.findIndex(t,r)})}function N(e,t,r){Q(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function F(e,t,r){e?N(e,t,r):t.resolve(r)}function W(e,t,r){e?N(e,t,r):t.reject(r)}function D(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==z}}})}var z=0,q=1,H=2,G="Promise"in e,Q=e.setImmediate,Y=e.setTimeout,J=e.clearTimeout,$=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:a},sync:{value:u},value:{value:s},all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a},promise:{value:c},isFuture:{value:n},isPromise:{value:i},toPromise:{value:j},join:{value:h},any:{value:v},settle:{value:g},attempt:{value:y},run:{value:d},thunkify:{value:T},promisify:{value:_},co:{value:O},wrap:{value:E},forEach:{value:S},every:{value:B},some:{value:A},filter:{value:k},map:{value:C},reduce:{value:I},reduceRight:{value:x},indexOf:{value:R},lastIndexOf:{value:P},includes:{value:M},find:{value:U},findIndex:{value:L}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:z,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===z){this._state=q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();F(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===z){this._state=H,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();W(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===q?F(e,n,this._value):this._state===H?W(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){Q(function(){throw e})})}},inspect:{value:function(){switch(this._state){case z:return{state:"pending"};case q:return{state:"fulfilled",value:this._value};case H:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=Y(function(){n.reject(t||new $("timeout"))},e);return this.whenComplete(function(){J(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){Y(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?I(this,e,t):I(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?x(this,e,t):x(this,e)}},indexOf:{value:function(e,t){return R(this,e,t)}},lastIndexOf:{value:function(e,t){return P(this,e,t)}},includes:{value:function(e,t){return M(this,e,t)}},find:{value:function(e,t){return U(this,e,t)}},findIndex:{value:function(e,t){return L(this,e,t)}}}),e.hprose.Future=r,e.hprose.thunkify=T,e.hprose.promisify=_,e.hprose.co=O,e.hprose.co.wrap=e.hprose.wrap=E,e.hprose.Completer=D,e.hprose.resolved=s,e.hprose.rejected=a,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},G||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]; }},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=S.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&S.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(E.TagNull);switch(n.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case j:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case O:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return j(t);case ee.TagDouble:return E(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return B(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return R(e);case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagGuid:return F(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?G(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(N(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function j(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return j(e);default:r(t)}}function E(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return E(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return B(e);default:r(t)}}function B(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return R(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function L(e){var t=U(e);return e.refer.set(t),t}function N(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagRef:return K(e);default:r(t)}}function F(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function W(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return F(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return O(this.stream)}},readDouble:{value:function(){return S(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return R(this)}},readBytes:{value:function(){return P(this)}},readStringWithoutTag:{value:function(){return L(this)}},readString:{value:function(){return N(this)}},readGuidWithoutTag:{value:function(){return F(this)}},readGuid:{value:function(){return W(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function E(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(g,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===d)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===y&&(n=r,r=!1),r||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)Ee(i,r,n)}}else rt.then(function(t){Se(e,t,n)});else h.isPromise(r)?r.then(function(t){Se(e,t,n)}):Ee(tt[e],r,n);v(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Pe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Se},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var y="boolean",d="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")), -function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y(),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index ba37be2..cfc5c98 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQASTAEAAAAAAAAQmYqm/+79+uF6wQ7yA/9nZiht3AzuFS3va6nYBT9HOKg/kUnkX8PG7WjQ6uQrVmBjEeQng7HJNo0yUL7XIyi/M0QhGpoIRxtz+Lt1rLx0eeNgRF6zc2hSskkgtUljxCYZLONNgVz+73QVu90dLWcqSeBhvtOaj2kEaEVesE/Xmhgw2GbjmK+96SOJ+H8kzfRkFhFlqBFA3PCSDlbFUq9OTl4poW23kmqDcPMKuL6blxcl3/yuMOty9VSApnGydcInGtwg67hBIZzsBE2XaMbnuzkuArePEUqkm+kVqCQTHNeoIMoHnfp1/+1J1Q6i5vdlKEBgd+FSE8WWphSSUDEJpEGDY8zKwISHThHCiBOXa8Gq5oDmDvNFs2TY0lZlznHGMZG4+L/t9GjcDP3WNCSAp+5Buq+HLmA5wnOUxip0xbviAR43GvfFzBGxd+ibsccCkqvqPggRDH7cIkECpYcLaCrCUUHX0dOB0TpqQLIouiWmX9gVE1GRGJIliCvBavsIyOVBfUiyNRx2VJgUiWlQyrVQBqlZfdQsmuZMHzZ1G63kCbO3ftUvFPLX7aZO7QufTUGzWDPfIDJfVjEaosAp0l2td/92j9NG6FFh1ziyYfr/Ho2FxrEpS+pwaa5SLeDKQuP8deoNCgD1von9yIcm6Ew8zqL8jApfY/dP4zfaTC7ohN3yXZF0NWlPLxkuVve8foNjB+OGsF79u5NjY6Bz/S+c+J3sAIElMhcJ/pEHaBZGNLKnfSB+PA+OMLF1YK6c2eiKWUwpRTPTLJHlMnDbIoxxBH9ibfLpPMoxi1wPpouDLNLQ9cwgETnpFxTakir8IK66CxQaikWDeuEG/68GbVj9kw0mBdhXWiWlnUrZcxB0iqo+glyWm2Bo3rIhXEXGl6Xm8XaURwcZK+4Cv6pS+mttW7pQeF6t6l6n258zwJoxLARlWGnoSTD6IMFfOUr0xh4HazqAiSaDd/Z0/Xc2t1rWVO1RwCUEJe3reP9rG4Dea52F4A705HLlrGja3AAEDGSbYmoASbI3mGZSIgFEagwDCl3e0ClGgAwwwSVSL7k8hJoSV2XbL71E/KtbLET1AU5lan3hHEqbw+fNOUmwZVERjmdwsarAryZGTGMM79oBA3szk3KMHUXlWnsLXUdfXSXtxDXEhlfF8z5qMSjzv0ALzH6RuBMXqSH1FVTR722Es/FG5ac1IAB+nfrD00i/KhDNW8sj0aMWCkipQCbuKkyUzCx2cyYNrjlyqKXlAhrFv2saop2SfPSPgRHF2+0Sbu992uviFxYLEAMJJwJ1UZ6eN9BhQ30sdlih7m6iw2Li+SkBo0vRXzBpXaeYoLLbGIaIGmjtNvH56XUH5+nFrFBw6GePt1Apq0x86M1UMuHfUuAvZei7z6+xzd9yh+agdg4X+2mDM04igzImAvBlDYqozZAoiMp2vUpZ3JLm6DX/TUeJltbLWmQRQxYW78kRT23f4vuSs5RWMYJUT2j+3EgjMcDAEuGBkAWnHusyhAMez3rPv31pP2q/JAA9EMHiE0v0cU669JjTC9e83DDeL2AxUOP432aCNBoNzKrdlFMYvWl3We7e/FCOAVB42gUQ7AGDQaodZWYS6kUZdsNSK5/5w9PakKKmBKB3rl6TpbZFr9ciy5gyNok07LRcpXX3zz0bFWGLwLycFeixSP8dKInKPASykR8mt3rc4Snn/4E9YSq8pofYmg0egue9L7X3V9QnhtZXMi8s1VGmdL19IPA0PHxqhRp4KLfUIVBClVIAh3RH8Sq2ejA7WDZGAXJFjbUgAfRZveHjVmrTNap6Ndqhmh/iLDjVsXtuJRs9xIfsUXR2O7xWULw1Qk2FcRZzBN9hJReiMUoW7I1WYKENoxHUOkbvXLm1iPHizpc//QaSgNUwzeqzkBFEotgCF8IYVUOrlHObqGtf77r2LEB5TJJdOoCgHJPtovt9A0Q1CC/893sSQcKa01At1aquTSanTVtv8LoeDlhzJeOX6jQRouPn9tve7k3ZiF86FQKGTH1/Tj3rKujCwSKpiTFTSuVGTPUSVJQ7BmGZ60qL8CB4DniSmjYkbfrUpfxAtOFCL8bYXR5RZqMgZa44v24j3VYGhvyr41SVf4+7i0BppEpV9dYUHyRbjXnVFsF6vvbp2kSiaeMxkywgR2I2VtaBqQNDMJ4weo88tdOlWZ7uidDSBEKOspdt1Xc3n26KbeJ22KI2QAy00M9uwLJte08Ckdtqfv+55tU8UF2eOJJfXur4EI4XEq4RzKhTVfbSeqo7PULjIEdVQonWlvhnq1A66/P/vkzXI66LruwLp8ZjyWH/zfFFL5PSDYOg+YeISXWdhfxByxI5KxAvp0AhmHM/v33DEPBuy45YhNJU4ruYhF9A/17jSagqJyDKNLM8R4xAYM2AeCYaO/1OSGR14bx5N4D8AzY8CgxXbjLt8vLEqexTIVei2QFQM8sFGrGjI/NS67pcphZdUp3oXa3+sCcBhkCEOxys4NhvRSXpTjAmxtGITzoZryHOwysBgzBZigjXMVZfSeHLveJLS5eDFPZp5/FfjsXt/KYAxlUVE8SijRN2p1B1mLGQfHBNqAKnOr06Mk353SbiNSdyd4Kvo5vqYDwv1n/l9uTSO2g2l/5jo5VQZ2w2xty2Dk5ndi5jrvk2Fva9eFljYZxAO1XK8m1Qb9lUw5VDQMr32D+Y7AL/NCi3qfgGRoWU6mZeyLblqz4ulk2Vmxocy5ucSOWDOyQmKL4Gg1oRwaiysiWqbUPFhBO7DryW5b427fGdflP4HJEc0b8ZGF0LJ0Z7jLJMFIn0fs5iNriJLqJXZibk8ow1nGi5IS3D508VqavUiRuZ8xrz/jI+VBEHTWfWgZLYUPhKob9NcUOaDVXbjusaQHVdqtyoB2hXipgCXDRggOGKHsSgTJXVQBAtjeo7ZJJamvXg4UY7HzZmkwskwEPPCtjD18NhuWnHm0+8fU7nFsmsh4qt3yTURJIlSCzIpx2ahX2sJnShK1RorgnUGsalx3LzAbqtBBXw/typZNvnaKMhMtl70n9ozR9mnF7pO94qXhLdfjkW4u4Xw12QaAuCwdxBRp1kwbQRndze2NuUgG+z+zxHCHVcOeVgYUrBdDInOZ5WWHn0T/MLQu+9dTtNdpgm8w4tisqecW5RzIWC7dxFqR/BQcPw5DLvP5BZTw4OGGan/Vp49zV2lNPREmlzX/kuW12tmcU4rlmXTmaDNILjeOU8XVc8vEVhfJKjpW1O+93XZtMzoISeI0hw+LzUqmz1xgihai6KUdHT1c032BR3c/TbUagKrES8+M31pzM9FfySEPpdLSrTd7g+Zpw/IJ32xarat4h+m7+6AIfB8dcClj2sMI8CO/bOTk/eNMr8tTxcjN8ajP068rNkF76mxHr5xmUCJV6Q+y9J/4JqBZPBg5GIpXDbx/ztfuRU0jcJDxUh4QE1CGciryYmWgyi5WjDiGIp+uJlkgCyDPv+52KMZTsCE9O+OLwpnDkE6WYl1xdmwTsc3S5Z69eEm1jXgRzIm7UO3TXQed7QmnP5WZWmgADj3WFRhXrkVatqsL/L+Vrs+NBChGT23aDyl2Ydz2ngPKydguowg+7rz/vWL4uk3vp6048C2sHYhcu5/sgUBcBsVKTva7CtznlRJZWXqSRxVy5+GjC/YIuPl8GbfY2gNaLMliW+mZ+x9/m1RVofE2wFttGeTZ/ALnql8tkqzE8dRV8zjc9Y7g5cjk5zb+mPhW+PFikPFFlCsNFoTv+Of7UvFGWLOV/XnGKVa8W3H/Rt62U3fKRfWJw+lfyz3fK7u5QhUKNRsDwHerj4e3OADrAmMnS11NeVKdrRqohJ+zSUzl8pCjWzLWv+ihY1ge+tivr+VlKzR2Hj58KpBoMfyZkAAD5ZTAd/8h5rwq1oZi5EE75tQ06VV4MiUyvo3BqpR0uPlc5Wc5ZMhpYAHdzPoGS5OspYt643xZmLoB8TFBRKyqIrdm7KUg2ihR36HQpRG7Qa/RNOyHIsqR0t+4RuaUm4WzgNCIH/hVOWThEUpdLAW6PIH5IM2m4L6qW19pCJwnFeMVCw++q8D1nHT4XDxlngmKmkQeWBgTncF5CYW611GYIIJ2Pjmb2wsVSlJCsFV4PfieeNFppui9BVH/3hHDngrize0YG09kMKlINXmOnfJlFZi38SXRTzqrUvhw9Kw2TWUyKzbKTWtNQpf09V0dQptuSaCbIPyOUOgA+fDEr/M4nXWdMu564kbQEXtC3ph+BuJQvu8ApURPIH0QrGIXoaPjWdCxWujrbE7Ji1NnveGsTjl2EvK6vQN5HCGk9t8tVrBtTznczT/lXYaMYslEZ55fXbVY0cl9W4t6KAjEJtVuBNXiJD0fhsG4w/1BqQJnyxXCeleyTq5ZDtCrZXWJ6dKRY2vOpRAaZRPBDCchYVclLPI2gI9u5kLTvHZs5VhZbFYUbRl3v4wR8xo28zVgneBARdox+pqfL5HYNzfwijXCh4kIIq/5+xqbmA3YH0M6tEoZkt6BJCYDaXuxTP16dtD8d4qz9vLpVHBl3++epcm9bKSIGbMFK61g1JINw8PVFZ5FjvR5ggHWuzM/pHvniEb+w/xQmkpB1xrCMXCvncjbe1lWSlbgj0Xu86cjtfaG+awuulraXI7zmpTUX6gtgRWz1YybPcHJ81nqI+j5ycJw+HXJELPFCaaue59VQ8pTYCqsioRIah9MzSe5fkHbHQZIP6m55h2b76NLrcc08JwGihLnVjlWLTsvSHtT8gguiI6WXf7VgB2Hsab5Ifg3RJMklLpohEAbLlpLrdo1mjSNoLJ3iRtnRviVsMvEZHTC/sS7B2zVqoRW98Og948KHMrIktz1fn6dc3MDjeKF61rLfrXch9D5C+8LjzxzPyNRv2i5g4513JR+Mhc9Y4xr+TF255SQTtUbh78HOVXmUsOau5aQ0xqJesqiTvU3OyJjS+L6c6CXp8ob4HNKTpLlxquPoVUnKD1sT50WjJDMvncKe+JBUxu6Rds5MmDMK4QlLe0UJQmWPyb6dBSPh8MvCZURPhYL3BwZZOfR8McXbEjlG0G8xeUudWCIPqf6do7QPiNLY8XbHd3qWiBqKmQUZQKjEsAvQ9iXIaeyZRkvG6LweuXAVpuo861RGlO3HObqgB2va9ig8BB5AKZzF08wFPySxrs9LsUbI82YxXM5DglSc5v/x5xQj5AfMnuXPZtk1b5e72Jk/2RgIwChMVm1oflKkiUj1jy9bxe5dO1JPXEKPPusX3pCge06XHVL+/VzsGWWwxh5rdgdVyGJTpTNJhTvXMABQPado4IB42c7hap+ZEnGZ3eY6fjiTcLo4TY8gDeNX1ek2zeMAsZizQ/mpxIaS2omTccgxbuV/dzfjWb0dbyK3wfWntpV1IMozJ7V5P776lYohNAWBKKtbi9TZr00yPxUVRHb7UryLZRFY32I9sbeaRo8GeRpFlXfyWizVgeqpdv4kjo6ofY2t9iEJtGBp+K90r7pVphoSZ9hV9G2lten5r2UOO85hDl2YRKvp9UkIB2hT4j0uWdw+dM8qnWR1GbSYEvjrmjvdFJ/jbzuD8TizAJ53mDS2XYt+fHrywVOE9smzzXlptbrG2H1VfP+xsfTlRLGQTEPFHgFx68NnWyEiRPQ0FtcdXgkLvYd4ehU7GNotp3vyglK04ds3MjQJutSn6Vd2X2yXosxoXWWunyU98pg7WkxNAXWULVU4HhotAdB+5//a+oq36Nb5LYt9myeHwz7U0juxRN+Tak+GXnuod/u9l6SKkhvIbAxRv37n9vfgtmGCvRiA5MFe3xDIRUMe85hRi1h8m6l/4bKCgYo298IqFM37E3oqH5Wx/JZLWPbspA8ZUYaW40jJsJtaxAq0G/HByQaNw5NluCJ5XaFrQwRGtaeVSEq+eYOL7DBgmE/qWXXKMdVTZ7/T0kkvuPrXWzPwL59XQsWbzWJ5GSKX6vzfT53zfkoxrYr7sfCPIH954HGI1nQNT7A63ntLvRSjRjcRUxS3f+JdVYfg8VwkII/FSz1PxmwQxCMpiRVihLHaQa8rGFn8ineeeMfsgsVUMLip9xHULskm32Qjpw0SzmAZUAP5TLWE8MpRWZusLsWzjUMkuI72/xMTiGeQ66pNY8hBEqtFFSDKg2N6hfQDJI9vVCexV75Kh9VZHQVb7Mm/Q3FLf3QSiHhRBo7gNwSdzs9g+rOVuZ+L3LElmof/ADwlLShVjGkAVicA8A3G6Iu93R486gAG+FleMhE1/1L9DdG3aG4CV0OZ9rbxvN1cw1azsUiqf49wChgtHjFcQ/JSdN/lKbjqYYp7y1yA1NQBSIDcE485RnmUP22Eqlan3dVy6SS1KzvzatYRmCAmXjPgaJiTjZI2K1YOODAMhPLu1Y74knFjXPWQAp8XfiMJa1CpMXqaA6p6Buyx9Q4q06/BsLidQigrIpGehs4nze7bYFdgxQPF8LpnBAt6QimZo112cG9b1ry0HXg2t1taPhuYxDOGyCjMBKKqca+5AeTVt8O1yLyPZzbgBTTzWT+5yZpKFMo/40FaGVyzXwM+yR0McFqr9xilHn/GojcLQBKtZ82yDmydPNTeMJlNNj6uA/OMBahkieOhyTJlGeDz2/DUNqDNjCdGfOua+Yw0/UX1UmxOPNbNllU9aZ0WsoxWEQMfVDKwtAh0o/yI41H5tJpPdAZ6Xrvx0k4Zd8aU3HTowCfcDN4ZAeyVTS8QmdLK4zhi7rw7w/b7jewjUlZOsxEvzpYvSFUTjMjEMf3n2lQUa4qy/A9RrBdF9yhSLXzfeIYg11mnITzJgp1yuEvW+pGypyJXHXgpXMqDpCQMf02ZZuUqjS6cvfYIeLboY/OBE8+lUil76QQPRuthiqNdhkh8tP6EqIYitaVU5YrtHl+PlxshM7ox9AJzbtdXTSvICGdbrM90PQEFXDTCuPv8Eiy+kkrBpol+dpeR6+QRmvNFIBL5DoJ2ZNGsd5pBPPUZNM+Vqxc8GKx0U7KkpzYfb1gBLDN+hHA4Tw9P1k2Z6PqeE0pY5q1e5OJHbo4tJlMllkY4IaGckxH1Y94clvaRdvCFUW/AEhJ9AgIKesdAwI7Oq4Z9SNCI4Cdc+hPQr6fcyZTlJtigekiiqBfofYUWxBWTE6zefPIJnvn4VNNtZUwvmsuXvSVF4GTZYkDsmvib5l0kjyt18As0ewFU8fssTaOimuRxlGk4unc+2Kpr85ZOInUXAVlqKILpy8wyBInjQF6AfwoEzHsrvP2ze2IupRnVhqv1PHWm3TOQB/f5yjkz8CCpGcxs+BAwjS9njND5E6qjoLuuXMtLSeqiwIwRXwUoonWLaHyJfmFnLS03RDBcBCkZ2RFELWAZDlTdSFaLeZ1ikURHWrhKMcda2+w3D493Du5XiZcN7ZABBZG6xLLHwfSUarIKjbQrf8IMWHMAi834f/D1YkXBLrV2AyAttCnE8TenmlKsVUgbUHgTSGdv0VDAbq5LzN6FQVG9uPH5bUsynt/08ZZoXCYa5vonq5FS/XDxEcrAm3IQid6a4VHvkX0DopRVqeLRWXh3NAZtXc5HBwqKEfO03iYZXYYuZeXI1wDDExqArrNSZca/IKqfdQOyqI5PZ/hGJe/SLEtm69Y8cvb00sjw/lRpNnhzk19Qro5w8w+LrHiVBM7Vc4DvtjP0m8Pgl6Giu11pJ15ELGhboWrKqGmFpmAjefxDaRUu2xbv1NBc+cMgLIsNzzIgY/iO1thLdC9azB3lQSwBcP3XWYAQm2vHa3T9KgYl9s2dWhtOCgFSC12YONT3mYSKMftP9EwntrPNJHC8S4Chwx+ako+qpRCzYduj9aeFkUO2qqFS/kVcUDJVQLEkUGq2PTCBZB9HWcD2xZsCdZtv0xi5k462IGa1iUajisyFjjKTlGECTmu5lbNFjMXFRiRGIF0RHtA1wqzBDBh5S8quY6hfQ/Svzmv6hzXF+IXW76UpjOi7ktrZNSub+5ibO8/UxXWQoHWleApWJDL8kz6QCG2TkIIvXv0fftlsum4ryYH9JQMWZN05jBI7AtIOITcJshIHTxUqB0MENbC4DffvEDF4IG+7H1THHgAltPg5RBAEK1PsLcJ49fQJdWx8JuB6l+2F/TXhVs6AWDaAsCUMkDrwLa5LRdzE27dRcLDo9Z6yBGjOJXAkPg/LdEz3dIsnraWiSIOHKNndAVKUfWyYMNILdjOAqtukOtzkRi0IfJaDBx1Gfo8UdJUDYpsnKzagWk7SqskGP+IG5B8xBsRYqllbZzWk6+6F0eSNp881SFtw47SrNGR8C1IauTYCWbbCfQ86E/9A62ZV7Ovck2NMYniQ13sIYURV8FBEKQU6Hl+3eKGwuQ+UgvADIU6rdM/SLkIMYL0QE+5fB43NEb66tnKnceYbKfYHhpnc60S/hnajQxstVPRd9nzh/99ONEWBiN4DSXgSrXKc2OPvsZAjkXArjvoJcSMNvgA9T0/t+yDKhiRyK018/Mjfm7LLD0R+unirMIbFYWc2oPa/07RugqPwZEzcWEmN0Ctk6su4K8UimBThavpw6zAXxLjDrz0JapCPphOVt0KfCTrLSXe4XQa0dk51MpiDQgqk0q2dsJuriXzSmeoWhgAUvk70a+a6+J+BAzQyTuQjT/ivZOrk+5eb0JenyV+R2DAToaqyJlrEzLS9X3mfvWlKUjxsIC7g+ReDgBDpkYcbf1eEEGp4hE2106y08v1qTeg4tJ8nVRt64GZHlYpR0LbYAEJvjnn/gs+3Zegy5yOu6KEiWlSDjb7GywzXPMx7H99MWV7+iF1QR84SvC7qY+P3+LfTD7F9Vps+GPNOIeKYCaS5EDDWfyugwX9d2FIjFLtbhUP2u4wu1oHl33prIiWlk3sa5x23MkZVhD0hhYehslved1hxqJ1NVtttvpFvEWN2YAyIlA4b/Ndiwszma3s+IqMPJKkB7kuW58tWFVrZJZM4Wc3UYY87rJWME+OZyghApwjzpP7l+sAFpVeBqf4Xetx2LStvIHRcS92XGDUb+pszNFIDYCfz4RdeKIT452sW950wtFDYNp2ZQ7D7HbzZM0ih4UYkkVKz60gszmL2B8bX40IwWHUXvtL6LahG8IoKt7+ecCcn6pUNVyg7yftxJBrqwv30dWh1qOeYZ2ZyG4nO0HTGsON7rNQ1He/FoY/bjpOfOfnNgTOab6t8DESuXicY22K1eNqCjEqsENr8xb3JTAVcbsYiR8R5GYsuUAq9KdW8aVQXjszR9jz/JZDM2ur98JHyY9Z/HcFmNonJ35P0ds/GSHz6MSuZfWeb+XOL/wH9jaJWLrXza/zT4GJ4pnHoc4LetezmPsbshntH2Zv7tLvSdG+DVTea9VsM9G4gvtzehmD7SCGkf0eoSF3/k5lyeRbnyDylyjyrokzhmA7+U8mrCPl/KDHa/CisPLvRAWJmeM/CTETXEsV4C3j3hp2HQdmJLxYSQWTtncJZTh4Ug28UEmRh1+DMFU9p7XKphlonuDOIgMjCp+Uc59zW2yyXpGn+YO/oO7DReH+1zhYhLwyR1Li04JXFbJrbL9Pl9ux2VJMKK4Mw5OTKdQfoC27bNB98MKOgAA1H3rIzDB7U7NTcEps0vWy/1mVwXPIwWUxM0gmd73w+qHhEIpCzAsc7pa6nnWSw06J3413ucser4SoBkbZjkp3irYwftm9AmROIUUNsYxQ7xssacLVEhN15qbvj43l8hKlE66tI+QhlWQhJfUfWBQuFVpa2WcNRgWTB5jjvr101x1Nu+uAuEzv2B+INQaxOX9GL1+OhRP9nhrNZKdPgylFXPVk1X4WmFWUoyEIrm5e5ilmUOU49BPQQNjDgSWAZZs3a59znmkc9XsY7ewV4/ZS1JlLJTnN1CBEJiPXAzI8ZMSGTLaloq/rJHrBXsUzGjNRpd6Vx0Z6evaPQQDFtb+JNdqmqWmYDOSAGsHcGq53BVHJU7UDnV6GB+HU1U1M7y/COxknf3IhkQjPV+ta4r9HdzKvtYsbKko2Zdc65j3ccribj/uFlV1gHC77k43r0KWhAzfPIgfqmu2CztOPI878kw7CX9Czpd7aHBuO3D10HkSiI6APO7LiKSSvGpKT40fFAm2VzAAvTwVddRIx0rcHjZTa0r279UX1qhu6x0+koe/T/jJdoA3/NUBI/Ki2WyVZbacYp+l222kXDzsIjNFZdk5pEL4+hB11cHK3XRY5TXwXcDKHaQcAJWfT5Gma7hmdHSKcBH0EqWy6b6u+ttz/2ebNRbLThwBSOONKslo/iReKAlXSLV2/QW0it0bOgXFdMsfZxmzf2TOxvq8M3kRETRp6OvlOe4EvES5jg5a8e0TP/5Y8nuyCWfn4gs7+dNgdxYv1kaTt0rVpCud22RORUmjynyfrWVDv9jqcthS8RH0vamI7wcEONsy6Mc+LuR0fGidDLSMmZd8uQTykWRKFDHexc4xq0xsa8OnvqE+NePsAbfeRd783uXGTFB79/SGQFHY7CqAQjtiW8uiZV0auTvgPDuSdeni3gzic7GABzS8XXhl9gD+BdFCUs+Osh4z6XicGep0Q5hi11kNtdW0M5d/ijgGUtAsyfnd49aXE/D5QqQ4Tp/2pYMBwXNEU94Xzo6WmveiLDbsVVLnyoq7QeTR+U+fIp3k5HcN48znFoNoKboR3Tay9WFL64ma2urHXyFw2RpaUY8eBULBzhy6lg/XFZGVz84fT2cijqMLO5UMzPXIyzGCEgzln6iYbRTqL4NJm5j/i7ZZnc61HKnLJdBOhrkLB+H/Av2Kv/84x16ftO3i4mGQutGIG8lyTG8SQH+3I04+e5slSR7yXwlVuHUVud3458fqj8RHf0XYgdHqfL5gaCrwoGPYEhOMTstNLsCAjIhw7apMEJF9tLXJoEh8rmXmVsOGoGtmFTZBpJVJ8SLG0BvALVKcOeuNq2m/duzcdbpOHD//wbzzVztKTn5nZOyCa+lsRkPoyLkd3BuhEnos0RxeryW6RHDICqqRLEoweih6rc/kSNS4rGsMjVInk/o/awxt0x693NM0GdwQYEOT3uqFzqYa1SdqhNQ0mv9uKc+km/hrju9idyID66fQHpRUvSgq1gGm85w1mJNogyt38lhm8hIuwpSVRbib8xN0z4meiFN0FziyTjeFEH9PfeKEHkgYAt5c8vKEQ+aFHpwlrpOUnA4YD1xydtZdJPeUC587Oecp0TTW94Xg4QlLOUdkm1/CgIjVyqfkeaGMy/LZ+TZXkbm7mX2/B0piQDqGYEvrUBmii6eAptEPYNlcr6JI3SNMubvuAEeZfimyaFKYtbCMxAsMIrqEZ8RfjSRAVAdug8UEBi2PXVUa8THR2vbAGsw22n0MTuswOEIiJoqMsl3vj3qSmvSti5jcD85PZqbbaPcqKXOMNN0kUDxDmcVYxClWTyk418W0xboeqXvt8524zmQDHDn1DbuUzXylE/cnLOSXyiUVONdIFWf9Poz8/t7ToI6LTMJOFxqUtUHnXr7jYZF3+YjpMRDYNkjb9/YYlPT7rp1oajnoTE9YEDN8GQzs6U5s2aOh9vsZNipfOgQACh8KXHsx9eSGmb9f0p1n6FbjJp+2SkF4nHKQJChSgMFiVaQMXRZWl7HPbKitq/esGsOyH7JBJyxRiAE+u/XL1hlaKvdPA81jfbqcIayaZblUZsh9tdQqS1dz/WJg+Ty/QhIvx4rW6cy81XlmGgbBvghR8kUPb9NNYf9C21/X983gOsp+GKfMy6LDncqhqGHepui4jPmH9b3Zkna14nDPYq1O096yQqVpvKXcG49iajWyCvp5kLPSCvJubOch0ojewQKHaRZwW0Twgs632GmXDa0rE+61Y1IWaW5QjZZERF+Xgtmv5Zw91HZ9p1g69dH8BDoxy0Tz0S52oMGRjWg6SdgF38CDL96mCoz+8oJ+bExDgSxbIM9CE5KW6hO4o4Cx5IsBkhg4YlMWbwFvSEh9i+4M6wvHkVVF3OIZxmhvAePOHjvyEyMbdYTOd/153mlhZaGBro4C9mjLBiTo2rCZtpsDYNImmdFK8V8fM3YwhUS5qzU8NZYp1eieJPXutkjNfvx37/yvBQy0MykG0aIFZ3EGZF9Z82OG34YwOIj9FImTxmY67RtsECkvQz1jV8w0A2g/BeO/GDRj/X6IYyCsUKHHLi2LSODSa4TB/uIGkHsQyRbFwLVr3h68b0l9TTXUZvGwSfu6zej6kPQHwwQn+yjhgyGfDBlMuCSmxyxwbjAII7j5/6EwTUb3DJ4XNrfdDRSfY/vQdQlEUCfuewPQV0U+25OiFF/iOibT61logQu+IfAwm8QIVbiesaIuI3XZAa2DXquXZobAa6fqUc6rRCsdo9d+zlcjishhrGPBN2tYMNCN67AV77MPYNRoK93soyWI9psDNwOEWGsNKA/9a8PtfAX470YwZX3nGQ1FM6c0j33diIrlZQYT5KuPPkZWBrFz2H/zoXA3aXKMRiuM5Nqgnvycg5A3/NAvid9nVwitixhcx+kEn4osGUlK1jkpbcsyaVUlnljZ3qyPb1Di88dRX3C4vLUCi/rQkUcETNt2YbAso7BL9GIc/B16PRS/Jia5bNuZfEPZR1LC5V8SJxN4hlxQ5Qn7CsnI9H4Gkofb58wV3xDNcGbDKmSoyZ+2FV1DzXW6Ca/JilMvSTrQ8S5IXMtkocTaLOBj4qAXCDa8/VNjOENaHcEGijHfD9ZCecYVh28OJXEyaH/gU4q5CubPS6EtJCAo8FW8kP9RHqzEr6LsHzTIhjjJFYOdM94dMimlNdVDG2usJGo8VREJrnkzyQaNBfMG93V9OXC6S2DbFnw9IwY8tYL4d33ZN5O73gWCUnyWCQ7E0LO3kK4DUF5nO9borm3HmQvipRMSlNhu4PIi77DjlolNUvj8L5uos+/FyQm+LoGx03xj4hIl7eNbBAg0FPzgoX1sAR+UOkIX8DC3FU6r20oog1+Z3+64XTyaXbF2AV/vz2IVUOKCcE1V0qBTxl7ojWNOpDDuZN1V8UXa5IyITpoqK/Vah128aMIb3L+TMOwkt8nqZTwbI1CVwLMMKhXB/Sva7TcwjtCuEvjLc0W+Mm/JuJ0UUOEaIQFzcHIj7nQpbqHOYzpCsJLbxZvndG1r/7J0jHMzI2dKFHASHBgNdiq/C4KBFqvgfy9sUWb1MyCPdEa6ZkKOhkG69W5S5QbkMjcg3bI6iXloy7VQBb1WnkdXo8aW39iwqpQsltH/iyoCJievVT7FaQbO9+qp5/thrbkALkz2+PBeLX1mQ7lH/0K6Wcj8DZYOaCXTk94hiFfvfgnjlqyCAoS25DzQNAVVmrmcE5xPIjEf9uqz0djbLI+HBKI0x3eQRTSknBKpaIFdZFTIQ1WwDhXOy1BMxJ4ZXQ530a+vcNWpoH5v9phBqM0zooM3a9Qp57Q26NoTckKLMHiPk7VA6u7yF6xcY2zkAYLBO97lFi51wFgMWZaM1OjvOL5Bit6KpsD2MUV2uV7A+yEu4c8mwwDpwfwF4EiRiZrqGyeB72QObpWEm23Sq//gwpQ2vXLWBmBN7xk4rtbgskCIb7QMq52yGnPVN96crKrbP8FZDh5VkEgwbuCoIw2Y4iHWss3wFu9/fj3hgCLCMcamKHZuiisPE7DkgJtig7ptRAG86AAGKYbj7RYVHVS+9nqnVuUKQpzvG1AlJzoqZMVqnKL6MsOf7kYJc43AVXE19PpoqXytTmImRq3k0lrTkhfbymx8OSByM+itrlD0S//tLZUBKGggGYdwWGuqdXZ7OwZj1i0koYoipFDEHYxJ0h+7M/PHh9z1gGIN9128mi+/k2hTAODXo8UBaWZVEIi96iBft1itoFzeU+JCOF4mhazRFqFDTrGbdl942Gg+C61n538uM3K70L9TYQ6C57MRLO9P5evPb0kpRabISXDrAsUpt1Qh6x8Oj8xvwylc7Jb29RM9yTbMmrcoDQks3IKo/AuEjPBI5a1Ry1GXWfGd2VzsV1VJ1MW90pvNQ/O2S7Nt5Bqy8a35s2Qy11ORoOH8ZDlGAND44yF/1yTK7L99QP923TrKsxdaLxfjMqDpRcGKvjrVS1ItUHdqwhf9uXWTOneTRfTBYYKoqCuBKt5cari4q7YX447ngMzq/KlkljwnQZ2aCEdUQ2QmLCti0js6CFoXPkI1/88k/a7wQV+0DsFg/6HoKVh+jiXaAMnidiI/gW+zPOc0qZhpwj66FXG2cty2BIiz+RS58RoMnwVAVc2iTm66dNuM4BO67KI8O58AvCt9fcGqi54nZ3/qjQ706vmTDLqC+zoEQcx5dkjmuPgTzs4c1TjpNdkVUDlsXSFfLtdTXz82nrbZpei82DzD4BiwSBWotmwH+bUjjIawlniErfeByGGLFT0LIAdPKp8ENPjR92aa7YEHDZlO6cNeO9W10/CasEb0NH60KJcjM9V0nVVnk85T9XVCA5cH3JV28ee+UzUBlT+W9W78K7A0D+e5Y+q2AHU8uB96DNl+UecZhkeM2vHwRqqxRFoDhLUB2Jku4lk7q9BhIDITwkuya2L4rPm70q68oIJDweAeUbQtQICqJypaSVbAZ9ZwW6yKudncDyT13sce9iotFohKZGF+5sgXi99gkr+AQJ/lihHKt4XK06uzwxaqWuwQmvYeoBBDWWAJZkdnHDxq11NPu+oCouU06RT+JHPg4ktwhDe+tCIxg8dozUHXByRVkZTXRxi1/xxBFUPWuO9TJEYQBDvsMMcVNEr4KhvNJCAnYA5aPipQHEy8JmWJQMYLev1OMNUIteBziCPczwBSs429EPHEL7y/R6XM8wo5UtEZL9jdPLdrbfxeB97defVnIOIlt8HShUxvXXaKWqr/RfIJvt6h/4e6FJ+vJYfpoRDPE3X1kW9wQ0AkeoTY0n6BOMzD8dWL6jAZ8qln+a9kasWFKikkEZBsEu+JGZTj3FV+U7vFH1r/gp0vikd2V9neSrhs5vxRjG0lREExckEwQGVje7ASjdF9WjxXx0RSXsa+BQHy5Y7njYMUeK/oTjK+Nf4/s4x9DcIXO6RzXqXEzVUhqz+7bnILhbh8lgYJ+f/axDGtTaCOkKZD72aIBU2vTh3KhARGZ7h/KPJHtsLckD64EGlPXr6swqT5ZxhQKsNFTe4btFcytwXPssi2v4WnMyiUW+3XPtNuDQTQnjmqiUgHWBNtz8XTagAodylxE1yf4b13AmZCQ1QBLuKZR3pceZhoihe23v+Z4pK0jL40J+4ovxTFwCKqBDgahXjHEXEUuxI6RZ8CyMSLc93VFT9ZDEWVuexDYsHMqF3dDoINDSDZjiPGjnYH9qm/OimJzOo806CjyQC+acT3hynX24YQG5kW6LH2clMajAJABS4JW/HJ/TnRmWAa0RFY8cgLzRYDir5amfpSnz39y9ZN8ZptH8uUPba63bOUpa6O8C51grC1xTMYUEs4bDqnCW6Ngq67A+JX4xqLMXEk/HbHnxjEp9ECWXN6mZhMul7ym0C1w+AGn9/gUT7lY7LtKcSMhbRHofkDq8gvwQ28iG85cwNDyDDJdkfgSJocCvbaUd3ISI8fgizLqn6bfLlUfYSfSb0bYZB34DGGgZO8mMls/zu8mKkZgDp0BmsJ9E16/xZCZD0sm2GkYzbCSyjI8E3R7BMEZeYrOE0H6qiYC4tUos7quSYhh83dlA5SdrnPRVMQvXAJFkn3p/iVPsclR2uyT7D0UIAzQ6sy63ARQ0YHGsJuaNk8R1wzpuXBBnu8TpHTTKCHt3U/glDFWXNKbHUeMDxWdvjG4OfLPDB9s9MtaMbxhO57OfHfSjYknnGKU4kCO6geBnIRDJ70kIWDcKWiicfH87sWfwOm386SOE2GTiJlrRTeN6MYa5wMcOjJHDA2vLu54TIYUpAhIIy9xPcsKswl6SI2XnKPlueLpt7YeHLBryQRfOYkK8j4sK5Ut8UBlxIMUKaG6OJmHKxVxBCLBCS6amhgbL+RKHIc7gnwTfvhI/kHOUIwIfkviRWjwaS5EszYqHtrtXzh+srckr4P9XLPYA1zDAbEYiSX+RSjlnhDGmT4deJF/+cmSUxHlAKsuEbRAyokB4XjL3grHRMzlRZTRmaX5uin9D68WlLlyopRYgA09Jf2e/YmrFUdX1fHqezWsflhB2rRCg5/PInm5YwwruJFPNZ3k9sZHp/lVWormAuDwT2qRl+ykxrT/f/Jiel69F8TylMrkvBIPXG7npEagAodvavUNdRt/LC//kUHJopVhzMZgxy7XuQ0wl8CoZqOEjKLGpF+UKNJBH6hKUwbP9F8soZ1im1xmUpUoyizUhA8m10BcjWd/GhxqZHQeMnNZ+WOkVshlJTwEH73n5YzsLFYj0A9meSoBUkEsQ3rXJwRtWImap5zzyuWIHX0c7Q6uYD+5Au87XfZlNB6ItCaIkmq0f7LLhFsteqCjTouCHu02E44MJZU599dZf0NMUL4qydsULNPbfjDHxulFnsq1xhHdQ9pGHBRMIWKp5+Bpmxmo6hDoHv4I/PqtQAFk/mFEczWNjuvg/ZKdSEG4hOTL17Uv3tJjhmQSvaaIZ0XyWb8oRuEeyePkmPunGl83nKbCXA3zK3DN+/kagZTonDCTbLmdS2rErwyjHR8YvbIXv8CVCtQYn4AusWOcu6EKtqoeqfyuKELWfSBedkmxpTv2mV6cwqgz9IBv7Lj5naf2FoUZPfC8I1oPKKAb6WdSmUzW76qmREikiCQqFgrZvsBkNZiBzUYKTmS3cgi7/WJlzSQxbrEJVcnSJzDrLiNN1Wtvg0yYfItz0z2SAgU3zLPI8Z5BtWLjDpiHVvjBZXvK86OosCHQQyxKDIZtfgk3a90Jf7WBAjihDwSiyyLIuoIAq1zIia3QPtAPouWDrJws7JF7s6VSZ2G/NiSMmieMxL9reFThsx6VVK8LeiXdAjeiCWRSLXDp8Zvsd7aG1UoMMvW4oWRWMoaPZKC8WCoLX/JVHIYLgoua4yC3jaSCYUj5opiXclTEE4TwtwKa5cfRX09sg83hRkY6HgBJqnIvRINwgKpL/saSOn3bvEbC4OWqymEU750NaKJZa3PZwLCh9Udt/cbB2PKL2mYUz28aZUiPJsUKmD4ar0ovwMGEHVU6Wf1h+URBMqdr3clHKE5dY0WJz/Nu2HoiJy0WIKrrfQgWdW2nkcmf4ZeaGXDC/IuaE3q7ZfDsgzz81nWXU5D6AGu3jLa3vE3544RPOa8Zo4x5l/apPOmjWvvS81wl8VVCWPJfCr7uJYV8JxB5ElfZ013GbXBT7WTMVKV3TVzDx0F8f8QXoAZQxahFKCvmiw97FiQ02GJ7kWTVkuCcVdQyrTriGjGxZk2tv917UDZZQkFYX6k8dRS8n7ehlHlw1a2UfhjRH+udN8GdHhLKsDFt/zcUbWfv8uFkfonak5S2inK9mrYfJBuU8Q2xw/nIqZNPGpLOp7qHIvAyQWd69PNvWQsBTY4vHy7IsYjkYvAI3H1zzLIBCtUTZKOk6ksHqvCeCKVrEkzSDobTV2wRbb4HkoDPtvM8b+oUP2ZnE5zZFsM/j1aYWnnmYfDLyii3xK0KlO2IInCz9+Ua3w3GmbFvrsKCbgglM1WhjOAEEZJ/S28dA1gaGyTu3ctaplCNL3LmcmfLdzqWSTvMYstq0xY2tT5T+Mqx147EtiMf52ixLYVVxM53XZsauzwngw5ScgozhD7KTckEq5odJ71VSAI+xGOC5/r4JKKFR3I8QpSGhoIEOZ7R2QZkeOFulIza+Bzi+eRgkCCqGZATs9WY9Q78uZAjgN5DPbusSgcgXKRzO+fchQpQQEK/zVOLmFsn2vx2R+OSIHKgjrIwinZN1Yv7xuK/U1s+E55ARHey4L4RwBtwddfVY458RUoCy5HFzFYaIA/A8XPZ1+ZF2WgmTXCkQ+mkpOp0q/TxkBeJCc9HtDM8x54kZLYPfBX8xYm2FDCifcxNaAQoT3Ks2ItIiOpGoeX28dTkojtQEhdT8rlTmIubQsStWu5+lGk61h7uRcEM46Zk46STOIZ1CWIOmOebbeh4W62gK8nQ9kUSjgM4q7JNjiXBxb47ox4g1jabhX/JvvRza8dKAn9Im2xFyYm2xgVyASkvMbxQ0DQtAaEnAQBlfVg2vXmHCh3wm2tW9fuOUjyc0YPWSMbQ9HKjoMh+DWK13EynVMx9WuP+MxBk6VArgem1v1ns5TQDNPRuPh36uc9VREnSE8Po6AWIXTlgcupf+s7Jt+lnqNl3nZ04bAusfruGvhElbuBeg0Rp6QnycLfpiUumfkcU//WOYFYSFHgjqf3OLMELLgdmfrDAV1Lh0oFuECU9kBpmWytElqS/F8rFrqjuEs/7PQv+MIRYGHRLvJXRoKdhOb7fSPS4Xg7Jw3u80mGt5KqKDjhLTgiRq9jgj0pPDXd4HDMxYYgbAkcijFyVL7/fEyo1/yWEz6eMNdSdbJ1E6CwXJrHGRVzHxfZenurha3TXZYZAxVBYlocg08+zbmvMRPzF76zuMtMyWknQ2tF4eJkoMIs1A/vvDuIulIn2t4/hhwbl+9n307S9JqfqfgBiwvPcARsvHetqdZIcF15GDxI8zLKYmzp2f/Sj0U3Mqe8ifdZeLbKexQ+QCxWtybyPqb/r8aCeNUSacF9pv1CMpzmnnMWY0uWhFXqe53vDVij0slNFsF9Z7MwcrGM3DjPBHpl2TRckKOueqQcWxUluil8V8eh+SPqMG9Zth+QcUgT4jHssRrEvFfSAfRLQpax+5QEJf17wN7P2piWySa9K7hDKUT2YraarEeK8ZuSrRMve3HAT5Wjgcsjv51L4p9BCuraPvFeR1Woor5qfiZBFBrvJVOtT+6BaIbZBLsy0RGs5cFKVrbGqQSkOe2gPKQv/Kda338aDueZMw+ro9b1cSQLMVSxWvSPPEy3s7Jbgsk79s8bxx18wyN7BVF1yRr5DaYVLGQlNkDWfSEN4WMZVfOCGbrrfIKkpaAOplfMb181IyOmFEfIPk5QZ80F8N5dVXgnAVrAE2mVVNb7+eWh1xFxjZFAKKp9YvYZzPMQS9WJ7fc5bmNLy/b3Z7exHOXqAo+oMBDUDFlIduu55RAOO42qEwxpUQRNQLoRGiKBgSALTKchwLHd1pMsEGyJBVcxrm1aI4Fumgr43igj4rGy8JbcK67vYP6q6HocJtZUQKj5Pr/7ENqyUCpA2oChEcud8799Qv/++YheAryaGYG3u8CLjWDTB/8089F76X4/tzWqTbXZxQD+whlnSHxwmALlhMSEqiKY8eCPc09+Cz1zPTRRTLa1fiDVvqPe9BCjOA/zUwZRy1Wn8lhwbBdyOTfvWnNd65EQpoqtdfMf1EFBcp4Fpe0cPv2rWTbdCiLi5aFJuWGiAPViX8NROlayOQKTNq2SOYkkjwj1t80HrArRAbesND4oEHKHl1EGa2iBGv1U5bWOLE3mD0D0ogN1FH1CfkQJfLcMofD2AKkMjGUXq6pyBT6SKLLEwl/GjgDvkfMSIH6H1UKHiiIPnelxcFLDfMiORTu0gNQ98zpUVj7rOe+QXi5shBjz0PY3VoSJPpafp2Gciv/hViTYeMOx4zVLoR7uQOdhrnJmnovjfEI6tHESXYww2CpruaUgEyI2c6AobXqygXwqq0y029zJByFgwpUqCXeOVVBInDLKhdQnybacCwnDv0aMfWXlsuXnA6aj8wGTfYMJjUtt5h5qbNMJG+C471Zm9NUamboznNpmWGZ2q2ZPpGVd9QpUZ9O3bqXv8qpDm2h9VJtnQ15nsRDw2upN+O1iuYWlKDIaT+PWQKP8Hm1AFLY53R/takLoUu8fA8TSGgtGhhr5zSu7KqxFQRMJJRdyLWeLly2SlgRO8g+CgdmlNXNramDSZBv1xgKg3r4oTZca3aVrB4nNfuNpQoS9PxGniNCKswWgPK1HXAkvd1yWwSKfWhnBfhxJTfLkQuM9lhuP9iDUDRh4iZBN3qCXwCWjjXDrE7BElRHkG5LDumWVCO/jt2WPGPUrTzpCl2ZNNAZWV4ZYRl6LBS3VIKC9Q+ZxXpHjZbXreW/6saMQ2Az1agfItTFljj+nLab7QuIBuwvQWjX8l3/xgXgCv8N0mtf8liOwu+sTECEYVLn03ZMwX3JD/5x5C53rbAhU+s3Jwn/gVMOfdeCkRTjpxk3PodPM7ldnbpO7vnYVD42ZKTR2kLvJYUZ1uJBiLMtLJjRyS3b7/Ex6eyANBiV88qtcvyM0+Q0FGoSM7GZvCIAQ+DD7Mjnx+inHi8mwJnfS4KNSLekj/KkBoIFdv0sYS3Df/hA1N4vHwbjwhJYQjwAKXaEAuPYvN/6aSQocaLgf/P9yZjFfnx3YLv8fOhjiOpoaqwrXHXvlx0+Fs+jLty+ywe/jPjYyhFEVvSlxDzTUnwtXDBFNeZT0Ck1JRjvekk45/bkFtnH7FRQAd8jYOGm0rAj2PDinG1OC7yW6KQSvnmP49xcF16fU7RgXqKShFIzd4u41YkhJjuVhw31R7QplGU1jhbcoZnXLEG9XcQ/fT/CmFCYGA6B/8U8u7ASLoEGK+6Loc08s6lX1XDYX5aJvcMh1pSmy/7k+/Bcts0hGX8oxqReSnfyMzq4vVI3YFDaeTb67KzPixtSiP8+CB61+gK+rMP7G04YbEWVDrEt1hOx0Muvvjkld56cyAilL6jeoFqdDELrAJzR2jVes2QomMxDkebpBUItoQgmfBzqJhDtmyVFPP3hPtuu+2YjA9sQcV2K7wDFWSAWfkSNm41h4HcR67lTiP9G+5YinFG1ZKcUyXZkQqpyulohjNedlHqasYra4EGglgk4mwLVFDQySUs99WcQqKGSRuLsJfc84nF9BKM7aFBI7hSa+8P/iL8ZzST0NnForDWz7p23HcR8JmlYv++BuT1lVIWPmLDq4AvNmqm+JAA/DhPZf9Pgpnt08QKTjEnXr5nskHBVqNQyAitbI5MaNsTzDZAW/oIa64x5wb67OxqbS9oPhG+CiDnXnPhfLL1xELMi6jHc1N5A6loWRTIoEmKOUOnQRvOyDlyHPjFhOoXPyBnZJ2TGhKtajy0WqewRilCOAWTZFT1LcqeVQjeYF2Y0rLZcmSKrS3bTJQPxOMczeqS8+vjEg2TLgtGNq3r01vAkP3xd3/pVaALVy9ZSYLLIx6jSatHblCZ2WgXVZ6JCTvmGU26Gk/JkXekj10qdMviW1BZJZScd1xdeda0Nloht5Y5ft3U//JxyMTADFyTducbkomWICjrbJPFrEaBh9ctPVALCGnqzLg+df10Vppf+hKFl8sz+b3RgdhGm4gYZj09z7ynV3SSRi4L4NGbNQ9CaW90fs71KGUNuVpH1cYBMANHOT+ZL3Y1MlBgWQTB7QSlwfHOVSAeTnATBRuAR0ZPlbZyGqjBKQv7EeM02Fcl1hiJC2qQF/sekjJ/dAH83XaHFbf5F2o28Duh2Ec2IaVNhmybpUDGM5mABbrLAa5wCxFDakpvbaWqRqhACPbbjyUELN3SwDODdX4roYOmvE6C5j2XX3JUNJZ9hmbW9xFRyUmJvse0hvjJJK66VydiIpDkgEdGPes5m+/hNtJnDRE2q6MpeMhcJ6yNrC85Fep4Ve6viP+eM2HRuRTl2yLvrpV1iZHxYq3qDtpOQf37pBUSsTV4GoyqhEc0SKqwXz4KSZ+TrydFDIFCHWbW4zTJgNSvGOiJtS62t0N4yURtv4zIsn9z9n98f7qLMIIYLk9Q1jILhuLtg4hnpZ2mGQA4PXq8wtPV7+m63HR6Cd/WfuyBbxn3plA0lvenMKUIdBgvmSdPcUwOzvSbGY1Rm1n24cHGBfBM5QwlMDHehoEUgUI8MUbjajbbM2hCmdlRjljVQmiP1E8XWEzhsVcaNtGaC4FuRgzO51w+t8+C3NUrzrx9Tx0nISgJOe7V0x+JK+WbO4LI2xeuoEkdiVDPnGceiMum8CNjY7WYgEP3wmYWkIliLlXGYT29qejQf7rPAmLx3WW/iD5hYN4fV2cxCH4dRrkq98IIj3ryY1/7P221Y9Pes4elHwf4Y36l2BFxuQc5YZ42/5P/aE4y6HAQ8TKG8UhaEsIXH1IpV411RXUxD+3RysS/D//+2MxvC9PffL3UDwhbSm81MW8CzO7kUC134sPW3qnTTPc7s/XcQqxJ9E+rISYx2vd/3J4iV1ySqsQb+7+PUYAFvi+jt0+TkXHqd0JeHvqb9HXssVjsMMhi9hvueC4dazzs35iqQBOMGbgmp2V2t/O1pOFKP5/y1ReCPY4fRVkOQBJq5+JHi1UyHlKP4LOQdni7bN3sFsMr3mMJQdKkr6At8mGKfE/eHw4GPv8ch975AxF0qd3vI2SDN09hVrto9zVYNoz9hSzh3CoxJAhrry1BYUrCAo79TA30G5TSG5tgdXjkDv758MA6XwvM9KqpnwGRrjO83ZmxGb2gSBuJ4hdT2HQ7dPtEecjGqp9TIesh6Hbu7l830VbjMF1rqTPvwHE4do6dGE6hZ6uV/MZOh/dpoL9EKoyTE2HoQqdWTTA0R9o5oZMLvlL+tO4lo6+FrBRe9j5gNqog6i0+RITRT0/BFl1BrAjh4/eGKyzoP+gMD+OoxaEwCyZXIBTgWfc7WsX3VzcQLg2cAOx+WY/vz5kv3A1NMBFCPZ9F8karBUvHbdyxxyu5OVlx6z9UHd94nNTkDuTodSDXqi5RXr9fuZAAoOQ1o2miS95xHpLXJv0QAuWpnNoSy1cJdFSb7MoXSIeztb/kZjs3NWGm9ftUMXYWN4JDj+GdqhVk+fSacVOSqU7LhMwylI1/eooOMTlQi9OOq5Pzhwf9ktqNVn30klEH90xkGIywceJhp11eA2jRZQku9IN1N6wvUqadBNTLM+ePdAvGm2TC2rYITrl05jDav6fAEFNMljTq/R/YnkuKSxjt4x+FQ0FmyrGxEhAczF0xMmCsh1l4/zB/nl9KpSddovR4nIkOgWjZzT5VFlyYTw443z7WzObBHjK20aYn1nG6K4Yaz528lQWMsudnvRJAHtD2sTQYBXp9DJ1P6onELCWT11KB6rqfUxg6TRZkqR/i3cM0GEwCcDejMteo7Ttqi/VXPyXbPII1vk+tSuK3pAiCzjA3MQ6GOeGWuBsWYpHiHT2gCvrsWVvvlMmXClTOoFLgKMe9TC2NYqznfaBTaW0u8cVEE4JnyuuUtOKE9n20n979fCldNZjRwUnJWzitPervmnLmgP04u7yBbDLsMMEhQ4u8IhTpy13J4TbVgn4Rt4JBgq427eB8jH68f8hTV44nssP+q7naIDd2vOBTseIIv6nE4q296OG4t9TR2iH3OjwsXJEwfy/+m2OaoMv4GXA58qyDuIFrteIeWxq2qTFB0mt7eqifVDX0FJAe/0uWJF6+8WQ7EBbyCsuUFp1HBcTsbRxx3/9+/nkMZXmfI2w9H0KwfDT605LeGYXWOPdAwxOt4vd5q9vsFiqg6otZa73d/UWmWubEZ01G1i9C947/rU5ncgTEwCT1iktz/l/faXzs7MCkePv9po0BKztQynH09hVhOo1BJsMn2jFaaz/GNFd9RYkSU7WIaEqA03ydB3DdrJc843/twFhSJhEhE4t7tAP4wrusYQdiV5pQP20MN32ubHs2mG3PkMVPAepymLK0V1pXZKa4NHOy2y83iXswQrbx6BQ4zHEgNXDGMzvGxanKwHgCLd+t9GPH/IJGPV8R6kZaeLICTUd22aFJ/5TcAzY9EU7rfzmBy7dqjgyGVLEmFE1TYCCQkS/YTzWkY4y4Nsk9nW83CIAm/FbMvbq4fWooBWueVrArRPCJSApSt3+aU5QVAiOx4VFhH5Q3n5Rkjgvy3YslQYcVDdaLg7KO1I/e6TKPsEeeRnje4EJjK2zzH87P8XLjYJ/ozjEAhediDldnz22AX0KFERA2qaQg4k/lPxnXdYkHlETCzKM2pm+I7c1BrxR+z76OG7yAVOcKqOFI/AnKg4/rcqvCWTD0rHEOXrwItsxL4OoNNedXqoULNj3qpAPNQ3htdFMKRYvTwEaUHZzzgjNTTox/YxXHqswgQmZFlozRSNldjrPdWmxZFz2NRfJRc29QjhpDxbUcJetiIUtICWUe6Dnb0JGvthfb2OQLFrwrj6AdpJZSgx1hB6N3kMmMCTN2FHqa28kexK4ePOr/0IQ8gEfOkLlahTeW0uAWTq9NFxX5kxy24ZZHoCR873caJbWgw6OplXQvZVpYpozAAF1SD/TfAcUS1FHFs1zecZfVpafdCML2ErxddgRY0NJBkbWNxDaMy4rvAku4IY/wmd0pjSChJcmYbD27olZ+2Fu/Inm9qxNZzjyBJeWtCy0GrbG8HrPFNF23h6Q8tbmSogvKOdumZvTMC2KPqiL6FJ0P40XUU58C4YmgWZ8LGZJJhpA/sS7AjRix8SYThyiZ90nxBOCplhG4+3BQ3Qutt+crwrfmw7zU/CL1hq+slObRq4p8x1NM7f9od8etg7eiLoe7dkNPzvAlCm0T5rDEGffV42YBOeChxy9OKL/KHftfOaj19yVcpZszrMwvsXJz0hBt2aquXdZ+Q4+6YAiW1S16PfmzEhDd54DBWEjCLSt7aW1tK5dn3CyH9I0LKvnV4RkcIjj1dHsyJNOEE+huI1nZ1U8dThRCsPTsxqxKs96yjV3utpjHHgAlM8vwK8buZaVHUdsre5s0t/CotEXSjMFp0BIeh+VtVKjuDgSix2JrRCrZ0uRLDcTE46/vxAM9tAac0Aa+SAMvjwRoStVJUptDblyuV1HxX4eC8J1NjBM5AqhG2kJCOglfC6Gr5rAJMhL+IHiUejpjKl2Hp0/sUM0xfZsTfaq5ZB5BBkkBDAQz+hK4J5axDYc42l9YKkYaUBXixf0GprczznH7MZv6YErlSgdEh31MnNuW2nNN/zip+CTtWjP8MH8uDyqqDSty+ek3BjdnPzmrwZgnLf8E0CKn6sqj7h+6yS+/Qd6dLsTGL9TWn/2Rz78kEeoblbPbiAsa6mk+9asL3XY/tBZ07eAAU8hyX865cPR9k0vYezW/uPx1UYLUnG4mHmkwfaKIqDdZ8SNv0YAXUCJ61U2RKqTmZKiTnP+CYAQwnF4ESEH4jHaVttRpaIcMSYEOVLU70FMVPU/zJ1cmFAnjC9oAglStvACzjyiXnzQbmwAi6qkiM8a9okDcTXHJXza8QLQO8M8762LIO+LDy6tiYjRpCk1qPywa+F8TgutbvIHdc//nPgIUfgLJqkm1nJs3KiJipSwtzabjNhu1ePxzX5D3tqYDU0O8s5Mb6F5DY/wc5XvVyly+PzuxNsCAEC+xX6d3Po2pcAtzod34V+CHCjljsihwJquhFMj2jDT9IJINQZukdEM35FTOMf3+TC7XxHqTkxqLE91q8/yjfypeTcoppeH16CsGyEnblGdkCYvvWZn+nZkPRjf+sBRDMIOINaZo0AYRc8vGXsNq/hWT2hcAbgh3wsYBG3CJNn7VcGHh1IG/QHfJN9fzVKz305vuuXbFZd+46ovAxc3ObE4cymWgRTsBoMjLy2UOOcFA28nH0YbrKZDOAhz9nQtRatkJrssMvgLOTzs9IhdS4fZoWhVVDDM/iJwAp90RwgO+1pN0tnUfSuWeEv3RGwokDvLp6kjuZgn2feQtk3ri5E7qZDoLIk2G5vZJiJCrv8/duXnHoPPp+mKHWISwSwf9bbD4y171Rff5Bo4Fb4wYW2BFCVryAb7JkNZIXAw5/ErZNewGS38OYn2+HMFhw/7K5pfq7ZjT9bKIHAUvj9F0nfJkAlcKg8t2mC5g74ieraKG3n3KN3Zz2Yg1u6RIKFioUWt8fs3wmebt266l686MXTi5cLVAUw9nVTIiDDeNYSVl549PuSlkkGiv0Zd8lYR6Lriy2Bk5NgXoChNo72q19c44D9xp3LtoPhsCKX29EIHVK9yYjpk15FQx6uv/S2F4RzzFUFDSB/ySpSwCGExStva+yKNPThFmUwUQux8d4qUiuCEuyJZ+IuHUtAuyUQoH24TFM68eUOX6dOeyzYWI4rInI+mzkkQ26qPdf+SElBlNbK9qdpb5NYBdHGdWAzQymitP7NPyCLxM/vSBsMsAeW3PSua2LNIhPyqPojMjTpFG5QhikaihIJbC0M0m89nl6Ma0vHmUjetD4yq1lbahkgoS5sNEJuTHGjFtKQmof4VBsxiWSLRoIaUgLeiQ8XVxHRk6hkFsffdhKyhH9v39UTzLaMoN4JcVCx/NhyjuNidiQ3Wv06ofQEBEtWHfzzHxmjp9FsmegBEuFVH81HPpQZl+Vk1GX3oTfOy+kFfOFXaXw7JjjZ7shjzmTjUTMfz9OsLIjD1Sn+/49Y397xZPUd/uPYOhoCqhawvTLgv13jD7hqUZ7FsXey2GwwixLzOvAqBDCYr/v/qCYTmAJhzDc4teVe7jnNHcBFFUo623LnfjessFyZckogajEQBVLAGL/+i3H8Rp8ZpcxoymWwUmn/clQ+cdjRnYe0akyL8GIL9OihfG4WdG6arrj/YCFIVbp1POck3S/kkFsiFpKKYmqKP1ofeQ3gs8+fgULLJVklMlkpH+6j3OSZuYt1tEg4YQ159uYwvb9Lv+KBD+k2SUNIdvfr1bxtW7aiNIqPIE0OC83j5x5MBToH56sZTQi/h0qpBHiB6JMnz0L2j7WvH4gNfoRkPHYbqOHCG2Ks1tuT2CYr4A6CV3d1bvC0942bS8uBNGV1NtSmt9KWoYGl5qASxpYhigEkZL7rTS1KLX0uZJqTHne5R6upQ3b5h/1xCtzBscIWbX8bLCIJ+16BL5eFdu3bmMshky3l687YzWOl1O+ahXrMayzKRjPlpBucT2h2J1MPopqxN6b3eZ6hsi9kl9/qqOs3GCpjdgdTiGQBy0gIVZRMn84G47GrsUMH4RelISzVoNY+IGN5Vvv9fb1+5RL0Wjh9mhO8nekJBauScT2fhy8yrEUKhxuwuRBNMevKtmpIWOrCdfhbtEHliYHXRWNy1nPOQysKA1Cc5YWIeW59qhWycQVX811t/5QUt9otURi2OzzWRdtdrmMc5BYD39tZf5GbCEiLTicIrV8ftXO6TdO/c/NRFoJImNF9v/EznpO5Dn7laeq01/j4Mgisn+mSMyEU/P2emCxnBGpXsMJgBSdw84BW+pBdLEHXkPmze7LfCd4tzBtmV12dfGd+3X2cVEUxt27rFBVLaW3z5JguiRC/eNveBsLYj8Vq+kwvP0oT4PS3OF8Gney9t4Bg0QzACnhdH94lUxros+/Gd43FURY8gyUact4MnXz7DuqelV3VBzDDMIvlmqKYsZhfEbnSF04dx85AyvR6oz1I+U4EMm///p90EM=")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 3e1109b..6a259fc 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.24 +// Hprose for HTML5 v2.0.25 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -5475,7 +5475,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5573,11 +5573,6 @@ ws.onclose = onclose; } function sendAndReceive(request, env) { - if (ws === null || - ws.readyState === WebSocket.CLOSING || - ws.readyState === WebSocket.CLOSED) { - connect(); - } var id = getNextId(); var future = new Future(); _futures[id] = future; @@ -5591,6 +5586,11 @@ return e instanceof TimeoutError; }); } + if (ws === null || + ws.readyState === WebSocket.CLOSING || + ws.readyState === WebSocket.CLOSED) { + connect(); + } if (_count < 100) { ++_count; _ready.then(function() { send(id, request); }); diff --git a/package.json b/package.json index ff2e64f..7c23254 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.24", + "version": "2.0.25", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index a31b6b4..fe4046e 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.24 +// Hprose for HTML5 v2.0.25 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index a59a44a..1791ecb 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Nov 16, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -101,6 +101,7 @@ ws = null; } function connect() { + _ready = new Future(); ws = new WebSocket(self.uri); ws.binaryType = 'arraybuffer'; ws.onopen = onopen; @@ -109,11 +110,6 @@ ws.onclose = onclose; } function sendAndReceive(request, env) { - if (ws === null || - ws.readyState === WebSocket.CLOSING || - ws.readyState === WebSocket.CLOSED) { - _ready = new Future(); - } var id = getNextId(); var future = new Future(); _futures[id] = future; @@ -127,6 +123,11 @@ return e instanceof TimeoutError; }); } + if (ws === null || + ws.readyState === WebSocket.CLOSING || + ws.readyState === WebSocket.CLOSED) { + connect(); + } if (_count < 100) { ++_count; _ready.then(function() { send(id, request); }); @@ -134,11 +135,6 @@ else { _requests.push([id, request]); } - if (ws === null || - ws.readyState === WebSocket.CLOSING || - ws.readyState === WebSocket.CLOSED) { - connect(); - } if (env.oneway) { future.resolve(); } return future; }