From 19edebc7b85a4c53684cb29111dfe5413d56808a Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 2 Dec 2016 22:53:23 +0800 Subject: [PATCH] Added httpHeader support for http client Renamed env to context Fixed APICloud Http Client --- bower.json | 2 +- dist/hprose-html5.js | 8 +- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 262 +++++++++++++++++++++++++++++++++------ gulpfile.js | 1 + package.json | 51 +++++--- src/CookieManager.js | 120 ++++++++++++++++++ src/CopyRight.js | 2 +- src/HttpClient.js | 95 +++++++++++--- src/TcpClient.js | 34 ++--- src/WebSocketClient.js | 10 +- 11 files changed, 483 insertions(+), 104 deletions(-) create mode 100644 src/CookieManager.js diff --git a/bower.json b/bower.json index 5d59b43..4160d57 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.29", + "version": "2.0.30", "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 d392296..30b9f4d 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.29 +// Hprose for HTML5 v2.0.30 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self: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),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,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-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=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,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,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 u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.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,u=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}},s.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}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.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}},s.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,s.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=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&K(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return V(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function j(e){if(T(e)||b(e))return B(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function O(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function S(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function E(e){return T(e)||b(e)?B(e):o(e)}function B(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?j(e.value):E(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=te.call(arguments,1);e=e.apply(o,a)}if(!e||"function"!=typeof e.next)return E(e);var u=new n;return t(),u}function A(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?B.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){K(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function z(e,t,r){e?D(e,t,r):t.resolve(r)}function q(e,t,r){e?D(e,t,r):t.reject(r)}function H(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,$="Promise"in t,K=t.setImmediate,V=t.setTimeout,X=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;B.wrap=A,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:E},join:{value:v},any:{value:y},settle:{value:d},attempt:{value:w},run:{value:m},thunkify:{value:O},promisify:{value:S},co:{value:B},wrap:{value:A},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:x},map:{value:R},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(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 n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();z(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();q(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?z(e,r,this._value):this._state===J?q(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){K(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J: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 e=e||function(e){return e},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 r=new n,i=V(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){X(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){V(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 p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=O,e.promisify=S,e.co=B,e.co.wrap=e.wrap=A,e.Completer=H,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},$||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),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|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++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&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"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=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"+u.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 u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(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 u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.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=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(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=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(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 u(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.BytesIO=f}(hprose),function(e){"use strict";e.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}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.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&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}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 c(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 f(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 l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(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),u=("00"+t.getUTCMinutes()).slice(-2),s=("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+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function p(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),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"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+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function v(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 g(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 y(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 d(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 a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.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=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(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 te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}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 te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(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 te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(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===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.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===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(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,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.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 R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),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.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(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 S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(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 f(t),i=new h(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"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&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?p.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),p.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===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(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=p.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 p.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 f);return r.writeByte(s.TagEnd),p.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.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 p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.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===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)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 ue(e){nt=!!e}function se(){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,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);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 Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else p.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(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){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.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 p.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 p.sync(function(){return t(r,n,e)})}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.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=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=v,ut=_,st=[],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:se,set:ue},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:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=v(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 a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),v&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,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!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f})),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 p(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?p(e,r):l(e,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!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,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 o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,p="undefined"!=typeof h,v=!l&&p&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;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 t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.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 c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;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 f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.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 u;return this.socketId.then(function(n){c.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){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.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(a(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){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(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){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=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===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){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 h(){return T}function v(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.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:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:y}})}function c(e){var t=d(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 f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.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={},i(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(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},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(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),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(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.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(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),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?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),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 u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?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(s.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===S){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.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[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,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?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,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"),u=y.call(i,"finallyLoc");if(a&&u){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),E}},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},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self: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),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,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-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=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,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,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 u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.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,u=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}},s.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}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.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}},s.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,s.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=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=te.call(arguments,1);e=e.apply(o,a)}if(!e||"function"!=typeof e.next)return S(e);var u=new n;return t(),u}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(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 n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J: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 e=e||function(e){return e},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 r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(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 p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),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|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++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&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"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=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"+u.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 u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(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 u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.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=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(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=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(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 u(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.BytesIO=f}(hprose),function(e){"use strict";e.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}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=A.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&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(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),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(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),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(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(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.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=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}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 te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(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 te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(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 te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(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===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.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===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(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,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.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 te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),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.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(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 O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(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"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&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?p.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,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(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=p.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 p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.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 z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.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 Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)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 V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){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===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);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,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){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){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.sync(function(){return t(r,n,i,e)})}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.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,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(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:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(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 a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(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,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;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 f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.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 u;return this.socketId.then(function(n){c.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){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.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(a(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){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(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){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=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===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){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 h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(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 f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.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={},i(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(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},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(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),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(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.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(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),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?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),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 u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?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(s.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===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.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=O,f;n[u.resultName]=f.value,n.next=u.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=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;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=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.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 6843439..8568f36 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)("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")); \ 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 7efb15e..127dc00 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.29 +// Hprose for HTML5 v2.0.30 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -5259,6 +5259,127 @@ hprose.global = ( })(hprose, hprose.global); +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * CookieManager.js * + * * + * hprose CookieManager for HTML5. * + * * + * LastModified: Dec 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (hprose) { + 'use strict'; + + var parseuri = hprose.parseuri; + + var s_cookieManager = {}; + + function setCookie(headers, uri) { + var parser = parseuri(uri); + var host = parser.host; + var name, values; + function _setCookie(value) { + var cookies, cookie, i; + cookies = value.replace(/(^\s*)|(\s*$)/g, '').split(';'); + cookie = {}; + value = cookies[0].replace(/(^\s*)|(\s*$)/g, '').split('=', 2); + if (value[1] === undefined) { value[1] = null; } + cookie.name = value[0]; + cookie.value = value[1]; + for (i = 1; i < cookies.length; i++) { + value = cookies[i].replace(/(^\s*)|(\s*$)/g, '').split('=', 2); + if (value[1] === undefined) { value[1] = null; } + cookie[value[0].toUpperCase()] = value[1]; + } + // Tomcat can return SetCookie2 with path wrapped in " + if (cookie.PATH) { + if (cookie.PATH.charAt(0) === '"') { + cookie.PATH = cookie.PATH.substr(1); + } + if (cookie.PATH.charAt(cookie.PATH.length - 1) === '"') { + cookie.PATH = cookie.PATH.substr(0, cookie.PATH.length - 1); + } + } + else { + cookie.PATH = '/'; + } + if (cookie.EXPIRES) { + cookie.EXPIRES = Date.parse(cookie.EXPIRES); + } + if (cookie.DOMAIN) { + cookie.DOMAIN = cookie.DOMAIN.toLowerCase(); + } + else { + cookie.DOMAIN = host; + } + cookie.SECURE = (cookie.SECURE !== undefined); + if (s_cookieManager[cookie.DOMAIN] === undefined) { + s_cookieManager[cookie.DOMAIN] = {}; + } + s_cookieManager[cookie.DOMAIN][cookie.name] = cookie; + } + for (name in headers) { + values = headers[name]; + name = name.toLowerCase(); + if ((name === 'set-cookie') || (name === 'set-cookie2')) { + if (typeof(values) === 'string') { + values = [values]; + } + values.forEach(_setCookie); + } + } + } + + function getCookie(uri) { + var parser = parseuri(uri); + var host = parser.host; + var path = parser.path; + var secure = (parser.protocol === 'https:'); + var cookies = []; + for (var domain in s_cookieManager) { + if (host.indexOf(domain) > -1) { + var names = []; + for (var name in s_cookieManager[domain]) { + var cookie = s_cookieManager[domain][name]; + if (cookie.EXPIRES && ((new Date()).getTime() > cookie.EXPIRES)) { + names.push(name); + } + else if (path.indexOf(cookie.PATH) === 0) { + if (((secure && cookie.SECURE) || + !cookie.SECURE) && (cookie.value !== null)) { + cookies.push(cookie.name + '=' + cookie.value); + } + } + } + for (var i in names) { + delete s_cookieManager[domain][names[i]]; + } + } + } + if (cookies.length > 0) { + return cookies.join('; '); + } + return ''; + } + + hprose.cookieManager = { + setCookie: setCookie, + getCookie: getCookie + }; +})(hprose); + /**********************************************************\ | | | hprose | @@ -5273,7 +5394,7 @@ hprose.global = ( * * * hprose http client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5290,9 +5411,36 @@ hprose.global = ( var nativeXHR = (typeof(XMLHttpRequest) !== 'undefined'); var corsSupport = (!localfile && nativeXHR && 'withCredentials' in new XMLHttpRequest()); var parseuri = hprose.parseuri; + var cookieManager = hprose.cookieManager; function noop(){} + function getResponseHeader(headers) { + var header = Object.create(null); + if (headers) { + headers = headers.split("\r\n"); + for (var i = 0, n = headers.length; i < n; i++) { + if (headers[i] !== "") { + var kv = headers[i].split(": ", 2); + var k = kv[0].trim(); + var v = kv[1].trim(); + if (k in header) { + if (Array.isArray(header[k])) { + header[k].push(v); + } + else { + header[k] = [header[k], v]; + } + } + else { + header[k] = v; + } + } + } + } + return header; + } + function HttpClient(uri, functions, settings) { if (this.constructor !== HttpClient) { return new HttpClient(uri, functions, settings); @@ -5304,7 +5452,27 @@ hprose.global = ( var self = this; - function xhrPost(request, env) { + function getRequestHeader(headers) { + var header = Object.create(null); + var name, value; + for (name in _header) { + header[name] = _header[name]; + } + if (headers) { + for (name in headers) { + value = headers[name]; + if (Array.isArray(value)) { + header[name] = value.join(', '); + } + else { + header[name] = value; + } + } + } + return header; + } + + function xhrPost(request, context) { var future = new Future(); var xhr = new XMLHttpRequest(); xhr.open('POST', self.uri, true); @@ -5312,12 +5480,15 @@ hprose.global = ( xhr.withCredentials = 'true'; } xhr.responseType = 'arraybuffer'; - for (var name in _header) { - xhr.setRequestHeader(name, _header[name]); + var header = getRequestHeader(context.httpHeader); + for (var name in header) { + xhr.setRequestHeader(name, header[name]); } xhr.onload = function() { xhr.onload = noop; if (xhr.status) { + var headers = xhr.getAllResponseHeaders(); + context.httpHeader = getResponseHeader(headers); if (xhr.status === 200) { future.resolve(new Uint8Array(xhr.response)); } @@ -5333,8 +5504,8 @@ hprose.global = ( xhr.upload.onprogress = _onreqprogress; } xhr.onprogress = _onresprogress; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { + if (context.timeout > 0) { + future = future.timeout(context.timeout).catchError(function(e) { xhr.onload = noop; xhr.onerror = noop; xhr.abort(); @@ -5358,33 +5529,46 @@ hprose.global = ( return future; } - function apiPost(request, env) { + function apiPost(request, context) { var future = new Future(); + var header = getRequestHeader(context.httpHeader); + var cookie = cookieManager.getCookie(self.uri()); + if (cookie !== '') { + header['Cookie'] = cookie; + } global.api.ajax({ - url: self.uri(), + url: self.uri, method: 'post', data: { body: BytesIO.toString(request) }, - timeout: env.timeout, + timeout: context.timeout, dataType: 'text', - headers: _header, + headers: header, + returnAll: true, certificate: self.certificate }, function(ret, err) { if (ret) { - future.resolve((new BytesIO(ret)).takeBytes()); + context.httpHeader = ret.headers; + if (ret.statusCode === 200) { + cookieManager.setCookie(ret.headers, self.uri); + future.resolve((new BytesIO(ret.body)).takeBytes()); + } + else { + future.reject(new Error(ret.statusCode+':'+ret.body)); + } } else { future.reject(new Error(err.msg)); - } + } }); return future; } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var apicloud = (typeof(global.api) !== "undefined" && typeof(global.api.ajax) !== "undefined"); - var future = apicloud ? apiPost(request, env) : - xhrPost(request, env); - if (env.oneway) { future.resolve(); } + var future = apicloud ? apiPost(request, context) : + xhrPost(request, context); + if (context.oneway) { future.resolve(); } return future; } @@ -5466,7 +5650,7 @@ hprose.global = ( * * * hprose websocket client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5563,12 +5747,12 @@ hprose.global = ( ws.onerror = noop; ws.onclose = onclose; } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var id = getNextId(); var future = new Future(); _futures[id] = future; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { + if (context.timeout > 0) { + future = future.timeout(context.timeout).catchError(function(e) { delete _futures[id]; --_count; throw e; @@ -5589,7 +5773,7 @@ hprose.global = ( else { _requests.push([id, request]); } - if (env.oneway) { future.resolve(); } + if (context.oneway) { future.resolve(); } return future; } function close() { @@ -5964,7 +6148,7 @@ hprose.global = ( * * * hprose tcp client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -6155,9 +6339,9 @@ hprose.global = ( } } } }, - send: { value: function(request, future, id, env, conn) { + send: { value: function(request, future, id, context, conn) { var self = this; - var timeout = env.timeout; + var timeout = context.timeout; if (timeout > 0) { conn.timeoutIds[id] = global.setTimeout(function() { self.clean(conn, id); @@ -6182,11 +6366,11 @@ hprose.global = ( getNextId: { value: function() { return (this.nextid < 0x7fffffff) ? ++this.nextid : this.nextid = 0; } }, - sendAndReceive: { value: function(request, future, env) { + sendAndReceive: { value: function(request, future, context) { var conn = this.fetch(); var id = this.getNextId(); if (conn) { - this.send(request, future, id, env, conn); + this.send(request, future, id, context, conn); } else if (this.size < this.client.maxPoolSize) { conn = this.create(); @@ -6196,11 +6380,11 @@ hprose.global = ( var self = this; conn.onconnect = function() { self.init(conn); - self.send(request, future, id, env, conn); + self.send(request, future, id, context, conn); }; } else { - this.requests.push([request, future, id, env]); + this.requests.push([request, future, id, context]); } } } }); @@ -6252,9 +6436,9 @@ hprose.global = ( this.recycle(conn); } } }, - send: { value: function(request, future, env, conn) { + send: { value: function(request, future, context, conn) { var self = this; - var timeout = env.timeout; + var timeout = context.timeout; if (timeout > 0) { conn.timeoutId = global.setTimeout(function() { self.clean(conn); @@ -6278,10 +6462,10 @@ hprose.global = ( buf.write(request); conn.send(buf.buffer); } }, - sendAndReceive: { value: function(request, future, env) { + sendAndReceive: { value: function(request, future, context) { var conn = this.fetch(); if (conn) { - this.send(request, future, env, conn); + this.send(request, future, context, conn); } else if (this.size < this.client.maxPoolSize) { conn = this.create(); @@ -6290,11 +6474,11 @@ hprose.global = ( future.reject(e); }; conn.onconnect = function() { - self.send(request, future, env, conn); + self.send(request, future, context, conn); }; } else { - this.requests.push([request, future, env]); + this.requests.push([request, future, context]); } } } }); @@ -6360,21 +6544,21 @@ hprose.global = ( } } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var future = new Future(); if (_fullDuplex) { if ((fdtrans === null) || (fdtrans.uri !== self.uri)) { fdtrans = new FullDuplexTcpTransporter(self); } - fdtrans.sendAndReceive(request, future, env); + fdtrans.sendAndReceive(request, future, context); } else { if ((hdtrans === null) || (hdtrans.uri !== self.uri)) { hdtrans = new HalfDuplexTcpTransporter(self); } - hdtrans.sendAndReceive(request, future, env); + hdtrans.sendAndReceive(request, future, context); } - if (env.oneway) { future.resolve(); } + if (context.oneway) { future.resolve(); } return future; } diff --git a/gulpfile.js b/gulpfile.js index 5e4a91b..cf47b0a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -27,6 +27,7 @@ gulp.task('concat', ['clear'], function() { 'src/Formatter.js', 'src/ResultMode.js', 'src/Client.js', + 'src/CookieManager.js', 'src/HttpClient.js', 'src/WebSocketClient.js', 'src/ChromeTcpSocket.js', diff --git a/package.json b/package.json index b80048e..975a964 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,8 @@ { "name": "hprose-html5", - "filename": "hprose-html5.js", - "version": "2.0.29", + "version": "2.0.30", "description": "Hprose is a High Performance Remote Object Service Engine.", - "homepage": "https://github.com/andot/hprose", + "homepage": "https://github.com/hprose/hprose-html5", "keywords": [ "hprose", "rpc", @@ -42,25 +41,37 @@ "oneway", "promises-aplus" ], - "maintainers": [ - { - "name" : "Ma Bingyao", - "email" : "andot@hprose.com", - "web": "http://hprose.com/" - } - ], - "repositories": [ - { - "type": "git", - "url": "https://github.com/hprose/hprose-html5.git" - } - ], + "author": { + "name": "Ma Bingyao", + "email": "andot@hprose.com", + "url": "http://hprose.com/" + }, + "directories": { + "lib": "dist/" + }, + "main": "dist/hprose-html5.js", + "devDependencies": { + "promises-aplus-tests": "*" + }, + "scripts": { + "aplus-tests": "promises-aplus-tests dist/hprose-html5.js" + }, + "engines": { + "node": "*" + }, + "repository": { + "type": "git", + "url": "https://github.com/hprose/hprose-html5.git" + }, "autoupdate": { "source": "git", "target": "git://github.com/hprose/hprose-html5.git", "basePath": "dist/", - "files": [ - "hprose-html5.js" - ] - } + "files": [ "hprose-html5.js" ] + }, + "bugs": { + "url": "https://github.com/hprose/hprose-html5/issues", + "email": "andot@hprose.com" + }, + "license" : "MIT" } diff --git a/src/CookieManager.js b/src/CookieManager.js new file mode 100644 index 0000000..1414c1a --- /dev/null +++ b/src/CookieManager.js @@ -0,0 +1,120 @@ +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * CookieManager.js * + * * + * hprose CookieManager for HTML5. * + * * + * LastModified: Dec 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (hprose) { + 'use strict'; + + var parseuri = hprose.parseuri; + + var s_cookieManager = {}; + + function setCookie(headers, uri) { + var parser = parseuri(uri); + var host = parser.host; + var name, values; + function _setCookie(value) { + var cookies, cookie, i; + cookies = value.replace(/(^\s*)|(\s*$)/g, '').split(';'); + cookie = {}; + value = cookies[0].replace(/(^\s*)|(\s*$)/g, '').split('=', 2); + if (value[1] === undefined) { value[1] = null; } + cookie.name = value[0]; + cookie.value = value[1]; + for (i = 1; i < cookies.length; i++) { + value = cookies[i].replace(/(^\s*)|(\s*$)/g, '').split('=', 2); + if (value[1] === undefined) { value[1] = null; } + cookie[value[0].toUpperCase()] = value[1]; + } + // Tomcat can return SetCookie2 with path wrapped in " + if (cookie.PATH) { + if (cookie.PATH.charAt(0) === '"') { + cookie.PATH = cookie.PATH.substr(1); + } + if (cookie.PATH.charAt(cookie.PATH.length - 1) === '"') { + cookie.PATH = cookie.PATH.substr(0, cookie.PATH.length - 1); + } + } + else { + cookie.PATH = '/'; + } + if (cookie.EXPIRES) { + cookie.EXPIRES = Date.parse(cookie.EXPIRES); + } + if (cookie.DOMAIN) { + cookie.DOMAIN = cookie.DOMAIN.toLowerCase(); + } + else { + cookie.DOMAIN = host; + } + cookie.SECURE = (cookie.SECURE !== undefined); + if (s_cookieManager[cookie.DOMAIN] === undefined) { + s_cookieManager[cookie.DOMAIN] = {}; + } + s_cookieManager[cookie.DOMAIN][cookie.name] = cookie; + } + for (name in headers) { + values = headers[name]; + name = name.toLowerCase(); + if ((name === 'set-cookie') || (name === 'set-cookie2')) { + if (typeof(values) === 'string') { + values = [values]; + } + values.forEach(_setCookie); + } + } + } + + function getCookie(uri) { + var parser = parseuri(uri); + var host = parser.host; + var path = parser.path; + var secure = (parser.protocol === 'https:'); + var cookies = []; + for (var domain in s_cookieManager) { + if (host.indexOf(domain) > -1) { + var names = []; + for (var name in s_cookieManager[domain]) { + var cookie = s_cookieManager[domain][name]; + if (cookie.EXPIRES && ((new Date()).getTime() > cookie.EXPIRES)) { + names.push(name); + } + else if (path.indexOf(cookie.PATH) === 0) { + if (((secure && cookie.SECURE) || + !cookie.SECURE) && (cookie.value !== null)) { + cookies.push(cookie.name + '=' + cookie.value); + } + } + } + for (var i in names) { + delete s_cookieManager[domain][names[i]]; + } + } + } + if (cookies.length > 0) { + return cookies.join('; '); + } + return ''; + } + + hprose.cookieManager = { + setCookie: setCookie, + getCookie: getCookie + }; +})(hprose); diff --git a/src/CopyRight.js b/src/CopyRight.js index 5465baa..104d9ff 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.29 +// Hprose for HTML5 v2.0.30 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/HttpClient.js b/src/HttpClient.js index d8049c5..569deb1 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,7 +12,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -29,9 +29,36 @@ var nativeXHR = (typeof(XMLHttpRequest) !== 'undefined'); var corsSupport = (!localfile && nativeXHR && 'withCredentials' in new XMLHttpRequest()); var parseuri = hprose.parseuri; + var cookieManager = hprose.cookieManager; function noop(){} + function getResponseHeader(headers) { + var header = Object.create(null); + if (headers) { + headers = headers.split("\r\n"); + for (var i = 0, n = headers.length; i < n; i++) { + if (headers[i] !== "") { + var kv = headers[i].split(": ", 2); + var k = kv[0].trim(); + var v = kv[1].trim(); + if (k in header) { + if (Array.isArray(header[k])) { + header[k].push(v); + } + else { + header[k] = [header[k], v]; + } + } + else { + header[k] = v; + } + } + } + } + return header; + } + function HttpClient(uri, functions, settings) { if (this.constructor !== HttpClient) { return new HttpClient(uri, functions, settings); @@ -43,7 +70,27 @@ var self = this; - function xhrPost(request, env) { + function getRequestHeader(headers) { + var header = Object.create(null); + var name, value; + for (name in _header) { + header[name] = _header[name]; + } + if (headers) { + for (name in headers) { + value = headers[name]; + if (Array.isArray(value)) { + header[name] = value.join(', '); + } + else { + header[name] = value; + } + } + } + return header; + } + + function xhrPost(request, context) { var future = new Future(); var xhr = new XMLHttpRequest(); xhr.open('POST', self.uri, true); @@ -51,12 +98,15 @@ xhr.withCredentials = 'true'; } xhr.responseType = 'arraybuffer'; - for (var name in _header) { - xhr.setRequestHeader(name, _header[name]); + var header = getRequestHeader(context.httpHeader); + for (var name in header) { + xhr.setRequestHeader(name, header[name]); } xhr.onload = function() { xhr.onload = noop; if (xhr.status) { + var headers = xhr.getAllResponseHeaders(); + context.httpHeader = getResponseHeader(headers); if (xhr.status === 200) { future.resolve(new Uint8Array(xhr.response)); } @@ -72,8 +122,8 @@ xhr.upload.onprogress = _onreqprogress; } xhr.onprogress = _onresprogress; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { + if (context.timeout > 0) { + future = future.timeout(context.timeout).catchError(function(e) { xhr.onload = noop; xhr.onerror = noop; xhr.abort(); @@ -97,33 +147,46 @@ return future; } - function apiPost(request, env) { + function apiPost(request, context) { var future = new Future(); + var header = getRequestHeader(context.httpHeader); + var cookie = cookieManager.getCookie(self.uri()); + if (cookie !== '') { + header['Cookie'] = cookie; + } global.api.ajax({ - url: self.uri(), + url: self.uri, method: 'post', data: { body: BytesIO.toString(request) }, - timeout: env.timeout, + timeout: context.timeout, dataType: 'text', - headers: _header, + headers: header, + returnAll: true, certificate: self.certificate }, function(ret, err) { if (ret) { - future.resolve((new BytesIO(ret)).takeBytes()); + context.httpHeader = ret.headers; + if (ret.statusCode === 200) { + cookieManager.setCookie(ret.headers, self.uri); + future.resolve((new BytesIO(ret.body)).takeBytes()); + } + else { + future.reject(new Error(ret.statusCode+':'+ret.body)); + } } else { future.reject(new Error(err.msg)); - } + } }); return future; } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var apicloud = (typeof(global.api) !== "undefined" && typeof(global.api.ajax) !== "undefined"); - var future = apicloud ? apiPost(request, env) : - xhrPost(request, env); - if (env.oneway) { future.resolve(); } + var future = apicloud ? apiPost(request, context) : + xhrPost(request, context); + if (context.oneway) { future.resolve(); } return future; } diff --git a/src/TcpClient.js b/src/TcpClient.js index 1816e3e..964a4e8 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -203,9 +203,9 @@ } } } }, - send: { value: function(request, future, id, env, conn) { + send: { value: function(request, future, id, context, conn) { var self = this; - var timeout = env.timeout; + var timeout = context.timeout; if (timeout > 0) { conn.timeoutIds[id] = global.setTimeout(function() { self.clean(conn, id); @@ -230,11 +230,11 @@ getNextId: { value: function() { return (this.nextid < 0x7fffffff) ? ++this.nextid : this.nextid = 0; } }, - sendAndReceive: { value: function(request, future, env) { + sendAndReceive: { value: function(request, future, context) { var conn = this.fetch(); var id = this.getNextId(); if (conn) { - this.send(request, future, id, env, conn); + this.send(request, future, id, context, conn); } else if (this.size < this.client.maxPoolSize) { conn = this.create(); @@ -244,11 +244,11 @@ var self = this; conn.onconnect = function() { self.init(conn); - self.send(request, future, id, env, conn); + self.send(request, future, id, context, conn); }; } else { - this.requests.push([request, future, id, env]); + this.requests.push([request, future, id, context]); } } } }); @@ -300,9 +300,9 @@ this.recycle(conn); } } }, - send: { value: function(request, future, env, conn) { + send: { value: function(request, future, context, conn) { var self = this; - var timeout = env.timeout; + var timeout = context.timeout; if (timeout > 0) { conn.timeoutId = global.setTimeout(function() { self.clean(conn); @@ -326,10 +326,10 @@ buf.write(request); conn.send(buf.buffer); } }, - sendAndReceive: { value: function(request, future, env) { + sendAndReceive: { value: function(request, future, context) { var conn = this.fetch(); if (conn) { - this.send(request, future, env, conn); + this.send(request, future, context, conn); } else if (this.size < this.client.maxPoolSize) { conn = this.create(); @@ -338,11 +338,11 @@ future.reject(e); }; conn.onconnect = function() { - self.send(request, future, env, conn); + self.send(request, future, context, conn); }; } else { - this.requests.push([request, future, env]); + this.requests.push([request, future, context]); } } } }); @@ -408,21 +408,21 @@ } } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var future = new Future(); if (_fullDuplex) { if ((fdtrans === null) || (fdtrans.uri !== self.uri)) { fdtrans = new FullDuplexTcpTransporter(self); } - fdtrans.sendAndReceive(request, future, env); + fdtrans.sendAndReceive(request, future, context); } else { if ((hdtrans === null) || (hdtrans.uri !== self.uri)) { hdtrans = new HalfDuplexTcpTransporter(self); } - hdtrans.sendAndReceive(request, future, env); + hdtrans.sendAndReceive(request, future, context); } - if (env.oneway) { future.resolve(); } + if (context.oneway) { future.resolve(); } return future; } diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index f4e264f..7725319 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -109,12 +109,12 @@ ws.onerror = noop; ws.onclose = onclose; } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var id = getNextId(); var future = new Future(); _futures[id] = future; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { + if (context.timeout > 0) { + future = future.timeout(context.timeout).catchError(function(e) { delete _futures[id]; --_count; throw e; @@ -135,7 +135,7 @@ else { _requests.push([id, request]); } - if (env.oneway) { future.resolve(); } + if (context.oneway) { future.resolve(); } return future; } function close() {