diff --git a/bower.json b/bower.json index 0ad5353d9..7e61ae825 100755 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "opengate-js", "description": "", - "version": "10.6.0", + "version": "10.6.1", "authors": [], "license": "ISC", "homepage": "", diff --git a/dist/opengate-api-bower-10.6.0.min.js b/dist/opengate-api-bower-10.6.0.min.js deleted file mode 100755 index 29dd31220..000000000 --- a/dist/opengate-api-bower-10.6.0.min.js +++ /dev/null @@ -1,38 +0,0 @@ -!function e(t,r,n){function i(a,s){if(!r[a]){if(!t[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);throw new Error("Cannot find module '"+a+"'")}var c=r[a]={exports:{}};t[a][0].call(c.exports,function(e){var r=t[a][1][e];return i(r||e)},c,c.exports,e,t,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a=1&&n<=12&&o>=1&&o<=(2==n&&i(r)?29:d[n])}function a(e,t){var r=e.match(h);if(!r)return!1;var n=r[1],i=r[2],o=r[3],a=r[5];return(n<=23&&i<=59&&o<=59||23==n&&59==i&&60==o)&&(!t||a)}function s(e){var t=e.split(S);return 2==t.length&&o(t[0])&&a(t[1],!0)}function u(e){return A.test(e)&&m.test(e)}function c(e){if(P.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}var l=e("./util"),f=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,d=[0,31,28,31,30,31,30,31,31,30,31,30,31],h=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,p=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,m=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,y=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,v=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,g=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,_=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,b=/^(?:\/(?:[^~/]|~0|~1)*)*$/,E=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,w=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;t.exports=n,n.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":v,url:g,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:p,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:_,"json-pointer":b,"json-pointer-uri-fragment":E,"relative-json-pointer":w},n.full={date:o,time:a,"date-time":s,uri:u,"uri-reference":y,"uri-template":v,url:g,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:p,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:_,"json-pointer":b,"json-pointer-uri-fragment":E,"relative-json-pointer":w};var S=/t|\s/i,A=/\/|:/,P=/[^\\]\\Z/},{"./util":12}],7:[function(e,t,r){"use strict";function n(e,t,r,a){function b(){var e=L.validate,t=e.apply(this,arguments);return b.errors=e.errors,t}function E(e,r,i,o){var a=!r||r&&r.schema==e;if(r.schema!=t.schema)return n.call(k,e,r,i,o);var m=!0===e.$async,b=y({isTop:!0,schema:e,isRoot:a,baseId:o,root:r,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:p.MissingRef,RULES:G,validate:y,util:h,resolve:d,resolveRef:w,usePattern:D,useDefault:C,useCustomRule:T,opts:F,formats:z,logger:k.logger,self:k});b=f(j,c)+f(M,s)+f(B,u)+f(N,l)+b,F.processCode&&(b=F.processCode(b));var E;try{E=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",b)(k,G,z,t,j,B,N,g,v,_),j[0]=E}catch(e){throw k.logger.error("Error compiling schema, function code:",b),e}return E.schema=e,E.errors=null,E.refs=x,E.refVal=j,E.root=a?E:r,m&&(E.$async=!0),!0===F.sourceCode&&(E.source={code:b,patterns:M,defaults:B}),E}function w(e,i,o){i=d.url(e,i);var a,s,u=x[i];if(void 0!==u)return a=j[u],s="refVal["+u+"]",O(a,s);if(!o&&t.refs){var c=t.refs[i];if(void 0!==c)return a=t.refVal[c],s=S(i,a),O(a,s)}s=S(i);var l=d.call(k,E,t,i);if(void 0===l){var f=r&&r[i];f&&(l=d.inlineRef(f,F.inlineRefs)?f:n.call(k,f,t,r,e))}if(void 0!==l)return P(i,l),O(l,s);A(i)}function S(e,t){var r=j.length;return j[r]=t,x[e]=r,"refVal"+r}function A(e){delete x[e]}function P(e,t){var r=x[e];j[r]=t}function O(e,t){return"object"==typeof e||"boolean"==typeof e?{code:t,schema:e,inline:!0}:{code:t,$async:e&&!!e.$async}}function D(e){var t=I[e];return void 0===t&&(t=I[e]=M.length,M[t]=e),"pattern"+t}function C(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return h.toQuotedString(e);case"object":if(null===e)return"null";var t=m(e),r=R[t];return void 0===r&&(r=R[t]=B.length,B[r]=e),"default"+r}}function T(e,t,r,n){if(!1!==k._opts.validateSchema){var i=e.definition.dependencies;if(i&&!i.every(function(e){return Object.prototype.hasOwnProperty.call(r,e)}))throw new Error("parent schema must have all required keywords: "+i.join(","));var o=e.definition.validateSchema;if(o){if(!o(t)){var a="keyword schema is invalid: "+k.errorsText(o.errors);if("log"!=k._opts.validateSchema)throw new Error(a);k.logger.error(a)}}}var s,u=e.definition.compile,c=e.definition.inline,l=e.definition.macro;if(u)s=u.call(k,t,r,n);else if(l)s=l.call(k,t,r,n),!1!==F.validateSchema&&k.validateSchema(s,!0);else if(c)s=c.call(k,n,e.keyword,t,r);else if(!(s=e.definition.validate))return;if(void 0===s)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var f=N.length;return N[f]=s,{code:"customRule"+f,validate:s}}var k=this,F=this._opts,j=[void 0],x={},M=[],I={},B=[],R={},N=[];t=t||{schema:e,refVal:j,refs:x};var U=i.call(this,e,t,a),L=this._compilations[U.index];if(U.compiling)return L.callValidate=b;var z=this._formats,G=this.RULES;try{var V=E(e,t,r,a);L.validate=V;var q=L.callValidate;return q&&(q.schema=V.schema,q.errors=null,q.refs=V.refs,q.refVal=V.refVal,q.root=V.root,q.$async=V.$async,F.sourceCode&&(q.source=V.source)),V}finally{o.call(this,e,t,a)}}function i(e,t,r){var n=a.call(this,e,t,r);return n>=0?{index:n,compiling:!0}:(n=this._compilations.length,this._compilations[n]={schema:e,root:t,baseId:r},{index:n,compiling:!1})}function o(e,t,r){var n=a.call(this,e,t,r);n>=0&&this._compilations.splice(n,1)}function a(e,t,r){for(var n=0;n=55296&&t<=56319&&i=t)throw new Error("Cannot access property/index "+n+" levels up, current level is "+t);return r[t-n]}if(n>t)throw new Error("Cannot access data "+n+" levels up, current level is "+t);if(o="data"+(t-n||""),!i)return o}for(var s=o,c=i.split("/"),l=0;l",_=p?">":"<",n=void 0;if(v){var b=e.util.getData(y.$data,s,e.dataPathArr),E="exclusive"+a,w="exclType"+a,S="exclIsNumber"+a,A="op"+a,P="' + "+A+" + '";o+=" var schemaExcl"+a+" = "+b+"; ",b="schemaExcl"+a,o+=" var "+E+"; var "+w+" = typeof "+b+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { ";var n=m,O=O||[];O.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(o+=" , message: '"+m+" should be boolean' "),e.opts.verbose&&(o+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var D=o;o=O.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+D+"]); ":o+=" validate.errors = ["+D+"]; return false; ":o+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+=" } else if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" "+w+" == 'number' ? ( ("+E+" = "+i+" === undefined || "+b+" "+g+"= "+i+") ? "+d+" "+_+"= "+b+" : "+d+" "+_+" "+i+" ) : ( ("+E+" = "+b+" === true) ? "+d+" "+_+"= "+i+" : "+d+" "+_+" "+i+" ) || "+d+" !== "+d+") { var op"+a+" = "+E+" ? '"+g+"' : '"+g+"='; ",void 0===u&&(n=m,l=e.errSchemaPath+"/"+m,i=b,h=v)}else{var S="number"==typeof y,P=g;if(S&&h){var A="'"+P+"'";o+=" if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" ( "+i+" === undefined || "+y+" "+g+"= "+i+" ? "+d+" "+_+"= "+y+" : "+d+" "+_+" "+i+" ) || "+d+" !== "+d+") { "}else{S&&void 0===u?(E=!0,n=m,l=e.errSchemaPath+"/"+m,i=y,_+="="):(S&&(i=Math[p?"min":"max"](y,u)),y===(!S||i)?(E=!0,n=m,l=e.errSchemaPath+"/"+m,_+="="):(E=!1,P+="="));var A="'"+P+"'";o+=" if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" "+d+" "+_+" "+i+" || "+d+" !== "+d+") { "}}n=n||t;var O=O||[];O.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+A+", limit: "+i+", exclusive: "+E+" } ",!1!==e.opts.messages&&(o+=" , message: 'should be "+P+" ",o+=h?"' + "+i:i+"'"),e.opts.verbose&&(o+=" , schema: ",o+=h?"validate.schema"+c:""+u,o+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var D=o;return o=O.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+D+"]); ":o+=" validate.errors = ["+D+"]; return false; ":o+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+=" } ",f&&(o+=" else { "),o}},{}],16:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i,o=" ",a=e.level,s=e.dataLevel,u=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d="data"+(s||""),h=e.opts.$data&&u&&u.$data;h?(o+=" var schema"+a+" = "+e.util.getData(u.$data,s,e.dataPathArr)+"; ",i="schema"+a):i=u;var p="maxItems"==t?">":"<";o+="if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" "+d+".length "+p+" "+i+") { ";var n=t,m=m||[];m.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(o+=" , message: 'should NOT have ",o+="maxItems"==t?"more":"fewer",o+=" than ",o+=h?"' + "+i+" + '":""+u,o+=" items' "),e.opts.verbose&&(o+=" , schema: ",o+=h?"validate.schema"+c:""+u,o+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var y=o;return o=m.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+y+"]); ":o+=" validate.errors = ["+y+"]; return false; ":o+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+="} ",f&&(o+=" else { "),o}},{}],17:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i,o=" ",a=e.level,s=e.dataLevel,u=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d="data"+(s||""),h=e.opts.$data&&u&&u.$data;h?(o+=" var schema"+a+" = "+e.util.getData(u.$data,s,e.dataPathArr)+"; ",i="schema"+a):i=u;var p="maxLength"==t?">":"<";o+="if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),!1===e.opts.unicode?o+=" "+d+".length ":o+=" ucs2length("+d+") ",o+=" "+p+" "+i+") { ";var n=t,m=m||[];m.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(o+=" , message: 'should NOT be ",o+="maxLength"==t?"longer":"shorter",o+=" than ",o+=h?"' + "+i+" + '":""+u,o+=" characters' "),e.opts.verbose&&(o+=" , schema: ",o+=h?"validate.schema"+c:""+u,o+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var y=o;return o=m.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+y+"]); ":o+=" validate.errors = ["+y+"]; return false; ":o+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+="} ",f&&(o+=" else { "),o}},{}],18:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i,o=" ",a=e.level,s=e.dataLevel,u=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d="data"+(s||""),h=e.opts.$data&&u&&u.$data;h?(o+=" var schema"+a+" = "+e.util.getData(u.$data,s,e.dataPathArr)+"; ",i="schema"+a):i=u;var p="maxProperties"==t?">":"<";o+="if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" Object.keys("+d+").length "+p+" "+i+") { ";var n=t,m=m||[];m.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(o+=" , message: 'should NOT have ",o+="maxProperties"==t?"more":"fewer",o+=" than ",o+=h?"' + "+i+" + '":""+u,o+=" properties' "),e.opts.verbose&&(o+=" , schema: ",o+=h?"validate.schema"+c:""+u,o+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var y=o;return o=m.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+y+"]); ":o+=" validate.errors = ["+y+"]; return false; ":o+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+="} ",f&&(o+=" else { "),o}},{}],19:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.schema[t],o=e.schemaPath+e.util.getProperty(t),a=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,u=e.util.copy(e),c="";u.level++;var l="valid"+u.level,f=u.baseId,d=!0,h=i;if(h)for(var p,m=-1,y=h.length-1;m0:e.util.schemaHasRules(p,e.RULES.all))&&(d=!1,u.schema=p,u.schemaPath=o+"["+m+"]",u.errSchemaPath=a+"/"+m,n+=" "+e.validate(u)+" ",u.baseId=f,s&&(n+=" if ("+l+") { ",c+="}"));return s&&(n+=d?" if (true) { ":" "+c.slice(0,-1)+" "),n=e.util.cleanUpCode(n)}},{}],20:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d="errs__"+i,h=e.util.copy(e),p="";h.level++;var m="valid"+h.level;if(a.every(function(t){return e.opts.strictKeywords?"object"==typeof t&&Object.keys(t).length>0:e.util.schemaHasRules(t,e.RULES.all)})){var y=h.baseId;n+=" var "+d+" = errors; var "+f+" = false; ";var v=e.compositeRule;e.compositeRule=h.compositeRule=!0;var g=a;if(g)for(var _,b=-1,E=g.length-1;b0:e.util.schemaHasRules(a,e.RULES.all);if(n+="var "+d+" = errors;var "+f+";",_){var b=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.schema=a,h.schemaPath=s,h.errSchemaPath=u,n+=" var "+p+" = false; for (var "+m+" = 0; "+m+" < "+l+".length; "+m+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var E=l+"["+m+"]";h.dataPathArr[y]=m;var w=e.validate(h);h.baseId=g,e.util.varOccurences(w,v)<2?n+=" "+e.util.varReplace(w,v,E)+" ":n+=" var "+v+" = "+E+"; "+w+" ",n+=" if ("+p+") break; } ",e.compositeRule=h.compositeRule=b,n+=" if (!"+p+") {"}else n+=" if ("+l+".length == 0) {";var S=S||[];S.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: 'should contain a valid item' "),e.opts.verbose&&(n+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var A=n;return n=S.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+A+"]); ":n+=" validate.errors = ["+A+"]; return false; ":n+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { ",_&&(n+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } "),e.opts.allErrors&&(n+=" } "),n=e.util.cleanUpCode(n)}},{}],24:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i,o=" ",a=e.level,s=e.dataLevel,u=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d="data"+(s||""),h="valid"+a,p="errs__"+a,m=e.opts.$data&&u&&u.$data;m?(o+=" var schema"+a+" = "+e.util.getData(u.$data,s,e.dataPathArr)+"; ",i="schema"+a):i=u;var y,v,g,_,b,E=this,w="definition"+a,S=E.definition,A="";if(m&&S.$data){b="keywordValidate"+a;var P=S.validateSchema;o+=" var "+w+" = RULES.custom['"+t+"'].definition; var "+b+" = "+w+".validate;"}else{if(!(_=e.useCustomRule(E,u,e.schema,e)))return;i="validate.schema"+c,b=_.code,y=S.compile,v=S.inline,g=S.macro}var O=b+".errors",D="i"+a,C="ruleErr"+a,T=S.async;if(T&&!e.async)throw new Error("async keyword in sync schema");if(v||g||(o+=O+" = null;"),o+="var "+p+" = errors;var "+h+";",m&&S.$data&&(A+="}",o+=" if ("+i+" === undefined) { "+h+" = true; } else { ",P&&(A+="}",o+=" "+h+" = "+w+".validateSchema("+i+"); if ("+h+") { ")),v)S.statements?o+=" "+_.validate+" ":o+=" "+h+" = "+_.validate+"; ";else if(g){var k=e.util.copy(e),A="";k.level++;var F="valid"+k.level;k.schema=_.validate,k.schemaPath="";var j=e.compositeRule;e.compositeRule=k.compositeRule=!0;var x=e.validate(k).replace(/validate\.schema/g,b);e.compositeRule=k.compositeRule=j,o+=" "+x}else{var M=M||[];M.push(o),o="",o+=" "+b+".call( ",e.opts.passContext?o+="this":o+="self",y||!1===S.schema?o+=" , "+d+" ":o+=" , "+i+" , "+d+" , validate.schema"+e.schemaPath+" ",o+=" , (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var I=s?"data"+(s-1||""):"parentData",B=s?e.dataPathArr[s]:"parentDataProperty";o+=" , "+I+" , "+B+" , rootData ) ";var R=o;o=M.pop(),!1===S.errors?(o+=" "+h+" = ",T&&(o+="await "),o+=R+"; "):T?(O="customErrors"+a,o+=" var "+O+" = null; try { "+h+" = await "+R+"; } catch (e) { "+h+" = false; if (e instanceof ValidationError) "+O+" = e.errors; else throw e; } "):o+=" "+O+" = null; "+h+" = "+R+"; "}if(S.modifying&&(o+=" if ("+I+") "+d+" = "+I+"["+B+"];"),o+=""+A,S.valid)f&&(o+=" if (true) { ");else{o+=" if ( ",void 0===S.valid?(o+=" !",o+=g?""+F:""+h):o+=" "+!S.valid+" ",o+=") { ",n=E.keyword;var M=M||[];M.push(o),o="";var M=M||[];M.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { keyword: '"+E.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+E.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var N=o;o=M.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+N+"]); ":o+=" validate.errors = ["+N+"]; return false; ":o+=" var err = "+N+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var U=o;o=M.pop(),v?S.errors?"full"!=S.errors&&(o+=" for (var "+D+"="+p+"; "+D+"0:e.util.schemaHasRules(g,e.RULES.all))&&(n+=" "+p+" = true; if ( "+l+e.util.getProperty(E)+" !== undefined ",v&&(n+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(E)+"') "),n+=") { ",d.schema=g,d.schemaPath=s+e.util.getProperty(E),d.errSchemaPath=u+"/"+e.util.escapeFragment(E),n+=" "+e.validate(d)+" ",d.baseId=I,n+=" } ",c&&(n+=" if ("+p+") { ",h+="}"))}return c&&(n+=" "+h+" if ("+f+" == errors) {"),n=e.util.cleanUpCode(n)}},{}],26:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d=e.opts.$data&&a&&a.$data;d&&(n+=" var schema"+i+" = "+e.util.getData(a.$data,o,e.dataPathArr)+"; ");var h="i"+i,p="schema"+i;d||(n+=" var "+p+" = validate.schema"+s+";"),n+="var "+f+";",d&&(n+=" if (schema"+i+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+i+")) "+f+" = false; else {"),n+=f+" = false;for (var "+h+"=0; "+h+"<"+p+".length; "+h+"++) if (equal("+l+", "+p+"["+h+"])) { "+f+" = true; break; }",d&&(n+=" } "),n+=" if (!"+f+") { ";var m=m||[];m.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValues: schema"+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(n+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var y=n;return n=m.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+y+"]); ":n+=" validate.errors = ["+y+"]; return false; ":n+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }",c&&(n+=" else { "),n}},{}],27:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||"");if(!1===e.opts.format)return c&&(n+=" if (true) { "),n;var f,d=e.opts.$data&&a&&a.$data;d?(n+=" var schema"+i+" = "+e.util.getData(a.$data,o,e.dataPathArr)+"; ",f="schema"+i):f=a;var h=e.opts.unknownFormats,p=Array.isArray(h);if(d){var m="format"+i,y="isObject"+i,v="formatType"+i;n+=" var "+m+" = formats["+f+"]; var "+y+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+v+" = "+y+" && "+m+".type || 'string'; if ("+y+") { ",e.async&&(n+=" var async"+i+" = "+m+".async; "),n+=" "+m+" = "+m+".validate; } if ( ",d&&(n+=" ("+f+" !== undefined && typeof "+f+" != 'string') || "),n+=" (","ignore"!=h&&(n+=" ("+f+" && !"+m+" ",p&&(n+=" && self._opts.unknownFormats.indexOf("+f+") == -1 "),n+=") || "),n+=" ("+m+" && "+v+" == '"+r+"' && !(typeof "+m+" == 'function' ? ",e.async?n+=" (async"+i+" ? await "+m+"("+l+") : "+m+"("+l+")) ":n+=" "+m+"("+l+") ",n+=" : "+m+".test("+l+"))))) {"}else{var m=e.formats[a];if(!m){if("ignore"==h)return e.logger.warn('unknown format "'+a+'" ignored in schema at path "'+e.errSchemaPath+'"'),c&&(n+=" if (true) { "),n;if(p&&h.indexOf(a)>=0)return c&&(n+=" if (true) { "),n;throw new Error('unknown format "'+a+'" is used in schema at path "'+e.errSchemaPath+'"')}var y="object"==typeof m&&!(m instanceof RegExp)&&m.validate,v=y&&m.type||"string";if(y){var g=!0===m.async;m=m.validate}if(v!=r)return c&&(n+=" if (true) { "),n;if(g){if(!e.async)throw new Error("async format in sync schema");var _="formats"+e.util.getProperty(a)+".validate";n+=" if (!(await "+_+"("+l+"))) { "}else{n+=" if (! ";var _="formats"+e.util.getProperty(a);y&&(_+=".validate"),n+="function"==typeof m?" "+_+"("+l+") ":" "+_+".test("+l+") ",n+=") { "}}var b=b||[];b.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { format: ",n+=d?""+f:""+e.util.toQuotedString(a),n+=" } ",!1!==e.opts.messages&&(n+=" , message: 'should match format \"",n+=d?"' + "+f+" + '":""+e.util.escapeQuotes(a),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+s:""+e.util.toQuotedString(a),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var E=n;return n=b.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+E+"]); ":n+=" validate.errors = ["+E+"]; return false; ":n+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { "),n}},{}],28:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d="errs__"+i,h=e.util.copy(e);h.level++;var p="valid"+h.level,m=e.schema.then,y=e.schema.else,v=void 0!==m&&(e.opts.strictKeywords?"object"==typeof m&&Object.keys(m).length>0:e.util.schemaHasRules(m,e.RULES.all)),g=void 0!==y&&(e.opts.strictKeywords?"object"==typeof y&&Object.keys(y).length>0:e.util.schemaHasRules(y,e.RULES.all)),_=h.baseId;if(v||g){var b;h.createErrors=!1,h.schema=a,h.schemaPath=s,h.errSchemaPath=u,n+=" var "+d+" = errors; var "+f+" = true; ";var E=e.compositeRule;e.compositeRule=h.compositeRule=!0,n+=" "+e.validate(h)+" ",h.baseId=_,h.createErrors=!0,n+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.compositeRule=h.compositeRule=E,v?(n+=" if ("+p+") { ",h.schema=e.schema.then,h.schemaPath=e.schemaPath+".then",h.errSchemaPath=e.errSchemaPath+"/then",n+=" "+e.validate(h)+" ",h.baseId=_,n+=" "+f+" = "+p+"; ",v&&g?(b="ifClause"+i,n+=" var "+b+" = 'then'; "):b="'then'",n+=" } ",g&&(n+=" else { ")):n+=" if (!"+p+") { ",g&&(h.schema=e.schema.else,h.schemaPath=e.schemaPath+".else",h.errSchemaPath=e.errSchemaPath+"/else",n+=" "+e.validate(h)+" ",h.baseId=_,n+=" "+f+" = "+p+"; ",v&&g?(b="ifClause"+i,n+=" var "+b+" = 'else'; "):b="'else'",n+=" } "),n+=" if (!"+f+") { var err = ",!1!==e.createErrors?(n+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { failingKeyword: "+b+" } ",!1!==e.opts.messages&&(n+=" , message: 'should match \"' + "+b+" + '\" schema' "),e.opts.verbose&&(n+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(e.async?n+=" throw new ValidationError(vErrors); ":n+=" validate.errors = vErrors; return false; "),n+=" } ",c&&(n+=" else { "),n=e.util.cleanUpCode(n)}else c&&(n+=" if (true) { ");return n}},{}],29:[function(e,t,r){"use strict";t.exports={$ref:e("./ref"),allOf:e("./allOf"),anyOf:e("./anyOf"),$comment:e("./comment"),const:e("./const"),contains:e("./contains"),dependencies:e("./dependencies"),enum:e("./enum"),format:e("./format"),if:e("./if"),items:e("./items"),maximum:e("./_limit"),minimum:e("./_limit"),maxItems:e("./_limitItems"),minItems:e("./_limitItems"),maxLength:e("./_limitLength"),minLength:e("./_limitLength"),maxProperties:e("./_limitProperties"),minProperties:e("./_limitProperties"),multipleOf:e("./multipleOf"),not:e("./not"),oneOf:e("./oneOf"),pattern:e("./pattern"),properties:e("./properties"),propertyNames:e("./propertyNames"),required:e("./required"),uniqueItems:e("./uniqueItems"),validate:e("./validate")}},{"./_limit":15,"./_limitItems":16,"./_limitLength":17,"./_limitProperties":18,"./allOf":19,"./anyOf":20,"./comment":21,"./const":22,"./contains":23,"./dependencies":25,"./enum":26,"./format":27,"./if":28,"./items":30,"./multipleOf":31,"./not":32,"./oneOf":33,"./pattern":34,"./properties":35,"./propertyNames":36,"./ref":37,"./required":38,"./uniqueItems":39,"./validate":40}],30:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d="errs__"+i,h=e.util.copy(e),p="";h.level++;var m="valid"+h.level,y="i"+i,v=h.dataLevel=e.dataLevel+1,g="data"+v,_=e.baseId;if(n+="var "+d+" = errors;var "+f+";",Array.isArray(a)){var b=e.schema.additionalItems;if(!1===b){n+=" "+f+" = "+l+".length <= "+a.length+"; ";var E=u;u=e.errSchemaPath+"/additionalItems",n+=" if (!"+f+") { ";var w=w||[];w.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a.length+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have more than "+a.length+" items' "),e.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var S=n;n=w.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+S+"]); ":n+=" validate.errors = ["+S+"]; return false; ":n+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",u=E,c&&(p+="}",n+=" else { ")}var A=a;if(A)for(var P,O=-1,D=A.length-1;O0:e.util.schemaHasRules(P,e.RULES.all)){n+=" "+m+" = true; if ("+l+".length > "+O+") { ";var C=l+"["+O+"]";h.schema=P,h.schemaPath=s+"["+O+"]",h.errSchemaPath=u+"/"+O,h.errorPath=e.util.getPathExpr(e.errorPath,O,e.opts.jsonPointers,!0), -h.dataPathArr[v]=O;var T=e.validate(h);h.baseId=_,e.util.varOccurences(T,g)<2?n+=" "+e.util.varReplace(T,g,C)+" ":n+=" var "+g+" = "+C+"; "+T+" ",n+=" } ",c&&(n+=" if ("+m+") { ",p+="}")}if("object"==typeof b&&(e.opts.strictKeywords?"object"==typeof b&&Object.keys(b).length>0:e.util.schemaHasRules(b,e.RULES.all))){h.schema=b,h.schemaPath=e.schemaPath+".additionalItems",h.errSchemaPath=e.errSchemaPath+"/additionalItems",n+=" "+m+" = true; if ("+l+".length > "+a.length+") { for (var "+y+" = "+a.length+"; "+y+" < "+l+".length; "+y+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,y,e.opts.jsonPointers,!0);var C=l+"["+y+"]";h.dataPathArr[v]=y;var T=e.validate(h);h.baseId=_,e.util.varOccurences(T,g)<2?n+=" "+e.util.varReplace(T,g,C)+" ":n+=" var "+g+" = "+C+"; "+T+" ",c&&(n+=" if (!"+m+") break; "),n+=" } } ",c&&(n+=" if ("+m+") { ",p+="}")}}else if(e.opts.strictKeywords?"object"==typeof a&&Object.keys(a).length>0:e.util.schemaHasRules(a,e.RULES.all)){h.schema=a,h.schemaPath=s,h.errSchemaPath=u,n+=" for (var "+y+" = 0; "+y+" < "+l+".length; "+y+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,y,e.opts.jsonPointers,!0);var C=l+"["+y+"]";h.dataPathArr[v]=y;var T=e.validate(h);h.baseId=_,e.util.varOccurences(T,g)<2?n+=" "+e.util.varReplace(T,g,C)+" ":n+=" var "+g+" = "+C+"; "+T+" ",c&&(n+=" if (!"+m+") break; "),n+=" }"}return c&&(n+=" "+p+" if ("+d+" == errors) {"),n=e.util.cleanUpCode(n)}},{}],31:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i=" ",o=e.level,a=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,f="data"+(a||""),d=e.opts.$data&&s&&s.$data;d?(i+=" var schema"+o+" = "+e.util.getData(s.$data,a,e.dataPathArr)+"; ",n="schema"+o):n=s,i+="var division"+o+";if (",d&&(i+=" "+n+" !== undefined && ( typeof "+n+" != 'number' || "),i+=" (division"+o+" = "+f+" / "+n+", ",e.opts.multipleOfPrecision?i+=" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":i+=" division"+o+" !== parseInt(division"+o+") ",i+=" ) ",d&&(i+=" ) "),i+=" ) { ";var h=h||[];h.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { multipleOf: "+n+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be multiple of ",i+=d?"' + "+n:n+"'"),e.opts.verbose&&(i+=" , schema: ",i+=d?"validate.schema"+u:""+s,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),i+=" } "):i+=" {} ";var p=i;return i=h.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+p+"]); ":i+=" validate.errors = ["+p+"]; return false; ":i+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",l&&(i+=" else { "),i}},{}],32:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="errs__"+i,d=e.util.copy(e);d.level++;var h="valid"+d.level;if(e.opts.strictKeywords?"object"==typeof a&&Object.keys(a).length>0:e.util.schemaHasRules(a,e.RULES.all)){d.schema=a,d.schemaPath=s,d.errSchemaPath=u,n+=" var "+f+" = errors; ";var p=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1;var m;d.opts.allErrors&&(m=d.opts.allErrors,d.opts.allErrors=!1),n+=" "+e.validate(d)+" ",d.createErrors=!0,m&&(d.opts.allErrors=m),e.compositeRule=d.compositeRule=p,n+=" if ("+h+") { ";var y=y||[];y.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var v=n;n=y.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+v+"]); ":n+=" validate.errors = ["+v+"]; return false; ":n+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } ")}else n+=" var err = ",!1!==e.createErrors?(n+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(n+=" if (false) { ");return n}},{}],33:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d="errs__"+i,h=e.util.copy(e),p="";h.level++;var m="valid"+h.level,y=h.baseId,v="prevValid"+i,g="passingSchemas"+i;n+="var "+d+" = errors , "+v+" = false , "+f+" = false , "+g+" = null; ";var _=e.compositeRule;e.compositeRule=h.compositeRule=!0;var b=a;if(b)for(var E,w=-1,S=b.length-1;w0:e.util.schemaHasRules(E,e.RULES.all))?(h.schema=E,h.schemaPath=s+"["+w+"]",h.errSchemaPath=u+"/"+w,n+=" "+e.validate(h)+" ",h.baseId=y):n+=" var "+m+" = true; ",w&&(n+=" if ("+m+" && "+v+") { "+f+" = false; "+g+" = ["+g+", "+w+"]; } else { ",p+="}"),n+=" if ("+m+") { "+f+" = "+v+" = true; "+g+" = "+w+"; }";return e.compositeRule=h.compositeRule=_,n+=p+"if (!"+f+") { var err = ",!1!==e.createErrors?(n+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { passingSchemas: "+g+" } ",!1!==e.opts.messages&&(n+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(e.async?n+=" throw new ValidationError(vErrors); ":n+=" validate.errors = vErrors; return false; "),n+="} else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; }",e.opts.allErrors&&(n+=" } "),n}},{}],34:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i=" ",o=e.level,a=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,f="data"+(a||""),d=e.opts.$data&&s&&s.$data;d?(i+=" var schema"+o+" = "+e.util.getData(s.$data,a,e.dataPathArr)+"; ",n="schema"+o):n=s;var h=d?"(new RegExp("+n+"))":e.usePattern(s);i+="if ( ",d&&(i+=" ("+n+" !== undefined && typeof "+n+" != 'string') || "),i+=" !"+h+".test("+f+") ) { ";var p=p||[];p.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { pattern: ",i+=d?""+n:""+e.util.toQuotedString(s),i+=" } ",!1!==e.opts.messages&&(i+=" , message: 'should match pattern \"",i+=d?"' + "+n+" + '":""+e.util.escapeQuotes(s),i+="\"' "),e.opts.verbose&&(i+=" , schema: ",i+=d?"validate.schema"+u:""+e.util.toQuotedString(s),i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),i+=" } "):i+=" {} ";var m=i;return i=p.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+m+"]); ":i+=" validate.errors = ["+m+"]; return false; ":i+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",l&&(i+=" else { "),i}},{}],35:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="errs__"+i,d=e.util.copy(e),h="";d.level++;var p="valid"+d.level,m="key"+i,y="idx"+i,v=d.dataLevel=e.dataLevel+1,g="data"+v,_="dataProperties"+i,b=Object.keys(a||{}),E=e.schema.patternProperties||{},w=Object.keys(E),S=e.schema.additionalProperties,A=b.length||w.length,P=!1===S,O="object"==typeof S&&Object.keys(S).length,D=e.opts.removeAdditional,C=P||O||D,T=e.opts.ownProperties,k=e.baseId,F=e.schema.required;if(F&&(!e.opts.$data||!F.$data)&&F.length8)n+=" || validate.schema"+s+".hasOwnProperty("+m+") ";else{var x=b;if(x)for(var M,I=-1,B=x.length-1;I0:e.util.schemaHasRules(Z,e.RULES.all)){var ee=e.util.getProperty(M),Y=l+ee,te=K&&void 0!==Z.default;d.schema=Z,d.schemaPath=s+ee,d.errSchemaPath=u+"/"+e.util.escapeFragment(M),d.errorPath=e.util.getPath(e.errorPath,M,e.opts.jsonPointers),d.dataPathArr[v]=e.util.toQuotedString(M);var $=e.validate(d);if(d.baseId=k,e.util.varOccurences($,g)<2){$=e.util.varReplace($,g,Y);var re=Y}else{var re=g;n+=" var "+g+" = "+Y+"; "}if(te)n+=" "+$+" ";else{if(j&&j[M]){n+=" if ( "+re+" === undefined ",T&&(n+=" || ! Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(M)+"') "),n+=") { "+p+" = false; ";var z=e.errorPath,V=u,ne=e.util.escapeQuotes(M);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(z,M,e.opts.jsonPointers)),u=e.errSchemaPath+"/required";var q=q||[];q.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+ne+"' } ",!1!==e.opts.messages&&(n+=" , message: '",e.opts._errorDataPathProperty?n+="is a required property":n+="should have required property \\'"+ne+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var H=n;n=q.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+H+"]); ":n+=" validate.errors = ["+H+"]; return false; ":n+=" var err = "+H+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u=V,e.errorPath=z,n+=" } else { "}else c?(n+=" if ( "+re+" === undefined ",T&&(n+=" || ! Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(M)+"') "),n+=") { "+p+" = true; } else { "):(n+=" if ("+re+" !== undefined ",T&&(n+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(M)+"') "),n+=" ) { ");n+=" "+$+" } "}}c&&(n+=" if ("+p+") { ",h+="}")}}if(w.length){var ie=w;if(ie)for(var N,oe=-1,ae=ie.length-1;oe0:e.util.schemaHasRules(Z,e.RULES.all)){d.schema=Z,d.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(N),d.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(N),n+=T?" "+_+" = "+_+" || Object.keys("+l+"); for (var "+y+"=0; "+y+"<"+_+".length; "+y+"++) { var "+m+" = "+_+"["+y+"]; ":" for (var "+m+" in "+l+") { ",n+=" if ("+e.usePattern(N)+".test("+m+")) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);var Y=l+"["+m+"]";d.dataPathArr[v]=m;var $=e.validate(d);d.baseId=k,e.util.varOccurences($,g)<2?n+=" "+e.util.varReplace($,g,Y)+" ":n+=" var "+g+" = "+Y+"; "+$+" ",c&&(n+=" if (!"+p+") break; "),n+=" } ",c&&(n+=" else "+p+" = true; "),n+=" } ",c&&(n+=" if ("+p+") { ",h+="}")}}}return c&&(n+=" "+h+" if ("+f+" == errors) {"),n=e.util.cleanUpCode(n)}},{}],36:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="errs__"+i,d=e.util.copy(e);d.level++;var h="valid"+d.level;if(n+="var "+f+" = errors;",e.opts.strictKeywords?"object"==typeof a&&Object.keys(a).length>0:e.util.schemaHasRules(a,e.RULES.all)){d.schema=a,d.schemaPath=s,d.errSchemaPath=u;var p="key"+i,m="idx"+i,y="i"+i,v="' + "+p+" + '",g=d.dataLevel=e.dataLevel+1,_="data"+g,b="dataProperties"+i,E=e.opts.ownProperties,w=e.baseId;E&&(n+=" var "+b+" = undefined; "),n+=E?" "+b+" = "+b+" || Object.keys("+l+"); for (var "+m+"=0; "+m+"<"+b+".length; "+m+"++) { var "+p+" = "+b+"["+m+"]; ":" for (var "+p+" in "+l+") { ",n+=" var startErrs"+i+" = errors; ";var S=p,A=e.compositeRule;e.compositeRule=d.compositeRule=!0;var P=e.validate(d);d.baseId=w,e.util.varOccurences(P,_)<2?n+=" "+e.util.varReplace(P,_,S)+" ":n+=" var "+_+" = "+S+"; "+P+" ",e.compositeRule=d.compositeRule=A,n+=" if (!"+h+") { for (var "+y+"=startErrs"+i+"; "+y+"0:e.util.schemaHasRules(_,e.RULES.all))||(p[p.length]=y)}}else var p=a;if(d||p.length){var b=e.errorPath,E=d||p.length>=e.opts.loopRequired,w=e.opts.ownProperties;if(c)if(n+=" var missing"+i+"; ",E){d||(n+=" var "+h+" = validate.schema"+s+"; ");var S="i"+i,A="schema"+i+"["+S+"]",P="' + "+A+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(b,A,e.opts.jsonPointers)),n+=" var "+f+" = true; ",d&&(n+=" if (schema"+i+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+i+")) "+f+" = false; else {"),n+=" for (var "+S+" = 0; "+S+" < "+h+".length; "+S+"++) { "+f+" = "+l+"["+h+"["+S+"]] !== undefined ",w&&(n+=" && Object.prototype.hasOwnProperty.call("+l+", "+h+"["+S+"]) "),n+="; if (!"+f+") break; } ",d&&(n+=" } "),n+=" if (!"+f+") { ";var O=O||[];O.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+P+"' } ",!1!==e.opts.messages&&(n+=" , message: '",e.opts._errorDataPathProperty?n+="is a required property":n+="should have required property \\'"+P+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var D=n;n=O.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+D+"]); ":n+=" validate.errors = ["+D+"]; return false; ":n+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var C=p;if(C)for(var T,S=-1,k=C.length-1;S 1) { ";var p=e.schema.items&&e.schema.items.type,m=Array.isArray(p);if(!p||"object"==p||"array"==p||m&&(p.indexOf("object")>=0||p.indexOf("array")>=0))i+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+f+"[i], "+f+"[j])) { "+d+" = false; break outer; } } } ";else{i+=" var itemIndices = {}, item; for (;i--;) { var item = "+f+"[i]; ";var y="checkDataType"+(m?"s":"");i+=" if ("+e.util[y](p,"item",!0)+") continue; ",m&&(i+=" if (typeof item == 'string') item = '\"' + item; "),i+=" if (typeof itemIndices[item] == 'number') { "+d+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}i+=" } ",h&&(i+=" } "),i+=" if (!"+d+") { ";var v=v||[];v.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(i+=" , schema: ",i+=h?"validate.schema"+u:""+s,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),i+=" } "):i+=" {} ";var g=i;i=v.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",l&&(i+=" else { ")}else l&&(i+=" if (true) { ");return i}},{}],40:[function(e,t,r){"use strict";t.exports=function(e,t,r){function n(e){for(var t=e.rules,r=0;r=48&&e<=55}function i(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&h.indexOf(e)>=0}function o(e){return 10===e||13===e||8232===e||8233===e}function a(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(Math.floor((e-65536)/1024)+55296)+String.fromCharCode((e-65536)%1024+56320)}function s(e){return e<128?p[e]:d.NonAsciiIdentifierStart.test(a(e))}function u(e){return e<128?m[e]:d.NonAsciiIdentifierPart.test(a(e))}function c(e){return e<128?p[e]:f.NonAsciiIdentifierStart.test(a(e))}function l(e){return e<128?m[e]:f.NonAsciiIdentifierPart.test(a(e))}var f,d,h,p,m,y;for(d={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},f={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/, -NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},h=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],p=new Array(128),y=0;y<128;++y)p[y]=y>=97&&y<=122||y>=65&&y<=90||36===y||95===y;for(m=new Array(128),y=0;y<128;++y)m[y]=y>=97&&y<=122||y>=65&&y<=90||y>=48&&y<=57||36===y||95===y;t.exports={isDecimalDigit:e,isHexDigit:r,isOctalDigit:n,isWhiteSpace:i,isLineTerminator:o,isIdentifierStartES5:s,isIdentifierPartES5:u,isIdentifierStartES6:c,isIdentifierPartES6:l}}()},{}],47:[function(e,t,r){!function(){"use strict";function r(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function n(e,t){return!(!t&&"yield"===e)&&i(e,t)}function i(e,t){if(t&&r(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function o(e,t){return"null"===e||"true"===e||"false"===e||n(e,t)}function a(e,t){return"null"===e||"true"===e||"false"===e||i(e,t)}function s(e){return"eval"===e||"arguments"===e}function u(e){var t,r,n;if(0===e.length)return!1;if(n=e.charCodeAt(0),!h.isIdentifierStartES5(n))return!1;for(t=1,r=e.length;t=r)return!1;if(!(56320<=(i=e.charCodeAt(t))&&i<=57343))return!1;n=c(n,i)}if(!o(n))return!1;o=h.isIdentifierPartES6}return!0}function f(e,t){return u(e)&&!o(e,t)}function d(e,t){return l(e)&&!a(e,t)}var h=e("./code");t.exports={isKeywordES5:n,isKeywordES6:i,isReservedWordES5:o,isReservedWordES6:a,isRestrictedWord:s,isIdentifierNameES5:u,isIdentifierNameES6:l,isIdentifierES5:f,isIdentifierES6:d}}()},{"./code":46}],48:[function(e,t,r){!function(){"use strict";r.ast=e("./ast"),r.code=e("./code"),r.keyword=e("./keyword")}()},{"./ast":45,"./code":46,"./keyword":47}],49:[function(e,t,r){"use strict";t.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,i,o;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(i=n;0!=i--;)if(!e(t[i],r[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(o=Object.keys(t),(n=o.length)!==Object.keys(r).length)return!1;for(i=n;0!=i--;)if(!Object.prototype.hasOwnProperty.call(r,o[i]))return!1;for(i=n;0!=i--;){var a=o[i];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}},{}],50:[function(e,t,r){"use strict";t.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var r="boolean"==typeof t.cycles&&t.cycles,n=t.cmp&&function(e){return function(t){return function(r,n){var i={key:r,value:t[r]},o={key:n,value:t[n]};return e(i,o)}}}(t.cmp),i=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var o,a;if(Array.isArray(t)){for(a="[",o=0;o=0;n--)if(i[n]!=o[n])return!1;for(n=i.length-1;n>=0;n--)if(r=i[n],!u(e[r],t[r]))return!1;return!0}function f(e,t){return!(!e||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(e):e instanceof t||!0===t.call({},e))}function d(e,t,r,n){var i;h.isString(r)&&(n=r,r=null);try{t()}catch(e){i=e}if(n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!i&&a(i,r,"Missing expected exception"+n),!e&&f(i,r)&&a(i,r,"Got unwanted exception"+n),e&&i&&r&&!f(i,r)||!e&&i)throw i}var h=e("util/"),p=Array.prototype.slice,m=Object.prototype.hasOwnProperty,y=t.exports=s;y.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=o(this),this.generatedMessage=!0);var t=e.stackStartFunction||a;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var n=r.stack,i=t.name,s=n.indexOf("\n"+i);if(s>=0){var u=n.indexOf("\n",s+1);n=n.substring(u+1)}this.stack=n}}},h.inherits(y.AssertionError,Error),y.fail=a,y.ok=s,y.equal=function(e,t,r){e!=t&&a(e,t,r,"==",y.equal)},y.notEqual=function(e,t,r){e==t&&a(e,t,r,"!=",y.notEqual)},y.deepEqual=function(e,t,r){u(e,t)||a(e,t,r,"deepEqual",y.deepEqual)},y.notDeepEqual=function(e,t,r){u(e,t)&&a(e,t,r,"notDeepEqual",y.notDeepEqual)},y.strictEqual=function(e,t,r){e!==t&&a(e,t,r,"===",y.strictEqual)},y.notStrictEqual=function(e,t,r){e===t&&a(e,t,r,"!==",y.notStrictEqual)},y.throws=function(e,t,r){d.apply(this,[!0].concat(p.call(arguments)))},y.doesNotThrow=function(e,t){d.apply(this,[!1].concat(p.call(arguments)))},y.ifError=function(e){if(e)throw e};var v=Object.keys||function(e){var t=[];for(var r in e)m.call(e,r)&&t.push(r);return t}},{"util/":54}],52:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],53:[function(e,t,r){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],54:[function(e,t,r){(function(t,n){function i(e,t){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(t)?n.showHidden=t:t&&r._extend(n,t),E(n.showHidden)&&(n.showHidden=!1),E(n.depth)&&(n.depth=2),E(n.colors)&&(n.colors=!1),E(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),u(n,e,n.depth)}function o(e,t){var r=i.styles[t];return r?"["+i.colors[r][0]+"m"+e+"["+i.colors[r][1]+"m":e}function a(e,t){return e}function s(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}function u(e,t,n){if(e.customInspect&&t&&O(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return _(i)||(i=u(e,i,n)),i}var o=c(e,t);if(o)return o;var a=Object.keys(t),m=s(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),P(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return l(t);if(0===a.length){if(O(t)){var y=t.name?": "+t.name:"";return e.stylize("[Function"+y+"]","special")}if(w(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(A(t))return e.stylize(Date.prototype.toString.call(t),"date");if(P(t))return l(t)}var v="",g=!1,b=["{","}"];if(p(t)&&(g=!0,b=["[","]"]),O(t)){v=" [Function"+(t.name?": "+t.name:"")+"]"}if(w(t)&&(v=" "+RegExp.prototype.toString.call(t)),A(t)&&(v=" "+Date.prototype.toUTCString.call(t)),P(t)&&(v=" "+l(t)),0===a.length&&(!g||0==t.length))return b[0]+v+b[1];if(n<0)return w(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var E;return E=g?f(e,t,n,m,a):a.map(function(r){return d(e,t,n,m,r,g)}),e.seen.pop(),h(E,v,b)}function c(e,t){if(E(t))return e.stylize("undefined","undefined");if(_(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return g(t)?e.stylize(""+t,"number"):m(t)?e.stylize(""+t,"boolean"):y(t)?e.stylize("null","null"):void 0}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,r,n,i){for(var o=[],a=0,s=t.length;a-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n"))):s=e.stylize("[Circular]","special")),E(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function h(e,t,r){var n=0;return e.reduce(function(e,t){return n++,t.indexOf("\n")>=0&&n++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function p(e){return Array.isArray(e)}function m(e){return"boolean"==typeof e}function y(e){return null===e}function v(e){return null==e}function g(e){return"number"==typeof e}function _(e){return"string"==typeof e}function b(e){return"symbol"==typeof e}function E(e){return void 0===e}function w(e){return S(e)&&"[object RegExp]"===C(e)}function S(e){return"object"==typeof e&&null!==e}function A(e){return S(e)&&"[object Date]"===C(e)}function P(e){return S(e)&&("[object Error]"===C(e)||e instanceof Error)}function O(e){return"function"==typeof e}function D(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e}function C(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}function k(){var e=new Date,t=[T(e.getHours()),T(e.getMinutes()),T(e.getSeconds())].join(":");return[e.getDate(),I[e.getMonth()],t].join(" ")}function F(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var j=/%[sdj%]/g;r.format=function(e){if(!_(e)){for(var t=[],r=0;r=o)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),s=n[r];r0)throw new Error("Invalid string. Length must be a multiple of 4");var l=e.length;u="="===e.charAt(l-2)?2:"="===e.charAt(l-1)?1:0,c=new i(3*e.length/4-u),a=u>0?e.length-4:e.length;var f=0;for(n=0,o=0;n>16),r((65280&s)>>8),r(255&s);return 2===u?(s=t(e.charAt(n))<<2|t(e.charAt(n+1))>>4,r(255&s)):1===u&&(s=t(e.charAt(n))<<10|t(e.charAt(n+1))<<4|t(e.charAt(n+2))>>2,r(s>>8&255),r(255&s)),c}function n(e){function t(e){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)}var r,n,i,o=e.length%3,a="";for(r=0,i=e.length-o;r>18&63)+t(e>>12&63)+t(e>>6&63)+t(63&e)}(n);switch(o){case 1:n=e[e.length-1],a+=t(n>>2),a+=t(n<<4&63),a+="==";break;case 2:n=(e[e.length-2]<<8)+e[e.length-1],a+=t(n>>10),a+=t(n>>4&63),a+=t(n<<2&63),a+="="}return a}var i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="+".charCodeAt(0),a="/".charCodeAt(0),s="0".charCodeAt(0),u="a".charCodeAt(0),c="A".charCodeAt(0),l="-".charCodeAt(0),f="_".charCodeAt(0);e.toByteArray=r,e.fromByteArray=n}(void 0===r?this.base64js={}:r)},{}],56:[function(e,t,r){},{}],57:[function(e,t,r){function n(e,t,r){if(!(this instanceof n))return new n(e,t,r);var i=typeof e;if("base64"===t&&"string"===i)for(e=C(e);e.length%4!=0;)e+="=";var o;if("number"===i)o=k(e);else if("string"===i)o=n.byteLength(e,t);else{if("object"!==i)throw new Error("First argument needs to be a number, array or string.");o=k(e.length)}var a;n._useTypedArrays?a=n._augment(new Uint8Array(o)):(a=this,a.length=o,a._isBuffer=!0);var s;if(n._useTypedArrays&&"number"==typeof e.byteLength)a._set(e);else if(j(e))for(s=0;so&&(i=o):i=o;var a=t.length;V(a%2==0,"Invalid hex string"),i>a/2&&(i=a/2);for(var s=0;sn)&&(r=n);for(var i="",o=t;o=i)){var o;return r?(o=e[t],t+1=i)){var o;return r?(t+2>>0)):(t+1>>0),o}}function g(e,t,r,n){if(n||(V("boolean"==typeof r,"missing or invalid endian"),V(void 0!==t&&null!==t,"missing offset"),V(t+1=e.length)){var i=y(e,t,r,!0);return 32768&i?-1*(65535-i+1):i}}function _(e,t,r,n){if(n||(V("boolean"==typeof r,"missing or invalid endian"),V(void 0!==t&&null!==t,"missing offset"),V(t+3=e.length)){var i=v(e,t,r,!0);return 2147483648&i?-1*(4294967295-i+1):i}}function b(e,t,r,n){return n||(V("boolean"==typeof r,"missing or invalid endian"),V(t+3=o))for(var a=0,s=Math.min(o-r,2);a>>8*(n?a:1-a)}function S(e,t,r,n,i){i||(V(void 0!==t&&null!==t,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(r+3=o))for(var a=0,s=Math.min(o-r,4);a>>8*(n?a:3-a)&255}function A(e,t,r,n,i){i||(V(void 0!==t&&null!==t,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(r+1=e.length||(t>=0?w(e,t,r,n,i):w(e,65535+t+1,r,n,i))}function P(e,t,r,n,i){i||(V(void 0!==t&&null!==t,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(r+3=e.length||(t>=0?S(e,t,r,n,i):S(e,4294967295+t+1,r,n,i))}function O(e,t,r,n,i){i||(V(void 0!==t&&null!==t,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(r+3=e.length||H.write(e,t,r,n,23,4)}function D(e,t,r,n,i){i||(V(void 0!==t&&null!==t,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(r+7=e.length||H.write(e,t,r,n,52,8)}function C(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function T(e,t,r){return"number"!=typeof e?r:(e=~~e)>=t?t:e>=0?e:(e+=t,e>=0?e:0)}function k(e){return e=~~Math.ceil(+e),e<0?0:e}function F(e){return(Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)})(e)}function j(e){return F(e)||n.isBuffer(e)||e&&"object"==typeof e&&"number"==typeof e.length}function x(e){return e<16?"0"+e.toString(16):e.toString(16)}function M(e){for(var t=[],r=0;r=55296&&n<=57343&&r++;for(var o=encodeURIComponent(e.slice(i,r+1)).substr(1).split("%"),a=0;a>8,n=t%256,i.push(n),i.push(r);return i}function R(e){return q.toByteArray(e)}function N(e,t,r,n){for(var i=0;i=t.length||i>=e.length);i++)t[i+r]=e[i];return i}function U(e){try{return decodeURIComponent(e)}catch(e){return String.fromCharCode(65533)}}function L(e,t){V("number"==typeof e,"cannot write a non-number as a number"),V(e>=0,"specified a negative value for writing an unsigned value"),V(e<=t,"value is larger than maximum value for type"),V(Math.floor(e)===e,"value has a fractional component")}function z(e,t,r){V("number"==typeof e,"cannot write a non-number as a number"),V(e<=t,"value larger than maximum allowed value"),V(e>=r,"value smaller than minimum allowed value"),V(Math.floor(e)===e,"value has a fractional component")}function G(e,t,r){V("number"==typeof e,"cannot write a non-number as a number"),V(e<=t,"value larger than maximum allowed value"),V(e>=r,"value smaller than minimum allowed value")}function V(e,t){if(!e)throw new Error(t||"Failed assertion")}var q=e("base64-js"),H=e("ieee754");r.Buffer=n,r.SlowBuffer=n,r.INSPECT_MAX_BYTES=50,n.poolSize=8192,n._useTypedArrays=function(){try{var e=new ArrayBuffer(0),t=new Uint8Array(e);return t.foo=function(){return 42},42===t.foo()&&"function"==typeof t.subarray}catch(e){return!1}}(),n.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},n.isBuffer=function(e){return!(null===e||void 0===e||!e._isBuffer)},n.byteLength=function(e,t){var r;switch(e+="",t||"utf8"){case"hex":r=e.length/2;break;case"utf8":case"utf-8":r=M(e).length;break;case"ascii":case"binary":case"raw":r=e.length;break;case"base64":r=R(e).length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":r=2*e.length;break;default:throw new Error("Unknown encoding")}return r},n.concat=function(e,t){if(V(F(e),"Usage: Buffer.concat(list, [totalLength])\nlist should be an Array."),0===e.length)return new n(0);if(1===e.length)return e[0];var r;if("number"!=typeof t)for(t=0,r=0;rf&&(r=f):r=f,n=String(n||"utf8").toLowerCase();var d;switch(n){case"hex":d=i(this,e,t,r);break;case"utf8":case"utf-8":d=o(this,e,t,r);break;case"ascii":d=a(this,e,t,r);break;case"binary":d=s(this,e,t,r);break;case"base64":d=u(this,e,t,r);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":d=c(this,e,t,r);break;default:throw new Error("Unknown encoding")}return d},n.prototype.toString=function(e,t,r){var n=this;if(e=String(e||"utf8").toLowerCase(),t=Number(t)||0,(r=void 0!==r?Number(r):r=n.length)===t)return"";var i;switch(e){case"hex":i=p(n,t,r);break;case"utf8": -case"utf-8":i=f(n,t,r);break;case"ascii":i=d(n,t,r);break;case"binary":i=h(n,t,r);break;case"base64":i=l(n,t,r);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":i=m(n,t,r);break;default:throw new Error("Unknown encoding")}return i},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},n.prototype.copy=function(e,t,r,i){var o=this;if(r||(r=0),i||0===i||(i=this.length),t||(t=0),i!==r&&0!==e.length&&0!==o.length){V(i>=r,"sourceEnd < sourceStart"),V(t>=0&&t=0&&r=0&&i<=o.length,"sourceEnd out of bounds"),i>this.length&&(i=this.length),e.length-t=this.length))return this[e]},n.prototype.readUInt16LE=function(e,t){return y(this,e,!0,t)},n.prototype.readUInt16BE=function(e,t){return y(this,e,!1,t)},n.prototype.readUInt32LE=function(e,t){return v(this,e,!0,t)},n.prototype.readUInt32BE=function(e,t){return v(this,e,!1,t)},n.prototype.readInt8=function(e,t){if(t||(V(void 0!==e&&null!==e,"missing offset"),V(e=this.length)){return 128&this[e]?-1*(255-this[e]+1):this[e]}},n.prototype.readInt16LE=function(e,t){return g(this,e,!0,t)},n.prototype.readInt16BE=function(e,t){return g(this,e,!1,t)},n.prototype.readInt32LE=function(e,t){return _(this,e,!0,t)},n.prototype.readInt32BE=function(e,t){return _(this,e,!1,t)},n.prototype.readFloatLE=function(e,t){return b(this,e,!0,t)},n.prototype.readFloatBE=function(e,t){return b(this,e,!1,t)},n.prototype.readDoubleLE=function(e,t){return E(this,e,!0,t)},n.prototype.readDoubleBE=function(e,t){return E(this,e,!1,t)},n.prototype.writeUInt8=function(e,t,r){r||(V(void 0!==e&&null!==e,"missing value"),V(void 0!==t&&null!==t,"missing offset"),V(t=this.length||(this[t]=e)},n.prototype.writeUInt16LE=function(e,t,r){w(this,e,t,!0,r)},n.prototype.writeUInt16BE=function(e,t,r){w(this,e,t,!1,r)},n.prototype.writeUInt32LE=function(e,t,r){S(this,e,t,!0,r)},n.prototype.writeUInt32BE=function(e,t,r){S(this,e,t,!1,r)},n.prototype.writeInt8=function(e,t,r){r||(V(void 0!==e&&null!==e,"missing value"),V(void 0!==t&&null!==t,"missing offset"),V(t=this.length||(e>=0?this.writeUInt8(e,t,r):this.writeUInt8(255+e+1,t,r))},n.prototype.writeInt16LE=function(e,t,r){A(this,e,t,!0,r)},n.prototype.writeInt16BE=function(e,t,r){A(this,e,t,!1,r)},n.prototype.writeInt32LE=function(e,t,r){P(this,e,t,!0,r)},n.prototype.writeInt32BE=function(e,t,r){P(this,e,t,!1,r)},n.prototype.writeFloatLE=function(e,t,r){O(this,e,t,!0,r)},n.prototype.writeFloatBE=function(e,t,r){O(this,e,t,!1,r)},n.prototype.writeDoubleLE=function(e,t,r){D(this,e,t,!0,r)},n.prototype.writeDoubleBE=function(e,t,r){D(this,e,t,!1,r)},n.prototype.fill=function(e,t,r){if(e||(e=0),t||(t=0),r||(r=this.length),"string"==typeof e&&(e=e.charCodeAt(0)),V("number"==typeof e&&!isNaN(e),"value is not a number"),V(r>=t,"end < start"),r!==t&&0!==this.length){V(t>=0&&t=0&&r<=this.length,"end out of bounds");for(var n=t;n"},n.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(n._useTypedArrays)return new n(this).buffer;for(var e=new Uint8Array(this.length),t=0,r=e.length;t0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())}return this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},n.prototype.removeListener=function(e,t){var r,n,o,s;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],o=r.length,n=-1,r===t||i(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(a(r)){for(s=o;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){n=s;break}if(n<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(n,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],i(r))this.removeListener(e,r);else for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.listenerCount=function(e,t){return e._events&&e._events[t]?i(e._events[t])?1:e._events[t].length:0}},{}],59:[function(e,t,r){function n(){}var i=t.exports={};i.nextTick=function(){var e="undefined"!=typeof window&&window.setImmediate,t="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var r=[];return window.addEventListener("message",function(e){var t=e.source;if((t===window||null===t)&&"process-tick"===e.data&&(e.stopPropagation(),r.length>0)){r.shift()()}},!0),function(e){r.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),i.title="browser",i.browser=!0,i.env={},i.argv=[],i.on=n,i.addListener=n,i.once=n,i.off=n,i.removeListener=n,i.removeAllListeners=n,i.emit=n,i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],60:[function(e,t,r){function n(e){if(!(this instanceof n))return new n(e);s.call(this,e),u.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",i)}function i(){if(!this.allowHalfOpen&&!this._writableState.ended){var e=this;a(function(){e.end()})}}t.exports=n;var o=e("inherits"),a=e("process/browser.js").nextTick,s=e("./readable.js"),u=e("./writable.js");o(n,s),n.prototype.write=u.prototype.write,n.prototype.end=u.prototype.end,n.prototype._write=u.prototype._write},{"./readable.js":64,"./writable.js":66,inherits:91,"process/browser.js":62}],61:[function(e,t,r){function n(){i.call(this)}t.exports=n;var i=e("events").EventEmitter;e("inherits")(n,i),n.Readable=e("./readable.js"),n.Writable=e("./writable.js"),n.Duplex=e("./duplex.js"),n.Transform=e("./transform.js"),n.PassThrough=e("./passthrough.js"),n.Stream=n,n.prototype.pipe=function(e,t){function r(t){e.writable&&!1===e.write(t)&&c.pause&&c.pause()}function n(){c.readable&&c.resume&&c.resume()}function o(){l||(l=!0,e.end())}function a(){l||(l=!0,"function"==typeof e.destroy&&e.destroy())}function s(e){if(u(),0===i.listenerCount(this,"error"))throw e}function u(){c.removeListener("data",r),e.removeListener("drain",n),c.removeListener("end",o),c.removeListener("close",a),c.removeListener("error",s),e.removeListener("error",s),c.removeListener("end",u),c.removeListener("close",u),e.removeListener("close",u)}var c=this;c.on("data",r),e.on("drain",n),e._isStdio||t&&!1===t.end||(c.on("end",o),c.on("close",a));var l=!1;return c.on("error",s),e.on("error",s),c.on("end",u),c.on("close",u),e.on("close",u),e.emit("pipe",c),e}},{"./duplex.js":60,"./passthrough.js":63,"./readable.js":64,"./transform.js":65,"./writable.js":66,events:58,inherits:91}],62:[function(e,t,r){var n=t.exports={};n.nextTick=function(){var e="undefined"!=typeof window&&window.setImmediate,t="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var r=[];return window.addEventListener("message",function(e){var t=e.source;if((t===window||null===t)&&"process-tick"===e.data&&(e.stopPropagation(),r.length>0)){r.shift()()}},!0),function(e){r.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),n.title="browser",n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],63:[function(e,t,r){function n(e){if(!(this instanceof n))return new n(e);i.call(this,e)}t.exports=n;var i=e("./transform.js");e("inherits")(n,i),n.prototype._transform=function(e,t,r){r(null,e)}},{"./transform.js":65,inherits:91}],64:[function(e,t,r){(function(r){function n(t,r){t=t||{};var n=t.highWaterMark;this.highWaterMark=n||0===n?n:16384,this.highWaterMark=~~this.highWaterMark,this.buffer=[],this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=!1,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.calledRead=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.objectMode=!!t.objectMode,this.defaultEncoding=t.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(S||(S=e("string_decoder").StringDecoder),this.decoder=new S(t.encoding),this.encoding=t.encoding)}function i(e){if(!(this instanceof i))return new i(e);this._readableState=new n(e,this),this.readable=!0,P.call(this)}function o(e,t,r,n,i){var o=c(t,r);if(o)e.emit("error",o);else if(null===r||void 0===r)t.reading=!1,t.ended||l(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var s=new Error("stream.push() after EOF");e.emit("error",s)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else!t.decoder||i||n||(r=t.decoder.write(r)),t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):(t.reading=!1,t.buffer.push(r)),t.needReadable&&f(e),h(e,t);else i||(t.reading=!1);return a(t)}function a(e){return!e.ended&&(e.needReadable||e.length=C)e=C;else{e--;for(var t=1;t<32;t<<=1)e|=e>>t;e++}return e}function u(e,t){return 0===t.length&&t.ended?0:t.objectMode?0===e?0:1:isNaN(e)||null===e?t.flowing&&t.buffer.length?t.buffer[0].length:t.length:e<=0?0:(e>t.highWaterMark&&(t.highWaterMark=s(e)),e>t.length?t.ended?t.length:(t.needReadable=!0,0):e)}function c(e,t){var r=null;return O.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||r||(r=new TypeError("Invalid non-string/buffer chunk")),r}function l(e,t){if(t.decoder&&!t.ended){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.length>0?f(e):b(e)}function f(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,t.sync?D(function(){d(e)}):d(e))}function d(e){e.emit("readable")}function h(e,t){t.readingMore||(t.readingMore=!0,D(function(){p(e,t)}))}function p(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length0)return;if(0===n.pipesCount)return n.flowing=!1,void(A.listenerCount(e,"data")>0&&g(e));n.ranOut=!0}function v(){this._readableState.ranOut&&(this._readableState.ranOut=!1,y(this))}function g(e,t){if(e._readableState.flowing)throw new Error("Cannot switch to old mode now.");var r=t||!1,n=!1;e.readable=!0,e.pipe=P.prototype.pipe,e.on=e.addListener=P.prototype.on,e.on("readable",function(){n=!0;for(var t;!r&&null!==(t=e.read());)e.emit("data",t);null===t&&(n=!1,e._readableState.needReadable=!0)}),e.pause=function(){r=!0,this.emit("pause")},e.resume=function(){r=!1,n?D(function(){e.emit("readable")}):this.read(0),this.emit("resume")},e.emit("readable")}function _(e,t){var r,n=t.buffer,i=t.length,o=!!t.decoder,a=!!t.objectMode;if(0===n.length)return null;if(0===i)r=null;else if(a)r=n.shift();else if(!e||e>=i)r=o?n.join(""):O.concat(n,i),n.length=0;else if(e0)throw new Error("endReadable called on non-empty stream");!t.endEmitted&&t.calledRead&&(t.ended=!0,D(function(){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}))}function E(e,t){for(var r=0,n=e.length;r0)&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return f(this),null;if(0===(e=u(e,t))&&t.ended)return 0===t.length&&b(this),null;var n=t.needReadable;t.length-e<=t.highWaterMark&&(n=!0),(t.ended||t.reading)&&(n=!1),n&&(t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1),n&&!t.reading&&(e=u(r,t));var i;return i=e>0?_(e,t):null,null===i&&(t.needReadable=!0,e=0),t.length-=e,0!==t.length||t.ended||(t.needReadable=!0),t.ended&&!t.endEmitted&&0===t.length&&b(this),i},i.prototype._read=function(e){this.emit("error",new Error("not implemented"))},i.prototype.pipe=function(e,t){function n(e){e===l&&o()}function i(){e.end()}function o(){e.removeListener("close",s),e.removeListener("finish",u),e.removeListener("drain",p),e.removeListener("error",a),e.removeListener("unpipe",n),l.removeListener("end",i),l.removeListener("end",o),e._writableState&&!e._writableState.needDrain||p()}function a(t){c(),0===g&&0===A.listenerCount(e,"error")&&e.emit("error",t)}function s(){e.removeListener("finish",u),c()}function u(){e.removeListener("close",s),c()}function c(){l.unpipe(e)}var l=this,f=this._readableState;switch(f.pipesCount){case 0:f.pipes=e;break;case 1:f.pipes=[f.pipes,e];break;default:f.pipes.push(e)}f.pipesCount+=1;var d=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr,h=d?i:o;f.endEmitted?D(h):l.once("end",h),e.on("unpipe",n);var p=m(l);e.on("drain",p);var g=A.listenerCount(e,"error");return e.once("error",a),e.once("close",s),e.once("finish",u),e.emit("pipe",l),f.flowing||(this.on("readable",v),f.flowing=!0,D(function(){y(l)})),e},i.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,this.removeListener("readable",v),t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,this.removeListener("readable",v),t.flowing=!1;for(var i=0;i=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,r,n),this.charReceived+=n-r,r=n,this.charReceived=55296&&i<=56319)){if(this.charReceived=this.charLength=0,n==e.length)return t;e=e.slice(n,e.length);break}this.charLength+=this.surrogateSize,t=""}var o=this.detectIncompleteChar(e),a=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-o,a),this.charReceived=o,a-=o),t+=e.toString(this.encoding,0,a);var a=t.length-1,i=t.charCodeAt(a);if(i>=55296&&i<=56319){var s=this.surrogateSize;return this.charLength+=s,this.charReceived+=s,this.charBuffer.copy(this.charBuffer,s,0,s),this.charBuffer.write(t.charAt(t.length-1),this.encoding),t.substring(0,a)}return t},u.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(1==t&&r>>5==6){this.charLength=2;break}if(t<=2&&r>>4==14){this.charLength=3;break}if(t<=3&&r>>3==30){this.charLength=4;break}}return t},u.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t}},{buffer:57}],68:[function(e,t,r){var n={};n[r.ACCEPTED=202]="Accepted",n[r.BAD_GATEWAY=502]="Bad Gateway",n[r.BAD_REQUEST=400]="Bad Request",n[r.CONFLICT=409]="Conflict",n[r.CONTINUE=100]="Continue",n[r.CREATED=201]="Created",n[r.EXPECTATION_FAILED=417]="Expectation Failed",n[r.FAILED_DEPENDENCY=424]="Failed Dependency",n[r.FORBIDDEN=403]="Forbidden",n[r.GATEWAY_TIMEOUT=504]="Gateway Timeout",n[r.GONE=410]="Gone",n[r.HTTP_VERSION_NOT_SUPPORTED=505]="HTTP Version Not Supported",n[r.IM_A_TEAPOT=418]="I'm a teapot",n[r.INSUFFICIENT_SPACE_ON_RESOURCE=419]="Insufficient Space on Resource",n[r.INSUFFICIENT_STORAGE=507]="Insufficient Storage",n[r.INTERNAL_SERVER_ERROR=500]="Server Error",n[r.LENGTH_REQUIRED=411]="Length Required",n[r.LOCKED=423]="Locked",n[r.METHOD_FAILURE=420]="Method Failure",n[r.METHOD_NOT_ALLOWED=405]="Method Not Allowed",n[r.MOVED_PERMANENTLY=301]="Moved Permanently",n[r.MOVED_TEMPORARILY=302]="Moved Temporarily",n[r.MULTI_STATUS=207]="Multi-Status",n[r.MULTIPLE_CHOICES=300]="Multiple Choices",n[r.NETWORK_AUTHENTICATION_REQUIRED=511]="Network Authentication Required",n[r.NO_CONTENT=204]="No Content",n[r.NON_AUTHORITATIVE_INFORMATION=203]="Non Authoritative Information",n[r.NOT_ACCEPTABLE=406]="Not Acceptable",n[r.NOT_FOUND=404]="Not Found",n[r.NOT_IMPLEMENTED=501]="Not Implemented",n[r.NOT_MODIFIED=304]="Not Modified",n[r.OK=200]="OK",n[r.PARTIAL_CONTENT=206]="Partial Content",n[r.PAYMENT_REQUIRED=402]="Payment Required",n[r.PERMANENT_REDIRECT=308]="Permanent Redirect",n[r.PRECONDITION_FAILED=412]="Precondition Failed",n[r.PRECONDITION_REQUIRED=428]="Precondition Required",n[r.PROCESSING=102]="Processing",n[r.PROXY_AUTHENTICATION_REQUIRED=407]="Proxy Authentication Required",n[r.REQUEST_HEADER_FIELDS_TOO_LARGE=431]="Request Header Fields Too Large",n[r.REQUEST_TIMEOUT=408]="Request Timeout",n[r.REQUEST_TOO_LONG=413]="Request Entity Too Large",n[r.REQUEST_URI_TOO_LONG=414]="Request-URI Too Long",n[r.REQUESTED_RANGE_NOT_SATISFIABLE=416]="Requested Range Not Satisfiable",n[r.RESET_CONTENT=205]="Reset Content",n[r.SEE_OTHER=303]="See Other",n[r.SERVICE_UNAVAILABLE=503]="Service Unavailable",n[r.SWITCHING_PROTOCOLS=101]="Switching Protocols",n[r.TEMPORARY_REDIRECT=307]="Temporary Redirect",n[r.TOO_MANY_REQUESTS=429]="Too Many Requests",n[r.UNAUTHORIZED=401]="Unauthorized",n[r.UNPROCESSABLE_ENTITY=422]="Unprocessable Entity",n[r.UNSUPPORTED_MEDIA_TYPE=415]="Unsupported Media Type",n[r.USE_PROXY=305]="Use Proxy",r.getStatusText=function(e){if(n.hasOwnProperty(e))return n[e];throw new Error("Status code does not exist: "+e)}},{}],69:[function(e,t,r){"use strict";function n(e,t){if(this.encodingName=e.encodingName,!e)throw new Error("DBCS codec is called without the data.");if(!e.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=e.table();this.decodeTables=[],this.decodeTables[0]=f.slice(0),this.decodeTableSeq=[];for(var n=0;nt)return-1;for(var r=0,n=e.length;r0;e>>=8)t.push(255&e);0==t.length&&t.push(0);for(var r=this.decodeTables[0],n=t.length-1;n>0;n--){var i=r[t[n]];if(i==u)r[t[n]]=l-this.decodeTables.length,this.decodeTables.push(r=f.slice(0));else{if(!(i<=l))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+e.toString(16));r=this.decodeTables[l-i]}}return r},n.prototype._addDecodeChunk=function(e){var t=parseInt(e[0],16),r=this._getDecodeTrieNode(t);t&=255;for(var n=1;n255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+e[0]+": too long"+t)},n.prototype._getEncodeBucket=function(e){var t=e>>8;return void 0===this.encodeTable[t]&&(this.encodeTable[t]=f.slice(0)),this.encodeTable[t]},n.prototype._setEncodeChar=function(e,t){var r=this._getEncodeBucket(e),n=255&e;r[n]<=-10?this.encodeTableSeq[-10-r[n]][-1]=t:r[n]==u&&(r[n]=t)},n.prototype._setEncodeSequence=function(e,t){var r,n=e[0],i=this._getEncodeBucket(n),o=255&n;i[o]<=-10?r=this.encodeTableSeq[-10-i[o]]:(r={},i[o]!==u&&(r[-1]=i[o]),i[o]=-10-this.encodeTableSeq.length,this.encodeTableSeq.push(r));for(var a=1;a=0?this._setEncodeChar(o,a):o<=l?this._fillEncodeTable(l-o,a<<8,r):o<=-10&&this._setEncodeSequence(this.decodeTableSeq[-10-o],a))}},i.prototype.write=function(e){for(var t=s.alloc(e.length*(this.gb18030?4:3)),r=this.leadSurrogate,n=this.seqObj,i=-1,o=0,c=0;;){if(-1===i){if(o==e.length)break;var l=e.charCodeAt(o++)}else{var l=i;i=-1}if(55296<=l&&l<57344)if(l<56320){if(-1===r){r=l;continue}r=l,l=u}else-1!==r?(l=65536+1024*(r-55296)+(l-56320),r=-1):l=u;else-1!==r&&(i=l,l=u,r=-1);var f=u;if(void 0!==n&&l!=u){var d=n[l];if("object"==typeof d){n=d;continue}"number"==typeof d?f=d:void 0==d&&void 0!==(d=n[-1])&&(f=d,i=l),n=void 0}else if(l>=0){var h=this.encodeTable[l>>8];if(void 0!==h&&(f=h[255&l]),f<=-10){n=this.encodeTableSeq[-10-f];continue}if(f==u&&this.gb18030){var p=a(this.gb18030.uChars,l);if(-1!=p){var f=this.gb18030.gbChars[p]+(l-this.gb18030.uChars[p]);t[c++]=129+Math.floor(f/12600),f%=12600,t[c++]=48+Math.floor(f/1260),f%=1260,t[c++]=129+Math.floor(f/10),f%=10,t[c++]=48+f;continue}}}f===u&&(f=this.defaultCharSingleByte),f<256?t[c++]=f:f<65536?(t[c++]=f>>8,t[c++]=255&f):(t[c++]=f>>16,t[c++]=f>>8&255,t[c++]=255&f)}return this.seqObj=n,this.leadSurrogate=r,t.slice(0,c)},i.prototype.end=function(){if(-1!==this.leadSurrogate||void 0!==this.seqObj){var e=s.alloc(10),t=0;if(this.seqObj){var r=this.seqObj[-1];void 0!==r&&(r<256?e[t++]=r:(e[t++]=r>>8,e[t++]=255&r)),this.seqObj=void 0}return-1!==this.leadSurrogate&&(e[t++]=this.defaultCharSingleByte,this.leadSurrogate=-1),e.slice(0,t)}},i.prototype.findIdx=a,o.prototype.write=function(e){var t,r=s.alloc(2*e.length),n=this.nodeIdx,i=this.prevBuf,o=this.prevBuf.length,f=-this.prevBuf.length;o>0&&(i=s.concat([i,e.slice(0,10)]));for(var d=0,h=0;d=0?e[d]:i[d+o],t=this.decodeTables[n][p];if(t>=0);else if(t===u)d=f,t=this.defaultCharUnicode.charCodeAt(0);else if(t===c){var m=f>=0?e.slice(f,d+1):i.slice(f+o,d+1+o),y=12600*(m[0]-129)+1260*(m[1]-48)+10*(m[2]-129)+(m[3]-48),v=a(this.gb18030.gbChars,y);t=this.gb18030.uChars[v]+y-this.gb18030.gbChars[v]}else{if(t<=l){n=l-t;continue}if(!(t<=-10))throw new Error("iconv-lite internal error: invalid decoding table value "+t+" at "+n+"/"+p);for(var g=this.decodeTableSeq[-10-t],_=0;_>8;t=g[g.length-1]}if(t>65535){t-=65536;var b=55296+Math.floor(t/1024);r[h++]=255&b,r[h++]=b>>8,t=56320+t%1024}r[h++]=255&t,r[h++]=t>>8,n=0,f=d+1}return this.nodeIdx=n,this.prevBuf=f>=0?e.slice(f):i.slice(f+o),r.slice(0,h).toString("ucs2")},o.prototype.end=function(){for(var e="";this.prevBuf.length>0;){e+=this.defaultCharUnicode;var t=this.prevBuf.slice(1);this.prevBuf=s.alloc(0),this.nodeIdx=0,t.length>0&&(e+=this.write(t))}return this.nodeIdx=0,e}},{"safer-buffer":110}],70:[function(e,t,r){"use strict";t.exports={shiftjis:{type:"_dbcs",table:function(){return e("./tables/shiftjis.json")},encodeAdd:{"¥":92,"‾":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return e("./tables/eucjp.json")},encodeAdd:{"¥":92,"‾":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return e("./tables/cp936.json")}},gbk:{type:"_dbcs",table:function(){return e("./tables/cp936.json").concat(e("./tables/gbk-added.json"))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return e("./tables/cp936.json").concat(e("./tables/gbk-added.json"))},gb18030:function(){return e("./tables/gb18030-ranges.json")},encodeSkipVals:[128],encodeAdd:{"€":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return e("./tables/cp949.json")}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return e("./tables/cp950.json")}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return e("./tables/cp950.json").concat(e("./tables/big5-added.json"))},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},{"./tables/big5-added.json":76,"./tables/cp936.json":77,"./tables/cp949.json":78,"./tables/cp950.json":79,"./tables/eucjp.json":80,"./tables/gb18030-ranges.json":81,"./tables/gbk-added.json":82,"./tables/shiftjis.json":83}],71:[function(e,t,r){"use strict";for(var n=[e("./internal"),e("./utf16"),e("./utf7"),e("./sbcs-codec"),e("./sbcs-data"),e("./sbcs-data-generated"),e("./dbcs-codec"),e("./dbcs-data")],i=0;i>>6),t[r++]=128+(63&i)):(t[r++]=224+(i>>>12),t[r++]=128+(i>>>6&63),t[r++]=128+(63&i))}return t.slice(0,r)},s.prototype.end=function(){},u.prototype.write=function(e){for(var t=this.acc,r=this.contBytes,n=this.accBytes,i="",o=0;o0&&(i+=this.defaultCharUnicode,r=0),a<128?i+=String.fromCharCode(a):a<224?(t=31&a,r=1,n=1):a<240?(t=15&a,r=2,n=1):i+=this.defaultCharUnicode):r>0?(t=t<<6|63&a,r--,n++,0===r&&(i+=2===n&&t<128&&t>0?this.defaultCharUnicode:3===n&&t<2048?this.defaultCharUnicode:String.fromCharCode(t))):i+=this.defaultCharUnicode}return this.acc=t,this.contBytes=r,this.accBytes=n,i},u.prototype.end=function(){var e=0;return this.contBytes>0&&(e+=this.defaultCharUnicode),e}},{"safer-buffer":110,string_decoder:67}],73:[function(e,t,r){"use strict";function n(e,t){if(!e)throw new Error("SBCS codec is called without the data.");if(!e.chars||128!==e.chars.length&&256!==e.chars.length)throw new Error("Encoding '"+e.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===e.chars.length){for(var r="",n=0;n<128;n++)r+=String.fromCharCode(n);e.chars=r+e.chars}this.decodeBuf=new a.from(e.chars,"ucs2");for(var i=new a.alloc(65536,t.defaultCharSingleByte.charCodeAt(0)),n=0;n?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:"\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"},georgianacademy:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:"\0ẲẴẪ\b\t\n\v\f\rỶỸỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"},iso646cn:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},iso646jp:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},hproman8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}},{}],75:[function(e,t,r){"use strict";t.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",10000:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}},{}],76:[function(e,t,r){ -t.exports=[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]},{}],77:[function(e,t,r){t.exports=[["0","\0",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]},{}],78:[function(e,t,r){ -t.exports=[["0","\0",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]},{}],79:[function(e,t,r){ -t.exports=[["0","\0",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]},{}],80:[function(e,t,r){t.exports=[["0","\0",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]},{}],81:[function(e,t,r){t.exports={ -uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}},{}],82:[function(e,t,r){t.exports=[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]},{}],83:[function(e,t,r){t.exports=[["0","\0",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]},{}],84:[function(e,t,r){"use strict";function n(){}function i(){}function o(){this.overflowByte=-1}function a(e,t){this.iconv=t}function s(e,t){e=e||{},void 0===e.addBOM&&(e.addBOM=!0),this.encoder=t.iconv.getEncoder("utf-16le",e)}function u(e,t){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=e||{},this.iconv=t.iconv}function c(e,t){var r=t||"utf-16le";if(e.length>=2)if(254==e[0]&&255==e[1])r="utf-16be";else if(255==e[0]&&254==e[1])r="utf-16le";else{for(var n=0,i=0,o=Math.min(e.length-e.length%2,64),a=0;an?r="utf-16be":i0&&(e=this.iconv.decode(c.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",e},r.utf7imap=a,a.prototype.encoder=s,a.prototype.decoder=u,a.prototype.bomAware=!0,s.prototype.write=function(e){for(var t=this.inBase64,r=this.base64Accum,n=this.base64AccumIdx,i=c.alloc(5*e.length+10),o=0,a=0;a0&&(o+=i.write(r.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),o),n=0),i[o++]=m,t=!1),t||(i[o++]=s,s===y&&(i[o++]=m))):(t||(i[o++]=y,t=!0),t&&(r[n++]=s>>8,r[n++]=255&s,n==r.length&&(o+=i.write(r.toString("base64").replace(/\//g,","),o),n=0)))}return this.inBase64=t,this.base64AccumIdx=n,i.slice(0,o)},s.prototype.end=function(){var e=c.alloc(10),t=0;return this.inBase64&&(this.base64AccumIdx>0&&(t+=e.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),t),this.base64AccumIdx=0),e[t++]=m,this.inBase64=!1),e.slice(0,t)};var v=d.slice();v[",".charCodeAt(0)]=!0,u.prototype.write=function(e){for(var t="",r=0,n=this.inBase64,i=this.base64Accum,o=0;o0&&(e=this.iconv.decode(c.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",e}},{"safer-buffer":110}],86:[function(e,t,r){"use strict";function n(e,t){this.encoder=e,this.addBOM=!0}function i(e,t){this.decoder=e,this.pass=!1,this.options=t||{}}r.PrependBOM=n,n.prototype.write=function(e){return this.addBOM&&(e="\ufeff"+e,this.addBOM=!1),this.encoder.write(e)},n.prototype.end=function(){return this.encoder.end()},r.StripBOM=i,i.prototype.write=function(e){var t=this.decoder.write(e);return this.pass||!t?t:("\ufeff"===t[0]&&(t=t.slice(1),"function"==typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0,t)},i.prototype.end=function(){return this.decoder.end()}},{}],87:[function(e,t,r){"use strict";var n=e("buffer").Buffer;t.exports=function(t){var r=void 0;t.supportsNodeEncodingsExtension=!(new n(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!r){if(r={},!t.supportsNodeEncodingsExtension)return console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"),void console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");var i={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};n.isNativeEncoding=function(e){return e&&i[e.toLowerCase()]};var o=e("buffer").SlowBuffer;if(r.SlowBufferToString=o.prototype.toString,o.prototype.toString=function(e,i,o){return e=String(e||"utf8").toLowerCase(),n.isNativeEncoding(e)?r.SlowBufferToString.call(this,e,i,o):(void 0===i&&(i=0),void 0===o&&(o=this.length),t.decode(this.slice(i,o),e))},r.SlowBufferWrite=o.prototype.write,o.prototype.write=function(e,i,o,a){if(isFinite(i))isFinite(o)||(a=o,o=void 0);else{var s=a;a=i,i=o,o=s}i=+i||0;var u=this.length-i;if(o?(o=+o)>u&&(o=u):o=u,a=String(a||"utf8").toLowerCase(),n.isNativeEncoding(a))return r.SlowBufferWrite.call(this,e,i,o,a);if(e.length>0&&(o<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var c=t.encode(e,a);return c.lengthf&&(o=f):o=f,e.length>0&&(o<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var d=t.encode(e,a);return d.length0?n.concat([a,s]):a},o.decode=function(e,t,r){"string"==typeof e&&(o.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),o.skipDecodeWarning=!0),e=n.from(""+(e||""),"binary"));var i=o.getDecoder(t,r),a=i.write(e),s=i.end();return s?a+s:a},o.encodingExists=function(e){try{return o.getCodec(e),!0}catch(e){return!1}},o.toEncoding=o.encode,o.fromEncoding=o.decode,o._codecDataCache={},o.getCodec=function(t){o.encodings||(o.encodings=e("../encodings"));for(var r=o._canonicalizeEncoding(t),n={};;){var i=o._codecDataCache[r];if(i)return i;var a=o.encodings[r];switch(typeof a){case"string":r=a;break;case"object":for(var s in a)n[s]=a[s];n.encodingName||(n.encodingName=r),r=a.type;break;case"function":return n.encodingName||(n.encodingName=r),i=new a(n,o),o._codecDataCache[n.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+t+"' (searched as: '"+r+"')")}}},o._canonicalizeEncoding=function(e){return(""+e).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")},o.getEncoder=function(e,t){var r=o.getCodec(e),n=new r.encoder(t,r);return r.bomAware&&t&&t.addBOM&&(n=new i.PrependBOM(n,t)),n},o.getDecoder=function(e,t){var r=o.getCodec(e),n=new r.decoder(t,r);return!r.bomAware||t&&!1===t.stripBOM||(n=new i.StripBOM(n,t)),n};var a=void 0!==r&&r.versions&&r.versions.node;if(a){var s=a.split(".").map(Number);(s[0]>0||s[1]>=10)&&e("./streams")(o),e("./extend-node")(o)}}).call(this,e("lYpoI2"))},{"../encodings":71,"./bom-handling":86,"./extend-node":87,"./streams":89,lYpoI2:59,"safer-buffer":110}],89:[function(e,t,r){"use strict";function n(e,t){this.conv=e,t=t||{},t.decodeStrings=!1,a.call(this,t)}function i(e,t){this.conv=e,t=t||{},t.encoding=this.encoding="utf8",a.call(this,t)}var o=e("buffer").Buffer,a=e("stream").Transform;t.exports=function(e){e.encodeStream=function(t,r){return new n(e.getEncoder(t,r),r)},e.decodeStream=function(t,r){return new i(e.getDecoder(t,r),r)},e.supportsStreams=!0,e.IconvLiteEncoderStream=n,e.IconvLiteDecoderStream=i,e._collect=i.prototype.collect},n.prototype=Object.create(a.prototype,{constructor:{value:n}}),n.prototype._transform=function(e,t,r){if("string"!=typeof e)return r(new Error("Iconv encoding stream needs strings as its input."));try{var n=this.conv.write(e);n&&n.length&&this.push(n),r()}catch(e){r(e)}},n.prototype._flush=function(e){try{var t=this.conv.end();t&&t.length&&this.push(t),e()}catch(t){e(t)}},n.prototype.collect=function(e){var t=[];return this.on("error",e),this.on("data",function(e){t.push(e)}),this.on("end",function(){e(null,o.concat(t))}),this},i.prototype=Object.create(a.prototype,{constructor:{value:i}}),i.prototype._transform=function(e,t,r){if(!o.isBuffer(e))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var n=this.conv.write(e);n&&n.length&&this.push(n,this.encoding),r()}catch(e){r(e)}},i.prototype._flush=function(e){try{var t=this.conv.end();t&&t.length&&this.push(t,this.encoding),e()}catch(t){e(t)}},i.prototype.collect=function(e){var t="";return this.on("error",e),this.on("data",function(e){t+=e}),this.on("end",function(){e(null,t)}),this}},{buffer:57,stream:61}],90:[function(e,t,r){r.read=function(e,t,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,l=-7,f=r?i-1:0,d=r?-1:1,h=e[t+f];for(f+=d,o=h&(1<<-l)-1,h>>=-l,l+=s;l>0;o=256*o+e[t+f],f+=d,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=n;l>0;a=256*a+e[t+f],f+=d,l-=8);if(0===o)o=1-c;else{if(o===u)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,n),o-=c}return(h?-1:1)*a*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var a,s,u,c=8*o-i-1,l=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:o-1,p=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),t+=a+f>=1?d/u:d*Math.pow(2,1-f),t*u>=2&&(a++,u/=2),a+f>=l?(s=0,a=l):a+f>=1?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[r+h]=255&s,h+=p,s/=256,i-=8);for(a=a<0;e[r+h]=255&a,h+=p,a/=256,c-=8);e[r+h-p]|=128*m}},{}],91:[function(e,t,r){t.exports=e(52)},{}],92:[function(e,t,r){"use strict";function n(e,t,r,a,s,u,c,l,f,d){if(a&&"object"==typeof a&&!Array.isArray(a)){t(a,s,u,c,l,f,d);for(var h in a){var p=a[h];if(Array.isArray(p)){if(h in o.arrayKeywords)for(var m=0;m=48&&e<=57}function n(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function i(e){return"01234567".indexOf(e)>=0}function o(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0}function a(e){return 10===e||13===e||8232===e||8233===e}function s(e){return 64==e||36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&it.NonAsciiIdentifierStart.test(String.fromCharCode(e))}function u(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&it.NonAsciiIdentifierPart.test(String.fromCharCode(e))}function c(e){switch(e){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0;default:return!1}}function l(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}function f(e){return"eval"===e||"arguments"===e}function d(e){if(st&&l(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e||"let"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function h(e,r,n,i,o){var a;t("number"==typeof n,"Comment must have valid position"),pt.lastCommentStart>=n||(pt.lastCommentStart=n,a={type:e,value:r},mt.range&&(a.range=[n,i]),mt.loc&&(a.loc=o),mt.comments.push(a),mt.attachComment&&(mt.leadingComments.push(a),mt.trailingComments.push(a)))}function p(e){var t,r,n,i;for(t=ut-e,r={start:{line:ct,column:ut-lt-e}};ut=ft&&L({},nt.UnexpectedToken,"ILLEGAL");else if(42===r){if(47===at.charCodeAt(ut+1))return++ut,++ut,void(mt.comments&&(n=at.slice(e+2,ut-2),t.end={line:ct,column:ut-lt},h("Block",n,e,ut,t)));++ut}else++ut;L({},nt.UnexpectedToken,"ILLEGAL")}function y(){var e,t;for(t=0===ut;ut>>="===(n=at.substr(ut,4))?(ut+=4,{type:Xe.Punctuator,value:n,lineNumber:ct,lineStart:lt,start:i,end:ut}):">>>"===(r=n.substr(0,3))||"<<="===r||">>="===r?(ut+=3,{type:Xe.Punctuator,value:r,lineNumber:ct,lineStart:lt,start:i,end:ut}):(t=r.substr(0,2),a===t[1]&&"+-<>&|".indexOf(a)>=0||"=>"===t?(ut+=2,{type:Xe.Punctuator,value:t,lineNumber:ct,lineStart:lt,start:i,end:ut}):"<>=!+-*%&|^/".indexOf(a)>=0?(++ut,{type:Xe.Punctuator,value:a,lineNumber:ct,lineStart:lt,start:i,end:ut}):void L({},nt.UnexpectedToken,"ILLEGAL"))}function w(e){for(var t="";ut=0&&ut0&&(n=mt.tokens[mt.tokens.length-1],n.range[0]===e&&"Punctuator"===n.type&&("/"!==n.value&&"/="!==n.value||mt.tokens.pop())),mt.tokens.push({type:"RegularExpression",value:r.literal,range:[e,ut],loc:t})),r}function F(e){return e.type===Xe.Identifier||e.type===Xe.Keyword||e.type===Xe.BooleanLiteral||e.type===Xe.NullLiteral}function j(){var e,t;if(!(e=mt.tokens[mt.tokens.length-1]))return k();if("Punctuator"===e.type){if("]"===e.value)return E();if(")"===e.value)return t=mt.tokens[mt.openParenToken-1],!t||"Keyword"!==t.type||"if"!==t.value&&"while"!==t.value&&"for"!==t.value&&"with"!==t.value?E():k();if("}"===e.value){if(mt.tokens[mt.openCurlyToken-3]&&"Keyword"===mt.tokens[mt.openCurlyToken-3].type){if(!(t=mt.tokens[mt.openCurlyToken-4]))return E()}else{if(!mt.tokens[mt.openCurlyToken-4]||"Keyword"!==mt.tokens[mt.openCurlyToken-4].type)return E();if(!(t=mt.tokens[mt.openCurlyToken-5]))return k()}return et.indexOf(t.value)>=0?E():k()}return k()}return"Keyword"===e.type?k():E()}function x(){var e;return y(),ut>=ft?{type:Xe.EOF,lineNumber:ct,lineStart:lt,start:ut,end:ut}:(e=at.charCodeAt(ut),s(e)?b():40===e||41===e||59===e?E():39===e||34===e?P():46===e?r(at.charCodeAt(ut+1))?A():E():r(e)?A():mt.tokenize&&47===e?j():E())}function M(){var e,t,r;return y(),e={start:{line:ct,column:ut-lt}},t=x(),e.end={line:ct,column:ut-lt},t.type!==Xe.EOF&&(r=at.slice(t.start,t.end),mt.tokens.push({type:Ze[t.type],value:r,range:[t.start,t.end],loc:e})),t}function I(){var e;return e=ht,ut=e.end,ct=e.lineNumber,lt=e.lineStart,ht=void 0!==mt.tokens?M():x(),ut=e.end,ct=e.lineNumber,lt=e.lineStart,e}function B(){var e,t,r;e=ut,t=ct,r=lt,ht=void 0!==mt.tokens?M():x(),ut=e,ct=t,lt=r}function R(e,t){this.line=e,this.column=t}function N(e,t,r,n){this.start=new R(e,t),this.end=new R(r,n)}function U(){var e,t,r,n;return e=ut,t=ct,r=lt,y(),n=ct!==t,ut=e,ct=t,lt=r,n}function L(e,r){var n,i=Array.prototype.slice.call(arguments,2),o=r.replace(/%(\d)/g,function(e,r){return t(r>="===e||">>>="===e||"&="===e||"^="===e||"|="===e)}function $(){var e;if(59===at.charCodeAt(ut)||H(";"))return void I();e=ct,y(),ct===e&&(ht.type===Xe.EOF||H("}")||G(ht))}function K(e){return e.type===tt.Identifier||e.type===tt.MemberExpression}function J(){var e,t=[];for(e=ht,V("[");!H("]");)H(",")?(I(),t.push(null)):(t.push(me()),H("]")||V(","));return I(),dt.markEnd(dt.createArrayExpression(t),e)}function Q(e,t){var r,n,i;return r=st,i=ht,n=Ge(),t&&st&&f(e[0].name)&&z(t,nt.StrictParamName),st=r,dt.markEnd(dt.createFunctionExpression(null,e,[],n),i)}function X(){var e,t;return t=ht,e=I(),e.type===Xe.StringLiteral||e.type===Xe.NumericLiteral?(st&&e.octal&&z(e,nt.StrictOctalLiteral),dt.markEnd(dt.createLiteral(e),t)):dt.markEnd(dt.createIdentifier(e.value),t)}function Z(){var e,t,r,n,i,o;return e=ht,o=ht,e.type===Xe.Identifier?(r=X(),"get"!==e.value||H(":")?"set"!==e.value||H(":")?(V(":"),n=me(),dt.markEnd(dt.createProperty("init",r,n),o)):(t=X(),V("("),e=ht,e.type!==Xe.Identifier?(V(")"),z(e,nt.UnexpectedToken,e.value),n=Q([])):(i=[_e()],V(")"),n=Q(i,e)),dt.markEnd(dt.createProperty("set",t,n),o)):(t=X(),V("("),V(")"),n=Q([]),dt.markEnd(dt.createProperty("get",t,n),o))):e.type!==Xe.EOF&&e.type!==Xe.Punctuator?(t=X(),V(":"),n=me(),dt.markEnd(dt.createProperty("init",t,n),o)):void G(e)}function ee(){var e,t,r,n,i,o=[],a={},s=String;for(i=ht,V("{");!H("}");)e=Z(),t=e.key.type===tt.Identifier?e.key.name:s(e.key.value),n="init"===e.kind?rt.Data:"get"===e.kind?rt.Get:rt.Set,r="$"+t,Object.prototype.hasOwnProperty.call(a,r)?(a[r]===rt.Data?st&&n===rt.Data?z({},nt.StrictDuplicateProperty):n!==rt.Data&&z({},nt.AccessorDataProperty):n===rt.Data?z({},nt.AccessorDataProperty):a[r]&n&&z({},nt.AccessorGetSet),a[r]|=n):a[r]=n,o.push(e),H("}")||V(",");return V("}"),dt.markEnd(dt.createObjectExpression(o),i)}function te(){var e;return V("("),e=ye(),V(")"),e}function re(){var e,t,r,n;if(H("("))return te();if(H("["))return J();if(H("{"))return ee();if(e=ht.type,n=ht,e===Xe.Identifier)r=dt.createIdentifier(I().value);else if(e===Xe.StringLiteral||e===Xe.NumericLiteral)st&&ht.octal&&z(ht,nt.StrictOctalLiteral),r=dt.createLiteral(I());else if(e===Xe.Keyword){if(W("function"))return He();W("this")?(I(),r=dt.createThisExpression()):G(I())}else e===Xe.BooleanLiteral?(t=I(),t.value="true"===t.value,r=dt.createLiteral(t)):e===Xe.NullLiteral?(t=I(),t.value=null,r=dt.createLiteral(t)):H("/")||H("/=")?(r=void 0!==mt.tokens?dt.createLiteral(k()):dt.createLiteral(T()),B()):G(I());return dt.markEnd(r,n)}function ne(){var e=[];if(V("("),!H(")"))for(;ut":case"<=":case">=":case"instanceof":r=7;break;case"in":r=t?7:0;break;case"<<":case">>":case">>>":r=8;break;case"+":case"-":r=9;break;case"*":case"/":case"%":r=11}return r}function he(){var e,t,r,n,i,o,a,s,u,c;if(e=ht,u=fe(),n=ht,0===(i=de(n,pt.allowIn)))return u;for(n.prec=i,I(),t=[e,ht],a=fe(),o=[u,n,a];(i=de(ht,pt.allowIn))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,u=o.pop(),r=dt.createBinaryExpression(s,u,a),t.pop(),e=t[t.length-1],dt.markEnd(r,e),o.push(r);n=I(),n.prec=i,o.push(n),t.push(ht),r=fe(),o.push(r)}for(c=o.length-1,r=o[c],t.pop();c>1;)r=dt.createBinaryExpression(o[c-1].value,o[c-2],r),c-=2,e=t.pop(),dt.markEnd(r,e);return r}function pe(){var e,t,r,n,i;return i=ht,e=he(),H("?")&&(I(),t=pt.allowIn,pt.allowIn=!0,r=me(),pt.allowIn=t,V(":"),n=me(),e=dt.createConditionalExpression(e,r,n),dt.markEnd(e,i)),e}function me(){var e,t,r,n,i;return e=ht,i=ht,n=t=pe(),Y()&&(K(t)||z({},nt.InvalidLHSInAssignment),st&&t.type===tt.Identifier&&f(t.name)&&z(e,nt.StrictLHSAssignment),e=I(),r=me(),n=dt.markEnd(dt.createAssignmentExpression(e.value,t,r),i)),n}function ye(){var e,t=ht;if(e=me(),H(",")){for(e=dt.createSequenceExpression([e]);ut0?1:0,lt=0,ft=at.length,ht=null,pt={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},mt={},t=t||{},t.tokens=!0,mt.tokens=[],mt.tokenize=!0,mt.openParenToken=-1,mt.openCurlyToken=-1,mt.range="boolean"==typeof t.range&&t.range,mt.loc="boolean"==typeof t.loc&&t.loc,"boolean"==typeof t.comment&&t.comment&&(mt.comments=[]),"boolean"==typeof t.tolerant&&t.tolerant&&(mt.errors=[]);try{if(B(),ht.type===Xe.EOF)return mt.tokens;for(I();ht.type!==Xe.EOF;)try{I()}catch(e){if(ht,mt.errors){mt.errors.push(e);break}throw e}Ke(),n=mt.tokens,void 0!==mt.comments&&(n.comments=mt.comments),void 0!==mt.errors&&(n.errors=mt.errors)}catch(e){throw e}finally{mt={}}return n}function Qe(e,t){var r,n;n=String,"string"==typeof e||e instanceof String||(e=n(e)),dt=ot,at=e,ut=0,ct=at.length>0?1:0,lt=0,ft=at.length,ht=null,pt={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},mt={},void 0!==t&&(mt.range="boolean"==typeof t.range&&t.range,mt.loc="boolean"==typeof t.loc&&t.loc,mt.attachComment="boolean"==typeof t.attachComment&&t.attachComment,mt.loc&&null!==t.source&&void 0!==t.source&&(mt.source=n(t.source)),"boolean"==typeof t.tokens&&t.tokens&&(mt.tokens=[]),"boolean"==typeof t.comment&&t.comment&&(mt.comments=[]),"boolean"==typeof t.tolerant&&t.tolerant&&(mt.errors=[]),mt.attachComment&&(mt.range=!0,mt.comments=[],mt.bottomRightStack=[],mt.trailingComments=[],mt.leadingComments=[]));try{r=$e(),void 0!==mt.comments&&(r.comments=mt.comments),void 0!==mt.tokens&&(Ke(),r.tokens=mt.tokens),void 0!==mt.errors&&(r.errors=mt.errors)}catch(e){throw e}finally{mt={}}return r}var Xe,Ze,et,tt,rt,nt,it,ot,at,st,ut,ct,lt,ft,dt,ht,pt,mt;Xe={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9},Ze={},Ze[Xe.BooleanLiteral]="Boolean",Ze[Xe.EOF]="",Ze[Xe.Identifier]="Identifier",Ze[Xe.Keyword]="Keyword",Ze[Xe.NullLiteral]="Null",Ze[Xe.NumericLiteral]="Numeric",Ze[Xe.Punctuator]="Punctuator",Ze[Xe.StringLiteral]="String",Ze[Xe.RegularExpression]="RegularExpression",et=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],tt={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},rt={Data:1,Get:2,Set:4},nt={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},it={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},ot={name:"SyntaxTree",processComment:function(e){var t,r;if(!(e.type===tt.Program&&e.body.length>0)){for(mt.trailingComments.length>0?mt.trailingComments[0].range[0]>=e.range[1]?(r=mt.trailingComments,mt.trailingComments=[]):mt.trailingComments.length=0:mt.bottomRightStack.length>0&&mt.bottomRightStack[mt.bottomRightStack.length-1].trailingComments&&mt.bottomRightStack[mt.bottomRightStack.length-1].trailingComments[0].range[0]>=e.range[1]&&(r=mt.bottomRightStack[mt.bottomRightStack.length-1].trailingComments,delete mt.bottomRightStack[mt.bottomRightStack.length-1].trailingComments);mt.bottomRightStack.length>0&&mt.bottomRightStack[mt.bottomRightStack.length-1].range[0]>=e.range[0];)t=mt.bottomRightStack.pop();t?t.leadingComments&&t.leadingComments[t.leadingComments.length-1].range[1]<=e.range[0]&&(e.leadingComments=t.leadingComments,delete t.leadingComments):mt.leadingComments.length>0&&mt.leadingComments[mt.leadingComments.length-1].range[1]<=e.range[0]&&(e.leadingComments=mt.leadingComments,mt.leadingComments=[]),r&&(e.trailingComments=r),mt.bottomRightStack.push(e)}},markEnd:function(e,t){return mt.range&&(e.range=[t.start,ut]),mt.loc&&(e.loc=new N(void 0===t.startLineNumber?t.lineNumber:t.startLineNumber,t.start-(void 0===t.startLineStart?t.lineStart:t.startLineStart),ct,ut-lt),this.postProcess(e)),mt.attachComment&&this.processComment(e),e},postProcess:function(e){return mt.source&&(e.loc.source=mt.source),e},createArrayExpression:function(e){return{type:tt.ArrayExpression,elements:e}},createAssignmentExpression:function(e,t,r){return{type:tt.AssignmentExpression,operator:e,left:t,right:r}},createBinaryExpression:function(e,t,r){return{type:"||"===e||"&&"===e?tt.LogicalExpression:tt.BinaryExpression,operator:e,left:t,right:r}},createBlockStatement:function(e){return{type:tt.BlockStatement,body:e}},createBreakStatement:function(e){return{type:tt.BreakStatement,label:e}},createCallExpression:function(e,t){return{type:tt.CallExpression,callee:e,arguments:t}},createCatchClause:function(e,t){return{type:tt.CatchClause,param:e,body:t}},createConditionalExpression:function(e,t,r){return{type:tt.ConditionalExpression,test:e,consequent:t,alternate:r}},createContinueStatement:function(e){return{type:tt.ContinueStatement,label:e}},createDebuggerStatement:function(){return{type:tt.DebuggerStatement}},createDoWhileStatement:function(e,t){return{type:tt.DoWhileStatement,body:e,test:t}},createEmptyStatement:function(){return{type:tt.EmptyStatement}},createExpressionStatement:function(e){return{type:tt.ExpressionStatement,expression:e}},createForStatement:function(e,t,r,n){return{type:tt.ForStatement,init:e,test:t,update:r,body:n}},createForInStatement:function(e,t,r){return{type:tt.ForInStatement,left:e,right:t,body:r,each:!1}},createFunctionDeclaration:function(e,t,r,n){return{type:tt.FunctionDeclaration,id:e,params:t,defaults:r,body:n,rest:null,generator:!1,expression:!1}},createFunctionExpression:function(e,t,r,n){return{type:tt.FunctionExpression,id:e,params:t,defaults:r,body:n, -rest:null,generator:!1,expression:!1}},createIdentifier:function(e){return{type:tt.Identifier,name:e}},createIfStatement:function(e,t,r){return{type:tt.IfStatement,test:e,consequent:t,alternate:r}},createLabeledStatement:function(e,t){return{type:tt.LabeledStatement,label:e,body:t}},createLiteral:function(e){return{type:tt.Literal,value:e.value,raw:at.slice(e.start,e.end)}},createMemberExpression:function(e,t,r){return{type:tt.MemberExpression,computed:"["===e,object:t,property:r}},createNewExpression:function(e,t){return{type:tt.NewExpression,callee:e,arguments:t}},createObjectExpression:function(e){return{type:tt.ObjectExpression,properties:e}},createPostfixExpression:function(e,t){return{type:tt.UpdateExpression,operator:e,argument:t,prefix:!1}},createProgram:function(e){return{type:tt.Program,body:e}},createProperty:function(e,t,r){return{type:tt.Property,key:t,value:r,kind:e}},createReturnStatement:function(e){return{type:tt.ReturnStatement,argument:e}},createSequenceExpression:function(e){return{type:tt.SequenceExpression,expressions:e}},createSwitchCase:function(e,t){return{type:tt.SwitchCase,test:e,consequent:t}},createSwitchStatement:function(e,t){return{type:tt.SwitchStatement,discriminant:e,cases:t}},createThisExpression:function(){return{type:tt.ThisExpression}},createThrowStatement:function(e){return{type:tt.ThrowStatement,argument:e}},createTryStatement:function(e,t,r,n){return{type:tt.TryStatement,block:e,guardedHandlers:t,handlers:r,finalizer:n}},createUnaryExpression:function(e,t){return"++"===e||"--"===e?{type:tt.UpdateExpression,operator:e,argument:t,prefix:!0}:{type:tt.UnaryExpression,operator:e,argument:t,prefix:!0}},createVariableDeclaration:function(e,t){return{type:tt.VariableDeclaration,declarations:e,kind:t}},createVariableDeclarator:function(e,t){return{type:tt.VariableDeclarator,id:e,init:t}},createWhileStatement:function(e,t){return{type:tt.WhileStatement,test:e,body:t}},createWithStatement:function(e,t){return{type:tt.WithStatement,object:e,body:t}}},e.version="1.2.2",e.tokenize=Je,e.parse=Qe,e.Syntax=function(){var e,t={};"function"==typeof Object.create&&(t=Object.create(null));for(e in tt)tt.hasOwnProperty(e)&&(t[e]=tt[e]);return"function"==typeof Object.freeze&&Object.freeze(t),t}()})},{}],94:[function(e,t,r){(function(n){var i=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,JSON_PATH:3,DOLLAR:4,PATH_COMPONENTS:5,LEADING_CHILD_MEMBER_EXPRESSION:6,PATH_COMPONENT:7,MEMBER_COMPONENT:8,SUBSCRIPT_COMPONENT:9,CHILD_MEMBER_COMPONENT:10,DESCENDANT_MEMBER_COMPONENT:11,DOT:12,MEMBER_EXPRESSION:13,DOT_DOT:14,STAR:15,IDENTIFIER:16,SCRIPT_EXPRESSION:17,INTEGER:18,END:19,CHILD_SUBSCRIPT_COMPONENT:20,DESCENDANT_SUBSCRIPT_COMPONENT:21,"[":22,SUBSCRIPT:23,"]":24,SUBSCRIPT_EXPRESSION:25,SUBSCRIPT_EXPRESSION_LIST:26,SUBSCRIPT_EXPRESSION_LISTABLE:27,",":28,STRING_LITERAL:29,ARRAY_SLICE:30,FILTER_EXPRESSION:31,QQ_STRING:32,Q_STRING:33,$accept:0,$end:1},terminals_:{2:"error",4:"DOLLAR",12:"DOT",14:"DOT_DOT",15:"STAR",16:"IDENTIFIER",17:"SCRIPT_EXPRESSION",18:"INTEGER",19:"END",22:"[",24:"]",28:",",30:"ARRAY_SLICE",31:"FILTER_EXPRESSION",32:"QQ_STRING",33:"Q_STRING"},productions_:[0,[3,1],[3,2],[3,1],[3,2],[5,1],[5,2],[7,1],[7,1],[8,1],[8,1],[10,2],[6,1],[11,2],[13,1],[13,1],[13,1],[13,1],[13,1],[9,1],[9,1],[20,3],[21,4],[23,1],[23,1],[26,1],[26,3],[27,1],[27,1],[27,1],[25,1],[25,1],[25,1],[29,1],[29,1]],performAction:function(e,t,n,i,o,a,s){i.ast||(i.ast=r,r.initialize());var u=a.length-1;switch(o){case 1:return i.ast.set({expression:{type:"root",value:a[u]}}),i.ast.unshift(),i.ast.yield();case 2:return i.ast.set({expression:{type:"root",value:a[u-1]}}),i.ast.unshift(),i.ast.yield();case 3:return i.ast.unshift(),i.ast.yield();case 4:return i.ast.set({operation:"member",scope:"child",expression:{type:"identifier",value:a[u-1]}}),i.ast.unshift(),i.ast.yield();case 5:case 6:break;case 7:i.ast.set({operation:"member"}),i.ast.push();break;case 8:i.ast.set({operation:"subscript"}),i.ast.push();break;case 9:i.ast.set({scope:"child"});break;case 10:i.ast.set({scope:"descendant"});break;case 11:break;case 12:i.ast.set({scope:"child",operation:"member"});break;case 13:break;case 14:i.ast.set({expression:{type:"wildcard",value:a[u]}});break;case 15:i.ast.set({expression:{type:"identifier",value:a[u]}});break;case 16:i.ast.set({expression:{type:"script_expression",value:a[u]}});break;case 17:i.ast.set({expression:{type:"numeric_literal",value:parseInt(a[u])}});break;case 18:break;case 19:i.ast.set({scope:"child"});break;case 20:i.ast.set({scope:"descendant"});break;case 21:case 22:case 23:break;case 24:a[u].length>1?i.ast.set({expression:{type:"union",value:a[u]}}):this.$=a[u];break;case 25:this.$=[a[u]];break;case 26:this.$=a[u-2].concat(a[u]);break;case 27:this.$={expression:{type:"numeric_literal",value:parseInt(a[u])}},i.ast.set(this.$);break;case 28:this.$={expression:{type:"string_literal",value:a[u]}},i.ast.set(this.$);break;case 29:this.$={expression:{type:"slice",value:a[u]}},i.ast.set(this.$);break;case 30:this.$={expression:{type:"wildcard",value:a[u]}},i.ast.set(this.$);break;case 31:this.$={expression:{type:"script_expression",value:a[u]}},i.ast.set(this.$);break;case 32:this.$={expression:{type:"filter_expression",value:a[u]}},i.ast.set(this.$);break;case 33:case 34:this.$=a[u]}},table:[{3:1,4:[1,2],6:3,13:4,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{1:[3]},{1:[2,1],5:10,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,3],5:21,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,12],12:[2,12],14:[2,12],22:[2,12]},{1:[2,14],12:[2,14],14:[2,14],22:[2,14]},{1:[2,15],12:[2,15],14:[2,15],22:[2,15]},{1:[2,16],12:[2,16],14:[2,16],22:[2,16]},{1:[2,17],12:[2,17],14:[2,17],22:[2,17]},{1:[2,18],12:[2,18],14:[2,18],22:[2,18]},{1:[2,2],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,5],12:[2,5],14:[2,5],22:[2,5]},{1:[2,7],12:[2,7],14:[2,7],22:[2,7]},{1:[2,8],12:[2,8],14:[2,8],22:[2,8]},{1:[2,9],12:[2,9],14:[2,9],22:[2,9]},{1:[2,10],12:[2,10],14:[2,10],22:[2,10]},{1:[2,19],12:[2,19],14:[2,19],22:[2,19]},{1:[2,20],12:[2,20],14:[2,20],22:[2,20]},{13:23,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{13:24,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9],22:[1,25]},{15:[1,29],17:[1,30],18:[1,33],23:26,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{1:[2,4],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,6],12:[2,6],14:[2,6],22:[2,6]},{1:[2,11],12:[2,11],14:[2,11],22:[2,11]},{1:[2,13],12:[2,13],14:[2,13],22:[2,13]},{15:[1,29],17:[1,30],18:[1,33],23:38,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{24:[1,39]},{24:[2,23]},{24:[2,24],28:[1,40]},{24:[2,30]},{24:[2,31]},{24:[2,32]},{24:[2,25],28:[2,25]},{24:[2,27],28:[2,27]},{24:[2,28],28:[2,28]},{24:[2,29],28:[2,29]},{24:[2,33],28:[2,33]},{24:[2,34],28:[2,34]},{24:[1,41]},{1:[2,21],12:[2,21],14:[2,21],22:[2,21]},{18:[1,33],27:42,29:34,30:[1,35],32:[1,36],33:[1,37]},{1:[2,22],12:[2,22],14:[2,22],22:[2,22]},{24:[2,26],28:[2,26]}],defaultActions:{27:[2,23],29:[2,30],30:[2,31],31:[2,32]},parseError:function(e,t){if(!t.recoverable)throw new Error(e);this.trace(e)},parse:function(e){var t=this,r=[0],n=[null],i=[],o=this.table,a="",s=0,u=0,c=0,l=1,f=i.slice.call(arguments,1);this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var d=this.lexer.yylloc;i.push(d);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError?this.parseError=this.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var p,m,y,v,g,_,b,E,w,S={};;){if(y=r[r.length-1],this.defaultActions[y]?v=this.defaultActions[y]:(null!==p&&void 0!==p||(p=function(){var e;return e=t.lexer.lex()||l,"number"!=typeof e&&(e=t.symbols_[e]||e),e}()),v=o[y]&&o[y][p]),void 0===v||!v.length||!v[0]){var A="";w=[];for(_ in o[y])this.terminals_[_]&&_>2&&w.push("'"+this.terminals_[_]+"'");A=this.lexer.showPosition?"Parse error on line "+(s+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(s+1)+": Unexpected "+(p==l?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(A,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:d,expected:w})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+y+", token: "+p);switch(v[0]){case 1:r.push(p),n.push(this.lexer.yytext),i.push(this.lexer.yylloc),r.push(v[1]),p=null,m?(p=m,m=null):(u=this.lexer.yyleng,a=this.lexer.yytext,s=this.lexer.yylineno,d=this.lexer.yylloc,c>0&&c--);break;case 2:if(b=this.productions_[v[1]][1],S.$=n[n.length-b],S._$={first_line:i[i.length-(b||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(b||1)].first_column,last_column:i[i.length-1].last_column},h&&(S._$.range=[i[i.length-(b||1)].range[0],i[i.length-1].range[1]]),void 0!==(g=this.performAction.apply(S,[a,u,s,this.yy,v[1],n,i].concat(f))))return g;b&&(r=r.slice(0,-1*b*2),n=n.slice(0,-1*b),i=i.slice(0,-1*b)),r.push(this.productions_[v[1]][0]),n.push(S.$),i.push(S._$),E=o[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0}},r={initialize:function(){this._nodes=[],this._node={},this._stash=[]},set:function(e){for(var t in e)this._node[t]=e[t];return this._node},node:function(e){return arguments.length&&(this._node=e),this._node},push:function(){this._nodes.push(this._node),this._node={}},unshift:function(){this._nodes.unshift(this._node),this._node={}},yield:function(){var e=this._nodes;return this.initialize(),e}},n=function(){return{EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,r=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var r,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),n=e[0].match(/(?:\r\n?|\n).*/g),n&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var o in i)this[o]=i[o];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,r,n;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;ot[0].length)){if(t=r,n=o,this.options.backtrack_lexer){if(!1!==(e=this.test_match(r,i[o])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,r,n){switch(r){case 0:return 4;case 1:return 14;case 2:return 12;case 3:return 15;case 4:return 16;case 5:return 22;case 6:return 24;case 7:return 28;case 8:return 30;case 9:return 18;case 10:return t.yytext=t.yytext.substr(1,t.yyleng-2),32;case 11:return t.yytext=t.yytext.substr(1,t.yyleng-2),33;case 12:return 17;case 13:return 31}},rules:[/^(?:\$)/,/^(?:\.\.)/,/^(?:\.)/,/^(?:\*)/,/^(?:[a-zA-Z_]+[a-zA-Z0-9_]*)/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?:((-?(?:0|[1-9][0-9]*)))?\:((-?(?:0|[1-9][0-9]*)))?(\:((-?(?:0|[1-9][0-9]*)))?)?)/,/^(?:(-?(?:0|[1-9][0-9]*)))/,/^(?:"(?:\\["bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^"\\])*")/,/^(?:'(?:\\['bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^'\\])*')/,/^(?:\(.+?\)(?=\]))/,/^(?:\?\(.+?\)(?=\]))/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}}}}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();void 0!==e&&void 0!==r&&(r.parser=i,r.Parser=i.Parser,r.parse=function(){return i.parse.apply(i,arguments)},r.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),n.exit(1));var i=e("fs").readFileSync(e("path").normalize(t[1]),"utf8");return r.parser.parse(i)},void 0!==t&&e.main===t&&r.main(n.argv.slice(1)))}).call(this,e("lYpoI2"))},{fs:56,lYpoI2:59,path:106}],95:[function(e,t,r){t.exports=e("./lib/index")},{"./lib/index":99}],96:[function(e,t,r){t.exports={identifier:"[a-zA-Z_]+[a-zA-Z0-9_]*",integer:"-?(?:0|[1-9][0-9]*)",qq_string:'"(?:\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^"\\\\])*"',q_string:"'(?:\\\\['bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^'\\\\])*'"}},{}],97:[function(e,t,r){var n=e("./dict"),i=e("fs"),o={lex:{macros:{esc:"\\\\",int:n.integer},rules:[["\\$","return 'DOLLAR'"],["\\.\\.","return 'DOT_DOT'"],["\\.","return 'DOT'"],["\\*","return 'STAR'"],[n.identifier,"return 'IDENTIFIER'"],["\\[","return '['"],["\\]","return ']'"],[",","return ','"],["({int})?\\:({int})?(\\:({int})?)?","return 'ARRAY_SLICE'"],["{int}","return 'INTEGER'"],[n.qq_string,"yytext = yytext.substr(1,yyleng-2); return 'QQ_STRING';"],[n.q_string,"yytext = yytext.substr(1,yyleng-2); return 'Q_STRING';"],["\\(.+?\\)(?=\\])","return 'SCRIPT_EXPRESSION'"],["\\?\\(.+?\\)(?=\\])","return 'FILTER_EXPRESSION'"]]},start:"JSON_PATH",bnf:{JSON_PATH:[["DOLLAR",'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()'],["DOLLAR PATH_COMPONENTS",'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()'],["LEADING_CHILD_MEMBER_EXPRESSION","yy.ast.unshift(); return yy.ast.yield()"],["LEADING_CHILD_MEMBER_EXPRESSION PATH_COMPONENTS",'yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $1 }}); yy.ast.unshift(); return yy.ast.yield()']],PATH_COMPONENTS:[["PATH_COMPONENT",""],["PATH_COMPONENTS PATH_COMPONENT",""]],PATH_COMPONENT:[["MEMBER_COMPONENT",'yy.ast.set({ operation: "member" }); yy.ast.push()'],["SUBSCRIPT_COMPONENT",'yy.ast.set({ operation: "subscript" }); yy.ast.push() ']],MEMBER_COMPONENT:[["CHILD_MEMBER_COMPONENT",'yy.ast.set({ scope: "child" })'],["DESCENDANT_MEMBER_COMPONENT",'yy.ast.set({ scope: "descendant" })']],CHILD_MEMBER_COMPONENT:[["DOT MEMBER_EXPRESSION",""]],LEADING_CHILD_MEMBER_EXPRESSION:[["MEMBER_EXPRESSION",'yy.ast.set({ scope: "child", operation: "member" })']],DESCENDANT_MEMBER_COMPONENT:[["DOT_DOT MEMBER_EXPRESSION",""]],MEMBER_EXPRESSION:[["STAR",'yy.ast.set({ expression: { type: "wildcard", value: $1 } })'],["IDENTIFIER",'yy.ast.set({ expression: { type: "identifier", value: $1 } })'],["SCRIPT_EXPRESSION",'yy.ast.set({ expression: { type: "script_expression", value: $1 } })'],["INTEGER",'yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($1) } })'],["END",""]],SUBSCRIPT_COMPONENT:[["CHILD_SUBSCRIPT_COMPONENT",'yy.ast.set({ scope: "child" })'],["DESCENDANT_SUBSCRIPT_COMPONENT",'yy.ast.set({ scope: "descendant" })']],CHILD_SUBSCRIPT_COMPONENT:[["[ SUBSCRIPT ]",""]],DESCENDANT_SUBSCRIPT_COMPONENT:[["DOT_DOT [ SUBSCRIPT ]",""]],SUBSCRIPT:[["SUBSCRIPT_EXPRESSION",""],["SUBSCRIPT_EXPRESSION_LIST",'$1.length > 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1']],SUBSCRIPT_EXPRESSION_LIST:[["SUBSCRIPT_EXPRESSION_LISTABLE","$$ = [$1]"],["SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE","$$ = $1.concat($3)"]],SUBSCRIPT_EXPRESSION_LISTABLE:[["INTEGER",'$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)'],["STRING_LITERAL",'$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)'],["ARRAY_SLICE",'$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)']],SUBSCRIPT_EXPRESSION:[["STAR",'$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)'],["SCRIPT_EXPRESSION",'$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)'],["FILTER_EXPRESSION",'$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)']],STRING_LITERAL:[["QQ_STRING","$$ = $1"],["Q_STRING","$$ = $1"]]}};i.readFileSync&&(o.moduleInclude=i.readFileSync(e.resolve("../include/module.js")),o.actionInclude=i.readFileSync(e.resolve("../include/action.js"))),t.exports=o},{"./dict":96,fs:56}],98:[function(e,t,r){function n(t,r,n){var i=e("./index"),o=d.parse(r).body[0].expression,a=c(o,{"@":t.value}),s=n.replace(/\{\{\s*value\s*\}\}/g,a),u=i.nodes(t.value,s);return u.forEach(function(e){e.path=t.path.concat(e.path.slice(1))}),u}function i(e){return Array.isArray(e)}function o(e){return e&&!(e instanceof Array)&&e instanceof Object}function a(e){return function(t,r,n,a){var s=t.value,u=t.path,c=[],l=function(t,s){i(t)?(t.forEach(function(e,t){c.length>=a||n(t,e,r)&&c.push({path:s.concat(t),value:e})}),t.forEach(function(t,r){c.length>=a||e&&l(t,s.concat(r))})):o(t)&&(this.keys(t).forEach(function(e){c.length>=a||n(e,t[e],r)&&c.push({path:s.concat(e),value:t[e]})}),this.keys(t).forEach(function(r){c.length>=a||e&&l(t[r],s.concat(r))}))}.bind(this);return l(s,u),c}}function s(e){return function(t,r,n){return this.descend(r,t.expression.value,e,n)}}function u(e){return function(t,r,n){return this.traverse(r,t.expression.value,e,n)}}function c(){try{return p.apply(this,arguments)}catch(e){}}function l(e){return e=e.filter(function(e){return e}),m(e,function(e){return e.path.map(function(e){return String(e).replace("-","--")}).join("-")})}function f(e){var t=String(e);return t.match(/^-?[0-9]+$/)?parseInt(t):null}var d=e("./aesprim"),h=e("./slice"),p=e("static-eval"),m=e("underscore").uniq,y=function(){return this.initialize.apply(this,arguments)};y.prototype.initialize=function(){this.traverse=a(!0),this.descend=a()},y.prototype.keys=Object.keys,y.prototype.resolve=function(e){var t=[e.operation,e.scope,e.expression.type].join("-"),r=this._fns[t];if(!r)throw new Error("couldn't resolve key: "+t);return r.bind(this)},y.prototype.register=function(e,t){if(!t instanceof Function)throw new Error("handler must be a function");this._fns[e]=t},y.prototype._fns={"member-child-identifier":function(e,t){var r=e.expression.value,n=t.value;if(n instanceof Object&&r in n)return[{value:n[r],path:t.path.concat(r)}]},"member-descendant-identifier":u(function(e,t,r){return e==r}),"subscript-child-numeric_literal":s(function(e,t,r){return e===r}),"member-child-numeric_literal":s(function(e,t,r){return String(e)===String(r)}),"subscript-descendant-numeric_literal":u(function(e,t,r){return e===r}),"member-child-wildcard":s(function(){return!0}),"member-descendant-wildcard":u(function(){return!0}),"subscript-descendant-wildcard":u(function(){return!0}),"subscript-child-wildcard":s(function(){return!0}),"subscript-child-slice":function(e,t){if(i(t.value)){var r=e.expression.value.split(":").map(f),n=t.value.map(function(e,r){return{value:e,path:t.path.concat(r)}});return h.apply(null,[n].concat(r))}},"subscript-child-union":function(e,t){var r=[];return e.expression.value.forEach(function(e){var n={operation:"subscript",scope:"child",expression:e.expression},i=this.resolve(n),o=i(n,t);o&&(r=r.concat(o))},this),l(r)},"subscript-descendant-union":function(t,r,n){var i=e(".."),o=this,a=[];return i.nodes(r,"$..*").slice(1).forEach(function(e){a.length>=n||t.expression.value.forEach(function(t){var r={operation:"subscript",scope:"child",expression:t.expression},n=o.resolve(r),i=n(r,e);a=a.concat(i)})}),l(a)},"subscript-child-filter_expression":function(e,t,r){var n=e.expression.value.slice(2,-1),i=d.parse(n).body[0].expression,o=function(e,t){return c(i,{"@":t})};return this.descend(t,null,o,r)},"subscript-descendant-filter_expression":function(e,t,r){var n=e.expression.value.slice(2,-1),i=d.parse(n).body[0].expression,o=function(e,t){return c(i,{"@":t})};return this.traverse(t,null,o,r)},"subscript-child-script_expression":function(e,t){return n(t,e.expression.value.slice(1,-1),"$[{{value}}]")},"member-child-script_expression":function(e,t){return n(t,e.expression.value.slice(1,-1),"$.{{value}}")},"member-descendant-script_expression":function(e,t){return n(t,e.expression.value.slice(1,-1),"$..value")}},y.prototype._fns["subscript-child-string_literal"]=y.prototype._fns["member-child-identifier"],y.prototype._fns["member-descendant-numeric_literal"]=y.prototype._fns["subscript-descendant-string_literal"]=y.prototype._fns["member-descendant-identifier"],t.exports=y},{"..":99,"./aesprim":93,"./index":99,"./slice":101,"static-eval":111,underscore:102}],99:[function(e,t,r){function n(e){return"[object String]"==Object.prototype.toString.call(e)}var i=e("assert"),o=e("./dict"),a=e("./parser"),s=e("./handlers"),u=function(){this.initialize.apply(this,arguments)};u.prototype.initialize=function(){this.parser=new a,this.handlers=new s},u.prototype.parse=function(e){return i.ok(n(e),"we need a path"),this.parser.parse(e)},u.prototype.parent=function(e,t){i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path");var r=this.nodes(e,t)[0];r.path.pop();return this.value(e,r.path)},u.prototype.apply=function(e,t,r){i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path"),i.equal(typeof r,"function","fn needs to be function");var n=this.nodes(e,t).sort(function(e,t){return t.path.length-e.path.length});return n.forEach(function(t){var n=t.path.pop(),i=this.value(e,this.stringify(t.path)),o=t.value=r.call(e,i[n]);i[n]=o},this),n},u.prototype.value=function(e,t,r){if(i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path"),arguments.length>=3){var n=this.nodes(e,t).shift();if(!n)return this._vivify(e,t,r);var o=n.path.slice(-1).shift();this.parent(e,this.stringify(n.path))[o]=r}return this.query(e,this.stringify(t),1).shift()},u.prototype._vivify=function(e,t,r){var n=this;i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path");var o=this.parser.parse(t).map(function(e){return e.expression.value}),a=function(t,r){var i=t.pop(),o=n.value(e,t);o||(a(t.concat(),"string"==typeof i?{}:[]),o=n.value(e,t)),o[i]=r};return a(o,r),this.query(e,t)[0]},u.prototype.query=function(e,t,r){return i.ok(e instanceof Object,"obj needs to be an object"),i.ok(n(t),"we need a path"),this.nodes(e,t,r).map(function(e){return e.value})},u.prototype.paths=function(e,t,r){return i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path"),this.nodes(e,t,r).map(function(e){return e.path})},u.prototype.nodes=function(e,t,r){if(i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path"),0===r)return[];var n=this.parser.parse(t),o=this.handlers,a=[{path:["$"],value:e}],s=[];return n.length&&"root"==n[0].expression.type&&n.shift(),n.length?(n.forEach(function(e,t){if(!(s.length>=r)){var i=o.resolve(e),u=[];a.forEach(function(o){if(!(s.length>=r)){var a=i(e,o,r);t==n.length-1?s=s.concat(a||[]):u=u.concat(a||[])}}),a=u}}),r?s.slice(0,r):s):a},u.prototype.stringify=function(e){i.ok(e,"we need a path");var t="$",r={"descendant-member":"..{{value}}","child-member":".{{value}}","descendant-subscript":"..[{{value}}]","child-subscript":"[{{value}}]"};return e=this._normalize(e),e.forEach(function(e){if("root"!=e.expression.type){var n,i=[e.scope,e.operation].join("-"),o=r[i];if(n="string_literal"==e.expression.type?JSON.stringify(e.expression.value):e.expression.value,!o)throw new Error("couldn't find template "+i);t+=o.replace(/{{value}}/,n)}}),t},u.prototype._normalize=function(e){if(i.ok(e,"we need a path"),"string"==typeof e)return this.parser.parse(e);if(Array.isArray(e)&&"string"==typeof e[0]){var t=[{expression:{type:"root",value:"$"}}];return e.forEach(function(e,r){if("$"!=e||0!==r)if("string"==typeof e&&e.match("^"+o.identifier+"$"))t.push({operation:"member",scope:"child",expression:{value:e,type:"identifier"}});else{var n="number"==typeof e?"numeric_literal":"string_literal";t.push({operation:"subscript",scope:"child",expression:{value:e,type:n}})}}),t}if(Array.isArray(e)&&"object"==typeof e[0])return e;throw new Error("couldn't understand path "+e)},u.Handlers=s,u.Parser=a;var c=new u;c.JSONPath=u,t.exports=c},{"./dict":96,"./handlers":98,"./parser":100,assert:51}],100:[function(e,t,r){var n=e("./grammar"),i=e("../generated/parser"),o=function(){var e=new i.Parser,t=e.parseError;return e.yy.parseError=function(){e.yy.ast&&e.yy.ast.initialize(),t.apply(e,arguments)},e};o.grammar=n,t.exports=o},{"../generated/parser":94,"./grammar":97}],101:[function(e,t,r){function n(e){return String(e).match(/^[0-9]+$/)?parseInt(e):Number.isFinite(e)?parseInt(e,10):0}t.exports=function(e,t,r,i){if("string"==typeof t)throw new Error("start cannot be a string");if("string"==typeof r)throw new Error("end cannot be a string");if("string"==typeof i)throw new Error("step cannot be a string");var o=e.length;if(0===i)throw new Error("step cannot be zero");if(i=i?n(i):1,t=t<0?o+t:t,r=r<0?o+r:r,t=n(0===t?0:t||(i>0?0:o-1)),r=n(0===r?0:r||(i>0?o:-1)),t=i>0?Math.max(0,t):Math.min(o,t),r=i>0?Math.min(r,o):Math.max(-1,r),i>0&&r<=t)return[];if(i<0&&t<=r)return[];for(var a=[],s=t;s!=r&&!(i<0&&s<=r||i>0&&s>=r);s+=i)a.push(e[s]);return a}},{}],102:[function(e,t,r){(function(){var e=this,n=e._,i=Array.prototype,o=Object.prototype,a=Function.prototype,s=i.push,u=i.slice,c=i.concat,l=o.toString,f=o.hasOwnProperty,d=Array.isArray,h=Object.keys,p=a.bind,m=function(e){return e instanceof m?e:this instanceof m?void(this._wrapped=e):new m(e)};void 0!==r?(void 0!==t&&t.exports&&(r=t.exports=m),r._=m):e._=m,m.VERSION="1.7.0";var y=function(e,t,r){if(void 0===t)return e;switch(null==r?3:r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)};case 4:return function(r,n,i,o){return e.call(t,r,n,i,o)}}return function(){return e.apply(t,arguments)}};m.iteratee=function(e,t,r){return null==e?m.identity:m.isFunction(e)?y(e,t,r):m.isObject(e)?m.matches(e):m.property(e)},m.each=m.forEach=function(e,t,r){if(null==e)return e;t=y(t,r);var n,i=e.length;if(i===+i)for(n=0;n=0)},m.invoke=function(e,t){var r=u.call(arguments,2),n=m.isFunction(t);return m.map(e,function(e){return(n?t:e[t]).apply(e,r)})},m.pluck=function(e,t){return m.map(e,m.property(t))},m.where=function(e,t){return m.filter(e,m.matches(t))},m.findWhere=function(e,t){return m.find(e,m.matches(t))},m.max=function(e,t,r){var n,i,o=-1/0,a=-1/0;if(null==t&&null!=e){e=e.length===+e.length?e:m.values(e);for(var s=0,u=e.length;so&&(o=n)}else t=m.iteratee(t,r),m.each(e,function(e,r,n){((i=t(e,r,n))>a||i===-1/0&&o===-1/0)&&(o=e,a=i)});return o},m.min=function(e,t,r){var n,i,o=1/0,a=1/0;if(null==t&&null!=e){e=e.length===+e.length?e:m.values(e);for(var s=0,u=e.length;sn||void 0===r)return 1;if(r>>1;r(e[s])=0;)if(e[n]===t)return n;return-1},m.range=function(e,t,r){arguments.length<=1&&(t=e||0,e=0),r=r||1;for(var n=Math.max(Math.ceil((t-e)/r),0),i=Array(n),o=0;ot?(clearTimeout(a),a=null,s=c,o=e.apply(n,i),a||(n=i=null)):a||!1===r.trailing||(a=setTimeout(u,l)),o}},m.debounce=function(e,t,r){var n,i,o,a,s,u=function(){var c=m.now()-a;c0?n=setTimeout(u,t-c):(n=null,r||(s=e.apply(o,i),n||(o=i=null)))};return function(){o=this,i=arguments,a=m.now();var c=r&&!n;return n||(n=setTimeout(u,t)),c&&(s=e.apply(o,i),o=i=null),s}},m.wrap=function(e,t){return m.partial(t,e)},m.negate=function(e){return function(){return!e.apply(this,arguments)}},m.compose=function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},m.after=function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},m.before=function(e,t){var r;return function(){return--e>0?r=t.apply(this,arguments):t=null,r}},m.once=m.partial(m.before,2),m.keys=function(e){if(!m.isObject(e))return[];if(h)return h(e);var t=[];for(var r in e)m.has(e,r)&&t.push(r);return t},m.values=function(e){for(var t=m.keys(e),r=t.length,n=Array(r),i=0;i":">",'"':""","'":"'","`":"`"},S=m.invert(w),A=function(e){var t=function(t){return e[t]},r="(?:"+m.keys(e).join("|")+")",n=RegExp(r),i=RegExp(r,"g");return function(e){return e=null==e?"":""+e,n.test(e)?e.replace(i,t):e}};m.escape=A(w),m.unescape=A(S),m.result=function(e,t){if(null!=e){var r=e[t];return m.isFunction(r)?e[t]():r}};var P=0;m.uniqueId=function(e){var t=++P+"";return e?e+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var O=/(.)^/,D={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},C=/\\|'|\r|\n|\u2028|\u2029/g,T=function(e){return"\\"+D[e]};m.template=function(e,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var n=RegExp([(t.escape||O).source,(t.interpolate||O).source,(t.evaluate||O).source].join("|")+"|$","g"),i=0,o="__p+='";e.replace(n,function(t,r,n,a,s){return o+=e.slice(i,s).replace(C,T),i=s+t.length,r?o+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":n?o+="'+\n((__t=("+n+"))==null?'':__t)+\n'":a&&(o+="';\n"+a+"\n__p+='"),t}),o+="';\n",t.variable||(o="with(obj||{}){\n"+o+"}\n"),o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{var a=new Function(t.variable||"obj","_",o)}catch(e){throw e.source=o,e}var s=function(e){return a.call(this,e,m)};return s.source="function("+(t.variable||"obj")+"){\n"+o+"}",s},m.chain=function(e){var t=m(e);return t._chain=!0,t};var k=function(e){return this._chain?m(e).chain():e};m.mixin=function(e){m.each(m.functions(e),function(t){var r=m[t]=e[t];m.prototype[t]=function(){var e=[this._wrapped];return s.apply(e,arguments),k.call(this,r.apply(m,e))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=i[e];m.prototype[e]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==e&&"splice"!==e||0!==r.length||delete r[0],k.call(this,r)}}),m.each(["concat","join","slice"],function(e){var t=i[e];m.prototype[e]=function(){return k.call(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this)},{}],103:[function(e,t,r){(function(e){(function(){function n(e,t){if(e!==t){var r=null===e,n=e===P,i=e===e,o=null===t,a=t===P,s=t===t;if(e>t&&!o||!i||r&&!a&&s||n&&s)return 1;if(e-1;);return r}function c(e,t){for(var r=e.length;r--&&t.indexOf(e.charAt(r))>-1;);return r}function l(e,t){return n(e.criteria,t.criteria)||e.index-t.index}function f(e,t,r){for(var i=-1,o=e.criteria,a=t.criteria,s=o.length,u=r.length;++i=u)return c;var l=r[i];return c*("asc"===l||!0===l?1:-1)}}return e.index-t.index}function d(e){return ze[e]}function h(e){return Ge[e]}function p(e,t,r){return t?e=He[e]:r&&(e=We[e]),"\\"+e}function m(e){return"\\"+We[e]}function y(e,t,r){for(var n=e.length,i=t+(r?0:-1);r?i--:++i=9&&e<=13||32==e||160==e||5760==e||6158==e||e>=8192&&(e<=8202||8232==e||8233==e||8239==e||8287==e||12288==e||65279==e)}function _(e,t){for(var r=-1,n=e.length,i=-1,o=[];++r=L?pr(t):null,c=t.length;u&&(a=Qe,s=!1,t=u);e:for(;++ii?0:i+r),n=n===P||n>i?i:+n||0,n<0&&(n+=i),i=r>n?0:n>>>0,r>>>=0;ri?0:i+t),r=r===P||r>i?i:+r||0,r<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var o=zo(i);++n=L,u=s?pr():null,c=[];u?(n=Qe,a=!1):(s=!1,u=t?[]:c);e:for(;++r>>1,a=e[o];(r?a<=t:a2?r[i-2]:P,a=i>2?r[2]:P,s=i>1?r[i-1]:P;for("function"==typeof o?(o=or(o,s,5),i-=2):(o="function"==typeof s?s:P,i-=o?1:0),a&&Xr(r[0],r[1],a)&&(o=i<3?P:o,i=1);++n-1?r[a]:P}return Ct(r,n,e)}}function Er(e){return function(t,r,n){return t&&t.length?(r=Lr(r,n,3),i(t,r,e)):-1}}function wr(e){return function(t,r,n){return r=Lr(r,n,3),Ct(t,r,e,!0)}}function Sr(e){return function(){for(var t,r=arguments.length,n=e?r:-1,i=0,o=zo(r);e?n--:++n=L)return t.plant(n).value();for(var i=0,a=r?o[i].apply(this,e):n;++i=t||!ba(t))return"";var i=t-n;return r=null==r?" ":r+"",vo(r,ya(i/r.length)).slice(0,i)}function xr(e,t,r,n){function i(){for(var t=-1,s=arguments.length,u=-1,c=n.length,l=zo(c+s);++uu))return!1;for(;++s-1&&e%1==0&&e-1&&e%1==0&&e<=ja}function rn(e){return e===e&&!Mi(e)}function nn(e,t){var r=e[1],n=t[1],i=r|n,o=i-1;)ha.call(t,o,1);return t}function Tn(e,t,r){var n=[];if(!e||!e.length)return n;var i=-1,o=[],a=e.length;for(t=Lr(t,r,3);++i-1:!!i&&Gr(e,t,r)>-1}function ei(e,t,r){var n=Ts(e)?ut:Nt;return t=Lr(t,r,3),n(e,t)}function ti(e,t){return ei(e,Mo(t))}function ri(e,t,r){var n=Ts(e)?st:Dt;return t=Lr(t,r,3),n(e,function(e,r,n){return!t(e,r,n)})}function ni(e,t,r){if(r?Xr(e,t,r):null==t){e=ln(e);var n=e.length;return n>0?e[Wt(0,n-1)]:P}var i=-1,o=Yi(e),n=o.length,a=n-1;for(t=Sa(t<0?0:+t||0,n);++i0&&(r=t.apply(this,arguments)),e<=1&&(t=P),r}}function hi(e,t,r){function n(){h&&sa(h),c&&sa(c),m=0,c=h=p=P}function i(t,r){r&&sa(r),c=h=p=P,t&&(m=ms(),l=e.apply(d,u),h||c||(u=d=P))}function o(){var e=t-(ms()-f);e<=0||e>t?i(p,c):h=da(o,e)}function a(){i(v,h)}function s(){if(u=arguments,f=ms(),d=this,p=v&&(h||!g),!1===y)var r=g&&!h;else{c||g||(m=f);var n=y-(f-m),i=n<=0||n>y;i?(c&&(c=sa(c)),m=f,l=e.apply(d,u)):c||(c=da(a,n))}return i&&h?h=sa(h):h||t===y||(h=da(o,t)),r&&(i=!0,l=e.apply(d,u)),!i||h||c||(u=d=P),l}var u,c,l,f,d,h,p,m=0,y=!1,v=!0;if("function"!=typeof e)throw new Jo(V);if(t=t<0?0:+t||0,!0===r){var g=!0;v=!1}else Mi(r)&&(g=!!r.leading,y="maxWait"in r&&wa(+r.maxWait||0,t),v="trailing"in r?!!r.trailing:v);return s.cancel=n,s}function pi(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new Jo(V);var r=function(){var n=arguments,i=t?t.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var a=e.apply(this,n);return r.cache=o.set(i,a),a};return r.cache=new pi.Cache,r}function mi(e){if("function"!=typeof e)throw new Jo(V);return function(){return!e.apply(this,arguments)}}function yi(e){return di(2,e)}function vi(e,t){if("function"!=typeof e)throw new Jo(V);return t=wa(t===P?e.length-1:+t||0,0),function(){for(var r=arguments,n=-1,i=wa(r.length-t,0),o=zo(i);++nt}function Ai(e,t){return e>=t}function Pi(e){return v(e)&&Jr(e)&&ta.call(e,"callee")&&!la.call(e,"callee")}function Oi(e){return!0===e||!1===e||v(e)&&na.call(e)==Y}function Di(e){return v(e)&&na.call(e)==$}function Ci(e){return!!e&&1===e.nodeType&&v(e)&&!Li(e)}function Ti(e){return null==e||(Jr(e)&&(Ts(e)||Gi(e)||Pi(e)||v(e)&&xi(e.splice))?!e.length:!Ls(e).length)}function ki(e,t,r,n){r="function"==typeof r?or(r,n,3):P;var i=r?r(e,t):P;return i===P?It(e,t,r):!!i}function Fi(e){return v(e)&&"string"==typeof e.message&&na.call(e)==K}function ji(e){return"number"==typeof e&&ba(e)}function xi(e){return Mi(e)&&na.call(e)==J}function Mi(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ii(e,t,r,n){return r="function"==typeof r?or(r,n,3):P,Rt(e,Vr(t),r)}function Bi(e){return Ui(e)&&e!=+e}function Ri(e){return null!=e&&(xi(e)?oa.test(ea.call(e)):v(e)&&Fe.test(e))}function Ni(e){return null===e}function Ui(e){return"number"==typeof e||v(e)&&na.call(e)==Q}function Li(e){var t;if(!v(e)||na.call(e)!=X||Pi(e)||!ta.call(e,"constructor")&&"function"==typeof(t=e.constructor)&&!(t instanceof t))return!1;var r;return kt(e,function(e,t){r=t}),r===P||ta.call(e,r)}function zi(e){return Mi(e)&&na.call(e)==Z}function Gi(e){return"string"==typeof e||v(e)&&na.call(e)==ee}function Vi(e){return v(e)&&tn(e.length)&&!!Ue[na.call(e)]}function qi(e){return e===P}function Hi(e,t){return e0;++n=Sa(t,r)&&e=0&&e.indexOf(t,r)==r}function ho(e){return e=s(e),e&&ve.test(e)?e.replace(me,h):e}function po(e){return e=s(e),e&&Pe.test(e)?e.replace(Ae,p):e||"(?:)"}function mo(e,t,r){e=s(e),t=+t;var n=e.length;if(n>=t||!ba(t))return e;var i=(t-n)/2,o=ga(i);return r=jr("",ya(i),r),r.slice(0,o)+e+r}function yo(e,t,r){return(r?Xr(e,t,r):null==t)?t=0:t&&(t=+t),e=bo(e),Pa(e,t||(ke.test(e)?16:10))}function vo(e,t){var r="";if(e=s(e),(t=+t)<1||!e||!ba(t))return r;do{t%2&&(r+=e),t=ga(t/2),e+=e}while(t);return r}function go(e,t,r){return e=s(e),r=null==r?0:Sa(r<0?0:+r||0,e.length),e.lastIndexOf(t,r)==r}function _o(e,r,n){var i=t.templateSettings;n&&Xr(e,r,n)&&(r=n=P),e=s(e),r=yt(vt({},n||r),i,mt);var o,a,u=yt(vt({},r.imports),i.imports,mt),c=Ls(u),l=er(u,c),f=0,d=r.interpolate||Me,h="__p += '",p=$o((r.escape||Me).source+"|"+d.source+"|"+(d===be?Ce:Me).source+"|"+(r.evaluate||Me).source+"|$","g"),y="//# sourceURL="+("sourceURL"in r?r.sourceURL:"lodash.templateSources["+ ++Ne+"]")+"\n";e.replace(p,function(t,r,n,i,s,u){return n||(n=i),h+=e.slice(f,u).replace(Ie,m),r&&(o=!0,h+="' +\n__e("+r+") +\n'"),s&&(a=!0,h+="';\n"+s+";\n__p += '"),n&&(h+="' +\n((__t = ("+n+")) == null ? '' : __t) +\n'"),f=u+t.length,t}),h+="';\n";var v=r.variable;v||(h="with (obj) {\n"+h+"\n}\n"),h=(a?h.replace(fe,""):h).replace(de,"$1").replace(he,"$1;"),h="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var g=Qs(function(){return qo(c,y+"return "+h).apply(P,l)});if(g.source=h,Fi(g))throw g;return g}function bo(e,t,r){var n=e;return(e=s(e))?(r?Xr(n,t,r):null==t)?e.slice(E(e),w(e)+1):(t+="",e.slice(u(e,t),c(e,t)+1)):e}function Eo(e,t,r){var n=e;return e=s(e),e?(r?Xr(n,t,r):null==t)?e.slice(E(e)):e.slice(u(e,t+"")):e}function wo(e,t,r){var n=e;return e=s(e),e?(r?Xr(n,t,r):null==t)?e.slice(0,w(e)+1):e.slice(0,c(e,t+"")+1):e}function So(e,t,r){r&&Xr(e,t,r)&&(t=P);var n=B,i=R;if(null!=t)if(Mi(t)){var o="separator"in t?t.separator:o;n="length"in t?+t.length||0:n,i="omission"in t?s(t.omission):i}else n=+t||0;if(e=s(e),n>=e.length)return e;var a=n-i.length;if(a<1)return i;var u=e.slice(0,a);if(null==o)return u+i;if(zi(o)){if(e.slice(a).search(o)){var c,l,f=e.slice(0,a);for(o.global||(o=$o(o.source,(Te.exec(o)||"")+"g")),o.lastIndex=0;c=o.exec(f);)l=c.index;u=u.slice(0,null==l?a:l)}}else if(e.indexOf(o,a)!=a){var d=u.lastIndexOf(o);d>-1&&(u=u.slice(0,d))}return u+i}function Ao(e){return e=s(e),e&&ye.test(e)?e.replace(pe,S):e}function Po(e,t,r){return r&&Xr(e,t,r)&&(t=P),e=s(e),e.match(t||Be)||[]}function Oo(e,t,r){return r&&Xr(e,t,r)&&(t=P),v(e)?To(e):bt(e,t)}function Do(e){return function(){return e}}function Co(e){return e}function To(e){return Ut(Et(e,!0))}function ko(e,t){return Lt(e,Et(t,!0))}function Fo(e,t,r){if(null==r){var n=Mi(t),i=n?Ls(t):P,o=i&&i.length?xt(t,i):P;(o?o.length:n)||(o=!1,r=t,t=e,e=this)}o||(o=xt(t,Ls(t)));var a=!0,s=-1,u=xi(e),c=o.length;!1===r?a=!1:Mi(r)&&"chain"in r&&(a=r.chain);for(;++s>>1,ja=9007199254740991,xa=ma&&new ma,Ma={};t.support={};t.templateSettings={escape:ge,evaluate:_e,interpolate:be,variable:"",imports:{_:t}};var Ia=function(){function e(){}return function(t){if(Mi(t)){e.prototype=t;var r=new e;e.prototype=P}return r||{}}}(),Ba=fr(Ft),Ra=fr(jt,!0),Na=dr(),Ua=dr(!0),La=xa?function(e,t){return xa.set(e,t),e}:Co,za=xa?function(e){return xa.get(e)}:xo,Ga=Vt("length"),Va=function(){var e=0,t=0;return function(r,n){var i=ms(),o=U-(i-t);if(t=i,o>0){if(++e>=N)return r}else e=0;return La(r,n)}}(),qa=vi(function(e,t){return v(e)&&Jr(e)?St(e,Tt(t,!1,!0)):[]}),Ha=Er(),Wa=Er(!0),Ya=vi(function(e){for(var t=e.length,r=t,n=zo(f),i=Gr(),a=i==o,s=[];r--;){var u=e[r]=Jr(u=e[r])?u:[];n[r]=a&&u.length>=120?pr(r&&u):null}var c=e[0],l=-1,f=c?c.length:0,d=n[0];e:for(;++l2?e[t-2]:P,n=t>1?e[t-1]:P;return t>2&&"function"==typeof r?t-=2:(r=t>1&&"function"==typeof n?(--t,n):P,n=P),e.length=t,Nn(e,r,n)}),ts=vi(function(e){return e=Tt(e),this.thru(function(t){return tt(Ts(t)?t:[fn(t)],e)})}),rs=vi(function(e,t){return gt(e,Tt(t))}),ns=cr(function(e,t,r){ta.call(e,r)?++e[r]:e[r]=1}),is=br(Ba),os=br(Ra,!0),as=Ar(nt,Ba),ss=Ar(it,Ra),us=cr(function(e,t,r){ta.call(e,r)?e[r].push(t):e[r]=[t]}),cs=cr(function(e,t,r){e[r]=t}),ls=vi(function(e,t,r){var n=-1,i="function"==typeof t,o=Zr(t),a=Jr(e)?zo(e.length):[];return Ba(e,function(e){var s=i?t:o&&null!=e?e[t]:P;a[++n]=s?s.apply(e,r):Kr(e,t,r)}),a}),fs=cr(function(e,t,r){e[r?0:1].push(t)},function(){return[[],[]]}),ds=kr(lt,Ba),hs=kr(ft,Ra),ps=vi(function(e,t){if(null==e)return[];var r=t[2];return r&&Xr(t[0],t[1],r)&&(t.length=1),Qt(e,Tt(t),[])}),ms=Aa||function(){return(new Go).getTime()},ys=vi(function(e,t,r){var n=D;if(r.length){var i=_(r,ys.placeholder);n|=j}return Br(e,n,t,r,i)}),vs=vi(function(e,t){t=t.length?Tt(t):Ji(e);for(var r=-1,n=t.length;++r0||t<0)?new ze(r):(e<0?r=r.takeRight(-e):e&&(r=r.drop(e)),t!==P&&(t=+t||0,r=t<0?r.dropRight(-t):r.take(t-e)),r)},ze.prototype.takeRightWhile=function(e,t){return this.reverse().takeWhile(e,t).reverse()},ze.prototype.toArray=function(){return this.take(Ca)},Ft(ze.prototype,function(e,r){var n=/^(?:filter|map|reject)|While$/.test(r),i=/^(?:first|last)$/.test(r),o=t[i?"take"+("last"==r?"Right":""):r];o&&(t.prototype[r]=function(){var t=i?[1]:arguments,r=this.__chain__,a=this.__wrapped__,s=!!this.__actions__.length,u=a instanceof ze,c=t[0],l=u||Ts(a);l&&n&&"function"==typeof c&&1!=c.length&&(u=l=!1);var f=function(e){return i&&r?o(e,1)[0]:o.apply(P,ct([e],t))},d={func:Vn,args:[f],thisArg:P},h=u&&!s;if(i&&!r)return h?(a=a.clone(),a.__actions__.push(d),e.call(a)):o.call(P,this.value())[0];if(!i&&l){a=h?a:new ze(this);var p=e.apply(a,t);return p.__actions__.push(d),new g(p,r)}return this.thru(f)})}),nt(["join","pop","push","replace","shift","sort","splice","split","unshift"],function(e){var r=(/^(?:replace|split)$/.test(e)?Zo:Qo)[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:join|pop|replace|shift)$/.test(e);t.prototype[e]=function(){var e=arguments;return i&&!this.__chain__?r.apply(this.value(),e):this[n](function(t){return r.apply(t,e)})}}),Ft(ze.prototype,function(e,r){var n=t[r];if(n){var i=n.name;(Ma[i]||(Ma[i]=[])).push({name:r,func:n})}}),Ma[Fr(P,C).name]=[{name:"wrapper",func:P}],ze.prototype.clone=Ge,ze.prototype.reverse=Ve,ze.prototype.value=qe,t.prototype.chain=qn,t.prototype.commit=Hn,t.prototype.concat=ts,t.prototype.plant=Wn,t.prototype.reverse=Yn,t.prototype.toString=$n,t.prototype.run=t.prototype.toJSON=t.prototype.valueOf=t.prototype.value=Kn,t.prototype.collect=t.prototype.map,t.prototype.head=t.prototype.first,t.prototype.select=t.prototype.filter,t.prototype.tail=t.prototype.rest,t}var P,O="3.10.1",D=1,C=2,T=4,k=8,F=16,j=32,x=64,M=128,I=256,B=30,R="...",N=150,U=16,L=200,z=1,G=2,V="Expected a function",q="__lodash_placeholder__",H="[object Arguments]",W="[object Array]",Y="[object Boolean]",$="[object Date]",K="[object Error]",J="[object Function]",Q="[object Number]",X="[object Object]",Z="[object RegExp]",ee="[object String]",te="[object ArrayBuffer]",re="[object Float32Array]",ne="[object Float64Array]",ie="[object Int8Array]",oe="[object Int16Array]",ae="[object Int32Array]",se="[object Uint8Array]",ue="[object Uint8ClampedArray]",ce="[object Uint16Array]",le="[object Uint32Array]",fe=/\b__p \+= '';/g,de=/\b(__p \+=) '' \+/g,he=/(__e\(.*?\)|\b__t\)) \+\n'';/g,pe=/&(?:amp|lt|gt|quot|#39|#96);/g,me=/[&<>"'`]/g,ye=RegExp(pe.source),ve=RegExp(me.source),ge=/<%-([\s\S]+?)%>/g,_e=/<%([\s\S]+?)%>/g,be=/<%=([\s\S]+?)%>/g,Ee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,we=/^\w*$/,Se=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,Ae=/^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,Pe=RegExp(Ae.source),Oe=/[\u0300-\u036f\ufe20-\ufe23]/g,De=/\\(\\)?/g,Ce=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Te=/\w*$/,ke=/^0[xX]/,Fe=/^\[object .+?Constructor\]$/,je=/^\d+$/,xe=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Me=/($^)/,Ie=/['\n\r\u2028\u2029\\]/g,Be=function(){var e="[A-Z\\xc0-\\xd6\\xd8-\\xde]",t="[a-z\\xdf-\\xf6\\xf8-\\xff]+";return RegExp(e+"+(?="+e+t+")|"+e+"?"+t+"|"+e+"+|[0-9]+","g")}(),Re=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","isFinite","parseFloat","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap"],Ne=-1,Ue={};Ue[re]=Ue[ne]=Ue[ie]=Ue[oe]=Ue[ae]=Ue[se]=Ue[ue]=Ue[ce]=Ue[le]=!0,Ue[H]=Ue[W]=Ue[te]=Ue[Y]=Ue[$]=Ue[K]=Ue[J]=Ue["[object Map]"]=Ue[Q]=Ue[X]=Ue[Z]=Ue["[object Set]"]=Ue[ee]=Ue["[object WeakMap]"]=!1;var Le={};Le[H]=Le[W]=Le[te]=Le[Y]=Le[$]=Le[re]=Le[ne]=Le[ie]=Le[oe]=Le[ae]=Le[Q]=Le[X]=Le[Z]=Le[ee]=Le[se]=Le[ue]=Le[ce]=Le[le]=!0,Le[K]=Le[J]=Le["[object Map]"]=Le["[object Set]"]=Le["[object WeakMap]"]=!1;var ze={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},Ge={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Ve={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},qe={function:!0,object:!0},He={0:"x30",1:"x31",2:"x32",3:"x33",4:"x34",5:"x35",6:"x36",7:"x37",8:"x38",9:"x39",A:"x41",B:"x42",C:"x43",D:"x44",E:"x45",F:"x46",a:"x61",b:"x62",c:"x63",d:"x64",e:"x65",f:"x66",n:"x6e",r:"x72",t:"x74",u:"x75",v:"x76",x:"x78"},We={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ye=qe[typeof r]&&r&&!r.nodeType&&r,$e=qe[typeof t]&&t&&!t.nodeType&&t,Ke=Ye&&$e&&"object"==typeof e&&e&&e.Object&&e,Je=qe[typeof self]&&self&&self.Object&&self,Qe=qe[typeof window]&&window&&window.Object&&window,Xe=$e&&$e.exports===Ye&&Ye,Ze=Ke||Qe!==(this&&this.window)&&Qe||Je||this,et=A();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Ze._=et,define(function(){return et})):Ye&&$e?Xe?($e.exports=et)._=et:Ye._=et:Ze._=et}).call(this)}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],104:[function(e,t,r){!function(e){function r(e,t){if("object"!==i(e))return t;for(var n in t)"object"===i(e[n])&&"object"===i(t[n])?e[n]=r(e[n],t[n]):e[n]=t[n];return e}function n(e,t,n){var a=n[0],s=n.length;(e||"object"!==i(a))&&(a={});for(var u=0;u0)for(r=0;r0?"future":"past"];return O(r)?r(t):r.replace(/%s/i,t)}function B(e,t){var r=e.toLowerCase();Nn[r]=Nn[r+"s"]=Nn[t]=e}function R(e){return"string"==typeof e?Nn[e]||Nn[e.toLowerCase()]:void 0}function N(e){var t,r,n={};for(r in e)l(e,r)&&(t=R(r))&&(n[t]=e[r]);return n}function U(e,t){Un[e]=t}function L(e){var t=[];for(var r in e)t.push({unit:r,priority:Un[r]});return t.sort(function(e,t){return e.priority-t.priority}),t}function z(e,t,r){var n=""+Math.abs(e),i=t-n.length;return(e>=0?r?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+n}function G(e,t,r,n){var i=n;"string"==typeof n&&(i=function(){return this[n]()}),e&&(Vn[e]=i),t&&(Vn[t[0]]=function(){return z(i.apply(this,arguments),t[1],t[2])}),r&&(Vn[r]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function V(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function q(e){var t,r,n=e.match(Ln);for(t=0,r=n.length;t=0&&zn.test(e);)e=e.replace(zn,r),zn.lastIndex=0,n-=1;return e}function Y(e,t,r){si[e]=O(t)?t:function(e,n){return e&&r?r:t}}function $(e,t){return l(si,e)?si[e](t._strict,t._locale):new RegExp(K(e))}function K(e){return J(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,r,n,i){return t||r||n||i}))}function J(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(e,t){var r,n=t;for("string"==typeof e&&(e=[e]),s(t)&&(n=function(e,r){r[t]=E(e)}),r=0;r=0&&isFinite(s.getFullYear())&&s.setFullYear(e),s}function Ee(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function we(e,t,r){var n=7+t-r;return-(7+Ee(e,0,n).getUTCDay()-t)%7+n-1}function Se(e,t,r,n,i){var o,a,s=(7+r-n)%7,u=we(e,n,i),c=1+7*(t-1)+s+u;return c<=0?(o=e-1,a=ee(o)+c):c>ee(e)?(o=e+1,a=c-ee(e)):(o=e,a=c),{year:o,dayOfYear:a}}function Ae(e,t,r){var n,i,o=we(e.year(),t,r),a=Math.floor((e.dayOfYear()-o-1)/7)+1;return a<1?(i=e.year()-1,n=a+Pe(i,t,r)):a>Pe(e.year(),t,r)?(n=a-Pe(e.year(),t,r),i=e.year()+1):(i=e.year(),n=a),{week:n,year:i}}function Pe(e,t,r){var n=we(e,t,r),i=we(e+1,t,r);return(ee(e)-n+i)/7}function Oe(e){return Ae(e,this._week.dow,this._week.doy).week}function De(){return this._week.dow}function Ce(){return this._week.doy}function Te(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function ke(e){var t=Ae(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function Fe(e,t){return"string"!=typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),"number"==typeof e?e:null):parseInt(e,10)}function je(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function xe(e,t){return e?n(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:n(this._weekdays)?this._weekdays:this._weekdays.standalone}function Me(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ie(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Be(e,t,r){var n,i,o,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)o=d([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(o,"").toLocaleLowerCase();return r?"dddd"===t?(i=gi.call(this._weekdaysParse,a),-1!==i?i:null):"ddd"===t?(i=gi.call(this._shortWeekdaysParse,a),-1!==i?i:null):(i=gi.call(this._minWeekdaysParse,a),-1!==i?i:null):"dddd"===t?-1!==(i=gi.call(this._weekdaysParse,a))?i:-1!==(i=gi.call(this._shortWeekdaysParse,a))?i:(i=gi.call(this._minWeekdaysParse,a),-1!==i?i:null):"ddd"===t?-1!==(i=gi.call(this._shortWeekdaysParse,a))?i:-1!==(i=gi.call(this._weekdaysParse,a))?i:(i=gi.call(this._minWeekdaysParse,a),-1!==i?i:null):-1!==(i=gi.call(this._minWeekdaysParse,a))?i:-1!==(i=gi.call(this._weekdaysParse,a))?i:(i=gi.call(this._shortWeekdaysParse,a),-1!==i?i:null)}function Re(e,t,r){var n,i,o;if(this._weekdaysParseExact)return Be.call(this,e,t,r);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(i=d([2e3,1]).day(n),r&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[n]||(o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[n]=new RegExp(o.replace(".",""),"i")),r&&"dddd"===t&&this._fullWeekdaysParse[n].test(e))return n;if(r&&"ddd"===t&&this._shortWeekdaysParse[n].test(e))return n;if(r&&"dd"===t&&this._minWeekdaysParse[n].test(e))return n;if(!r&&this._weekdaysParse[n].test(e))return n}}function Ne(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=Fe(e,this.localeData()),this.add(e-t,"d")):t}function Ue(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function Le(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=je(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function ze(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=Ti),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Ge(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ki),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Ve(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Fi),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function qe(){function e(e,t){return t.length-e.length}var t,r,n,i,o,a=[],s=[],u=[],c=[];for(t=0;t<7;t++)r=d([2e3,1]).day(t),n=this.weekdaysMin(r,""),i=this.weekdaysShort(r,""),o=this.weekdays(r,""),a.push(n),s.push(i),u.push(o),c.push(n),c.push(i),c.push(o);for(a.sort(e),s.sort(e),u.sort(e),c.sort(e),t=0;t<7;t++)s[t]=J(s[t]),u[t]=J(u[t]),c[t]=J(c[t]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function He(){return this.hours()%12||12}function We(){return this.hours()||24}function Ye(e,t){G(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function $e(e,t){return t._meridiemParse}function Ke(e){return"p"===(e+"").toLowerCase().charAt(0)}function Je(e,t,r){return e>11?r?"pm":"PM":r?"am":"AM"}function Qe(e){return e?e.toLowerCase().replace("_","-"):e}function Xe(e){for(var t,r,n,i,o=0;o0;){if(n=Ze(i.slice(0,t).join("-")))return n;if(r&&r.length>=t&&w(i,r,!0)>=t-1)break;t--}o++}return ji}function Ze(r){var n=null;if(!Bi[r]&&void 0!==t&&t&&t.exports)try{n=ji._abbr;e("./locale/"+r),et(n)}catch(e){}return Bi[r]}function et(e,t){var r;return e&&(r=a(t)?nt(e):tt(e,t),r?ji=r:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ji._abbr}function tt(e,t){if(null!==t){var r,n=Ii;if(t.abbr=e,null!=Bi[e])P("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=Bi[e]._config;else if(null!=t.parentLocale)if(null!=Bi[t.parentLocale])n=Bi[t.parentLocale]._config;else{if(null==(r=Ze(t.parentLocale)))return Ri[t.parentLocale]||(Ri[t.parentLocale]=[]),Ri[t.parentLocale].push({name:e,config:t}),null;n=r._config}return Bi[e]=new T(C(n,t)),Ri[e]&&Ri[e].forEach(function(e){tt(e.name,e.config)}),et(e),Bi[e]}return delete Bi[e],null}function rt(e,t){if(null!=t){var r,n,i=Ii;n=Ze(e),null!=n&&(i=n._config),t=C(i,t),r=new T(t),r.parentLocale=Bi[e],Bi[e]=r,et(e)}else null!=Bi[e]&&(null!=Bi[e].parentLocale?Bi[e]=Bi[e].parentLocale:null!=Bi[e]&&delete Bi[e]);return Bi[e]}function nt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ji;if(!n(e)){if(t=Ze(e))return t;e=[e]}return Xe(e)}function it(){return xn(Bi)}function ot(e){var t,r=e._a;return r&&-2===p(e).overflow&&(t=r[li]<0||r[li]>11?li:r[fi]<1||r[fi]>ce(r[ci],r[li])?fi:r[di]<0||r[di]>24||24===r[di]&&(0!==r[hi]||0!==r[pi]||0!==r[mi])?di:r[hi]<0||r[hi]>59?hi:r[pi]<0||r[pi]>59?pi:r[mi]<0||r[mi]>999?mi:-1,p(e)._overflowDayOfYear&&(tfi)&&(t=fi),p(e)._overflowWeeks&&-1===t&&(t=yi),p(e)._overflowWeekday&&-1===t&&(t=vi),p(e).overflow=t),e}function at(e,t,r){return null!=e?e:null!=t?t:r}function st(e){var t=new Date(r.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}function ut(e){var t,r,n,i,o,a=[];if(!e._d){for(n=st(e),e._w&&null==e._a[fi]&&null==e._a[li]&&ct(e),null!=e._dayOfYear&&(o=at(e._a[ci],n[ci]),(e._dayOfYear>ee(o)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),r=Ee(o,0,e._dayOfYear),e._a[li]=r.getUTCMonth(),e._a[fi]=r.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=n[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[di]&&0===e._a[hi]&&0===e._a[pi]&&0===e._a[mi]&&(e._nextDay=!0,e._a[di]=0),e._d=(e._useUTC?Ee:be).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[di]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(p(e).weekdayMismatch=!0)}}function ct(e){var t,r,n,i,o,a,s,u;if(t=e._w,null!=t.GG||null!=t.W||null!=t.E)o=1,a=4,r=at(t.GG,e._a[ci],Ae(Ot(),1,4).year),n=at(t.W,1),((i=at(t.E,1))<1||i>7)&&(u=!0);else{o=e._locale._week.dow,a=e._locale._week.doy;var c=Ae(Ot(),o,a);r=at(t.gg,e._a[ci],c.year),n=at(t.w,c.week),null!=t.d?((i=t.d)<0||i>6)&&(u=!0):null!=t.e?(i=t.e+o,(t.e<0||t.e>6)&&(u=!0)):i=o}n<1||n>Pe(r,o,a)?p(e)._overflowWeeks=!0:null!=u?p(e)._overflowWeekday=!0:(s=Se(r,n,i,o,a),e._a[ci]=s.year,e._dayOfYear=s.dayOfYear)}function lt(e){var t,r,n,i,o,a,s=e._i,u=Ni.exec(s)||Ui.exec(s);if(u){for(p(e).iso=!0,t=0,r=zi.length;t0&&p(e).unusedInput.push(a),s=s.slice(s.indexOf(n)+n.length),c+=n.length),Vn[o]?(n?p(e).empty=!1:p(e).unusedTokens.push(o),Z(o,n,e)):e._strict&&!n&&p(e).unusedTokens.push(o);p(e).charsLeftOver=u-c,s.length>0&&p(e).unusedInput.push(s),e._a[di]<=12&&!0===p(e).bigHour&&e._a[di]>0&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[di]=_t(e._locale,e._a[di],e._meridiem),ut(e),ot(e)}function _t(e,t,r){var n;return null==r?t:null!=e.meridiemHour?e.meridiemHour(t,r):null!=e.isPM?(n=e.isPM(r),n&&t<12&&(t+=12),n||12!==t||(t=0),t):t}function bt(e){var t,r,n,i,o;if(0===e._f.length)return p(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ithis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Yt(){if(!a(this._isDSTShifted))return this._isDSTShifted;var e={};if(v(e,this),e=St(e),e._a){var t=e._isUTC?d(e._a):Ot(e._a);this._isDSTShifted=this.isValid()&&w(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function $t(){return!!this.isValid()&&!this._isUTC}function Kt(){return!!this.isValid()&&this._isUTC}function Jt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Qt(e,t){var r,n,i,o=e,a=null;return Mt(e)?o={ms:e._milliseconds,d:e._days,M:e._months}:s(e)?(o={},t?o[t]=e:o.milliseconds=e):(a=Qi.exec(e))?(r="-"===a[1]?-1:1,o={y:0,d:E(a[fi])*r,h:E(a[di])*r,m:E(a[hi])*r,s:E(a[pi])*r,ms:E(It(1e3*a[mi]))*r}):(a=Xi.exec(e))?(r="-"===a[1]?-1:(a[1],1),o={y:Xt(a[2],r),M:Xt(a[3],r),w:Xt(a[4],r),d:Xt(a[5],r),h:Xt(a[6],r),m:Xt(a[7],r),s:Xt(a[8],r)}):null==o?o={}:"object"==typeof o&&("from"in o||"to"in o)&&(i=er(Ot(o.from),Ot(o.to)),o={},o.ms=i.milliseconds,o.M=i.months),n=new xt(o),Mt(e)&&l(e,"_locale")&&(n._locale=e._locale),n}function Xt(e,t){var r=e&&parseFloat(e.replace(",","."));return(isNaN(r)?0:r)*t}function Zt(e,t){var r={milliseconds:0,months:0};return r.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(r.months,"M").isAfter(t)&&--r.months,r.milliseconds=+t-+e.clone().add(r.months,"M"),r}function er(e,t){var r;return e.isValid()&&t.isValid()?(t=Nt(t,e),e.isBefore(t)?r=Zt(e,t):(r=Zt(t,e),r.milliseconds=-r.milliseconds,r.months=-r.months),r):{milliseconds:0,months:0}}function tr(e,t){return function(r,n){var i,o;return null===n||isNaN(+n)||(P(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),o=r,r=n,n=o),r="string"==typeof r?+r:r,i=Qt(r,n),rr(this,i,e),this}}function rr(e,t,n,i){var o=t._milliseconds,a=It(t._days),s=It(t._months);e.isValid()&&(i=null==i||i,s&&pe(e,ie(e,"Month")+s*n),a&&oe(e,"Date",ie(e,"Date")+a*n),o&&e._d.setTime(e._d.valueOf()+o*n),i&&r.updateOffset(e,a||s))}function nr(e,t){var r=e.diff(t,"days",!0);return r<-6?"sameElse":r<-1?"lastWeek":r<0?"lastDay":r<1?"sameDay":r<2?"nextDay":r<7?"nextWeek":"sameElse"}function ir(e,t){var n=e||Ot(),i=Nt(n,this).startOf("day"),o=r.calendarFormat(this,i)||"sameElse",a=t&&(O(t[o])?t[o].call(this,n):t[o]);return this.format(a||this.localeData().calendar(o,this,Ot(n)))}function or(){return new g(this)}function ar(e,t){var r=_(e)?e:Ot(e);return!(!this.isValid()||!r.isValid())&&(t=R(a(t)?"millisecond":t),"millisecond"===t?this.valueOf()>r.valueOf():r.valueOf()9999?H(r,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(r,"Z")):H(r,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function yr(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var r="["+e+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(r+n+"-MM-DD[T]HH:mm:ss.SSS"+i)}function vr(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=H(this,e);return this.localeData().postformat(t)}function gr(e,t){return this.isValid()&&(_(e)&&e.isValid()||Ot(e).isValid())?Qt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function _r(e){return this.from(Ot(),e)}function br(e,t){return this.isValid()&&(_(e)&&e.isValid()||Ot(e).isValid())?Qt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Er(e){return this.to(Ot(),e)}function wr(e){var t;return void 0===e?this._locale._abbr:(t=nt(e),null!=t&&(this._locale=t),this)}function Sr(){return this._locale}function Ar(e){switch(e=R(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this}function Pr(e){return void 0===(e=R(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))}function Or(){return this._d.valueOf()-6e4*(this._offset||0)}function Dr(){ -return Math.floor(this.valueOf()/1e3)}function Cr(){return new Date(this.valueOf())}function Tr(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function kr(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Fr(){return this.isValid()?this.toISOString():null}function jr(){return m(this)}function xr(){return f({},p(this))}function Mr(){return p(this).overflow}function Ir(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Br(e,t){G(0,[e,e.length],0,t)}function Rr(e){return zr.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Nr(e){return zr.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)}function Ur(){return Pe(this.year(),1,4)}function Lr(){var e=this.localeData()._week;return Pe(this.year(),e.dow,e.doy)}function zr(e,t,r,n,i){var o;return null==e?Ae(this,n,i).year:(o=Pe(e,n,i),t>o&&(t=o),Gr.call(this,e,t,r,n,i))}function Gr(e,t,r,n,i){var o=Se(e,t,r,n,i),a=Ee(o.year,0,o.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}function Vr(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}function qr(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function Hr(e,t){t[mi]=E(1e3*("0."+e))}function Wr(){return this._isUTC?"UTC":""}function Yr(){return this._isUTC?"Coordinated Universal Time":""}function $r(e){return Ot(1e3*e)}function Kr(){return Ot.apply(null,arguments).parseZone()}function Jr(e){return e}function Qr(e,t,r,n){var i=nt(),o=d().set(n,t);return i[r](o,e)}function Xr(e,t,r){if(s(e)&&(t=e,e=void 0),e=e||"",null!=t)return Qr(e,t,r,"month");var n,i=[];for(n=0;n<12;n++)i[n]=Qr(e,n,r,"month");return i}function Zr(e,t,r,n){"boolean"==typeof e?(s(t)&&(r=t,t=void 0),t=t||""):(t=e,r=t,e=!1,s(t)&&(r=t,t=void 0),t=t||"");var i=nt(),o=e?i._week.dow:0;if(null!=r)return Qr(t,(r+o)%7,n,"day");var a,u=[];for(a=0;a<7;a++)u[a]=Qr(t,(a+o)%7,n,"day");return u}function en(e,t){return Xr(e,t,"months")}function tn(e,t){return Xr(e,t,"monthsShort")}function rn(e,t,r){return Zr(e,t,r,"weekdays")}function nn(e,t,r){return Zr(e,t,r,"weekdaysShort")}function on(e,t,r){return Zr(e,t,r,"weekdaysMin")}function an(){var e=this._data;return this._milliseconds=co(this._milliseconds),this._days=co(this._days),this._months=co(this._months),e.milliseconds=co(e.milliseconds),e.seconds=co(e.seconds),e.minutes=co(e.minutes),e.hours=co(e.hours),e.months=co(e.months),e.years=co(e.years),this}function sn(e,t,r,n){var i=Qt(t,r);return e._milliseconds+=n*i._milliseconds,e._days+=n*i._days,e._months+=n*i._months,e._bubble()}function un(e,t){return sn(this,e,t,1)}function cn(e,t){return sn(this,e,t,-1)}function ln(e){return e<0?Math.floor(e):Math.ceil(e)}function fn(){var e,t,r,n,i,o=this._milliseconds,a=this._days,s=this._months,u=this._data;return o>=0&&a>=0&&s>=0||o<=0&&a<=0&&s<=0||(o+=864e5*ln(hn(s)+a),a=0,s=0),u.milliseconds=o%1e3,e=b(o/1e3),u.seconds=e%60,t=b(e/60),u.minutes=t%60,r=b(t/60),u.hours=r%24,a+=b(r/24),i=b(dn(a)),s+=i,a-=ln(hn(i)),n=b(s/12),s%=12,u.days=a,u.months=s,u.years=n,this}function dn(e){return 4800*e/146097}function hn(e){return 146097*e/4800}function pn(e){if(!this.isValid())return NaN;var t,r,n=this._milliseconds;if("month"===(e=R(e))||"year"===e)return t=this._days+n/864e5,r=this._months+dn(t),"month"===e?r:r/12;switch(t=this._days+Math.round(hn(this._months)),e){case"week":return t/7+n/6048e5;case"day":return t+n/864e5;case"hour":return 24*t+n/36e5;case"minute":return 1440*t+n/6e4;case"second":return 86400*t+n/1e3;case"millisecond":return Math.floor(864e5*t)+n;default:throw new Error("Unknown unit "+e)}}function mn(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*E(this._months/12):NaN}function yn(e){return function(){return this.as(e)}}function vn(){return Qt(this)}function gn(e){return e=R(e),this.isValid()?this[e+"s"]():NaN}function _n(e){return function(){return this.isValid()?this._data[e]:NaN}}function bn(){return b(this.days()/7)}function En(e,t,r,n,i){return i.relativeTime(t||1,!!r,e,n)}function wn(e,t,r){var n=Qt(e).abs(),i=Oo(n.as("s")),o=Oo(n.as("m")),a=Oo(n.as("h")),s=Oo(n.as("d")),u=Oo(n.as("M")),c=Oo(n.as("y")),l=i<=Do.ss&&["s",i]||i0,l[4]=r,En.apply(null,l)}function Sn(e){return void 0===e?Oo:"function"==typeof e&&(Oo=e,!0)}function An(e,t){return void 0!==Do[e]&&(void 0===t?Do[e]:(Do[e]=t,"s"===e&&(Do.ss=t-1),!0))}function Pn(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),r=wn(this,!e,t);return e&&(r=t.pastFuture(+this,r)),t.postformat(r)}function On(e){return(e>0)-(e<0)||+e}function Dn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,r,n=Co(this._milliseconds)/1e3,i=Co(this._days),o=Co(this._months);e=b(n/60),t=b(e/60),n%=60,e%=60,r=b(o/12),o%=12;var a=r,s=o,u=i,c=t,l=e,f=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var h=d<0?"-":"",p=On(this._months)!==On(d)?"-":"",m=On(this._days)!==On(d)?"-":"",y=On(this._milliseconds)!==On(d)?"-":"";return h+"P"+(a?p+a+"Y":"")+(s?p+s+"M":"")+(u?m+u+"D":"")+(c||l||f?"T":"")+(c?y+c+"H":"")+(l?y+l+"M":"")+(f?y+f+"S":"")}var Cn,Tn;Tn=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),r=t.length>>>0,n=0;n68?1900:2e3)};var gi,_i=ne("FullYear",!0);gi=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;tthis?this:e:y()}),$i=function(){return Date.now?Date.now():+new Date},Ki=["year","quarter","month","week","day","hour","minute","second","millisecond"];Bt("Z",":"),Bt("ZZ",""),Y("Z",ii),Y("ZZ",ii),Q(["Z","ZZ"],function(e,t,r){r._useUTC=!0,r._tzm=Rt(ii,e)});var Ji=/([\+\-]|\d\d)/gi;r.updateOffset=function(){};var Qi=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Xi=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;Qt.fn=xt.prototype,Qt.invalid=jt;var Zi=tr(1,"add"),eo=tr(-1,"subtract");r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var to=A("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});G(0,["gg",2],0,function(){return this.weekYear()%100}),G(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Br("gggg","weekYear"),Br("ggggg","weekYear"),Br("GGGG","isoWeekYear"),Br("GGGGG","isoWeekYear"),B("weekYear","gg"),B("isoWeekYear","GG"),U("weekYear",1),U("isoWeekYear",1),Y("G",ri),Y("g",ri),Y("GG",Kn,Hn),Y("gg",Kn,Hn),Y("GGGG",Zn,Yn),Y("gggg",Zn,Yn),Y("GGGGG",ei,$n),Y("ggggg",ei,$n),X(["gggg","ggggg","GGGG","GGGGG"],function(e,t,r,n){t[n.substr(0,2)]=E(e)}),X(["gg","GG"],function(e,t,n,i){t[i]=r.parseTwoDigitYear(e)}),G("Q",0,"Qo","quarter"),B("quarter","Q"),U("quarter",7),Y("Q",qn),Q("Q",function(e,t){t[li]=3*(E(e)-1)}),G("D",["DD",2],"Do","date"),B("date","D"),U("date",9),Y("D",Kn),Y("DD",Kn,Hn),Y("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),Q(["D","DD"],fi),Q("Do",function(e,t){t[fi]=E(e.match(Kn)[0])});var ro=ne("Date",!0);G("DDD",["DDDD",3],"DDDo","dayOfYear"),B("dayOfYear","DDD"),U("dayOfYear",4),Y("DDD",Xn),Y("DDDD",Wn),Q(["DDD","DDDD"],function(e,t,r){r._dayOfYear=E(e)}),G("m",["mm",2],0,"minute"),B("minute","m"),U("minute",14),Y("m",Kn),Y("mm",Kn,Hn),Q(["m","mm"],hi);var no=ne("Minutes",!1);G("s",["ss",2],0,"second"),B("second","s"),U("second",15),Y("s",Kn),Y("ss",Kn,Hn),Q(["s","ss"],pi);var io=ne("Seconds",!1);G("S",0,0,function(){return~~(this.millisecond()/100)}),G(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),G(0,["SSS",3],0,"millisecond"),G(0,["SSSS",4],0,function(){return 10*this.millisecond()}),G(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),G(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),G(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),G(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),G(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),B("millisecond","ms"),U("millisecond",16),Y("S",Xn,qn),Y("SS",Xn,Hn),Y("SSS",Xn,Wn);var oo;for(oo="SSSS";oo.length<=9;oo+="S")Y(oo,ti);for(oo="S";oo.length<=9;oo+="S")Q(oo,Hr);var ao=ne("Milliseconds",!1);G("z",0,0,"zoneAbbr"),G("zz",0,0,"zoneName");var so=g.prototype;so.add=Zi,so.calendar=ir,so.clone=or,so.diff=dr,so.endOf=Pr,so.format=vr,so.from=gr,so.fromNow=_r,so.to=br,so.toNow=Er,so.get=ae,so.invalidAt=Mr,so.isAfter=ar,so.isBefore=sr,so.isBetween=ur,so.isSame=cr,so.isSameOrAfter=lr,so.isSameOrBefore=fr,so.isValid=jr,so.lang=to,so.locale=wr,so.localeData=Sr,so.max=Yi,so.min=Wi,so.parsingFlags=xr,so.set=se,so.startOf=Ar,so.subtract=eo,so.toArray=Tr,so.toObject=kr,so.toDate=Cr,so.toISOString=mr,so.inspect=yr,so.toJSON=Fr,so.toString=pr,so.unix=Dr,so.valueOf=Or,so.creationData=Ir,so.year=_i,so.isLeapYear=re,so.weekYear=Rr,so.isoWeekYear=Nr,so.quarter=so.quarters=Vr,so.month=me,so.daysInMonth=ye,so.week=so.weeks=Te,so.isoWeek=so.isoWeeks=ke,so.weeksInYear=Lr,so.isoWeeksInYear=Ur,so.date=ro,so.day=so.days=Ne,so.weekday=Ue,so.isoWeekday=Le,so.dayOfYear=qr,so.hour=so.hours=Mi,so.minute=so.minutes=no,so.second=so.seconds=io,so.millisecond=so.milliseconds=ao,so.utcOffset=Lt,so.utc=Gt,so.local=Vt,so.parseZone=qt,so.hasAlignedHourOffset=Ht,so.isDST=Wt,so.isLocal=$t,so.isUtcOffset=Kt,so.isUtc=Jt,so.isUTC=Jt,so.zoneAbbr=Wr,so.zoneName=Yr,so.dates=A("dates accessor is deprecated. Use date instead.",ro),so.months=A("months accessor is deprecated. Use month instead",me),so.years=A("years accessor is deprecated. Use year instead",_i),so.zone=A("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",zt),so.isDSTShifted=A("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Yt);var uo=T.prototype;uo.calendar=k,uo.longDateFormat=F,uo.invalidDate=j,uo.ordinal=x,uo.preparse=Jr,uo.postformat=Jr,uo.relativeTime=M,uo.pastFuture=I,uo.set=D,uo.months=le,uo.monthsShort=fe,uo.monthsParse=he,uo.monthsRegex=ge,uo.monthsShortRegex=ve,uo.week=Oe,uo.firstDayOfYear=Ce,uo.firstDayOfWeek=De,uo.weekdays=xe,uo.weekdaysMin=Ie,uo.weekdaysShort=Me,uo.weekdaysParse=Re,uo.weekdaysRegex=ze,uo.weekdaysShortRegex=Ge,uo.weekdaysMinRegex=Ve,uo.isPM=Ke,uo.meridiem=Je,et("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===E(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=A("moment.lang is deprecated. Use moment.locale instead.",et),r.langData=A("moment.langData is deprecated. Use moment.localeData instead.",nt);var co=Math.abs,lo=yn("ms"),fo=yn("s"),ho=yn("m"),po=yn("h"),mo=yn("d"),yo=yn("w"),vo=yn("M"),go=yn("y"),_o=_n("milliseconds"),bo=_n("seconds"),Eo=_n("minutes"),wo=_n("hours"),So=_n("days"),Ao=_n("months"),Po=_n("years"),Oo=Math.round,Do={ss:44,s:45,m:45,h:22,d:26,M:11},Co=Math.abs,To=xt.prototype;return To.isValid=Ft,To.abs=an,To.add=un,To.subtract=cn,To.as=pn,To.asMilliseconds=lo,To.asSeconds=fo,To.asMinutes=ho,To.asHours=po,To.asDays=mo,To.asWeeks=yo,To.asMonths=vo,To.asYears=go,To.valueOf=mn,To._bubble=fn,To.clone=vn,To.get=gn,To.milliseconds=_o,To.seconds=bo,To.minutes=Eo,To.hours=wo,To.days=So,To.weeks=bn,To.months=Ao,To.years=Po,To.humanize=Pn,To.toISOString=Dn,To.toString=Dn,To.toJSON=Dn,To.locale=wr,To.localeData=Sr,To.toIsoString=A("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Dn),To.lang=to,G("X",0,0,"unix"),G("x",0,0,"valueOf"),Y("x",ri),Y("X",oi),Q("X",function(e,t,r){r._d=new Date(1e3*parseFloat(e,10))}),Q("x",function(e,t,r){r._d=new Date(E(e))}),r.version="2.22.1",function(e){Cn=e}(Ot),r.fn=so,r.min=Ct,r.max=Tt,r.now=$i,r.utc=d,r.unix=$r,r.months=en,r.isDate=u,r.locale=et,r.invalid=y,r.duration=Qt,r.isMoment=_,r.weekdays=rn,r.parseZone=Kr,r.localeData=nt,r.isDuration=Mt,r.monthsShort=tn,r.weekdaysMin=on,r.defineLocale=tt,r.updateLocale=rt,r.locales=it,r.weekdaysShort=nn,r.normalizeUnits=R,r.relativeTimeRounding=Sn,r.relativeTimeThreshold=An,r.calendarFormat=nr,r.prototype=so,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},r})},{}],106:[function(e,t,r){(function(e){function t(e,t){for(var r=0,n=e.length-1;n>=0;n--){var i=e[n];"."===i?e.splice(n,1):".."===i?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function n(e){"string"!=typeof e&&(e+="");var t,r=0,n=-1,i=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!i){r=t+1;break}}else-1===n&&(i=!1,n=t+1);return-1===n?"":e.slice(r,n)}function i(e,t){if(e.filter)return e.filter(t);for(var r=[],n=0;n=-1&&!n;o--){var a=o>=0?arguments[o]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(r=a+"/"+r,n="/"===a.charAt(0))}return r=t(i(r.split("/"),function(e){return!!e}),!n).join("/"),(n?"/":"")+r||"."},r.normalize=function(e){var n=r.isAbsolute(e),a="/"===o(e,-1);return e=t(i(e.split("/"),function(e){return!!e}),!n).join("/"),e||n||(e="."),e&&a&&(e+="/"),(n?"/":"")+e},r.isAbsolute=function(e){return"/"===e.charAt(0)},r.join=function(){var e=Array.prototype.slice.call(arguments,0);return r.normalize(i(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},r.relative=function(e,t){function n(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=r.resolve(e).substr(1),t=r.resolve(t).substr(1);for(var i=n(e.split("/")),o=n(t.split("/")),a=Math.min(i.length,o.length),s=a,u=0;u=1;--o)if(47===(t=e.charCodeAt(o))){if(!i){n=o;break}}else i=!1;return-1===n?r?"/":".":r&&1===n?"/":e.slice(0,n)},r.basename=function(e,t){var r=n(e);return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r},r.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,r=0,n=-1,i=!0,o=0,a=e.length-1;a>=0;--a){var s=e.charCodeAt(a);if(47!==s)-1===n&&(i=!1,n=a+1),46===s?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1);else if(!i){r=a+1;break}}return-1===t||-1===n||0===o||1===o&&t===n-1&&t===r+1?"":e.slice(t,n)};var o="b"==="ab".substr(-1)?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}}).call(this,e("lYpoI2"))},{lYpoI2:59}],107:[function(e,t,r){function n(e,t){for(var r,n=[],i=0,o=0,a="",s=t&&t.delimiter||"/";null!=(r=g.exec(e));){var l=r[0],f=r[1],d=r.index;if(a+=e.slice(o,d),o=d+l.length,f)a+=f[1];else{var h=e[o],p=r[2],m=r[3],y=r[4],v=r[5],_=r[6],b=r[7];a&&(n.push(a),a="");var E=null!=p&&null!=h&&h!==p,w="+"===_||"*"===_,S="?"===_||"*"===_,A=r[2]||s,P=y||v;n.push({name:m||i++,prefix:p||"",delimiter:A,optional:S,repeat:w,partial:E,asterisk:!!b,pattern:P?c(P):b?".*":"[^"+u(A)+"]+?"})}}return on.stackCounter)&&(Z(e,"__minimumStackCounter__",{value:n.stackCounter,configurable:!0}),r.unshift(n.stack));r.unshift(e.stack);var i=r.join("\n"+ne+"\n"),a=o(i);Z(e,"stack",{value:a,configurable:!0})}}function o(e){for(var t=e.split("\n"),r=[],n=0;n=q&&n<=ce}function c(){if(z)try{throw new Error}catch(n){var e=n.stack.split("\n"),t=e[0].indexOf("@")>0?e[1]:e[2],r=s(t);if(!r)return;return G=r[0],r[1]}}function l(e){return e instanceof p?e:g(e)?D(e):O(e)}function f(){function e(e){t=e,l.longStackSupport&&z&&(o.source=e),K(r,function(t,r){l.nextTick(function(){e.promiseDispatch.apply(e,r)})},void 0),r=void 0,n=void 0}var t,r=[],n=[],i=X(f.prototype),o=X(p.prototype);if(o.promiseDispatch=function(e,i,o){var a=$(arguments);r?(r.push(a),"when"===i&&o[1]&&n.push(o[1])):l.nextTick(function(){t.promiseDispatch.apply(t,a)})},o.valueOf=function(){if(r)return o;var e=y(t);return v(e)&&(t=e),e},o.inspect=function(){return t?t.inspect():{state:"pending"}},l.longStackSupport&&z)try{throw new Error}catch(e){o.stack=e.stack.substring(e.stack.indexOf("\n")+1),o.stackCounter=ie++}return i.promise=o,i.resolve=function(r){t||e(l(r))},i.fulfill=function(r){t||e(O(r))},i.reject=function(r){t||e(P(r))},i.notify=function(e){t||K(n,function(t,r){l.nextTick(function(){r(e)})},void 0)},i}function d(e){if("function"!=typeof e)throw new TypeError("resolver must be a function.");var t=f();try{e(t.resolve,t.reject,t.notify)}catch(e){t.reject(e)}return t.promise}function h(e){return d(function(t,r){for(var n=0,i=e.length;n=n)throw new TypeError}for(;r2?e.resolve($(arguments,1)):e.resolve(r)}},l.Promise=d,l.promise=d,d.race=h,d.all=I,d.reject=P,d.resolve=l,l.passByCopy=function(e){return e},p.prototype.passByCopy=function(){return this},l.join=function(e,t){return l(e).join(t)},p.prototype.join=function(e){return l([this,e]).spread(function(e,t){if(e===t)return e;throw new Error("Q can't join: not the same: "+e+" "+t)})},l.race=h,p.prototype.race=function(){return this.then(l.race)},l.makePromise=p,p.prototype.toString=function(){return"[object Promise]"},p.prototype.then=function(e,t,r){function n(t){try{return"function"==typeof e?e(t):t}catch(e){return P(e)}}function o(e){if("function"==typeof t){i(e,s);try{return t(e)}catch(e){return P(e)}}return P(e)}function a(e){return"function"==typeof r?r(e):e}var s=this,u=f(),c=!1;return l.nextTick(function(){s.promiseDispatch(function(e){c||(c=!0,u.resolve(n(e)))},"when",[function(e){c||(c=!0,u.resolve(o(e)))}])}),s.promiseDispatch(void 0,"when",[void 0,function(e){var t,r=!1;try{t=a(e)}catch(e){if(r=!0,!l.onerror)throw e;l.onerror(e)}r||u.notify(t)}]),u.promise},l.tap=function(e,t){return l(e).tap(t)},p.prototype.tap=function(e){return e=l(e),this.then(function(t){return e.fcall(t).thenResolve(t)})},l.when=m,p.prototype.thenResolve=function(e){return this.then(function(){return e})},l.thenResolve=function(e,t){return l(e).thenResolve(t)},p.prototype.thenReject=function(e){return this.then(function(){throw e})},l.thenReject=function(e,t){return l(e).thenReject(t)},l.nearer=y,l.isPromise=v,l.isPromiseAlike=g,l.isPending=_,p.prototype.isPending=function(){return"pending"===this.inspect().state},l.isFulfilled=b,p.prototype.isFulfilled=function(){return"fulfilled"===this.inspect().state},l.isRejected=E,p.prototype.isRejected=function(){return"rejected"===this.inspect().state};var oe=[],ae=[],se=[],ue=!0;l.resetUnhandledRejections=w,l.getUnhandledReasons=function(){return oe.slice()},l.stopUnhandledRejectionTracking=function(){w(),ue=!1},w(),l.reject=P,l.fulfill=O,l.master=C,l.spread=T,p.prototype.spread=function(e,t){return this.all().then(function(t){return e.apply(void 0,t)},t)},l.async=k,l.spawn=F,l.return=j,l.promised=x,l.dispatch=M,p.prototype.dispatch=function(e,t){var r=this,n=f();return l.nextTick(function(){r.promiseDispatch(n.resolve,e,t)}),n.promise},l.get=function(e,t){return l(e).dispatch("get",[t])},p.prototype.get=function(e){return this.dispatch("get",[e])},l.set=function(e,t,r){return l(e).dispatch("set",[t,r])},p.prototype.set=function(e,t){return this.dispatch("set",[e,t])},l.del=l.delete=function(e,t){return l(e).dispatch("delete",[t])},p.prototype.del=p.prototype.delete=function(e){return this.dispatch("delete",[e])},l.mapply=l.post=function(e,t,r){return l(e).dispatch("post",[t,r])},p.prototype.mapply=p.prototype.post=function(e,t){return this.dispatch("post",[e,t])},l.send=l.mcall=l.invoke=function(e,t){return l(e).dispatch("post",[t,$(arguments,2)])},p.prototype.send=p.prototype.mcall=p.prototype.invoke=function(e){return this.dispatch("post",[e,$(arguments,1)])},l.fapply=function(e,t){return l(e).dispatch("apply",[void 0,t])},p.prototype.fapply=function(e){return this.dispatch("apply",[void 0,e])},l.try=l.fcall=function(e){return l(e).dispatch("apply",[void 0,$(arguments,1)])},p.prototype.fcall=function(){return this.dispatch("apply",[void 0,$(arguments)])},l.fbind=function(e){var t=l(e),r=$(arguments,1);return function(){return t.dispatch("apply",[this,r.concat($(arguments))])}},p.prototype.fbind=function(){var e=this,t=$(arguments);return function(){return e.dispatch("apply",[this,t.concat($(arguments))])}},l.keys=function(e){return l(e).dispatch("keys",[])},p.prototype.keys=function(){return this.dispatch("keys",[])},l.all=I,p.prototype.all=function(){return I(this)},l.any=B,p.prototype.any=function(){return B(this)},l.allResolved=function(e,t,r){return function(){return"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(t+" is deprecated, use "+r+" instead.",new Error("").stack),e.apply(e,arguments)}}(R,"allResolved","allSettled"),p.prototype.allResolved=function(){return R(this)},l.allSettled=N,p.prototype.allSettled=function(){return this.then(function(e){return I(Q(e,function(e){function t(){return e.inspect()}return e=l(e),e.then(t,t)}))})},l.fail=l.catch=function(e,t){return l(e).then(void 0,t)},p.prototype.fail=p.prototype.catch=function(e){return this.then(void 0,e)},l.progress=U,p.prototype.progress=function(e){return this.then(void 0,void 0,e)},l.fin=l.finally=function(e,t){return l(e).finally(t)},p.prototype.fin=p.prototype.finally=function(e){if(!e||"function"!=typeof e.apply)throw new Error("Q can't apply finally callback");return e=l(e),this.then(function(t){return e.fcall().then(function(){return t})},function(t){return e.fcall().then(function(){throw t})})},l.done=function(e,t,r,n){return l(e).done(t,r,n)},p.prototype.done=function(t,r,n){var o=function(e){l.nextTick(function(){if(i(e,a),!l.onerror)throw e;l.onerror(e)})},a=t||r||n?this.then(t,r,n):this;"object"==typeof e&&e&&e.domain&&(o=e.domain.bind(o)),a.then(void 0,o)},l.timeout=function(e,t,r){return l(e).timeout(t,r)},p.prototype.timeout=function(e,t){var r=f(),n=setTimeout(function(){t&&"string"!=typeof t||(t=new Error(t||"Timed out after "+e+" ms"),t.code="ETIMEDOUT"),r.reject(t)},e);return this.then(function(e){clearTimeout(n),r.resolve(e)},function(e){clearTimeout(n),r.reject(e)},r.notify),r.promise},l.delay=function(e,t){return void 0===t&&(t=e,e=void 0),l(e).delay(t)},p.prototype.delay=function(e){return this.then(function(t){var r=f();return setTimeout(function(){r.resolve(t)},e),r.promise})},l.nfapply=function(e,t){return l(e).nfapply(t)},p.prototype.nfapply=function(e){var t=f(),r=$(e);return r.push(t.makeNodeResolver()),this.fapply(r).fail(t.reject),t.promise},l.nfcall=function(e){var t=$(arguments,1);return l(e).nfapply(t)},p.prototype.nfcall=function(){var e=$(arguments),t=f();return e.push(t.makeNodeResolver()),this.fapply(e).fail(t.reject),t.promise},l.nfbind=l.denodeify=function(e){if(void 0===e)throw new Error("Q can't wrap an undefined function");var t=$(arguments,1);return function(){var r=t.concat($(arguments)),n=f();return r.push(n.makeNodeResolver()),l(e).fapply(r).fail(n.reject),n.promise}},p.prototype.nfbind=p.prototype.denodeify=function(){var e=$(arguments);return e.unshift(this),l.denodeify.apply(void 0,e)},l.nbind=function(e,t){var r=$(arguments,2);return function(){function n(){return e.apply(t,arguments)}var i=r.concat($(arguments)),o=f();return i.push(o.makeNodeResolver()),l(n).fapply(i).fail(o.reject),o.promise}},p.prototype.nbind=function(){var e=$(arguments,0);return e.unshift(this),l.nbind.apply(void 0,e)},l.nmapply=l.npost=function(e,t,r){return l(e).npost(t,r)},p.prototype.nmapply=p.prototype.npost=function(e,t){var r=$(t||[]),n=f();return r.push(n.makeNodeResolver()),this.dispatch("post",[e,r]).fail(n.reject),n.promise},l.nsend=l.nmcall=l.ninvoke=function(e,t){var r=$(arguments,2),n=f();return r.push(n.makeNodeResolver()),l(e).dispatch("post",[t,r]).fail(n.reject),n.promise},p.prototype.nsend=p.prototype.nmcall=p.prototype.ninvoke=function(e){var t=$(arguments,1),r=f();return t.push(r.makeNodeResolver()),this.dispatch("post",[e,t]).fail(r.reject),r.promise},l.nodeify=L,p.prototype.nodeify=function(e){if(!e)return this;this.then(function(t){l.nextTick(function(){e(null,t)})},function(t){l.nextTick(function(){e(t)})})},l.noConflict=function(){throw new Error("Q.noConflict only works when Q is used as a global")};var ce=c();return l})}).call(this,e("lYpoI2"))},{lYpoI2:59}],110:[function(e,t,r){(function(r){"use strict";var n,i=e("buffer"),o=i.Buffer,a={};for(n in i)i.hasOwnProperty(n)&&"SlowBuffer"!==n&&"Buffer"!==n&&(a[n]=i[n]);var s=a.Buffer={};for(n in o)o.hasOwnProperty(n)&&"allocUnsafe"!==n&&"allocUnsafeSlow"!==n&&(s[n]=o[n]);if(a.Buffer.prototype=o.prototype,s.from&&s.from!==Uint8Array.from||(s.from=function(e,t,r){if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&void 0===e.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return o(e,t,r)}),s.alloc||(s.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var n=o(e);return t&&0!==t.length?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n}),!a.kStringMaxLength)try{a.kStringMaxLength=r.binding("buffer").kStringMaxLength}catch(e){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a}).call(this,e("lYpoI2"))},{buffer:57,lYpoI2:59}],111:[function(e,t,r){var n=e("escodegen").generate;t.exports=function(e,t){t||(t={});var r={},i=function e(i,o){if("Literal"===i.type)return i.value;if("UnaryExpression"===i.type){var a=e(i.argument);return"+"===i.operator?+a:"-"===i.operator?-a:"~"===i.operator?~a:"!"===i.operator?!a:r}if("ArrayExpression"===i.type){for(var s=[],u=0,c=i.elements.length;u"===m?c>p:">="===m?c>=p:"|"===m?c|p:"&"===m?c&p:"^"===m?c^p:"&&"===m?c&&p:"||"===m?c||p:r}if("Identifier"===i.type)return{}.hasOwnProperty.call(t,i.name)?t[i.name]:r;if("ThisExpression"===i.type)return{}.hasOwnProperty.call(t,"this")?t.this:r;if("CallExpression"===i.type){var y=e(i.callee);if(y===r)return r;if("function"!=typeof y)return r;var v=i.callee.object?e(i.callee.object):r;v===r&&(v=null);for(var g=[],u=0,c=i.arguments.length;u0;t>>>=1,e+=e)1&t&&(r+=e);return r}function s(e){return/[\r\n]/g.test(e)}function u(e){var t=e.length;return t&&q.code.isLineTerminator(e.charCodeAt(t-1))}function c(e,t){var r;for(r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function l(e,t){function r(e){return"object"==typeof e&&e instanceof Object&&!(e instanceof RegExp)}var n,i;for(n in t)t.hasOwnProperty(n)&&(i=t[n],r(i)?r(e[n])?l(e[n],i):e[n]=l({},i):e[n]=i);return e}function f(e){var t,r,n,i,o;if(e!==e)throw new Error("Numeric literal whose value is NaN");if(e<0||0===e&&1/e<0)throw new Error("Numeric literal whose value is negative");if(e===1/0)return Y?"null":$?"1e400":"1e+400";if(t=""+e,!$||t.length<3)return t;for(r=t.indexOf("."),Y||48!==t.charCodeAt(0)||1!==r||(r=0,t=t.slice(1)),n=t,t=t.replace("e+","e"),i=0,(o=n.indexOf("e"))>0&&(i=+n.slice(o+1),n=n.slice(0,o)),r>=0&&(i-=n.length-r-1,n=+(n.slice(0,r)+n.slice(r+1))+""),o=0;48===n.charCodeAt(n.length+o-1);)--o;return 0!==o&&(i-=o,n=n.slice(0,o)),0!==i&&(n+="e"+i),(n.length1e12&&Math.floor(e)===e&&(n="0x"+e.toString(16)).length255?"\\u"+"0000".slice(r.length)+r:0!==e||q.code.isDecimalDigit(t)?11===e?"\\x0B":"\\x"+"00".slice(r.length)+r:"\\0")}function m(e){if(92===e)return"\\\\";if(10===e)return"\\n";if(13===e)return"\\r";if(8232===e)return"\\u2028";if(8233===e)return"\\u2029";throw new Error("Incorrectly classified character")}function y(e){var t,r,n,i;for(i="double"===J?'"':"'",t=0,r=e.length;t126))){a+=p(n,e.charCodeAt(t+1));continue}}a+=String.fromCharCode(n)}if(i=!("double"===J||"auto"===J&&u=0&&!q.code.isLineTerminator(e.charCodeAt(t));--t);return e.length-1-t}function P(e,t){var r,n,i,o,a,s,u,c;for(r=e.split(/\r\n|[\r\n]/),s=Number.MAX_VALUE,n=1,i=r.length;na&&(s=a)}for(void 0!==t?(u=H,"*"===r[1][s]&&(t+=" "),H=t):(1&s&&--s,u=H),n=1,i=r.length;n0){if(o=t,ue){for(i=e.leadingComments[0],t=[],f=i.extendedRange,d=i.range,p=se.substring(f[0],d[0]),v=(p.match(/\n/g)||[]).length,v>0?(t.push(a("\n",v)),t.push(w(O(i)))):(t.push(p),t.push(O(i))),h=d,r=1,n=e.leadingComments.length;r0?(t.push(a("\n",v)),t.push(w(O(i)))):(t.push(p),t.push(O(i)));else for(s=!u(_(t).toString()),c=a(" ",A(_([H,t,W]).toString())),r=0,n=e.trailingComments.length;r":L.Relational,"<=":L.Relational,">=":L.Relational,in:L.Relational,instanceof:L.Relational,"<<":L.BitwiseSHIFT,">>":L.BitwiseSHIFT,">>>":L.BitwiseSHIFT,"+":L.Additive,"-":L.Additive,"*":L.Multiplicative,"%":L.Multiplicative,"/":L.Multiplicative,"**":L.Exponentiation};var fe=7,de=1;j.prototype.maybeBlock=function(e,t){var r,n,i=this;return n=!ie.comment||!e.leadingComments,e.type===U.BlockStatement&&n?[Z,this.generateStatement(e,t)]:e.type===U.EmptyStatement&&n?";":(S(function(){r=[X,w(i.generateStatement(e,t))]}),r)},j.prototype.maybeBlockSuffix=function(e,t){var r=u(_(t).toString());return e.type!==U.BlockStatement||ie.comment&&e.leadingComments||r?r?[t,H]:[t,X,H]:[t,Z]},j.prototype.generatePattern=function(e,t,r){return e.type===U.Identifier?x(e):this.generateExpression(e,t,r)},j.prototype.generateFunctionParams=function(e){var t,r,n,i;if(i=!1,e.type!==U.ArrowFunctionExpression||e.rest||e.defaults&&0!==e.defaults.length||1!==e.params.length||e.params[0].type!==U.Identifier){for(n=e.type===U.ArrowFunctionExpression?[M(e,!1)]:[],n.push("("),e.defaults&&(i=!0),t=0,r=e.params.length;t")),e.expression?(t.push(Z),r=this.generateExpression(e.body,L.Assignment,fe),"{"===r.toString().charAt(0)&&(r=["(",r,")"]),t.push(r)):t.push(this.maybeBlock(e.body,9)),t},j.prototype.generateIterationForStatement=function(e,t,r){var n=["for"+(t.await?b()+"await":"")+Z+"("],i=this;return S(function(){t.left.type===U.VariableDeclaration?S(function(){n.push(t.left.kind+b()),n.push(i.generateStatement(t.left.declarations[0],0))}):n.push(i.generateExpression(t.left,L.Call,fe)),n=E(n,e),n=[E(n,i.generateExpression(t.right,L.Assignment,fe)),")"]}),n.push(this.maybeBlock(t.body,r)),n},j.prototype.generatePropertyKey=function(e,t){var r=[];return t&&r.push("["),r.push(this.generateExpression(e,L.Assignment,fe)),t&&r.push("]"),r},j.prototype.generateAssignment=function(e,t,r,n,i){return L.Assignment2&&(n=se.substring(r[0]+1,r[1]-1),"\n"===n[0]&&(i=["{"]),i.push(n)));var a,s,c,l;for(l=de,8&t&&(l|=16),a=0,s=e.body.length;a0&&(e.body[a-1].trailingComments||e.body[a].leadingComments||C(e.body[a-1].range[1],e.body[a].range[0],i))),a===s-1&&(l|=32),c=e.body[a].leadingComments&&ue?o.generateStatement(e.body[a],l):w(o.generateStatement(e.body[a],l)),i.push(c),u(_(c).toString())||(ue&&a1?S(r):r(),n.push(this.semicolon(t)),n},ThrowStatement:function(e,t){return[E("throw",this.generateExpression(e.argument,L.Sequence,fe)),this.semicolon(t)]},TryStatement:function(e,t){var r,n,i,o;if(r=["try",this.maybeBlock(e.block,de)],r=this.maybeBlockSuffix(e.block,r),e.handlers)for(n=0,i=e.handlers.length;n0?"\n":""],a=17,i=0;i0&&(e.body[i-1].trailingComments||e.body[i].leadingComments||C(e.body[i-1].range[1],e.body[i].range[0],r))),n=w(this.generateStatement(e.body[i],a)),r.push(n),i+10){for(n.push("("),o=0,a=i;o=2&&48===i.charCodeAt(0))&&n.push(" ")),n.push("."),n.push(x(e.property))),T(n,L.Member,t)},MetaProperty:function(e,t,r){var n;return n=[],n.push("string"==typeof e.meta?e.meta:x(e.meta)),n.push("."),n.push("string"==typeof e.property?e.property:x(e.property)),T(n,L.Member,t)},UnaryExpression:function(e,t,r){var n,i,o,a,s;return i=this.generateExpression(e.argument,L.Unary,fe),""===Z?n=E(e.operator,i):(n=[e.operator],e.operator.length>2?n=E(n,i):(a=_(n).toString(),s=a.charCodeAt(a.length-1),o=i.toString().charCodeAt(0),(43===s||45===s)&&s===o||q.code.isIdentifierPartES5(s)&&q.code.isIdentifierPartES5(o)?(n.push(b()),n.push(i)):n.push(i))),T(n,L.Unary,t)},YieldExpression:function(e,t,r){var n;return n=e.delegate?"yield*":"yield",e.argument&&(n=E(n,this.generateExpression(e.argument,L.Yield,fe))),T(n,L.Yield,t)},AwaitExpression:function(e,t,r){return T(E(e.all?"await*":"await",this.generateExpression(e.argument,L.Await,fe)),L.Await,t)},UpdateExpression:function(e,t,r){return e.prefix?T([e.operator,this.generateExpression(e.argument,L.Unary,fe)],L.Unary,t):T([this.generateExpression(e.argument,L.Postfix,fe),e.operator],L.Postfix,t)},FunctionExpression:function(e,t,r){var n=[M(e,!0),"function"];return e.id?(n.push(I(e)||b()),n.push(x(e.id))):n.push(I(e)||Z),n.push(this.generateFunctionBody(e)),n},ArrayPattern:function(e,t,r){return this.ArrayExpression(e,t,r,!0)},ArrayExpression:function(e,t,r,n){var i,o,a=this;return e.elements.length?(o=!n&&e.elements.length>1,i=["[",o?X:""],S(function(t){var r,n;for(r=0,n=e.elements.length;r1,S(function(){o=a.generateExpression(e.properties[0],L.Sequence,fe)}),n||s(_(o).toString())?(S(function(t){var r,s;if(i=["{",X,t,o],n)for(i.push(","+X),r=1,s=e.properties.length;r0||ie.moz.comprehensionExpressionStartsWithAssignment?n=E(n,a):n.push(a)}),e.filter&&(n=E(n,"if"+Z),a=this.generateExpression(e.filter,L.Sequence,fe),n=E(n,["(",a,")"])),ie.moz.comprehensionExpressionStartsWithAssignment||(a=this.generateExpression(e.body,L.Assignment,fe),n=E(n,a)),n.push(e.type===U.GeneratorExpression?")":"]"),n},ComprehensionBlock:function(e,t,r){var n;return n=e.left.type===U.VariableDeclaration?[e.left.kind,b(),this.generateStatement(e.left.declarations[0],0)]:this.generateExpression(e.left,L.Call,fe),n=E(n,e.of?"of":"in"),n=E(n,this.generateExpression(e.right,L.Sequence,fe)),["for"+Z+"(",n,")"]},SpreadElement:function(e,t,r){return["...",this.generateExpression(e.argument,L.Assignment,fe)]},TaggedTemplateExpression:function(e,t,r){var n=3;return 2&r||(n=1),T([this.generateExpression(e.tag,L.Call,n),this.generateExpression(e.quasi,L.Primary,4)],L.TaggedTemplate,t)},TemplateElement:function(e,t,r){return e.value.raw},TemplateLiteral:function(e,t,r){var n,i,o;for(n=["`"],i=0,o=e.quasis.length;i=4.0"},files:["LICENSE.BSD","README.md","bin","escodegen.js","package.json"],homepage:"http://github.com/estools/escodegen",license:"BSD-2-Clause",main:"escodegen.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"escodegen",optionalDependencies:{"source-map":"~0.6.1"},repository:{type:"git",url:"git+ssh://git@github.com/estools/escodegen.git"},scripts:{build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",lint:"gulp lint",release:"node tools/release.js",test:"gulp travis","unit-test":"gulp test"},version:"1.14.3"}},{}],114:[function(e,t,r){!function t(r){"use strict";function n(e){var t,r,i={};for(t in e)e.hasOwnProperty(t)&&(r=e[t],i[t]="object"==typeof r&&null!==r?n(r):r);return i}function i(e,t){var r,n,i,o;for(n=e.length,i=0;n;)r=n>>>1,o=i+r,t(e[o])?n=r:(i=o+1,n-=r+1);return i}function o(e,t){this.parent=e,this.key=t}function a(e,t,r,n){this.node=e,this.path=t,this.wrap=r,this.ref=n}function s(){}function u(e){return null!=e&&("object"==typeof e&&"string"==typeof e.type)}function c(e,t){return(e===p.ObjectExpression||e===p.ObjectPattern)&&"properties"===t}function l(e,t){return(new s).traverse(e,t)}function f(e,t){return(new s).replace(e,t)}function d(e,t){var r;return r=i(t,function(t){return t.range[0]>e.range[0]}),e.extendedRange=[e.range[0],e.range[1]],r!==t.length&&(e.extendedRange[1]=t[r].range[0]),r-=1,r>=0&&(e.extendedRange[0]=t[r].range[1]),e}function h(e,t,r){var i,o,a,s,u=[];if(!e.range)throw new Error("attachComments needs range information");if(!r.length){if(t.length){for(a=0,o=t.length;ae.range[0]));)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),u.splice(s,1)):s+=1;return s===u.length?m.Break:u[s].extendedRange[0]>e.range[1]?m.Skip:void 0}}),s=0,l(e,{leave:function(e){for(var t;se.range[1]?m.Skip:void 0}}),e}var p,m,y,v,g,_;return p={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},y={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},v={},g={},_={},m={Break:v,Skip:g,Remove:_},o.prototype.replace=function(e){this.parent[this.key]=e},o.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},s.prototype.path=function(){function e(e,t){if(Array.isArray(t))for(n=0,i=t.length;n=0;)if(f=p[d],m=o[f])if(Array.isArray(m)){for(h=m.length;(h-=1)>=0;)if(m[h]){if(c(s,p[d]))i=new a(m[h],[f,h],"Property",null);else{if(!u(m[h]))continue;i=new a(m[h],[f,h],null,null)}r.push(i)}}else u(m)&&r.push(new a(m,f,null,null))}}else if(i=n.pop(),l=this.__execute(t.leave,i),this.__state===v||l===v)return},s.prototype.replace=function(e,t){function r(e){var t,r,i,o;if(e.ref.remove())for(r=e.ref.key,o=e.ref.parent,t=n.length;t--;)if(i=n[t],i.ref&&i.ref.parent===o){if(i.ref.key=0;)if(w=m[h],y=s[w])if(Array.isArray(y)){for(p=y.length;(p-=1)>=0;)if(y[p]){if(c(l,m[h]))d=new a(y[p],[w,p],"Property",new o(y,p));else{if(!u(y[p]))continue;d=new a(y[p],[w,p],null,new o(y,p))}n.push(d)}}else u(y)&&n.push(new a(y,w,null,new o(s,w)))}}else if(d=i.pop(),f=this.__execute(t.leave,d),void 0!==f&&f!==v&&f!==g&&f!==_&&d.ref.replace(f),this.__state!==_&&f!==_||r(d),this.__state===v||f===v)return E.root;return E.root},r.version=e("./package.json").version,r.Syntax=p,r.traverse=l,r.replace=f,r.attachComments=h,r.VisitorKeys=y,r.VisitorOption=m,r.Controller=s,r.cloneEnvironment=function(){return t({})},r}(r)},{"./package.json":115}],115:[function(e,t,r){t.exports={_args:[["estraverse@4.3.0","/home/jenkins/workspace/og-ux_generate_hotfix_from_github"]],_from:"estraverse@4.3.0",_id:"estraverse@4.3.0",_inBundle:!1,_integrity:"sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",_location:"/static-eval/estraverse",_phantomChildren:{},_requested:{type:"version",registry:!0,raw:"estraverse@4.3.0",name:"estraverse",escapedName:"estraverse",rawSpec:"4.3.0",saveSpec:null,fetchSpec:"4.3.0"},_requiredBy:["/static-eval/escodegen"],_resolved:"https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",_spec:"4.3.0",_where:"/home/jenkins/workspace/og-ux_generate_hotfix_from_github",bugs:{url:"https://github.com/estools/estraverse/issues"},description:"ECMAScript JS AST traversal functions",devDependencies:{"babel-preset-env":"^1.6.1","babel-register":"^6.3.13",chai:"^2.1.1",espree:"^1.11.0",gulp:"^3.8.10","gulp-bump":"^0.2.2","gulp-filter":"^2.0.0","gulp-git":"^1.0.1","gulp-tag-version":"^1.3.0",jshint:"^2.5.6",mocha:"^2.1.0"},engines:{node:">=4.0"},homepage:"https://github.com/estools/estraverse",license:"BSD-2-Clause",main:"estraverse.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"estraverse",repository:{type:"git",url:"git+ssh://git@github.com/estools/estraverse.git"},scripts:{lint:"jshint estraverse.js",test:"npm run-script lint && npm run-script unit-test","unit-test":"mocha --compilers js:babel-register"},version:"4.3.0"}},{}],116:[function(e,t,r){function n(){this._array=[],this._set=a?new Map:Object.create(null)}var i=e("./util"),o=Object.prototype.hasOwnProperty,a="undefined"!=typeof Map;n.fromArray=function(e,t){for(var r=new n,i=0,o=e.length;i=0)return t}else{var r=i.toSetString(e);if(o.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},n.prototype.at=function(e){if(e>=0&&e>1;return t?-r:r}var o=e("./base64");r.encode=function(e){var t,r="",i=n(e);do{t=31&i,i>>>=5,i>0&&(t|=32),r+=o.encode(t)}while(i>0);return r},r.decode=function(e,t,r){var n,a,s=e.length,u=0,c=0;do{if(t>=s)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(a=o.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));n=!!(32&a),a&=31,u+=a<0?t-u>1?n(u,t,i,o,a,s):s==r.LEAST_UPPER_BOUND?t1?n(e,u,i,o,a,s):s==r.LEAST_UPPER_BOUND?u:e<0?-1:e}r.GREATEST_LOWER_BOUND=1,r.LEAST_UPPER_BOUND=2,r.search=function(e,t,i,o){if(0===t.length)return-1;var a=n(-1,t.length,e,t,i,o||r.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&0===i(t[a],t[a-1],!0);)--a;return a}},{}],120:[function(e,t,r){function n(e,t){var r=e.generatedLine,n=t.generatedLine,i=e.generatedColumn,a=t.generatedColumn;return n>r||n==r&&a>=i||o.compareByGeneratedPositionsInflated(e,t)<=0}function i(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var o=e("./util");i.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},i.prototype.add=function(e){n(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},i.prototype.toArray=function(){return this._sorted||(this._array.sort(o.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},r.MappingList=i},{"./util":125}],121:[function(e,t,r){function n(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function i(e,t){return Math.round(e+Math.random()*(t-e))}function o(e,t,r,a){if(r=0){var o=this._originalMappings[i];if(void 0===e.column)for(var a=o.originalLine;o&&o.originalLine===a;)n.push({line:s.getArg(o,"generatedLine",null),column:s.getArg(o,"generatedColumn",null),lastColumn:s.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i];else for(var c=o.originalColumn;o&&o.originalLine===t&&o.originalColumn==c;)n.push({line:s.getArg(o,"generatedLine",null),column:s.getArg(o,"generatedColumn",null),lastColumn:s.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i]}return n},r.SourceMapConsumer=n,i.prototype=Object.create(n.prototype),i.prototype.consumer=n,i.prototype._findSourceIndex=function(e){var t=e;if(null!=this.sourceRoot&&(t=s.relative(this.sourceRoot,t)),this._sources.has(t))return this._sources.indexOf(t);var r;for(r=0;r1&&(r.source=m+i[1],m+=i[1],r.originalLine=h+i[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=p+i[3],p=r.originalColumn,i.length>4&&(r.name=y+i[4],y+=i[4])),w.push(r),"number"==typeof r.originalLine&&E.push(r)}f(w,s.compareByGeneratedPositionsDeflated),this.__generatedMappings=w,f(E,s.compareByOriginalPositions),this.__originalMappings=E},i.prototype._findMapping=function(e,t,r,n,i,o){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return u.search(e,t,i,o)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[r];if(i.generatedLine===t.generatedLine){var o=s.getArg(i,"source",null);null!==o&&(o=this._sources.at(o),o=s.computeSourceURL(this.sourceRoot,o,this._sourceMapURL));var a=s.getArg(i,"name",null);return null!==a&&(a=this._names.at(a)),{source:o,line:s.getArg(i,"originalLine",null),column:s.getArg(i,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var n=e;null!=this.sourceRoot&&(n=s.relative(this.sourceRoot,n));var i;if(null!=this.sourceRoot&&(i=s.urlParse(this.sourceRoot))){var o=n.replace(/^file:\/\//,"");if("file"==i.scheme&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!i.path||"/"==i.path)&&this._sources.has("/"+n))return this.sourcesContent[this._sources.indexOf("/"+n)]}if(t)return null;throw new Error('"'+n+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=s.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:s.getArg(e,"line"),originalColumn:s.getArg(e,"column")},i=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",s.compareByOriginalPositions,s.getArg(e,"bias",n.GREATEST_LOWER_BOUND));if(i>=0){var o=this._originalMappings[i];if(o.source===r.source)return{line:s.getArg(o,"generatedLine",null),column:s.getArg(o,"generatedColumn",null),lastColumn:s.getArg(o,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},r.BasicSourceMapConsumer=i,a.prototype=Object.create(n.prototype),a.prototype.constructor=n,a.prototype._version=3,Object.defineProperty(a.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},n.prototype._serializeMappings=function(){for(var e,t,r,n,a=0,s=1,u=0,c=0,l=0,f=0,d="",h=this._mappings.toArray(),p=0,m=h.length;p0){if(!o.compareByGeneratedPositionsInflated(t,h[p-1]))continue;e+=","}e+=i.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(n=this._sources.indexOf(t.source),e+=i.encode(n-f),f=n,e+=i.encode(t.originalLine-1-c),c=t.originalLine-1,e+=i.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=i.encode(r-l),l=r)),d+=e}return d},n.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var r=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},n.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},n.prototype.toString=function(){return JSON.stringify(this.toJSON())},r.SourceMapGenerator=n},{"./array-set":116,"./base64-vlq":117,"./mapping-list":120,"./util":125}],124:[function(e,t,r){function n(e,t,r,n,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==i?null:i,this[s]=!0,null!=n&&this.add(n)}var i=e("./source-map-generator").SourceMapGenerator,o=e("./util"),a=/(\r?\n)/,s="$$$isSourceNode$$$";n.fromStringWithSourceMap=function(e,t,r){function i(e,t){if(null===e||void 0===e.source)s.add(t);else{var i=r?o.join(r,e.source):e.source;s.add(new n(e.originalLine,e.originalColumn,i,t,e.name))}}var s=new n,u=e.split(a),c=0,l=function(){function e(){return c=0;t--)this.prepend(e[t]);else{if(!e[s]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},n.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r0){for(t=[],r=0;r=0;l--)a=u[l],"."===a?u.splice(l,1):".."===a?c++:c>0&&(""===a?(u.splice(l+1,c),c=0):(u.splice(l,2),c--));return t=u.join("/"),""===t&&(t=s?"/":"."),n?(n.path=t,o(n)):t}function s(e,t){""===e&&(e="."),""===t&&(t=".");var r=i(t),n=i(e);if(n&&(e=n.path||"/"),r&&!r.scheme)return n&&(r.scheme=n.scheme),o(r);if(r||t.match(b))return t;if(n&&!n.host&&!n.path)return n.host=t,o(n);var s="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return n?(n.path=s,o(n)):s}function u(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if(e=e.slice(0,n),e.match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)}function c(e){return e}function l(e){return d(e)?"$"+e:e}function f(e){return d(e)?e.slice(1):e}function d(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function h(e,t,r){var n=m(e.source,t.source);return 0!==n?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)||r?n:0!==(n=e.generatedColumn-t.generatedColumn)?n:(n=e.generatedLine-t.generatedLine,0!==n?n:m(e.name,t.name))}function p(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-t.generatedColumn)||r?n:0!==(n=m(e.source,t.source))?n:0!==(n=e.originalLine-t.originalLine)?n:(n=e.originalColumn-t.originalColumn,0!==n?n:m(e.name,t.name))}function m(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}function y(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!==(r=e.generatedColumn-t.generatedColumn)?r:0!==(r=m(e.source,t.source))?r:0!==(r=e.originalLine-t.originalLine)?r:(r=e.originalColumn-t.originalColumn,0!==r?r:m(e.name,t.name))}function v(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}function g(e,t,r){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),r){var n=i(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var u=n.path.lastIndexOf("/");u>=0&&(n.path=n.path.substring(0,u+1))}t=s(o(n),t)}return a(t)}r.getArg=n;var _=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,b=/^data:.+\,.+$/;r.urlParse=i,r.urlGenerate=o,r.normalize=a,r.join=s,r.isAbsolute=function(e){return"/"===e.charAt(0)||_.test(e)},r.relative=u;var E=function(){return!("__proto__"in Object.create(null))}();r.toSetString=E?c:l,r.fromSetString=E?c:f,r.compareByOriginalPositions=h,r.compareByGeneratedPositionsDeflated=p,r.compareByGeneratedPositionsInflated=y,r.parseSourceMapInput=v,r.computeSourceURL=g},{}],126:[function(e,t,r){r.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,r.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,r.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":122,"./lib/source-map-generator":123,"./lib/source-node":124}],127:[function(e,t,r){"use strict";function n(e){if(e._patchedBySuperagentMocker)return n;e._patchedBySuperagentMocker=!0;for(var t in y)if(y.hasOwnProperty(t)){var r=y[t];a(e,t,r)}var i=e.Request.prototype,o=m.end=e.Request.prototype.end;i.end=function(e){var t=this._superagentMockerState;if(t&&t.current){var r=t.current;setTimeout(function(t){try{var n=r(t);if(/20[0-6]/.test(n.status))e&&e(null,n);else{var i=new Error(n.status);i.status=n.status,i.response=n,e&&e(i,null)}}catch(t){e&&e(t,null)}},c(n.timeout),t.request)}else o.call(this,e)};var h=m.set=i.set;i.set=function(e,t){var r=this._superagentMockerState;if(!r||!r.current)return h.call(this,e,t);if(s(e)){for(var n in e)this.set(n,e[n]);return this}if("string"!=typeof e)throw new TypeError("Header keys must be strings.");return r.request.headers[e.toLowerCase()]=t,this};var p=m.send=i.send;i.send=function(e){var t=this._superagentMockerState;return t&&t.current?(s(e)?t.request.body=d(t.current.body,e):t.request.body=e,this):p.call(this,e)};var v=m.query=i.query;return i.query=function(e){var t=this._superagentMockerState;if(!t||!t.current)return v.call(this,e);var r={};return u(e)?r=l(e):s(e)&&(r=f(e)),t.request.query=d(t.request.query,r),this},n}function i(e,t,r){return p.reduce(function(n,i){var o=i.match(e,t,r);return o||n},null)}function o(e,t,r){return p.push(new v({url:t,handler:r,method:e})),n}function a(e,t,r){var n=m[t]=e[t];e[t]=function(e,t,o){var a=i(r,e,t),s=n.call(this,e,t,o);return s._superagentMockerState={current:a,request:{headers:{},body:{},query:{}}},s}}function s(e){return null!=e&&"object"==typeof e}function u(e){return"string"==typeof e}function c(e){return"function"==typeof e?e():e}function l(e){return e.split("&").reduce(function(e,t){var r=t.split("="),n=r.shift(),i=r.shift();return n&&i&&(e[n]=i),e},{})}function f(e){return Object.keys(e).reduce(function(t,r){return t[r]=String(e[r]),t},{})}function d(){for(var e={},t=0;t=2&&e._responseTimeoutTimer&&clearTimeout(e._responseTimeoutTimer),4==r){var n;try{n=t.status}catch(e){n=0}if(!n){if(e.timedout||e._aborted)return;return e.crossDomainError()}e.emit("end")}};var n=function(t,r){r.total>0&&(r.percent=r.loaded/r.total*100),r.direction=t,e.emit("progress",r)};if(this.hasListeners("progress"))try{t.onprogress=n.bind(null,"download"),t.upload&&(t.upload.onprogress=n.bind(null,"upload"))}catch(e){}try{this.username&&this.password?t.open(this.method,this.url,!0,this.username,this.password):t.open(this.method,this.url,!0)}catch(e){return this.callback(e)}if(this._withCredentials&&(t.withCredentials=!0),!this._formData&&"GET"!=this.method&&"HEAD"!=this.method&&"string"!=typeof r&&!this._isHost(r)){var i=this._header["content-type"],o=this._serializer||g.serialize[i?i.split(";")[0]:""];!o&&u(i)&&(o=g.serialize["application/json"]),o&&(r=o(r))}for(var a in this.header)null!=this.header[a]&&this.header.hasOwnProperty(a)&&t.setRequestHeader(a,this.header[a]);return this._responseType&&(t.responseType=this._responseType),this.emit("request",this),t.send(void 0!==r?r:null),this},g.agent=function(){return new v},["GET","POST","OPTIONS","PATCH","PUT","DELETE"].forEach(function(e){v.prototype[e.toLowerCase()]=function(t,r){var n=new g.Request(e,t);return this._setDefaults(n),r&&n.end(r),n}}),v.prototype.del=v.prototype.delete,g.get=function(e,t,r){var n=g("GET",e);return"function"==typeof t&&(r=t,t=null),t&&n.query(t),r&&n.end(r),n},g.head=function(e,t,r){var n=g("HEAD",e);return"function"==typeof t&&(r=t,t=null),t&&n.query(t),r&&n.end(r),n},g.options=function(e,t,r){var n=g("OPTIONS",e);return"function"==typeof t&&(r=t,t=null),t&&n.send(t),r&&n.end(r),n},g.del=f,g.delete=f,g.patch=function(e,t,r){var n=g("PATCH",e);return"function"==typeof t&&(r=t,t=null),t&&n.send(t),r&&n.end(r),n},g.post=function(e,t,r){var n=g("POST",e);return"function"==typeof t&&(r=t,t=null),t&&n.send(t),r&&n.end(r),n},g.put=function(e,t,r){var n=g("PUT",e);return"function"==typeof t&&(r=t,t=null),t&&n.send(t),r&&n.end(r),n}},{"./agent-base":128,"./is-object":130,"./request-base":131,"./response-base":132,"component-emitter":44}],130:[function(e,t,r){"use strict";function n(e){return null!==e&&"object"==typeof e}t.exports=n},{}],131:[function(e,t,r){"use strict";function n(e){if(e)return i(e)}function i(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}var o=e("./is-object");t.exports=n,n.prototype.clearTimeout=function(){return clearTimeout(this._timer),clearTimeout(this._responseTimeoutTimer),delete this._timer,delete this._responseTimeoutTimer,this},n.prototype.parse=function(e){return this._parser=e,this},n.prototype.responseType=function(e){return this._responseType=e,this},n.prototype.serialize=function(e){return this._serializer=e,this},n.prototype.timeout=function(e){if(!e||"object"!=typeof e)return this._timeout=e,this._responseTimeout=0,this;for(var t in e)switch(t){case"deadline":this._timeout=e.deadline;break;case"response":this._responseTimeout=e.response;break;default:console.warn("Unknown timeout option",t)}return this},n.prototype.retry=function(e,t){return 0!==arguments.length&&!0!==e||(e=1),e<=0&&(e=0),this._maxRetries=e,this._retries=0,this._retryCallback=t,this};var a=["ECONNRESET","ETIMEDOUT","EADDRINFO","ESOCKETTIMEDOUT"];n.prototype._shouldRetry=function(e,t){if(!this._maxRetries||this._retries++>=this._maxRetries)return!1;if(this._retryCallback)try{var r=this._retryCallback(e,t);if(!0===r)return!0;if(!1===r)return!1}catch(e){console.error(e)}if(t&&t.status&&t.status>=500&&501!=t.status)return!0;if(e){if(e.code&&~a.indexOf(e.code))return!0;if(e.timeout&&"ECONNABORTED"==e.code)return!0;if(e.crossDomain)return!0}return!1},n.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this._end()},n.prototype.then=function(e,t){if(!this._fullfilledPromise){var r=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(function(e,t){r.end(function(r,n){r?t(r):e(n)})})}return this._fullfilledPromise.then(e,t)},n.prototype.catch=function(e){return this.then(void 0,e)},n.prototype.use=function(e){return e(this),this},n.prototype.ok=function(e){if("function"!=typeof e)throw Error("Callback required");return this._okCallback=e,this},n.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):e.status>=200&&e.status<300)},n.prototype.get=function(e){return this._header[e.toLowerCase()]},n.prototype.getHeader=n.prototype.get,n.prototype.set=function(e,t){if(o(e)){for(var r in e)this.set(r,e[r]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},n.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},n.prototype.field=function(e,t){if(null===e||void 0===e)throw new Error(".field(name, val) name can not be empty");if(this._data&&console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"),o(e)){for(var r in e)this.field(r,e[r]);return this}if(Array.isArray(t)){for(var n in t)this.field(e,t[n]);return this}if(null===t||void 0===t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=""+t),this._getFormData().append(e,t),this},n.prototype.abort=function(){return this._aborted?this:(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req&&this.req.abort(),this.clearTimeout(),this.emit("abort"),this)},n.prototype._auth=function(e,t,r,n){switch(r.type){case"basic":this.set("Authorization","Basic "+n(e+":"+t));break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization","Bearer "+e)}return this},n.prototype.withCredentials=function(e){return void 0==e&&(e=!0),this._withCredentials=e,this},n.prototype.redirects=function(e){return this._maxRedirects=e,this},n.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw TypeError("Invalid argument");return this._maxResponseSize=e,this},n.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},n.prototype.send=function(e){var t=o(e),r=this._header["content-type"];if(this._formData&&console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"),t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw Error("Can't merge these send calls");if(t&&o(this._data))for(var n in e)this._data[n]=e[n];else"string"==typeof e?(r||this.type("form"),r=this._header["content-type"],this._data="application/x-www-form-urlencoded"==r?this._data?this._data+"&"+e:e:(this._data||"")+e):this._data=e;return!t||this._isHost(e)?this:(r||this.type("json"),this)},n.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},n.prototype._finalizeQueryString=function(){var e=this._query.join("&");if(e&&(this.url+=(this.url.indexOf("?")>=0?"&":"?")+e),this._query.length=0,this._sort){var t=this.url.indexOf("?");if(t>=0){var r=this.url.substring(t+1).split("&");"function"==typeof this._sort?r.sort(this._sort):r.sort(),this.url=this.url.substring(0,t)+"?"+r.join("&")}}},n.prototype._appendQueryString=function(){console.trace("Unsupported")},n.prototype._timeoutError=function(e,t,r){if(!this._aborted){var n=new Error(e+t+"ms exceeded");n.timeout=t,n.code="ECONNABORTED",n.errno=r,this.timedout=!0,this.abort(),this.callback(n)}},n.prototype._setTimeouts=function(){var e=this;this._timeout&&!this._timer&&(this._timer=setTimeout(function(){e._timeoutError("Timeout of ",e._timeout,"ETIME")},this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout(function(){e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")},this._responseTimeout))}},{"./is-object":130}],132:[function(e,t,r){"use strict";function n(e){if(e)return i(e)}function i(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}var o=e("./utils");t.exports=n,n.prototype.get=function(e){return this.header[e.toLowerCase()]},n.prototype._setHeaderProperties=function(e){var t=e["content-type"]||"";this.type=o.type(t);var r=o.params(t);for(var n in r)this[n]=r[n];this.links={};try{e.link&&(this.links=o.parseLinks(e.link))}catch(e){}},n.prototype._setStatusProperties=function(e){var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.redirect=3==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.created=201==e,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.forbidden=403==e,this.notFound=404==e,this.unprocessableEntity=422==e}},{"./utils":133}],133:[function(e,t,r){"use strict";r.type=function(e){return e.split(/ *; */).shift()},r.params=function(e){return e.split(/ *; */).reduce(function(e,t){var r=t.split(/ *= */),n=r.shift(),i=r.shift();return n&&i&&(e[n]=i),e},{})},r.parseLinks=function(e){return e.split(/ *, */).reduce(function(e,t){var r=t.split(/ *; */),n=r[0].slice(1,-1);return e[r[1].split(/ *= */)[1].slice(1,-1)]=n,e},{})},r.cleanHeader=function(e,t){return delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e}},{}],134:[function(e,t,r){!function(e,n){"object"==typeof r&&void 0!==t?n(r):"function"==typeof define&&define.amd?define(["exports"],n):n(e.URI=e.URI||{})}(this,function(e){"use strict";function t(){for(var e=arguments.length,t=Array(e),r=0;r1){t[0]=t[0].slice(0,-1);for(var n=t.length-1,i=1;i1&&(n=r[0]+"@",e=r[1]),e=e.replace(B,"."),n+c(e.split("."),t).join(".")}function f(e){for(var t=[],r=0,n=e.length;r=55296&&i<=56319&&r>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function h(e){for(var t="",r=0,n=e.length;r=194&&i<224){if(n-r>=6){var o=parseInt(e.substr(r+4,2),16);t+=String.fromCharCode((31&i)<<6|63&o)}else t+=e.substr(r,6);r+=6}else if(i>=224){if(n-r>=9){var a=parseInt(e.substr(r+4,2),16),s=parseInt(e.substr(r+7,2),16);t+=String.fromCharCode((15&i)<<12|(63&a)<<6|63&s)}else t+=e.substr(r,9);r+=9}else t+=e.substr(r,3),r+=3}return t}function p(e,t){function r(e){var r=h(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,d).replace(t.PCT_ENCODED,i)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,d).replace(t.PCT_ENCODED,i)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,d).replace(t.PCT_ENCODED,i)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,d).replace(t.PCT_ENCODED,i)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,d).replace(t.PCT_ENCODED,i)),e}function m(e){return e.replace(/^0*(.*)/,"$1")||"0"}function y(e,t){var r=e.match(t.IPV4ADDRESS)||[],n=F(r,2),i=n[1];return i?i.split(".").map(m).join("."):e}function v(e,t){var r=e.match(t.IPV6ADDRESS)||[],n=F(r,3),i=n[1],o=n[2];if(i){for(var a=i.toLowerCase().split("::").reverse(),s=F(a,2),u=s[0],c=s[1],l=c?c.split(":").map(m):[],f=u.split(":").map(m),d=t.IPV4ADDRESS.test(f[f.length-1]),h=d?7:8,p=f.length-h,v=Array(h),g=0;g1){var w=v.slice(0,b.index),S=v.slice(b.index+b.length);E=w.join(":")+"::"+S.join(":")}else E=v.join(":");return o&&(E+="%"+o),E}return e}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},n=!1!==t.iri?k:T;"suffix"===t.reference&&(e=(t.scheme?t.scheme+":":"")+"//"+e);var i=e.match(J);if(i){Q?(r.scheme=i[1],r.userinfo=i[3],r.host=i[4],r.port=parseInt(i[5],10),r.path=i[6]||"",r.query=i[7],r.fragment=i[8],isNaN(r.port)&&(r.port=i[5])):(r.scheme=i[1]||void 0,r.userinfo=-1!==e.indexOf("@")?i[3]:void 0,r.host=-1!==e.indexOf("//")?i[4]:void 0,r.port=parseInt(i[5],10),r.path=i[6]||"",r.query=-1!==e.indexOf("?")?i[7]:void 0,r.fragment=-1!==e.indexOf("#")?i[8]:void 0,isNaN(r.port)&&(r.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?i[4]:void 0)),r.host&&(r.host=v(y(r.host,n),n)),void 0!==r.scheme||void 0!==r.userinfo||void 0!==r.host||void 0!==r.port||r.path||void 0!==r.query?void 0===r.scheme?r.reference="relative":void 0===r.fragment?r.reference="absolute":r.reference="uri":r.reference="same-document",t.reference&&"suffix"!==t.reference&&t.reference!==r.reference&&(r.error=r.error||"URI is not a "+t.reference+" reference.");var o=K[(t.scheme||r.scheme||"").toLowerCase()];if(t.unicodeSupport||o&&o.unicodeSupport)p(r,n);else{if(r.host&&(t.domainHost||o&&o.domainHost))try{r.host=$.toASCII(r.host.replace(n.PCT_ENCODED,h).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to ASCII via punycode: "+e}p(r,T)}o&&o.parse&&o.parse(r,t)}else r.error=r.error||"URI can not be parsed.";return r}function _(e,t){var r=!1!==t.iri?k:T,n=[];return void 0!==e.userinfo&&(n.push(e.userinfo),n.push("@")),void 0!==e.host&&n.push(v(y(String(e.host),r),r).replace(r.IPV6ADDRESS,function(e,t,r){return"["+t+(r?"%25"+r:"")+"]"})),"number"==typeof e.port&&(n.push(":"),n.push(e.port.toString(10))),n.length?n.join(""):void 0}function b(e){for(var t=[];e.length;)if(e.match(X))e=e.replace(X,"");else if(e.match(Z))e=e.replace(Z,"/");else if(e.match(ee))e=e.replace(ee,"/"),t.pop();else if("."===e||".."===e)e="";else{var r=e.match(te);if(!r)throw new Error("Unexpected dot segment condition");var n=r[0];e=e.slice(n.length),t.push(n)}return t.join("")}function E(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.iri?k:T,n=[],i=K[(t.scheme||e.scheme||"").toLowerCase()];if(i&&i.serialize&&i.serialize(e,t),e.host)if(r.IPV6ADDRESS.test(e.host));else if(t.domainHost||i&&i.domainHost)try{e.host=t.iri?$.toUnicode(e.host):$.toASCII(e.host.replace(r.PCT_ENCODED,h).toLowerCase())}catch(r){e.error=e.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+r}p(e,r),"suffix"!==t.reference&&e.scheme&&(n.push(e.scheme),n.push(":"));var o=_(e,t);if(void 0!==o&&("suffix"!==t.reference&&n.push("//"),n.push(o),e.path&&"/"!==e.path.charAt(0)&&n.push("/")),void 0!==e.path){var a=e.path;t.absolutePath||i&&i.absolutePath||(a=b(a)),void 0===o&&(a=a.replace(/^\/\//,"/%2F")),n.push(a)}return void 0!==e.query&&(n.push("?"),n.push(e.query)),void 0!==e.fragment&&(n.push("#"),n.push(e.fragment)),n.join("")}function w(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments[3],i={};return n||(e=g(E(e,r),r),t=g(E(t,r),r)),r=r||{},!r.tolerant&&t.scheme?(i.scheme=t.scheme,i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=b(t.path||""),i.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=b(t.path||""),i.query=t.query):(t.path?("/"===t.path.charAt(0)?i.path=b(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?i.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:i.path=t.path:i.path="/"+t.path,i.path=b(i.path)),i.query=t.query):(i.path=e.path,void 0!==t.query?i.query=t.query:i.query=e.query),i.userinfo=e.userinfo,i.host=e.host,i.port=e.port),i.scheme=e.scheme),i.fragment=t.fragment,i}function S(e,t,r){var n=a({scheme:"null"},r);return E(w(g(e,n),g(t,n),n,!0),n)}function A(e,t){return"string"==typeof e?e=E(g(e,t),t):"object"===n(e)&&(e=g(E(e,t),t)),e}function P(e,t,r){return"string"==typeof e?e=E(g(e,r),r):"object"===n(e)&&(e=E(e,r)),"string"==typeof t?t=E(g(t,r),r):"object"===n(t)&&(t=E(t,r)),e===t}function O(e,t){return e&&e.toString().replace(t&&t.iri?k.ESCAPE:T.ESCAPE,d)}function D(e,t){return e&&e.toString().replace(t&&t.iri?k.PCT_ENCODED:T.PCT_ENCODED,h)}function C(e){var t=h(e);return t.match(ce)?t:e}var T=s(!1),k=s(!0),F=function(){function e(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){i=!0,o=e}finally{try{!n&&s.return&&s.return()}finally{if(i)throw o}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),j=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t= 0x80 (not a basic code point)","invalid-input":"Invalid input"},N=Math.floor,U=String.fromCharCode,L=function(e){return String.fromCodePoint.apply(String,j(e))},z=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:36},G=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},V=function(e,t,r){var n=0;for(e=r?N(e/700):e>>1,e+=N(e/t);e>455;n+=36)e=N(e/35);return N(n+36*e/(e+38))},q=function(e){var t=[],r=e.length,n=0,i=128,o=72,a=e.lastIndexOf("-");a<0&&(a=0);for(var s=0;s=128&&u("not-basic"),t.push(e.charCodeAt(s));for(var c=a>0?a+1:0;c=r&&u("invalid-input");var h=z(e.charCodeAt(c++));(h>=36||h>N((x-n)/f))&&u("overflow"),n+=h*f;var p=d<=o?1:d>=o+26?26:d-o;if(hN(x/m)&&u("overflow"),f*=m}var y=t.length+1;o=V(n-l,y,0==l),N(n/y)>x-i&&u("overflow"),i+=N(n/y),n%=y,t.splice(n++,0,i)}return String.fromCodePoint.apply(String,t)},H=function(e){var t=[];e=f(e);var r=e.length,n=128,i=0,o=72,a=!0,s=!1,c=void 0;try{for(var l,d=e[Symbol.iterator]();!(a=(l=d.next()).done);a=!0){var h=l.value;h<128&&t.push(U(h))}}catch(e){s=!0,c=e}finally{try{!a&&d.return&&d.return()}finally{if(s)throw c}}var p=t.length,m=p;for(p&&t.push("-");m=n&&wN((x-i)/S)&&u("overflow"),i+=(y-n)*S,n=y;var A=!0,P=!1,O=void 0;try{for(var D,C=e[Symbol.iterator]();!(A=(D=C.next()).done);A=!0){var T=D.value;if(Tx&&u("overflow"),T==n){for(var k=i,F=36;;F+=36){var j=F<=o?1:F>=o+26?26:F-o;if(kA-Z\\x5E-\\x7E]",'[\\"\\\\]'),ce=new RegExp(oe,"g"),le=new RegExp(se,"g"),fe=new RegExp(t("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',ue),"g"),de=new RegExp(t("[^]",oe,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),he=de,pe={scheme:"mailto",parse:function(e,t){var r=e,n=r.to=r.path?r.path.split(","):[];if(r.path=void 0,r.query){for(var i=!1,o={},a=r.query.split("&"),s=0,u=a.length;s0&&l>u&&(l=u);for(var f=0;f=0?(d=y.substr(0,v),h=y.substr(v+1)):(d=y,h=""),d&&d.indexOf("%")>=0)try{p=o(d,c)}catch(e){p=d}else p=d;if(h&&h.indexOf("%")>=0)try{m=o(h,c)}catch(e){m=h}else m=h;s(i,p)?Array.isArray(i[p])?i[p].push(m):i[p]=[i[p],m]:i[p]=m}return i}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function u(e){return/^[\x00-\x7F]*$/.test(e)}function c(e,t){return e=String(e),e=u(e)?encodeURIComponent(e):i(e,t)}function l(e,t,r){if(!t)throw new TypeError("stringify expects an object");return t+"="+c(e,r.charset)}function f(e,t,r){var n=[];if(!t)throw new TypeError("stringify expects an object");for(var i=0;i, mimetype allowed <'"+JSON.stringify(p)+"'>");return this._details=!0,this._setExtraHeaders({accept:r}),this._download()}return this._details=!1,this._setExtraHeaders({accept:void 0}),this._execute()}},{key:"_download",value:function(){var e=f.default.defer(),t=e.promise,r=this._error_not_found;return this._api.get(this._composeUrl(),void 0,this._getExtraHeaders(),this._getUrlParameters(),!0).then(function(t){204===t.statusCode?e.reject({data:r,statusCode:h.default.NOT_FOUND}):e.resolve({data:t,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(c.default);r.default=m},{"../GenericFinder":136,"http-status-codes":68,q:109}],148:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r255)throw new Error("OGAPI_NAME_PARAMETER_MAX_LENGTH_255");return this._name=e,this}},{key:"withVersion",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"version"});return this._version=e,this}},{key:"withHardware",value:function(e){if("string"!=typeof e)throw new Error("Parameter hardware must be a string");return this._hardware=e,this}},{key:"withWorkgroup",value:function(e){if("string"!=typeof e)throw new Error("Parameter workgroup must be a string");return this._workgroup=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withTimeout",value:function(e){if("number"!=typeof e)throw new Error("Parameter ms must be a number");return this._timeout=e,this}},{key:"_checkActions",value:function(e,t){if(void 0===e||e.constructor!==Array)throw new Error("Parameter "+t+" must be typeof Array");for(var r=[],n=0;n, "+t+" allowed <'"+JSON.stringify(u.ACTION_ENUM)+"'>");return e}},{key:"withPreaction",value:function(e){return this._preaction=this._checkActions(e,"preaction"),this}},{key:"withPostaction",value:function(e){return this._postaction=this._checkActions(e,"postaction"),this}},{key:"withUserNotes",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"notes"});return this._userNotes=e,this}},{key:"withActive",value:function(e){if("boolean"!=typeof e)throw new Error("Parameter active must be a boolean");return this._active=e,this}},{key:"_composeElement",value:function(){if(void 0===this._name||void 0===this._version)throw new Error("Parameters name, version must be defined");return{bundle:{name:this._name||void 0,version:this._version||void 0,hardware:this._hardware||void 0,workgroup:this._workgroup||void 0,description:this._description||void 0,preaction:this._preaction||void 0,postaction:this._postaction||void 0,userNotes:this._userNotes||void 0,active:this._active||void 0}}}},{key:"_buildURL",value:function(){if(void 0===this._name||void 0===this._version)throw new Error("Parameters name, version must be defined");return this._resource+"/"+this._name+"/versions/"+this._version}},{key:"activate",value:function(){var e=d.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),{bundle:{active:!0}},void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:[{code:t.statusCode,message:"OGAPI_BUNDLE_NOT_ACTIVE"}],statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"deactivate",value:function(){var e=d.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),{bundle:{active:!1}},void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:[{code:t.statusCode,message:"OGAPI_BUNDLE_NOT_DEACTIVE"}],statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"addDeploymentElement",value:function(e){if(void 0===this._name||void 0===this._version)throw new Error("Parameters name, version must be defined");this._deploymentElements||(this._deploymentElements=[]);var t=new l.default(this._parent,this._ogapi,encodeURI(this._buildURL()),e);return this._deploymentElements.push(t),this._deploymentElements[this._deploymentElements.length-1]}},{key:"deployAndActivate",value:function(){var e=this,t=d.default.defer(),r=t.promise;if(e._deploymentElements&&e._deploymentElements.length>0){var n=0,i=0;for(i=0;i0)for(o=0;o1)throw new Error("OGAPI_422_ONE_TRUSTED_BOOT_ALLOWED")}e._allPromisesOk=!0;var a=function(r){201===r.statusCode?function(){var n=r;e._deploymentElements&&e._deploymentElements.length>0?function(){var r=[];e._deploymentElements.forEach(function(e){r.push(e.deploy())}),Promise.all(r).then(function(){e._allPromisesOk&&e.activate().then(function(e,r){t.resolve(n)}).catch(function(e){t.reject(e)})}).catch(function(t){e._allPromisesOk=!1,s(t)})}():t.resolve(n)}():s({statusCode:r.statusCode})},s=function(r){e.delete(),t.reject(r)};return e.create().then(a).catch(s),r}},{key:"create",value:function(){var e=this;if(void 0===this._name||void 0===this._version||void 0===this._hardware||void 0===this._workgroup)throw new Error("Parameters name, version, hardware and workgroup must be defined");var r=d.default.defer(),n=r.promise,i=function(e){201===e.statusCode?r.resolve(e):o({statusCode:e.statusCode})},o=function(e){r.reject(e)};return this._ogapi.newBundleFinder().findByNameAndVersion(this._name,this._version).then(function(n){204===n.statusCode?s(Object.getPrototypeOf(t.prototype),"create",e).call(e).then(i).catch(o):r.reject({errors:[{code:204,message:"OGAPI_400_BUNDLE_EXIST"}],statusCode:400})}).catch(function(n){404===n.statusCode?s(Object.getPrototypeOf(t.prototype),"create",e).call(e).then(i).catch(o):r.reject({errors:[{code:204,message:"OGAPI_400_BUNDLE_EXIST"}],statusCode:400})}),n}},{key:"update",value:function(){var e=d.default.defer(),t=e.promise,r=this._composeElement();return delete r.bundle.name,delete r.bundle.version,delete r.bundle.workgroup,delete r.bundle.hardware,this._ogapi.Napi.put(this._buildURL(),r,void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:[{code:t.statusCode,message:"OGAPI_400_BUNDLE_NOT_UPDATED"}],statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(p.default);r.default=m,t.exports=r.default},{"../provision/BaseProvision":214,"./ACTION_ENUM":149,"./deployment/DeploymentElement":152,q:109}],152:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"name"});return this._name=e,this}},{key:"withVersion",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"version"});return this._version=e,this}},{key:"withType",value:function(e){if(void 0===e||"string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"type"});var t="";if(void 0===l.TYPE_ENUM.find(function(e){return e==this},e)&&(t=e),""!==t)throw new Error({message:"OGAPI_NOT_ALLOWED_PARAMETER",parameter:JSON.stringify(t),allowed:JSON.stringify(l.TYPE_ENUM)});return this._type=e,this}},{key:"withPath",value:function(e){if("string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"path"});return this._path=e,this}},{key:"withOrder",value:function(e){return this._order=e,this}},{key:"withOperation",value:function(e){if(void 0===e||"string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"operation"});var t="";if(void 0===u.OPERATION_ENUM.find(function(e){return e==this},e)&&(t=e),""!==t)throw new Error("Parameter operation is not allowed. Parameter value <'"+JSON.stringify(t)+"'>, operation allowed <'"+JSON.stringify(u.OPERATION_ENUM)+"'>");return this._operation=e,this}},{key:"withOption",value:function(e){if(void 0===e||"string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"option"});var t="";if(void 0===c.OPTION_ENUM.find(function(e){return e==this},e)&&(t=e),""!==t)throw new Error("Parameter option is not allowed. Parameter value <'"+JSON.stringify(t)+"'>, option allowed <'"+JSON.stringify(c.OPTION_ENUM)+"'>");return this._option=e,this}},{key:"withValidators",value:function(e){var t={},r=[];if(void 0===e||e.constructor!==Array)throw new Error("Parameter validators must be typeof Array");for(var n=!1,i=0;i, type allowed <'"+JSON.stringify(d.MODE_VALIDATORS_ENUM)+"'>");if("TRUSTED_BOOT"===n&&("TRUSTED_BOOT"!==n||"FIRMWARE"!==this._type))throw new Error("TRUSTED_BOOT validator only allowed for FIRMWARE deployment element");t.mode=n}else t.mode=d.MODE_VALIDATORS_ENUM[0];if(!e.type)throw new Error("Parameter type is required");var r="",i=e.type;if(void 0===i||"string"!=typeof i)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"type"});if(void 0===f.TYPE_VALIDATORS_ENUM.find(function(e){return e==this},i)&&(r=i),""!==r)throw new Error("Parameter type is not allowed. Parameter value <'"+JSON.stringify(r)+"'>, type allowed <'"+JSON.stringify(f.TYPE_VALIDATORS_ENUM)+"'>");if(t.type=i,t.mode===d.MODE_VALIDATORS_ENUM[0]){if(!e.value)throw new Error("Parameter value is required when mode is "+d.MODE_VALIDATORS_ENUM[0]);var o=e.value;if("string"!=typeof o)throw new Error("Parameter value must be a string");t.value=o}return t}},{key:"withDownloadUrl",value:function(e){if("string"!=typeof e)throw new Error("Parameter downloadUrl must be a string");return this._downloadUrl=e,this}},{key:"withFileName",value:function(e){if("string"!=typeof e)throw new Error("Parameter fileName must be a string");return this._fileName=e,this}},{key:"withValidation",value:function(e){if("boolean"!=typeof e)throw new Error("Parameter validation must be a boolean");return this.validation=e,this}},{key:"withOldName",value:function(e){if("string"!=typeof e)throw new Error("Parameter old name must be a string");return this._oldName=e,this}},{key:"withOldVersion",value:function(e){if("string"!=typeof e)throw new Error("Parameter old version must be a string");return this._oldVersion=e,this}},{key:"withOldPath",value:function(e){if("string"!=typeof e)throw new Error("Parameter old path must be a string");return this._oldPath=e,this}},{key:"withFile",value:function(e){return this._rawFile=e,this}},{key:"_composeUrlCreate",value:function(){if(void 0===this._name||void 0===this._version||""===this._name||""===this._version)throw new Error("Method not allowed - You must to define the name and version");return this._setUrlParameters({fileValidationRequired:this.validation}),this._resource}},{key:"_composeElement",value:function(){if("UPGRADE"===this._operation){if(void 0===this._name||void 0===this._version||void 0===this._type||void 0===this._path||void 0===this._order||void 0===this._operation||void 0===this._oldName||void 0===this._oldVersion||void 0===this._oldPath)throw new Error("Method not allowed - You must define the basic element [name, version, type, path, order, operation, oldName, oldVersion and oldPath ]")}else if(void 0===this._name||void 0===this._version||void 0===this._type||void 0===this._path||void 0===this._order||void 0===this._operation||void 0===this._option)throw new Error("Method not allowed - You must define the basic element [name, version, type, path, order, option and operation]");return{deploymentElement:{name:this._name||void 0,version:this._version||void 0,type:this._type||void 0,path:this._path||void 0,order:this._order||void 0,operation:this._operation||void 0,option:this._option||void 0,fileName:this._fileName||void 0,downloadUrl:this._downloadUrl||void 0,validators:this._validators||void 0,oldName:this._oldName||void 0,oldVersion:this._oldVersion||void 0,oldPath:this._oldPath||void 0}}}},{key:"withTimeout",value:function(e){if("number"!=typeof e)throw new Error("Parameter ms must be a number");return this._timeout=e,this}},{key:"_buildURL",value:function(){if(void 0===this._name||void 0===this._version)throw new Error("Parameters name, version must be defined");return this._resource+"/"+this._name+"/version/"+this._version}},{key:"createWithFile",value:function(e){var t=void 0;if("string"!=typeof e){t=new FormData;var r=new Blob([JSON.stringify(this._composeElement())],{type:"application/octet-stream"});t.append("meta",r),e&&t.append("file",e)}else t={},t.meta=JSON.stringify(this._composeElement()),e&&(t.file=e);var n={};void 0!=this._progressEvent&&(n={progress:this._progressEvent});var i=p.default.defer(),o=i.promise;return this._ogapi.Napi.post_multipart(this._composeUrlCreate(),t,n,this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){201===e.statusCode?i.resolve({location:e.header.location,statusCode:e.statusCode}):i.reject({errors:[{code:e.statusCode,message:"OGAPI_FILE_NOT_CREATE"}],statusCode:e.statusCode})}).catch(function(e){i.reject(e)}),o}},{key:"deploy",value:function(){return this.createWithFile(this._rawFile)}},{key:"update",value:function(){throw new Error("OGAPI_DEPLOYMENT_ELEMENT_NOT_UPDATED")}}]),t}(y.default);r.default=v,t.exports=r.default},{"../../provision/BaseProvision":214,"./MODE_VALIDATORS_ENUM":153,"./OPERATION_ENUM":154,"./OPTION_ENUM":155,"./TYPE_ENUM":156,"./TYPE_VALIDATORS_ENUM":157,q:109}],153:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["PLATFORM","TRUSTED_BOOT"];r.MODE_VALIDATORS_ENUM=n},{}],154:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["INSTALL","UNINSTALL","UPGRADE"];r.OPERATION_ENUM=n},{}],155:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["MANDATORY","OPTIONAL"];r.OPTION_ENUM=n},{}],156:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["SOFTWARE","FIRMWARE","CONFIGURATION","PARAMETERS"];r.TYPE_ENUM=n},{}],157:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["MD2","MD5","SHA-1","SHA-256","SHA-384","SHA-512","CERTIFICATE_SIGN"];r.TYPE_VALIDATORS_ENUM=n},{}],158:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0?o.resolve({data:r,statusCode:e.statusCode}):o.reject({data:i,statusCode:h.default.NOT_FOUND})}}).catch(function(e){o.reject(e)}),a}},{key:"_executeWorkgroupRelation",value:function(){var e="provision/domains/"+this._domain+"/workgroups/"+this._workgroup+"/relations",t=f.default.defer(),r=t.promise,n=this._error_not_found;return this._api.get(e,void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){204===e.statusCode?t.reject({data:n,statusCode:h.default.NOT_FOUND}):t.resolve({data:e.body.workgroupRelation,statusCode:e.statusCode})}).catch(function(e){t.reject(e)}),r}}]),t}(c.default);r.default=p,t.exports=r.default},{"../ProvisionGenericFinder":138,"http-status-codes":68,q:109}],159:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"name"});return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withOrganization",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"organization"});return this._organization=e,this}},{key:"withCertificate",value:function(e){if("string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"certificate"});return this._certificates||(this._certificates=[]),this._certificates.push(e),this}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),this._resource="provision/organizations/"+this._organization+"/channels",{channel:{name:this._name||void 0,description:this._description||void 0,certificates:this._certificates||void 0}}}},{key:"_composeUpdateElement",value:function(){var e=s(Object.getPrototypeOf(t.prototype),"_composeUpdateElement",this).call(this);return delete e.channel.name,e}}]),t}(l.default);r.default=f,t.exports=r.default},{"../provision/BaseProvision":214,q:109}],160:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"id"});return this._id=e,this}},{key:"withDataStreamVersion",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"version"});return this._dataStreamVersion=e,this}},{key:"withDmmVersion",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"version"});return this._version=e,this}},{key:"withDeviceId",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"device"});return this._deviceId=e,this}},{key:"withDataStream",value:function(e){return e instanceof h.default&&this._datastreams.push(e.composeElement()),this}},{key:"_buildIotURL",value:function(){if(void 0===this._id)throw new Error("Parameters id must be defined");return this._resource+"/"+this._id+"/collect/iot"}},{key:"_buildDmmURL",value:function(){if(void 0===this._id)throw new Error("Parameters id must be defined");return this._resource+"/"+this._id+"/collect/dmm"}},{key:"_composeIotMessage",value:function(){if(void 0===this._datastreams||void 0===this._dataStreamVersion)throw new Error("Parameters datastreams and version must be defined");return{version:this._dataStreamVersion,device:this._deviceId, -datastreams:this._datastreams}}},{key:"_composeDmmMessage",value:function(){if(void 0===this._version)throw new Error("Parameters id must be defined");var e=s(Object.getPrototypeOf(t.prototype),"composeElement",this).call(this);return{version:this._version,event:e}}},{key:"create",value:function(){var e=c.default.defer(),t=e.promise,r=[];return this._datastreams.length>0&&r.push(this._ogapi.Sapi.post(this._buildIotURL(),this._composeIotMessage()).then(function(e){if(201!==e.statusCode)throw new Error("IOT NOT CREATED")})),void 0!==this._version&&r.push(this._ogapi.Sapi.post(this._buildDmmURL(),this._composeDmmMessage()).then(function(e){if(201!==e.statusCode)throw new Error("DMM NOT CREATED")})),c.default.all(r).catch(function(t){e.reject({errors:t,statusCode:400})}).done(function(t){e.resolve({statusCode:201})}),t}}]),t}(f.default);r.default=p,t.exports=r.default},{"../devices/collect/Datastreams":163,"./collect/Event":164,q:109}],161:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"composeElement",value:function(){var e={id:this._id,name:this._name,type:this._type,hardware:this._hardware.composeElement(),operationalStatus:this._operationalStatus,antennaStatus:this._antennaStatus};return this._softwareList.length>0&&(e.softwareList=this._softwareList),void 0!==this._mobile&&(e.mobile=this._mobile.composeElement()),void 0!==this._subscriber&&(e.subscriber=this._subscriber.composeElement()),void 0!==this._subscription&&(e.subscription=this._subscription.composeElement()),e}}]),e}();r.default=v,t.exports=r.default},{"./Hardware":165,"./Mobile":166,"./Software":168,"./Subscriber":170,"./Subscription":171,"./enum/ANTENNA_STATUS_ENUM":174}],162:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"composeElement",value:function(){var e={id:this._event_id,device:{id:this._deviceId,path:this._path,name:this._name,description:this._description,operationalStatus:this._operationalStatus}};return void 0!==this._hardware&&(e.device.hardware=this._hardware.composeElement()),this._softwareList.length>0&&(e.device.softwareList=this._softwareList),void 0!==this._location&&(e.device.location=this._location),void 0!==this._temperature&&(e.device.temperature=this._temperature),void 0!==this._cpuUsage&&(e.device.cpuUsage=this._cpuUsage.composeElement()),void 0!==this._ram&&(e.device.ram=this._ram.composeElement()),void 0!==this._volatilStorage&&(e.device.volatilStorage=this._volatilStorage.composeElement()),void 0!==this._nonVolatilStorage&&(e.device.nonVolatilStorage=this._nonVolatilStorage.composeElement()),void 0!==this._powerSupply&&(e.device.powerSupply=this._powerSupply.composeElement()),this._communicationsModulesList.length>0&&(e.device.communicationsModules=this._communicationsModulesList),void 0!==this._upTime&&(e.device.upTime=this._upTime),e}}]),e}();r.default=E,t.exports=r.default},{"./CommsModuleMessage":161,"./Hardware":165,"./PowerSupply":167,"./Software":168,"./Storage":169,"./Usage":172,"./enum/LEVEL_TREND_ENUM":177,"./enum/TEMPERATURE_STATUS_ENUM":180,q:109}],165:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;rn)&&(console.log(3),r=!1),(t[2].length<2||t[2]<1||t[2]>12)&&(console.log(4),r=!1),(t[3].length<2||t[3]<1||t[3]>31)&&(console.log(5),r=!1),r}},{key:"composeElement",value:function(){return{serialnumber:this._serialnumber,manufacturer:{name:this._manufacturerName,oui:this._manufacturerOui||""},model:{name:this._modelName||"",version:this._modelVersion||""},clockDate:this._clockDate}}}]),e}();r.default=o,t.exports=r.default},{}],166:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"_isValidDate",value:function(e){if(""===e||null===e)return!1;var t=e.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\+(\d{2}):(\d{2})/);if(null===t||"object"!=typeof t)return!1;if("object"!=typeof t&&null!==t&&3!==t.size)return console.log(2),!1;var r=!0,n=(new Date).getFullYear();return(t[1].length<4||t[1]<1999||t[1]>n)&&(console.log(3),r=!1),(t[2].length<2||t[2]<1||t[2]>12)&&(console.log(4),r=!1),(t[3].length<2||t[3]<1||t[3]>31)&&(console.log(5),r=!1),r}},{key:"composeElement",value:function(){var e={source:this._source,status:this._status,batteryChargeLevel:{trend:this._trend,status:this._batteryStatus,percentage:this._percentage}};return void 0===this._outageDate&&void 0===this._outageDuration||(e.outage={timestamp:this._outageDate,duration:this._outageDuration}),e}}]),e}();r.default=c,t.exports=r.default},{"./enum/BATTERY_CHARGE_LEVEL_STATUS_ENUM":175,"./enum/BATTERY_CHARGE_STATUS_ENUM":176,"./enum/LEVEL_TREND_ENUM":177,"./enum/POWER_SUPPLY_SOURCE_ENUM":178}],168:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"composeElement",value:function(){return{name:this._name,type:this._type,version:this._version,date:this._date}}}]),e}();r.default=s,t.exports=r.default},{"./enum/SOFTWARE_TYPE_ENUM":179,q:109}],169:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"composeElement",value:function(){return{id:this._id,name:this._name,type:this._type,description:this._description,operator:this._operator,imsi:this._imsi,msisdn:this._msisdn,address:{type:this._addressType,value:this._addressValue,apn:this._addressApn}}}}]),e}();r.default=a,t.exports=r.default},{"./enum/ADDRESS_TYPE_ENUM":173}],172:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r50)throw new Error("OGAPI_NAME_PARAMETER_MAX_LENGTH_50");return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error("OGAPI_DESCRIPTION_PARAMETER_MAX_LENGTH_250");return this._description=e,this}},{key:"withParentDomain",value:function(e){if("string"!=typeof e||e.length>50)throw new Error("OGAPI_DOMAIN_PARAMETER_MAX_LENGTH_50");return this._parentDomain=e,this}},{key:"_composeElement",value:function(){if(void 0===this._name)throw new Error({message:"OGAPI_DEFINED_PARAMETER",parameter:"name"});return{domain:{name:this._name||void 0,description:this._description||void 0,parentDomain:this._parentDomain||void 0}}}},{key:"_buildURL",value:function(){return this._resource+"/"+this._name}},{key:"_composeUpdateElement",value:function(){var e=s(Object.getPrototypeOf(t.prototype),"_composeUpdateElement",this).call(this);return delete e.domain.name,e}}]),t}(l.default);r.default=f,t.exports=r.default},{"../provision/BaseProvision":214,q:109}],182:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0)throw new Error("Error adding datastreams: "+JSON.stringify(r));return this}},{key:"_isValidString",value:function(e,t,r){if("string"!=typeof e||0===e.length||e.length>r)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+" on Category")}},{key:"_composeElement",value:function(){if(!this._identifier)throw new Error("identifier is required on Category");return{identifier:this._identifier,name:this._name?this._name:void 0,datastreams:this._datastreams}}}]),e}());r.default=a,t.exports=r.default},{"./Datastream":189}],189:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;rr)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+" on Datastream")}}]),e}();r.default=s,t.exports=r.default},{ajv:2}],190:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;rr)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+" on Qrating")}},{key:"_isValidNumber",value:function(e,t){if("number"!=typeof e)throw new Error("Parameter "+t+" must be a number, cannot be empty on Qrating")}}]),e}();r.default=o,t.exports=r.default},{}],191:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0&&n.addDatastreams(t),this._categories.push(n._composeElement()),this}},{key:"addDatastream",value:function(e,t){this._isValidString(e,"category",100);var r=-1;if(this._categories.forEach(function(t,n){t.identifier===e&&(r=n)}),-1===r)throw new Error("Category "+e+" not exists for this datamodel. Use addCategory instead.");return this._categories[r].datastreams?this._categories[r].datastreams.push(t):this._categories[r].datastreams=[t],this}},{key:"_composeElement",value:function(){if(!this._name)throw new Error("name is required on IoTDatamodel");if(!this._version)throw new Error("version is required on IoTDatamodel");if(!this._resourceType)throw new Error("allowedResourceTypes is required on IoTDatamodel");return{identifier:this._identifier,name:this._name,version:this._version,description:this._description,allowedResourceTypes:this._resourceType,categories:this._categories.length>0?this._categories:void 0}}},{key:"_buildURL",value:function(){return this._resource}},{key:"update",value:function(){throw new Error("Update not supported on this builder. Use datamodelsHelper instead.")}},{key:"delete",value:function(){throw new Error("Delete not supported on this builder. Use datamodelsHelper instead.")}},{key:"_isValidString",value:function(e,t,r){if("string"!=typeof e||0===e.length||e.length>r)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+"on IoTDatamodel")}}]),t}(c.default);r.default=m},{"../../provision/BaseProvision":214,"../catalog/Category":188,"../catalog/Datastream":189}],192:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0&&r.addDatastreams(t),this._categories.push(r._composeElement()),this}},{key:"addDatastream",value:function(e,t){this._isValidString(e,"category",100);var r=-1;if(this._categories.forEach(function(t,n){t.identifier===e&&(r=n)}),-1===r)throw new Error("Category "+e+" not exists for this datamodel. Use addCategory instead.");return this._categories[r].datastreams?this._categories[r].datastreams.push(t):this._categories[r].datastreams=[t],this}},{key:"removeCategory",value:function(e){this._isValidString(e,"category",100);var t=-1;if(this._categories.forEach(function(r,n){r.identifier===e&&(t=n)}),-1===t)throw new Error("Category "+e+" not exists for this datamodel");return this._categories.splice(t,1),this}},{key:"removeDatastream",value:function(e,t){this._isValidString(e,"category",100);var r=-1,n=-1;if(this._categories.forEach(function(i,o){i.identifier===e&&(r=o,i.datastreams.forEach(function(e,r){e.identifier===t&&(n=r)}))}),-1===r)throw new Error("Category "+e+" not exists for this datamodel") -;if(-1===n)throw new Error("Datastream "+t+" not exists for this datamodel and category "+e);this._categories[r].datastreams.splice(n,1);var i=new f.default(this._ogapi,e,this._categories[r].datastreams);return this._categories[r].name&&i.withName(this._categories[r].name),this._categories.splice(r,1),this._categories.push(i._composeElement()),this}},{key:"updateCategory",value:function(e,t){this._isValidString(e,"old category",100);var r=-1,n=-1;if(this._categories.forEach(function(i,o){switch(i.identifier){case e:r=o;break;case t.identifier:n=o}}),-1!=n)throw new Error("New category "+t.identifier+" already exists.");if(-1===r)throw new Error("Category "+e+" not exists for this datamodel.");return this._categories[r].name=t.name,this}},{key:"updateDatastream",value:function(e,t,r){if(this._isValidString(e,"category",100),this._isValidString(t,"id datastream",100),!r||"object"!=typeof r)throw new Error("Datastream must be an object");var n=-1,i=-1;if(this._categories.forEach(function(r,o){r.identifier===e&&(n=o,r.datastreams.forEach(function(e,r){e.identifier===t&&(i=r)}))}),-1===n)throw new Error("Category "+e+" not exists for this datamodel. Create it, use method addCategory instead");if(-1===i)throw new Error("Datastream "+t+" not exists for this datamodel and category "+e+". Create it, use method addDatastream instead.");return this._categories[n].datastreams[i]=r,this}},{key:"_composeElement",value:function(){return{identifier:this._identifier,name:this._name,version:this._version,description:this._description,categories:this._categories}}},{key:"_buildURL",value:function(){return this._resource+"/"+this._organization+"/datamodels/"+this._identifier}},{key:"create",value:function(){throw new Error("Create not supported on this builder. Use DatamodelsBuilder instead.")}},{key:"_isValidString",value:function(e,t,r){if("string"!=typeof e||0===e.length||e.length>r)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+" on DatamodelsHelper")}}]),t}(c.default);r.default=p},{"../../provision/BaseProvision":214,"../catalog/Category":188,"../catalog/Datastream":189}],194:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r unavailable."):t.resolve(o._createBuilder(e.config))}):t.resolve(this._createBuilder(i.config)),r}},{key:"getOperationList",value:function(){return(0,h.default)(!0,this._operationNames)}},{key:"_createBuilder",value:function(e){return new s.default(this._ogapi,e)}},{key:"_createPeriodicBuilder",value:function(e){return new c.default(this._ogapi,e.id,e)}},{key:"_loadOperationCatalog",value:function(){var e=this,t=f.default.defer(),r=t.promise;return this._ogapi.rawSearchBuilder().from("/catalog/operations").build().execute().then(function(r){if(200===r.statusCode){var n=r.data.operations;for(var i in n){var o=n[i].name.toUpperCase();e._operationNames.push(o),e._operations.push({name:o,config:n[i]})}}t.resolve(e)}).catch(function(r){t.resolve(e)}),r}},{key:"_findOperation",value:function(e){return this._operations.find(function(e){return e.name==this},e)}}]),e}();r.default=p,t.exports=r.default},{"./catalog/BaseOperationBuilder":199,"./catalog/period/PeriodicityUpdateBuilder":207,merge:104,q:109}],197:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r not allowed to operation <'"+this._parent._config.name+"'>. Entity types allowed <'"+JSON.stringify(this._parent._config.applicableTo)+"'>");return this._parent._entityTypeWhenFilter=t,void 0!==this._parent._build.target&&console.warn("An Operation only allow one kind of way to append entities. Filter | Tag | List of entities. Now Filter will remove the last way appended ."),void 0!==e._filterTemplate?this._parent._build.target={filter:e._filterTemplate.filter}:this._parent._build.target={filter:e},this._parent}},{key:"list",value:function(e){var t=this;if(void 0===e||e.constructor!==Array)throw new Error("Parameter entities must be typeof Array");return void 0!==this._parent._build.target&&console.warn("An Operation only allow one kind of way to append entities. Filter | Tag | List of entities. Now List of entities will remove the last way appended ."),this._parent._build.target={append:{}},e.forEach(function(e){if(e.constructor===String)t._parent._build.target.append.entities||(t._parent._build.target.append.entities=[]),t._parent._build.target.append.entities.push(e);else{if(!e.id||!e.parameters)throw new Error("Entity parameters must include id and parameters: "+JSON.stringify(e));t._parent._build.target.append.entitiesWithParameters||(t._parent._build.target.append.entitiesWithParameters=[]),t._parent._build.target.append.entitiesWithParameters.push(e)}}),this._parent}},{key:"tag",value:function(e){return void 0!==this._parent._build.target&&console.warn("An Operation only allow one kind of way to append entities. Filter | Tag | List of entities. Now Tag will remove the last way appended ."),this._parent._build.target={append:{tags:[e]}},this._parent}}]),e}();r.default=o,t.exports=r.default},{}],199:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r. Value setted <"+e+">")},list:function(e){if(void 0===this.find(function(e){return e==this},e))throw new Error("Value must be one of these: "+JSON.stringify(this))},editable:function(e){return!0}},S=function(){function e(t,r){i(this,e),this._ajv=new E.default({useDefaults:"empty",coerceTypes:!0}),this.appendEntitiesBy=new d.default(t,this),this._config=r,this._ogapi=t,this._resourcesAvailables={job:"/jobs",task:"/tasks"},this._entityTypeWhenFilter=void 0,this._build={operationParameters:{ackTimeout:0,timeout:9e4,retries:0,retriesDelay:0},name:r.name,schedule:{}},void 0!==r.parameters&&(this._build.parameters={})}return o(e,[{key:"withNotes",value:function(e){if(null===e)return delete this._build.userNotes,this;if("string"!=typeof e)throw new Error("Parameter notes must be a string");return this._build.userNotes=e,this}},{key:"withCallback",value:function(e){if(null===e)return delete this._build.callback,delete this._build.notify,this;if("string"!=typeof e)throw new Error("Parameter url must be a string");return this._build.callback=e,this._build.notify=!0,this}},{key:"withScatteringMaxSpread",value:function(e){if(null===e&&void 0!==this._build.schedule.scattering)return delete this._build.schedule.scattering.maxSpread,this;if("number"!=typeof e)throw new Error("Parameter percentage must be a number");if(e<0||e>100)throw new Error("The value of percentage parameter must be between 0-100");return void 0===this._build.schedule.scattering&&(this._build.schedule.scattering={}),this._build.schedule.scattering.maxSpread=e,this}},{key:"withScatteringStrategy",value:function(e,t){if(null===e&&void 0!==this._build.schedule.scattering)return delete this._build.schedule.scattering.strategy,this;if("number"!=typeof e)throw new Error("Parameter factor must be a number");if(e<0||e>100)throw new Error("The value of factor parameter must be between 0-100");return void 0===this._build.schedule.scattering&&(this._build.schedule.scattering={}),this._build.schedule.scattering.strategy={field:"subscription.collected.cellInfo",factor:e},"number"==typeof t&&(this._build.schedule.scattering.strategy.warningMaxRate=t),this}},{key:"executeImmediately",value:function(){return this._build.active=!0,void 0!==this._build.schedule&&delete this._build.schedule.start,delete this._build.task,this}},{key:"executeIDLE",value:function(){throw new Error("Not implemented yet")}},{key:"executeLater",value:function(e){var t=arguments.length<=1||void 0===arguments[1]||arguments[1];if("number"!=typeof e)throw new Error("Parameter minutes must be typeof number");return this._build.active=t,void 0===this._build.schedule&&(this._build.schedule={}),this._build.schedule.start={delayed:g.default.duration(e,"minutes").asMilliseconds()},delete this._build.task,this}},{key:"executeEvery",value:function(e,t,r,n,i){if(void 0===n&&(n=!0),void 0===e||e.constructor!==Date)throw new Error("Parameter date must be typeof Date");var o=Array.prototype.slice.call(arguments),a=this._getName(o.slice(1,3)),s=this._getEnd(o.slice(1,3));return this._build.active=n,new y.default(this,e,a,s,i)}},{key:"executeEach",value:function(e,t,r,n,i){if(void 0===n&&(n=!0),void 0===e||e.constructor!==Date)throw new Error("Parameter date must be typeof Date");var o=Array.prototype.slice.call(arguments),a=this._getName(o.slice(1,3)),s=this._getEnd(o.slice(1,3));return this._build.active=n,new p.default(this,e,a,s,i)}},{key:"_getName",value:function(e){for(var t=0;t"),void 0!==this._build.task){var i=this._build.task,o=this._build.schedule.stop;if(void 0!==i.repeating.period){var a=void 0;switch(i.repeating.period.unit){case"DAYS":a=g.default.duration(i.repeating.period.each,"days").asMilliseconds();break;case"HOURS":a=g.default.duration(i.repeating.period.each,"hours").asMilliseconds();break;case"MINUTES":a=g.default.duration(i.repeating.period.each,"minutes").asMilliseconds()}void 0!==o&&"number"==typeof o.delayed?o.delayed>=a&&n.push("You can not execute an operation with a job timeout greater than the repetition period."):(o=g.default.duration(a,"milliseconds").asMinutes()-1,console.info("Not specified the job timeout. By default, timeout will be "+o+" minutes"),this.withJobTimeout(o))}}if(n.length>0)throw this._build=t,n;void 0===this._build.schedule.stop&&(console.info("Not specified the job timeout. By default, timeout will be 30 days"),this.withJobTimeout(43200)),void 0!==this._build.task?(e=this._resourcesAvailables.task,r=this._convertToTask(this._build)):(e=this._resourcesAvailables.job,r=this._convertToJob(this._build)),void 0!==this._build.target&&void 0!==this._build.target.filter&&(e=e+"?entityType="+this._entityTypeWhenFilter);var u=new c.default(this._ogapi,e,r);return this._build=t,u}},{key:"_convertToTask",value:function(e){var t=e.task;this.executeImmediately();var r=this._convertToJob(this._build),n=(0,g.default)(new Date),i=(0,g.default)(t.start),o={task:{active:!0,name:t.name,description:t.description,job:r.job,schedule:{start:{date:i.format(_.DATE_FORMAT)},repeating:t.repeating}}};if(void 0!==t.stop&&(void 0!==t.stop.date?o.task.schedule.stop={date:(0,g.default)(t.stop.date).format(_.DATE_FORMAT)}:o.task.schedule.stop=t.stop),g.default.max(n,i)==n){if(void 0!==t.stop&&void 0!==t.stop.date){var a=(0,g.default)(t.stop.date);if(g.default.max(n,a)==n)throw new Error("Can not create operation object because stop operation period is earlier than current date. It happened because you passed a lot of time between configuration of an operation and create the operation.")}delete o.task.schedule.start}return o}},{key:"_convertToJob",value:function(e){return 0===e.operationParameters.ackTimeout&&delete e.operationParameters.ackTimeout,{job:{request:e}}}},{key:"_addSpecificParameter",value:function(e,t){this._build.operationParameters[t]=e}},{key:"_checkParam",value:function(e,t){if("number"===t.type&&"number"!=typeof e)throw new Error(t.name+": Expected number but found "+typeof e);for(var r in t.attributes)"function"==typeof w[r]&&w[r].call(t.attributes[r],e)}},{key:"_checkMandatoryParameters",value:function(){if(this._config.parameters&&this._config.parameters.schema){var e=this._ajv.compile(this._config.parameters.schema);if(!e(this._build.parameters))throw new Error(e.errors)}}}]),e}();r.default=S,t.exports=r.default},{"./../../util/DATE_FORMAT":307,"./AppendEntitiesBy":198,"./Operation":200,"./parameters/ParameterBuilderFactory":202,"./period/ExecuteEachBuilder":204,"./period/ExecuteEveryBuilder":205,ajv:2,merge:104,moment:105}],200:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r not allow value setted <'"+e+"'>. Only are allowed this configuration:"+JSON.stringify(this._config.attributes)),this):(console.warn("Parameter <'"+this._config.name+"'> not allow type of value setted <'"+typeof e+"'>. Only are allowed this type: "+this._getType()),this)}},{key:"_isString",value:function(){return"string"===this._config.type||"string"===this._config.subtype}},{key:"_isObject",value:function(){return"object"===this._config.type||"object"===this._config.subtype}},{key:"_isNumber",value:function(){return"number"===this._config.type||"number"===this._config.subtype}},{key:"_isArray",value:function(){return"array"===this._config.type||"array"===this._config.subtype}},{key:"_isBoolean",value:function(){return"boolean"===this._config.type||"boolean"===this._config.subtype}},{key:"_isDate",value:function(){return"date"===this._config.type||"date"===this._config.subtype}},{key:"_isTime",value:function(){return"time"===this._config.type||"time"===this._config.subtype}},{key:"_getType",value:function(){return this._isArray()?"array":this._isString()||this._isDate()||this._isTime()?"string":this._isObject()?"object":this._isNumber()?"number":this._isBoolean()?"boolean":"unknown"}},{key:"_isTypeValueAllow",value:function(e){var t=!0,r=typeof e;return(this._isString()||this._isTime()||this._isDate())&&"string"!==r&&(t=!1),this._isNumber()&&"number"!==r&&(t=!1),this._isObject()&&"object"!==r&&(t=!1),this._isBoolean()&&"boolean"!==r&&(t=!1),t}},{key:"_isAllowValue",value:function(e){if(void 0!==this._config.attributes){var t=this._config.attributes;if(void 0!==t.list)return void 0!==t.list.find(function(e){return e==this},e)}return!0}},{key:"build",value:function(){ -if(this._config.required&&(void 0===this._build||0===this._build.length))throw new Error("Parameter <'"+this._config.name+"'> is required and their value is not defined");var e={name:this._config.name,value:n({},this._getType(),this._build)};return void 0!==this._build&&0!==this._build.length||(e=void 0),e}},{key:"buildAndAppend",value:function(){var e=this.build();if(void 0!==e){var t=this._parent._build.parameters.findIndex(function(e){return e.name==this.name},e);-1===t?this._parent._build.parameters.push(e):this._parent._build.parameters[t]=e}return this._parent}}]),e}());r.default=s,t.exports=r.default},{moment:105}],202:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=e("./BaseParameterBuilderWithParent"),o=(function(e){e&&e.__esModule}(i),function e(t,r,i){n(this,e)});r.default=o,t.exports=r.default},{"./BaseParameterBuilderWithParent":201}],203:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["MON","TUE","WED","THU","FRI","SAT","SUN"];r.DAYS_ENUM=n},{}],204:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, Months allowed <'"+JSON.stringify(a.MONTHS_ENUM)+"'>");return new d.default(this._parent,this._date,this._periodicityName,e,this._end,this._description)}}]),e}();r.default=m,t.exports=r.default},{"./MONTHS_ENUM":206,"./pattern/ByGeneric":208,"./pattern/ByMonth":209,"./pattern/ByWeek":210,"./pattern/ByYear":211}],206:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];r.MONTHS_ENUM=n},{}],207:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r=o&&r.push("You can not execute an operation with a job timeout greater than the repetition period.")}}if(r.length>0)throw this._build=e,r;void 0!==this._build.task&&(t=this._updateTask(this._build));var a=new f.default(this._ogapi,this._resource,t);return this._build=e,a}},{key:"_updateTask",value:function(e){var t=e.task,r=(0,c.default)(new Date),n=(0,c.default)(t.start),i={task:{schedule:{}}};try{t.start&&(i.task.schedule.start={date:n.format(g.DATE_FORMAT)}),t.stop&&(i.task.schedule.stop={date:(0,c.default)(t.stop).format(g.DATE_FORMAT)}),t.repeating&&(i.task.schedule.repeating=t.repeating)}catch(e){}if(delete i.task.schedule.name,void 0!==t.stop&&(void 0!==t.stop.date?i.task.schedule.stop={date:(0,c.default)(t.stop.date).format(g.DATE_FORMAT)}:i.task.schedule.stop=t.stop),c.default.max(r,n)==r){if(void 0!==t.stop&&void 0!==t.stop.date){var o=(0,c.default)(t.stop.date);if(c.default.max(r,o)==r)throw new Error("Can not create operation object because stop operation period is earlier than current date. It happened because you passed a lot of time between configuration of an operation and create the operation.")}delete i.task.schedule.start}return i}}]),e}();r.default=_,t.exports=r.default},{"../Operation":200,"./../../../util/DATE_FORMAT":307,"./ExecuteEachBuilder":204,"./ExecuteEveryBuilder":205,"./pattern/ByGeneric":208,merge:104,moment:105}],208:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r31||e<1)throw new Error("Parameter day must be greater than 1 and less than 31");return this._day=e,this._build()}},{key:"_create",value:function(){var e=a(Object.getPrototypeOf(t.prototype),"_create",this).call(this);return e.repeating.pattern.monthly={day:this._day,months:this._months},e}}]),t}(u.default);r.default=c,t.exports=r.default},{"./ByGeneric":208}],210:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, Months allowed <'"+JSON.stringify(c.DAYS_ENUM)+"'>");return this._days=e,this._build()}},{key:"_create",value:function(){var e=a(Object.getPrototypeOf(t.prototype),"_create",this).call(this);return e.repeating.pattern.weekly={days:this._days},e}}]),t}(u.default);r.default=l,t.exports=r.default},{"./../DAYS_ENUM":203,"./ByGeneric":208}],211:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r31||e<1)throw new Error("Parameter day must be greater than 1 and less than 31");return this._day=e,void 0===this._month?this:this._parent._task?(this._build(),this):this._build()}},{key:"month",value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e){if("string"!=typeof e){if(!this._month)throw new Error("OGAPI_PARAMETER_MONTH_MUST_BE_STRING");e=this._month}if(void 0===c.MONTHS_ENUM.find(function(e){return e==this},e))throw new Error("Any month into parameter months is not allowed. Parameter value <'"+e+"'>, Months allowed <'"+JSON.stringify(c.MONTHS_ENUM)+"'>");return this._month=e,void 0===this._day?this:this._parent._task?(this._build(),this):this._build()})},{key:"_create",value:function(){var e=a(Object.getPrototypeOf(t.prototype),"_create",this).call(this);return e.repeating.pattern.yearly={day:this._day,month:this._month},e}}]),t}(u.default);r.default=l,t.exports=r.default},{"./../MONTHS_ENUM":206,"./ByGeneric":208}],212:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0?r.resolve({data:o,statusCode:e.statusCode}):r.reject({data:i,statusCode:h.default.NOT_FOUND})}}).catch(function(e){r.reject(e)}),n}},{key:"_executeWorkgroupRelation",value:function(){var e="provision/domains/"+this._domain+"/workgroups/"+this._workgroup+"/relations",t=f.default.defer(),r=t.promise,n=this._error_not_found;return this._api.get(e,void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){204===e.statusCode?t.reject({data:n,statusCode:h.default.NOT_FOUND}):t.resolve({data:e.body.workgroupRelation,statusCode:e.statusCode})}).catch(function(e){t.reject(e)}),r}}]),t}(c.default);r.default=p,t.exports=r.default},{"../ProvisionGenericFinder":138,"http-status-codes":68,q:109}],213:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._name=e,this}},{key:"withDomain",value:function(e){if("string"!=typeof e||e.length>50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._domain=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_250");return this._description=e,this}},{key:"withCountryCode",value:function(e){if("string"!=typeof e||0===e.length)throw new Error("OGAPI_STRING_PARAMETER");return this._countryCode=e.toUpperCase(),this}},{key:"withLangCode",value:function(e){if("string"!=typeof e||0===e.length)throw new Error("OGAPI_STRING_PARAMETER");return this._langCode=e.toLowerCase(),this}},{key:"withTimeZone",value:function(e){if("string"!=typeof e||0===e.length)throw new Error("OGAPI_STRING_PARAMETER");return this._timeZone=e,this}},{key:"withPlan",value:function(e){if("string"!=typeof e||0===e.length)throw new Error("OGAPI_STRING_PARAMETER");return this._plan=e,this}},{key:"withOnlyAssignedDomainCertificates",value:function(e){if("boolean"!=typeof e||!0!==e&&!1!==e)throw new Error("Parameter OnlyAssignedDomainCertificates must be a boolean and cannot be empty");return this._onlyDomainCerts=e,this}},{key:"withZoom",value:function(e){if("number"!=typeof(e*=1)||e<0||e>19)throw new Error("Parameter zoom must be a number between 0 and 19");return this._zoom=e,this}},{key:"withLocation",value:function(e,t){if(e*=1,t*=1,"number"!=typeof e||"number"!=typeof t)throw new Error("Latitude and longitude parameters must be numbers");if(e<-90||e>90)throw new Error("Parameter latitude value must be between -90 and 90");if(t<-180||t>180)throw new Error("Parameter longitude value must be between -180 and 180");return this._location={latitude:e,longitude:t},this}},{key:"_composeElement",value:function(){if(void 0===this._name||void 0===this._langCode||void 0===this._countryCode)throw new Error("Parameters name, country code and lang code must be defined");var e={};void 0!=this._zoom&&(e.zoom=this._zoom),void 0!=this._location&&(e.location=this._location);var t={organization:{name:this._name||void 0,description:this._description||void 0,plan:this._plan||void 0,countryCode:this._countryCode||void 0,langCode:this._langCode||void 0,timezone:this._timeZone||void 0,onlyAssignedDomainCertificates:"boolean"!=typeof this._onlyDomainCerts?this._onlyDomainCerts:void 0}};return this._domain&&(t.organization.domain=this._domain),(e.zoom||e.location)&&(t.organization.mapDefault=e),t}},{key:"_composeUpdateElement",value:function(){if(this._domain)throw new Error("The domain parameter is not allowed in the update");var e=this._composeElement();return delete e.organization.name,e}},{key:"_buildURL",value:function(){if(void 0===this._name)throw new Error("Parameter name must be defined");return this._resource+"/"+this._name}}]),t}(u.default);r.default=c,t.exports=r.default},{"../provision/BaseProvision":214}],214:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r0){for(var t=0;t0)throw new Error("There are required parameters that have not been set. Missing parameters: "+JSON.stringify(e).replace(new RegExp('"',"g"),""))}}},{key:"create",value:function(){var e=this;this._checkRequiredParameters();var t=a.default.defer(),r=t.promise,n=this._composeElement();return this._ogapi.Napi.post(this._resource,n,this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(r){201===r.statusCode?("function"==typeof e._onCreated&&e._onCreated(r.header.location),t.resolve({location:r.header.location,statusCode:r.statusCode})):t.reject({errors:r.errors,statusCode:r.statusCode})}).catch(function(e){t.reject(e)}),r}},{key:"delete",value:function(){var e=a.default.defer(),t=e.promise;return this._ogapi.Napi.delete(this._buildURL(),this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"update",value:function(){var e=a.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),this._composeUpdateElement(),this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):200===t.status?e.resolve({statusCode:t.status}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"_composeUpdateElement",value:function(){return this._composeElement()}},{key:"_doNorthPut",value:function(e,t){var r=a.default.defer(),n=r.promise;return this._ogapi.Napi.put(e,t,this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){200===e.statusCode?r.resolve({statusCode:e.statusCode}):200===e.status?r.resolve({statusCode:e.status}):r.reject({errors:e.errors,statusCode:e.statusCode})}).catch(function(e){r.reject(e)}),n}},{key:"_doNorthPost",value:function(e,t){var r=this,n=a.default.defer(),i=n.promise;return this._ogapi.Napi.post(e,t,this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){201===e.statusCode?("function"==typeof r._onCreated&&r._onCreated(e.header.location),n.resolve({location:e.header.location,statusCode:e.statusCode})):200===e.statusCode?n.resolve({statusCode:e.statusCode}):n.reject({errors:e.errors,statusCode:e.statusCode})}).catch(function(e){n.reject(e)}),i}},{key:"_getExtraHeaders",value:function(){return this._headers}},{key:"_setExtraHeaders",value:function(e){if(this._headers)for(var t=Object.keys(e),r=0;r0&&Object.keys(e).forEach(function(r){if(r.toLowerCase().startsWith("provision")){var n=e[r];n.forEach?n.forEach(function(e){e._index.value&&e._value&&e._value._current&&t.withComplex(r,e._index.value._current.value,e._value._current.value)}):t.with(r,n._value._current.value)}})}},{key:"_initFormJson",value:function(e,t,r){var n=this;if(e){Object.keys(e).forEach(function(i){var o=e[i],a=o._current,s=t?t+"."+i:i;if(a){var u=a.value;r?n.withComplex(s,r,u):n.with(s,u)}else Array.isArray(o)?o.forEach(function(e){n._initFromJson(e,s+"[]",e.identifier._current.value)}):n._initFromJson(o,s,r)})}}},{key:"initFromJson",value:function(e){var t=this,r={};e&&(r=e.provision)&&t._initFromJson(r,"provision")}},{key:"withComplex",value:function(e,t,r){if(!t)return console.warn("Communication module identifier not defined. This value wil be ignored"),this;if(1!==this.getAllowedDatastreams().filter(function(t){return t.identifier===e}).length)return console.warn("Datastream not found or operations can not be performed on it. This value will be ignored. Datastream Name: "+e),this;this._entity[e]||(this._entity[e]=[]);for(var n=!1,i=0;i0)return t.notify({message:"OGAPI_ADDING_RELATED_ENTITIES",type:"success",percentage:55}),e._setUrlParameters({flattened:!0}),o._ogapi.Napi.put(o._urlWithKey(),n,e._timeout,null,e._getUrlParameters()).then(function(e){e.statusCode===h.default.OK?(console.log("CREATEOK: "+JSON.stringify(e)),"function"==typeof o._onCreated&&o._onCreated(e.header.location),t.notify({entity:o._key._value._current.value,message:"OGAPI_DEVICE_CREATED ",type:"success",percentage:75}),t.resolve({location:e.header.location,statusCode:e.statusCode})):t.reject({errors:e.errors,statusCode:e.statusCode})});r.statusCode===h.default.CREATED?(console.log("CREATEOK: "+JSON.stringify(r)),"function"==typeof o._onCreated&&o._onCreated(r.header.location),t.notify({entity:o._key._value._current.value,message:"OGAPI_DEVICE_CREATED",type:"success",percentage:75}),t.resolve({location:r.header.location,statusCode:r.statusCode})):t.reject({errors:r.errors,statusCode:r.statusCode})}).catch(function(e){if(console.log("mostrando errores"),console.log(JSON.stringify(e)),e.statusCode===h.default.BAD_REQUEST){v.default.query(e,"$..message")[0].includes("Entity duplicated"),t.reject({errors:e.data.errors,statusCode:e.statusCode})}else t.reject({errors:e.data,statusCode:e.statusCode})})}).catch(function(e){e.data.errors.forEach(function(e){var r=e.description;e.label&&(r+=":"+e.label),t.notify({message:"Error: "+r,type:"error",percentage:80})});var r=[o.delete(t,90)];i.forEach(function(e){r.push(e.wrapper.delete(t,90))}),m.default.allSettled(r).then(function(){t.reject(e)}).catch(function(){t.reject(e)})}),t.promise}},{key:"update",value:function(){var e=this,t=m.default.defer(),r=this._obj,n=[],i=this;return this._wrappers.forEach(function(e){n.push({wrapper:e,promise:e.execute(t,20)})}),m.default.allSettled(n.reduce(function(e,t){return e.push(t.promise),e},[])).then(function(){return t.notify({message:"OGAPI_201_ENTITIES_CREATED",type:"success",percentage:40}),t.notify({entity:i._key._value._current.value,message:"OGAPI_ADDING_RELATED_ENTITIES",type:"success",percentage:45}),e._setUrlParameters({flattened:!0}),i._ogapi.Napi.put(i._url,r,e._timeout,null,e._getUrlParameters()).then(function(e){e.statusCode===h.default.OK?(console.log("CREATEOK: "+JSON.stringify(e)),"function"==typeof i._onCreated&&i._onCreated(e.header.location),t.notify({entity:i._key._value._current.value,message:"OGAPI_DEVICE_UPDATED",type:"success",percentage:90}),t.resolve({location:e.header.location,statusCode:e.statusCode})):t.reject({errors:e.errors,statusCode:e.statusCode})})}).catch(function(e){console.error(e),t.notify("OGAPI_SOMETHING_WRONG_UPDATING_DEVICE"),t.reject(e)}),t.promise}},{key:"patch",value:function(){var e=this,t=m.default.defer(),r=this._obj,n=[],i=this;return this._wrappers.forEach(function(e){n.push({wrapper:e,promise:e.execute(t,20)})}),m.default.allSettled(n.reduce(function(e,t){return e.push(t.promise),e},[])).then(function(){return t.notify({message:"OGAPI_201_ENTITIES_CREATED",type:"success",percentage:40}),t.notify({entity:i._key._value._current.value,message:"OGAPI_ADDING_RELATED_ENTITIES",type:"success",percentage:45}),e._setUrlParameters({flattened:!0}),i._ogapi.Napi.patch(i._url,r,e._timeout,null,e._getUrlParameters()).then(function(e){e.statusCode===h.default.OK?(console.log("CREATEOK: "+JSON.stringify(e)),"function"==typeof i._onCreated&&i._onCreated(e.header.location),t.notify({entity:i._key._value._current.value,message:"OGAPI_DEVICE_UPDATED",type:"success",percentage:90}),t.resolve({location:e.header.location,statusCode:e.statusCode})):t.reject({errors:e.errors,statusCode:e.statusCode})})}).catch(function(e){console.error(e),t.notify("OGAPI_SOMETHING_WRONG_UPDATING_DEVICE"),t.reject(e)}),t.promise}},{key:"delete",value:function(e,t){var r=this;return this._ogapi.Napi.delete(this._urlWithKey()).then(function(n){e.notify({entity:r._key,message:"OGAPI_ENTITY_DELETED",type:"warning",percentage:t})})}}]),e}(),_=function(){function e(t,r,n,i){o(this,e),this._obj=r,this._url=n,this._ogapi=t,this._key=i,this._created=!1}return s(e,[{key:"_urlWithKey",value:function(){return this._url+"/"+this._key}},{key:"_checkExists",value:function(){return this._ogapi.Napi.get(this._urlWithKey()).then(function(e){return e.statusCode===h.default.OK}).catch(function(e){return console.warn(e),!1})}},{key:"execute",value:function(e,t){function r(e,t,r){i._ogapi.Napi.post(i._url,i._obj,null,null,{flattened:!0}).then(function(n){i._created=!0,e.notify({entity:i._key,message:"OGAPI_ENTITY_CREATED",type:"success",percentage:r}),t.resolve({message:"OGAPI_ENTITY_CREATED",entity:i._key})}).catch(function(n){console.error(n),e.notify({entity:i._key,message:"OGAPI_ENTITY_CREATED",type:"warning",percentage:r}),t.reject({entity:i._key,message:"OGAPI_SOMETHING_WRONG_CREATING"})})}var n=m.default.defer(),i=this;return this._checkExists().then(function(o){o?n.resolve({message:"OGAPI_ENTITY_ALREADY_CREATED",entity:i._key}):r(e,n,t)}).catch(function(o){o?n.resolve({message:"OGAPI_ENTITY_ALREADY_CREATED",entity:i._key}):r(e,n,t)}),n.promise}},{key:"delete",value:function(e,t){var r=this;return this._created?this._ogapi.Napi.delete(this._urlWithKey()).then(function(n){e.notify({entity:r._key,message:"OGAPI_ENTITY_DELETED",type:"warning",percentage:t})}):Q.fcall(function(){})}}]),e}(),b=function(e){function t(e,r,n,i,s,u){o(this,t),a(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,e,r+"/devices",n,i,s,u),this._organization=r}return i(t,e),s(t,[{key:"create",value:function(){return this._checkRequiredParameters(),new g(this._ogapi,this._composeElement(),this._resource,this._getEntityKey(),this._getUrlParameters(),this._timeout).create()}},{key:"update",value:function(){return new g(this._ogapi,this._composeElement(),this._buildURL(),this._getEntityKey(),this._getUrlParameters(),this._timeout).update()}},{key:"_getEntityKey",value:function(){return this._entity["provision.device.identifier"]}}]),t}(c.default);r.default=b,t.exports=r.default},{"./ComplexBuilder":218,"./SubscriberBuilder":225,"./SubscriptionBuilder":226,"http-status-codes":68,jsonpath:95,q:109}],221:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0)throw new Error(JSON.stringify(t).replace(new RegExp('"',"g"),""))}},{key:"_composeElement",value:function(){return this._validate(),this._entity}},{key:"getEntityKey",value:function(){return null!==this._getEntityKey()?this._getEntityKey()._value._current.value:null}},{key:"with",value:function(e,t){return void 0===t||0===t.length?(delete this._entity[e],this):1!==this.getAllowedDatastreams().filter(function(t){return t.identifier===e}).length?(console.warn("Datastream not found or operations can not be performed on it. This value will be ignored. Datastream Name: "+e),this):(this._entity[e]={_value:{_current:{value:t}}},this)}},{key:"getAllowedDatastreams",value:function(){return this._allowedDatastreams}},{key:"initFromFlattened",value:function(e){var t=this;e&&Object.keys(e).length>0&&Object.keys(e).forEach(function(r){if(r.toLowerCase().startsWith("provision")){var n=e[r];Array.isArray(n)&&(n=n[0]),t.with(r,n._value._current.value)}})}},{key:"_initFromJson",value:function(e,t){var r=this;if(e){Object.keys(e).forEach(function(n){var i=e[n],o=i._current,a=t?t+"."+n:n;o?r.with(a,o.value):Array.isArray(i)?r._initFromJson(i[0],a+"[]"):r._initFromJson(i,a)})}}},{key:"initFromJson",value:function(e){var t=this,r={};e&&(r=e.provision)&&t._initFromJson(r,"provision")}},{key:"deleteAll",value:function(){var e=h.default.defer(),t=e.promise;return this._setUrlParameters({full:!0}),this._ogapi.Napi.delete(this._buildURL(),this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){t.statusCode===c.default.OK?e.resolve({statusCode:t.statusCode}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"update",value:function(){var e=h.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),this._composeUpdateElement(),this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):200===t.status?e.resolve({statusCode:t.status}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"patch",value:function(){var e=h.default.defer(),t=e.promise;return this._ogapi.Napi.patch(this._buildURL(),this._composeUpdateElement(),this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):200===t.status?e.resolve({statusCode:t.status}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(f.default);r.default=p,t.exports=r.default},{"../BaseProvision":214,"http-status-codes":68,q:109}],225:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r50)throw new Error("Parameter organization must be a string, cannot be empty and has a maximum length of 50");return this._organization=e,this}},{key:"withChannel",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter channel must be a string, cannot be empty and has a maximum length of 50");return this._channel=e,this}},{key:"withIdentifier",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter identifier must be a string, cannot be empty and has a maximum length of 50");return this._identifier=e,this}},{key:"withName",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter name must be a string, cannot be empty and has a maximum length of 50");return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withJavascript",value:function(e){if("string"!=typeof e)throw new Error("Parameter name must be a string and cannot be empty");return this._javascript=e,this}},{key:"withMode",value:function(e){return this._mode=e,this}},{key:"withType",value:function(e){return this._type=e,this}},{key:"withActive",value:function(e){if("boolean"!=typeof e)throw new Error("Parameter active must be true or false");return this._active=e,this}},{key:"withActionsDelay",value:function(e){if("number"!=typeof e)throw new Error("Parameter actionsDelay must be a number");return this._actionsDelay=e,this}},{key:"withCondition",value:function(e){return this._condition=e||{},this}},{key:"withActions",value:function(e){return this._actions=e||{},this}},{key:"withParameters",value:function(e){return this._parameters=e||[],this}},{key:"_composeElement",value:function(){return{identifier:this._identifier,name:this._name,active:this._active,mode:this._mode,type:this._type,severity:this._severity,description:this._description?this._description:void 0,parameters:this._parameters,condition:"EASY"===this._mode?this._condition:void 0,actionsDelay:this._actionsDelay,actions:"EASY"===this._mode?this._actions:void 0,javascript:"ADVANCED"===this._mode?this._javascript:void 0}}},{key:"_checkRequiredParameters",value:function(e){if(e){if(void 0===this._identifier||void 0===this._organization||void 0===this._channel||void 0===this._active||void 0===this._mode)throw new Error("Parameters organization, channel, active, mode and identifier must be defined")}else if(void 0===this._name||void 0===this._organization||void 0===this._channel||void 0===this._active||void 0===this._mode)throw new Error("Parameters organization, channel, active, mode and name must be defined")}},{key:"_buildURL",value:function(){return"rules/"+this._resource+"/"+this._organization+"/channels/"+this._channel+"/"}},{key:"create",value:function(){return this._checkRequiredParameters(),this._doNorthPost(this._buildURL(),this._composeElement())}},{key:"update",value:function(){return this._checkRequiredParameters(!0),this._doNorthPut(this._buildURL()+this._identifier,this._composeElement())}},{key:"updateParameters",value:function(e){if(void 0===this._identifier||void 0===this._organization||void 0===this._channel)throw new Error("Parameters organization, channel and identifier must be defined");return this._doNorthPut(this._buildURL()+this._identifier+"/parameters",e||this._parameters||[])}},{key:"delete",value:function(){if(void 0===this._identifier||void 0===this._organization||void 0===this._channel)throw new Error("Parameters organization, channel and name must be defined");var e=h.default.defer(),t=e.promise;return this._ogapi.Napi.delete(this._buildURL()+this._identifier).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(c.default);r.default=p,t.exports=r.default},{"../provision/BaseProvision":214,"./_RuleCondition":233,"./_RuleNotification":234,q:109}],231:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0){for(var n in this._condition.parameters){var i=this._condition.parameters[n];if(i.name===e){if(void 0===i.value)throw new Error("Value not allowed for parameter "+e+" in condition "+this._condition.name);return i.value=t||"",r}}throw new Error("Parameter "+e+" not exists for condition "+this._condition.name)}}},{key:"parent",value:function(){return this._ruleConfiguration}}]),e}();r.default=s,t.exports=r.default},{"./RuleConfigurations":230}],234:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r0){for(var n in this._notification.bearers){var i=this._notification.bearers[n];if(i.name===e)return i.recipients=t,r}console.warn("Bearer "+e+" not exists for notification "+this._notification.name)}else console.warn("There is no bearers for notification "+this._notification.name);return r}},{key:"enableBearer",value:function(e){var t=this;if(this._notification.bearers&&this._notification.bearers.length>0){for(var r in this._notification.bearers){var n=this._notification.bearers[r];if(n.name===e)return n.enabled=!0,t}console.warn("Bearer "+e+" not exists for notification "+this._notification.name)}else console.warn("There is no bearers for notification "+this._notification.name);return t}},{key:"disableBearer",value:function(e){var t=this;if(this._notification.bearers&&this._notification.bearers.length>0){for(var r in this._notification.bearers){var n=this._notification.bearers[r];if(n.name===e)return n.enabled=!1,t}console.warn("Bearer "+e+" not exists for notification "+this._notification.name)}else console.warn("There is no bearers for notification "+this._notification.name);return t}},{key:"parent",value:function(){return this._ruleConfiguration}}]),e}();r.default=s,t.exports=r.default},{"./RuleConfigurations":230}],235:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0?this.cancel=e:this.cancel=!0}},{key:"_loadData",value:function(e){function t(){if(console.log(JSON.stringify(i)),r.cancel||"string"==typeof r.cancel){var a="string"==typeof r.cancel?r.cancel:"Cancel process";n.reject({data:a,statusCode:403})}else r._ogapi.Napi.post(r._resource,i,r._timeout,r._getExtraHeaders(),r._getUrlParameters()).then(function(r){var a=r.statusCode,s=r.body;if(!s&&r.text)try{var u=JSON.parse(r.text);u&&(s=u)}catch(e){console.error("Impossible to parse text from response")}if(200===a||200===a){o=!0;var c=s.data?s.data[e]:s[e];n.notify(c),c.length===i.limit.size?(i.limit.start+=1,t()):n.resolve({data:"DONE",statusCode:200})}else o?n.resolve({data:"DONE",statusCode:200}):n.reject({data:s,statusCode:a})}).catch(function(e){n.reject(e)})}var r=this,n=s.default.defer(),i=r._asyncPagingFilter(),o=!1;return t(),n.promise}},{key:"executeWithAsyncPaging",value:function(e){var t=s.default.defer(),r=t.promise;return this._loadData(e).then(function(e){t.resolve(e)},null,function(e){t.notify(e)}).catch(function(e){t.reject(e)}),r}}]),e}());r.default=c,t.exports=r.default},{merge:104,q:109}],237:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var o=!1,a=r&&r.flattened||!1;for(o=0;o0){var o=!1,a=r&&r.flattened||!1;for(o=0;o1||1===a&&!o,u={};switch(o?u[o]=i[o]:u=i,e._contentType){case"operationalStatus":for(var c in u)u[c].forEach(function(r){(!e._customFilters.id||e._customFilters.id&&e._customFilters.id===r)&&t.push({entityType:c,id:r})});break;case"administrativeState":var l=function(e){var r=e;r.entityType=d,t.push(r)};for(var d in u){var h=u[d];for(var p in h)if(s){for(var m in e._customFilters)if(h[p][m]===e._customFilters[m]){l(h[p]);break}}else l(h[p])}break;case"fieldsDefinition":case"communicationsModuleType":var y=s&&e._customFilters.type;if(void 0===y){r.resolve({error:"Filters not allowed",statusCode:400});break}var v=y?u[y]:u;t=v;break;case"userProfile":for(var g in u)(!e._customFilters.id||e._customFilters.id&&e._customFilters.id===g)&&u[g].length>0&&t.push({id:g,managed:u[g]});break;case"serviceGroups":o&&(t=u[o]);break;case"allowedResourceType":for(var _ in u)(!e._customFilters.type||e._customFilters.type&&u[_].types.indexOf(e._customFilters.type)>-1)&&t.push(u[_].resourceType);break;case"ticketSeverity":case"ticketPriority":case"ticketStatus":case"ruleConfigurationSeverity":case"ruleMode":case"ruleType":case"ioTDatastreamPeriod":case"ioTDatastreamAccess":case"resourceType":case"countryCodes":case"timezones":case"userLanguages":case"ioTDatastreamStoragePeriod":if(y){r.resolve({error:"Filters not supported",statuscode:400});break}t=t.concat(u);break;default:r.resolve({data:{},statusCode:400})}if(t&&Object.keys(t).length>0){var b={};b[e._contentType]=t,r.resolve({data:b,statusCode:200})}else r.resolve({data:{},statusCode:204});return n}},{key:"_content",value:function(e){return{ticketSeverity:["CRITICAL","URGENT","WARNING","NORMAL"],ticketPriority:["MAJOR","MINOR","CRITICAL","BLOCKER"],ticketStatus:["CREATED","ASSIGNED","ANSWERED","RESTORED","RESOLVED","CLOSED"],serviceGroups:{ASSET:["noUpdate","emptyServiceGroup","emptyServiceGroup_onSession","emptyServiceGroup_onDemand","level1SecurityServiceGroup","level2SecurityServiceGroup","level3SecurityServiceGroup","trustedNoneSecurityServiceGroup","trustedNoneSecurityServiceGroup_onDemand","trustedLevel1SecurityServiceGroup","trustedLevel2SecurityServiceGroup","trustedLevel3SecurityServiceGroup"],SUBSCRIBER:["emptyServiceGroup"],SUBSCRIPTION:["emptyServiceGroup"],GATEWAY:["noUpdate","emptyServiceGroup","emptyServiceGroup_onSession","emptyServiceGroup_onDemand","level1SecurityServiceGroup","level2SecurityServiceGroup","level3SecurityServiceGroup","trustedNoneSecurityServiceGroup","trustedNoneSecurityServiceGroup_onDemand","trustedLevel1SecurityServiceGroup","trustedLevel2SecurityServiceGroup","trustedLevel3SecurityServiceGroup"]},administrativeState:{ASSET:[{id:"BANNED",description:"Asset banned, It means that received information of this asset is not going to be collected"},{id:"DELETED",description:"Asset removed from available stock"},{id:"IN_MAINTENANCE",description:"Asset in maintenance"},{id:"IN_STOCK",description:"Asset in stock"},{id:"IN_TRANSIT",description:"Asset in transit"},{id:"IN_USE",description:"Asset in use"},{id:"MISSING",description:"Asset missing"},{id:"ORDERED",description:"Asset ordered"},{id:"READY",description:"Asset ready for installation"},{id:"RETIRED",description:"Field entity withdrawal"}],GATEWAY:[{id:"REQUESTED",description:"Entity requested to the supplier"},{id:"READY",description:"Entity ready for installation"},{id:"REPAIR",description:"Entity under repair"},{id:"TESTING",description:"Entity in tests"},{id:"ACTIVE",description:"Field deployed entity"},{id:"SUSPENDED",description:"Suspended its operation"},{id:"DELETED",description:"Entity removed from available stock"},{id:"RETIRED",description:"Field entity withdrawal"},{id:"BANNED",description:"Entity banned, It means that received information of this entity is not going to be collected"}],COMMUNICATIONS_MODULE:[{id:"REQUESTED",description:"Entity requested to the supplier"},{id:"READY",description:"Entity ready for installation"},{id:"REPAIR",description:"Entity under repair"},{id:"TESTING",description:"Entity in tests"},{id:"ACTIVE",description:"Field deployed entity"},{id:"SUSPENDED",description:"Suspended its operation"},{id:"DELETED",description:"Entity removed from available stock"},{id:"RETIRED",description:"Field entity withdrawal"},{id:"BANNED",description:"Entity banned, It means that received information of this entity is not going to be collected"}],SUBSCRIBER:[{id:"REQUESTED",description:"Entity requested to the supplier"},{id:"READY",description:"Entity ready for installation"},{id:"REPAIR",description:"Entity under repair"},{id:"TESTING",description:"Entity in tests"},{id:"ACTIVE",description:"Field deployed entity"},{id:"SUSPENDED",description:"Suspended its operation"},{id:"DELETED",description:"Entity removed from available stock"},{id:"RETIRED",description:"Field entity withdrawal"},{id:"BANNED",description:"Entity banned, It means that received information of this entity is not going to be collected"}],SUBSCRIPTION:[{id:"REQUESTED",description:"Entity requested to the supplier"},{id:"READY",description:"Entity ready for installation"},{id:"REPAIR",description:"Entity under repair"},{id:"TESTING",description:"Entity in tests"},{id:"ACTIVE",description:"Field deployed entity"},{id:"SUSPENDED",description:"Suspended its operation"},{id:"DELETED",description:"Entity removed from available stock"},{id:"RETIRED",description:"Field entity withdrawal"},{id:"BANNED",description:"Entity banned, It means that received information of this entity is not going to be collected"}],CERTIFICATE:[{id:"NOT_ACTIVE",description:"NOT_ACTIVE"},{id:"ACTIVE",description:"ACTIVE"},{id:"REVOKED",description:"REVOKED"},{id:"EXPIRED",description:"EXPIRED"}]},operationalStatus:{ASSET:["UNKNOWN","NORMAL","ALARM","DOWN","SAFE_MODE","TAMPER","TEST"],GATEWAY:["UNKNOWN","NORMAL","ALARM","DOWN","SAFE_MODE","TAMPER","TEST"],COMMUNICATIONS_MODULE:["UNKNOWN","STOPPED","STARTING","RUNNING","STOPPING","ERROR"]},communicationsModuleType:{ADSL:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","administrativeState","ADDRESS","HOME_OPERATOR","LOCATION"]}},CAN:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},ETH:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState","ADDRESS"]}},GENERIC:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","administrativeState","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","administrativeState","ICC","SERIAL_NUMBER"]}},GSM:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","administrativeState","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","administrativeState","ICC"]}},HAN:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},I2C:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},LOWPAN:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState"]}},LTE_M:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","administrativeState","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION","RADIUS_USERNAME","RADIUS_PASSWORD","RADIUS_FRAMED_IP_NETMASK","MSISDN_VOICE"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","administrativeState","ICC"]}},MESH:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]}},MOBILE:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","administrativeState","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION","RADIUS_USERNAME","RADIUS_PASSWORD","RADIUS_FRAMED_IP_NETMASK","MSISDN_VOICE","SUBSCRIPTION_ICC"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","administrativeState","ICC"]}},MULTIMOBILE:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","administrativeState","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION","RADIUS_USERNAME","RADIUS_PASSWORD","RADIUS_FRAMED_IP_NETMASK","MSISDN_VOICE","SUBSCRIPTION_ICC"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","administrativeState","ICC"]}},NARROWBAND:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","LOCATION"]},SUBSCRIBER:{mandatory:["generatedEntityKey"],optional:["administrativeState","ICC"]}},PLC:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState"]}},RS232:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},RS422:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},RS485:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},SIGFOX:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:["PAC"]},SUBSCRIPTION:{mandatory:["generatedEntityKey","HOME_OPERATOR","administrativeState","SIGFOX_DEVICE_TYPE"]}},ZIGBEE:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState"]}}},ruleMode:["EASY","ADVANCED"],ruleType:["DATASTREAM","OPERATION","EVENT"],ruleConfigurationSeverity:["INFORMATIVE","URGENT","CRITICAL"],userProfile:{root:["admin_domain","admin","advanced","viewer"],admin_domain:["admin_domain","admin","advanced","viewer"],admin:["admin","advanced","viewer"],advanced:[],viewer:[]},ioTDatastreamAccess:["READ","WRITE"],ioTDatastreamStoragePeriod:["SECONDS","MINUTES","HOURS","DAYS","MONTHS","YEARS","NEVER"],ioTDatastreamPeriod:["PULSE","CUMULATIVE","INSTANT"],resourceType:[{identifier:"entity.asset"},{identifier:"entity.device"},{identifier:"ticket"}],allowedResourceType:[{resourceType:"entity.asset",types:["entity","asset"]},{resourceType:"entity.device",types:["entity","device"]},{resourceType:"entity.subscriber",types:["entity","subscriber"]},{resourceType:"entity.subscription",types:["entity","subscription"]},{resourceType:"ticket",types:["ticket"]},{resourceType:"organization",types:["organization"]},{resourceType:"channel",types:["channel"]}],fieldsDefinition:{string:{description:"Text based value",subtype:["text","password"]},boolean:{description:"Boolean based value",subtype:[]},calendar:{description:"Format is described in the ISO 8601 or in http://www.w3.org/TR/NOTE-datetime",subtype:["datetime","date","time"]},address:{description:"Network address value",subtype:["ip","ipv4","ipv6","mac48"]},number:{description:"Numeric value",subtype:["integer","float","percentage"]},enumeration:{description:"Choice list values",subtype:["string","number"]},array:{description:"Array of values",subtype:["string","number"]},coordinates:{description:"Object indicating coordinates and timestamp in geotime subtype",subtype:["geo","geotime","geojson"]},topology:{description:"Object indicating relations",subtype:["path","tree (not supported yet)"]},object:{description:"Not yet supported. For future uses only",subtype:[]}},userLanguages:[{code:"es",language:"Español/Spanish"},{code:"en",language:"Inglés/English"}],countryCodes:[{code:"AD",country:"Andorra",zone:"Europe/Andorra"},{code:"AE",country:"United Arab Emirates",zone:"Asia/Dubai"},{code:"AF",country:"Afghanistan",zone:"Asia/Kabul"},{code:"AG",country:"Antigua and Barbuda",zone:"America/Antigua"},{code:"AI",country:"Anguilla",zone:"America/Anguilla"},{code:"AL",country:"Albania",zone:"Europe/Tirane"},{code:"AM",country:"Armenia",zone:"Asia/Yerevan"},{code:"AN",country:"Netherlands Antilles",zone:"Netherlands Antilles"},{code:"AO",country:"Angola",zone:"Africa/Luanda"},{code:"AQ",country:"Antarctica",zone:"Antarctica/McMurdo"},{code:"AR",country:"Argentina",zone:"America/Argentina/Buenos_Aires"},{code:"AS",country:"American Samoa",zone:"Pacific/Pago_Pago"},{code:"AT",country:"Austria",zone:"Europe/Vienna"},{code:"AU",country:"Australia",zone:"Australia/Lord_Howe"},{code:"AW",country:"Aruba",zone:"America/Aruba"},{code:"AX",country:"Aland Islands",zone:"Europe/Mariehamn"},{code:"AZ",country:"Azerbaijan",zone:"Asia/Baku"},{code:"BA",country:"Bosnia and Herzegovina",zone:"Europe/Sarajevo"},{code:"BB",country:"Barbados",zone:"America/Barbados"},{code:"BD",country:"Bangladesh",zone:"Asia/Dhaka"},{code:"BE",country:"Belgium",zone:"Europe/Brussels"},{code:"BF",country:"Burkina Faso",zone:"Africa/Ouagadougou"},{code:"BG",country:"Bulgaria",zone:"Europe/Sofia"},{code:"BH",country:"Bahrain",zone:"Asia/Bahrain"},{code:"BI",country:"Burundi",zone:"Africa/Bujumbura"},{code:"BJ",country:"Benin",zone:"Africa/Porto-Novo"},{code:"BL",country:"Saint Barthélemy",zone:"America/St_Barthelemy"},{code:"BM",country:"Bermuda",zone:"Atlantic/Bermuda"},{code:"BN",country:"Brunei",zone:"Asia/Brunei"},{code:"BO",country:"Bolivia",zone:"America/La_Paz"},{code:"BQ",country:"Bonaire, Saint Eustatius and Saba",zone:"America/Kralendijk"},{code:"BR",country:"Brazil",zone:"America/Noronha"},{code:"BS",country:"Bahamas",zone:"America/Nassau"},{code:"BT",country:"Bhutan",zone:"Asia/Thimphu"},{code:"BV",country:"Bouvet Island",zone:"Bouvet Island"},{code:"BW",country:"Botswana",zone:"Africa/Gaborone"},{code:"BY",country:"Belarus",zone:"Europe/Minsk"},{code:"BZ",country:"Belize",zone:"America/Belize"},{code:"CA",country:"Canada",zone:"America/St_Johns"},{code:"CC",country:"Cocos Islands",zone:"Indian/Cocos"},{code:"CD",country:"Democratic Republic of the Congo",zone:"Africa/Kinshasa"},{code:"CF",country:"Central African Republic",zone:"Africa/Bangui"},{code:"CG",country:"Republic of the Congo",zone:"Africa/Brazzaville"},{code:"CH",country:"Switzerland",zone:"Europe/Zurich"},{code:"CI",country:"Ivory Coast",zone:"Africa/Abidjan"},{code:"CK",country:"Cook Islands",zone:"Pacific/Rarotonga"},{code:"CL",country:"Chile",zone:"America/Santiago"},{code:"CM",country:"Cameroon",zone:"Africa/Douala"},{code:"CN",country:"China",zone:"Asia/Shanghai"},{code:"CO",country:"Colombia",zone:"America/Bogota"},{code:"CR",country:"Costa Rica",zone:"America/Costa_Rica"},{code:"CS",country:"Serbia and Montenegro",zone:"Serbia and Montenegro"},{code:"CU",country:"Cuba",zone:"America/Havana"},{code:"CV",country:"Cape Verde",zone:"Atlantic/Cape_Verde"},{code:"CW",country:"Curaçao",zone:"America/Curacao"},{code:"CX",country:"Christmas Island",zone:"Indian/Christmas"},{code:"CY",country:"Cyprus",zone:"Asia/Nicosia"},{code:"CZ",country:"Czech Republic",zone:"Europe/Prague"},{code:"DE",country:"Germany",zone:"Europe/Berlin"},{code:"DJ",country:"Djibouti",zone:"Africa/Djibouti"},{code:"DK",country:"Denmark",zone:"Europe/Copenhagen"},{code:"DM",country:"Dominica",zone:"America/Dominica"},{code:"DO",country:"Dominican Republic",zone:"America/Santo_Domingo"},{code:"DZ",country:"Algeria",zone:"Africa/Algiers"},{code:"EC",country:"Ecuador",zone:"America/Guayaquil"},{code:"EE",country:"Estonia",zone:"Europe/Tallinn"},{code:"EG",country:"Egypt",zone:"Africa/Cairo"},{code:"EH",country:"Western Sahara",zone:"Africa/El_Aaiun"},{code:"ER",country:"Eritrea",zone:"Africa/Asmara"},{code:"ES",country:"Spain",zone:"Europe/Madrid"},{code:"ET",country:"Ethiopia",zone:"Africa/Addis_Ababa"},{code:"FI",country:"Finland",zone:"Europe/Helsinki"},{code:"FJ",country:"Fiji",zone:"Pacific/Fiji"},{code:"FK",country:"Falkland Islands",zone:"Atlantic/Stanley"},{code:"FM",country:"Micronesia",zone:"Pacific/Chuuk"},{code:"FO",country:"Faroe Islands",zone:"Atlantic/Faroe"},{code:"FR",country:"France",zone:"Europe/Paris"},{code:"GA",country:"Gabon",zone:"Africa/Libreville"},{code:"GB",country:"United Kingdom",zone:"Europe/London"},{code:"GD",country:"Grenada",zone:"America/Grenada"},{code:"GE",country:"Georgia",zone:"Asia/Tbilisi"},{code:"GF",country:"French Guiana",zone:"America/Cayenne"},{code:"GG",country:"Guernsey",zone:"Europe/Guernsey"},{code:"GH",country:"Ghana",zone:"Africa/Accra"},{code:"GI",country:"Gibraltar",zone:"Europe/Gibraltar"},{code:"GL",country:"Greenland",zone:"America/Godthab"},{code:"GM",country:"Gambia",zone:"Africa/Banjul"},{code:"GN",country:"Guinea",zone:"Africa/Conakry"},{code:"GP",country:"Guadeloupe",zone:"America/Guadeloupe"},{code:"GQ",country:"Equatorial Guinea",zone:"Africa/Malabo"},{code:"GR",country:"Greece",zone:"Europe/Athens"},{code:"GS",country:"South Georgia and the South Sandwich Islands",zone:"Atlantic/South_Georgia"},{code:"GT",country:"Guatemala",zone:"America/Guatemala"},{code:"GU",country:"Guam",zone:"Pacific/Guam"},{code:"GW",country:"Guinea-Bissau",zone:"Africa/Bissau"},{code:"GY",country:"Guyana",zone:"America/Guyana"},{code:"HK",country:"Hong Kong",zone:"Asia/Hong_Kong"},{code:"HM",country:"Heard Island and McDonald Islands",zone:"Heard Island and McDonald Islands"},{code:"HN",country:"Honduras",zone:"America/Tegucigalpa"},{code:"HR",country:"Croatia",zone:"Europe/Zagreb"},{code:"HT",country:"Haiti",zone:"America/Port-au-Prince"},{code:"HU",country:"Hungary",zone:"Europe/Budapest"},{code:"ID",country:"Indonesia",zone:"Asia/Jakarta"},{code:"IE",country:"Ireland",zone:"Europe/Dublin"},{code:"IL",country:"Israel",zone:"Asia/Jerusalem"},{code:"IM",country:"Isle of Man",zone:"Europe/Isle_of_Man"},{code:"IN",country:"India",zone:"Asia/Kolkata"},{code:"IO",country:"British Indian Ocean Territory",zone:"Indian/Chagos"},{code:"IQ",country:"Iraq",zone:"Asia/Baghdad"},{code:"IR",country:"Iran",zone:"Asia/Tehran"},{code:"IS",country:"Iceland",zone:"Atlantic/Reykjavik"},{code:"IT",country:"Italy",zone:"Europe/Rome"},{code:"JE",country:"Jersey",zone:"Europe/Jersey"},{code:"JM",country:"Jamaica",zone:"America/Jamaica"},{code:"JO",country:"Jordan",zone:"Asia/Amman"},{code:"JP",country:"Japan",zone:"Asia/Tokyo"},{code:"KE",country:"Kenya",zone:"Africa/Nairobi"},{code:"KG",country:"Kyrgyzstan",zone:"Asia/Bishkek"},{code:"KH",country:"Cambodia",zone:"Asia/Phnom_Penh"},{code:"KI",country:"Kiribati",zone:"Pacific/Tarawa"},{code:"KM",country:"Comoros",zone:"Indian/Comoro"},{code:"KN",country:"Saint Kitts and Nevis",zone:"America/St_Kitts"},{code:"KP",country:"North Korea",zone:"Asia/Pyongyang"},{code:"KR",country:"South Korea",zone:"Asia/Seoul"},{code:"KW",country:"Kuwait",zone:"Asia/Kuwait"},{code:"KY",country:"Cayman Islands",zone:"America/Cayman"},{code:"KZ",country:"Kazakhstan",zone:"Asia/Almaty"},{code:"LA",country:"Laos",zone:"Asia/Vientiane"},{code:"LB",country:"Lebanon",zone:"Asia/Beirut"},{code:"LC",country:"Saint Lucia",zone:"America/St_Lucia"},{code:"LI",country:"Liechtenstein",zone:"Europe/Vaduz"},{code:"LK",country:"Sri Lanka",zone:"Asia/Colombo"},{code:"LR",country:"Liberia",zone:"Africa/Monrovia"},{code:"LS",country:"Lesotho",zone:"Africa/Maseru"},{code:"LT",country:"Lithuania",zone:"Europe/Vilnius"},{code:"LU",country:"Luxembourg",zone:"Europe/Luxembourg"},{code:"LV",country:"Latvia",zone:"Europe/Riga"},{code:"LY",country:"Libya",zone:"Africa/Tripoli"},{code:"MA",country:"Morocco",zone:"Africa/Casablanca"},{code:"MC",country:"Monaco",zone:"Europe/Monaco"},{code:"MD",country:"Moldova",zone:"Europe/Chisinau"},{code:"ME",country:"Montenegro",zone:"Europe/Podgorica"},{code:"MF",country:"Saint Martin",zone:"America/Marigot"},{code:"MG",country:"Madagascar",zone:"Indian/Antananarivo"},{code:"MH",country:"Marshall Islands",zone:"Pacific/Majuro"},{code:"MK",country:"Macedonia",zone:"Europe/Skopje"},{code:"ML",country:"Mali",zone:"Africa/Bamako"},{code:"MM",country:"Myanmar",zone:"Asia/Yangon"},{code:"MN",country:"Mongolia",zone:"Asia/Ulaanbaatar"},{code:"MO",country:"Macao",zone:"Asia/Macau"},{code:"MP",country:"Northern Mariana Islands",zone:"Pacific/Saipan"},{code:"MQ",country:"Martinique",zone:"America/Martinique"},{code:"MR",country:"Mauritania",zone:"Africa/Nouakchott"},{code:"MS",country:"Montserrat",zone:"America/Montserrat"},{code:"MT",country:"Malta",zone:"Europe/Malta"},{code:"MU",country:"Mauritius",zone:"Indian/Mauritius"},{code:"MV",country:"Maldives",zone:"Indian/Maldives"},{code:"MW",country:"Malawi",zone:"Africa/Blantyre"},{code:"MX",country:"Mexico",zone:"America/Mexico_City"},{code:"MY",country:"Malaysia",zone:"Asia/Kuala_Lumpur"},{code:"MZ",country:"Mozambique",zone:"Africa/Maputo"},{code:"NA",country:"Namibia",zone:"Africa/Windhoek"},{code:"NC",country:"New Caledonia",zone:"Pacific/Noumea"},{code:"NE",country:"Niger",zone:"Africa/Niamey"},{code:"NF",country:"Norfolk Island",zone:"Pacific/Norfolk"},{code:"NG",country:"Nigeria",zone:"Africa/Lagos"},{code:"NI",country:"Nicaragua",zone:"America/Managua"},{code:"NL",country:"Netherlands",zone:"Europe/Amsterdam"},{code:"NO",country:"Norway",zone:"Europe/Oslo"},{code:"NP",country:"Nepal",zone:"Asia/Kathmandu"},{code:"NR",country:"Nauru",zone:"Pacific/Nauru"},{code:"NU",country:"Niue",zone:"Pacific/Niue"},{code:"NZ",country:"New Zealand",zone:"Pacific/Auckland"},{code:"OM",country:"Oman",zone:"Asia/Muscat"},{code:"PA",country:"Panama",zone:"America/Panama"},{code:"PE",country:"Peru",zone:"America/Lima"},{code:"PF",country:"French Polynesia",zone:"Pacific/Tahiti"},{code:"PG",country:"Papua New Guinea",zone:"Pacific/Port_Moresby"},{code:"PH",country:"Philippines",zone:"Asia/Manila"},{code:"PK",country:"Pakistan",zone:"Asia/Karachi"},{code:"PL",country:"Poland",zone:"Europe/Warsaw"},{code:"PM",country:"Saint Pierre and Miquelon",zone:"America/Miquelon"},{code:"PN",country:"Pitcairn",zone:"Pacific/Pitcairn"},{code:"PR",country:"Puerto Rico",zone:"America/Puerto_Rico"},{code:"PS",country:"Palestinian Territory",zone:"Asia/Gaza"},{code:"PT",country:"Portugal",zone:"Europe/Lisbon"},{code:"PW",country:"Palau",zone:"Pacific/Palau"},{code:"PY",country:"Paraguay",zone:"America/Asuncion"},{code:"QA",country:"Qatar",zone:"Asia/Qatar"},{code:"RE",country:"Reunion",zone:"Indian/Reunion"},{code:"RO",country:"Romania",zone:"Europe/Bucharest"},{code:"RS",country:"Serbia",zone:"Europe/Belgrade"},{code:"RU",country:"Russia",zone:"Europe/Kaliningrad"},{code:"RW",country:"Rwanda",zone:"Africa/Kigali"},{code:"SA",country:"Saudi Arabia",zone:"Asia/Riyadh"},{code:"SB",country:"Solomon Islands",zone:"Pacific/Guadalcanal"},{code:"SC",country:"Seychelles",zone:"Indian/Mahe"},{code:"SD",country:"Sudan",zone:"Africa/Khartoum"},{code:"SE",country:"Sweden",zone:"Europe/Stockholm"},{code:"SG",country:"Singapore",zone:"Asia/Singapore"},{code:"SH",country:"Saint Helena",zone:"Atlantic/St_Helena"},{code:"SI",country:"Slovenia",zone:"Europe/Ljubljana"},{code:"SJ",country:"Svalbard and Jan Mayen",zone:"Arctic/Longyearbyen"},{code:"SK",country:"Slovakia",zone:"Europe/Bratislava"},{code:"SL",country:"Sierra Leone",zone:"Africa/Freetown"},{code:"SM",country:"San Marino",zone:"Europe/San_Marino"},{code:"SN",country:"Senegal",zone:"Africa/Dakar"},{code:"SO",country:"Somalia",zone:"Africa/Mogadishu"},{code:"SR",country:"Suriname",zone:"America/Paramaribo"},{code:"SS",country:"South Sudan",zone:"Africa/Juba"},{code:"ST",country:"Sao Tome and Principe",zone:"Africa/Sao_Tome"},{code:"SV",country:"El Salvador",zone:"America/El_Salvador"},{code:"SX",country:"Sint Maarten",zone:"America/Lower_Princes"},{code:"SY",country:"Syria",zone:"Asia/Damascus"},{code:"SZ",country:"Swaziland",zone:"Africa/Mbabane"},{code:"TC",country:"Turks and Caicos Islands",zone:"America/Grand_Turk"},{code:"TD",country:"Chad",zone:"Africa/Ndjamena"},{code:"TF",country:"French Southern Territories",zone:"Indian/Kerguelen"},{code:"TG",country:"Togo",zone:"Africa/Lome"},{code:"TH",country:"Thailand",zone:"Asia/Bangkok"},{code:"TJ",country:"Tajikistan",zone:"Asia/Dushanbe"},{code:"TK",country:"Tokelau",zone:"Pacific/Fakaofo"},{code:"TL",country:"East Timor",zone:"Asia/Dili"},{code:"TM",country:"Turkmenistan",zone:"Asia/Ashgabat"},{code:"TN",country:"Tunisia",zone:"Africa/Tunis"},{code:"TO",country:"Tonga",zone:"Pacific/Tongatapu"},{code:"TR",country:"Turkey",zone:"Europe/Istanbul"},{code:"TT",country:"Trinidad and Tobago",zone:"America/Port_of_Spain"},{code:"TV",country:"Tuvalu",zone:"Pacific/Funafuti"},{code:"TW",country:"Taiwan",zone:"Asia/Taipei"},{code:"TZ",country:"Tanzania",zone:"Africa/Dar_es_Salaam"},{code:"UA",country:"Ukraine",zone:"Europe/Kiev"},{code:"UG",country:"Uganda",zone:"Africa/Kampala"},{code:"UM",country:"United States Minor Outlying Islands",zone:"Pacific/Midway"},{code:"US",country:"United States",zone:"America/New_York"},{code:"UY",country:"Uruguay",zone:"America/Montevideo"},{code:"UZ",country:"Uzbekistan",zone:"Asia/Samarkand"},{code:"VA",country:"Vatican",zone:"Europe/Vatican"},{code:"VC",country:"Saint Vincent and the Grenadines",zone:"America/St_Vincent"},{code:"VE",country:"Venezuela",zone:"America/Caracas"},{code:"VG",country:"British Virgin Islands",zone:"America/Tortola"},{code:"VI",country:"U.S. Virgin Islands",zone:"America/St_Thomas"},{code:"VN",country:"Vietnam",zone:"Asia/Ho_Chi_Minh"},{code:"VU",country:"Vanuatu",zone:"Pacific/Efate"},{code:"WF",country:"Wallis and Futuna",zone:"Pacific/Wallis"},{code:"WS",country:"Samoa",zone:"Pacific/Apia"},{code:"XK",country:"Kosovo",zone:"Kosovo"},{code:"YE",country:"Yemen",zone:"Asia/Aden"},{code:"YT",country:"Mayotte",zone:"Indian/Mayotte"},{code:"ZA",country:"South Africa",zone:"Africa/Johannesburg"},{code:"ZM",country:"Zambia",zone:"Africa/Lusaka"},{code:"ZW",country:"Zimbabwe",zone:"Africa/Harare"}], -timezones:["ACT","AET","Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Timbuktu","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","AGT","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/ComodRivadavia","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Atka","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Ensenada","America/Fort_Nelson","America/Fort_Wayne","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Knox_IN","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port_of_Spain","America/Port-au-Prince","America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Rosario","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Shiprock","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Virgin","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","ART","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Gaza","Asia/Harbin","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan","AST","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/LHI","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/North","Australia/NSW","Australia/Perth","Australia/Queensland","Australia/South","Australia/Sydney","Australia/Tasmania","Australia/Victoria","Australia/West","Australia/Yancowinna","BET","Brazil/Acre","Brazil/DeNoronha","Brazil/East","Brazil/West","BST","Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan","Canada/Eastern","Canada/Mountain","Canada/Newfoundland","Canada/Pacific","Canada/Saskatchewan","Canada/Yukon","CAT","CET","Chile/Continental","Chile/EasterIsland","CNT","CST","CST6CDT","CTT","Cuba","EAT","ECT","EET","Egypt","Eire","EST","EST5EDT","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belfast","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","GB","GB-Eire","GMT","GMT0","Greenwich","Hongkong","HST","Iceland","IET","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Iran","Israel","IST","Jamaica","Japan","JST","Kwajalein","Libya","MET","Mexico/BajaNorte","Mexico/BajaSur","Mexico/General","MIT","MST","MST7MDT","Navajo","NET","NST","NZ","NZ-CHAT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap","PLT","PNT","Poland","Portugal","PRC","PRT","PST","PST8PDT","ROK","Singapore","SST","SystemV/AST4","SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT","SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7","SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT","SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","Universal","US/Alaska","US/Aleutian","US/Arizona","US/Central","US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan","US/Mountain","US/Pacific","US/Pacific-New","US/Samoa","UTC","VST","W-SU","WET","Zulu"]}[e]}}]),t}(c.default);r.default=d,t.exports=r.default},{"./Search":241,q:109}],244:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var t=this._builderParams.filter;void 0!==t._filterTemplate?e.and.push(t._filterTemplate.filter):e.and.push(t)}return{filter:e}}},{key:"group",value:function(e){return this._builderParams.group=e||{},this}},{key:"build",value:function(){return new h.default(this._parent,this._buildUrl(),this._buildFilter(),this._buildLimit(),this._buildSort(),this._buildGroup(),this._buildSelect(),this._builderParams.timeout,this._urlParams)}},{key:"select",value:function(e){return this._builderParams.select=e||void 0,this}}]),t}(c.default);r.default=m,t.exports=r.default},{"../../util/searchingFields/FieldFinder":313,"../AssetSearch":235,"./PreFilteredSearchBuilder":278}],250:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0&&void 0!==t&&Object.keys(t).length>0)throw new Error("Incompatible filters. You only can create a filter using fluent mode [betweenDates, addTag, withDatastreamId, withDeviceId] methods or custom filter [filter] method");return void 0!==r&&Object.keys(r).length>0?e.filter=r:void 0!==t&&Object.keys(t).length>0&&(e.filter=t),e}},{key:"select",value:function(e){return this._builderParams.select=e,this}}]),t}(c.default);r.default=g,t.exports=r.default},{"../../util/DATE_FORMAT":307,"../../util/searchingFields/FieldFinder":313,"./SearchBuilder":283,merge:104,moment:105}],260:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var t=this._builderParams.filter;void 0!==t._filterTemplate?e.and.push(t._filterTemplate.filter):e.and.push(t)}return{filter:e}}},{key:"group",value:function(e){return this._builderParams.group=e||{},this}}]),t}(c.default);r.default=h,t.exports=r.default},{"../../util/searchingFields/FieldFinder":313,"./PreFilteredSearchBuilder":278}],264:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0&&void 0!==t&&Object.keys(t).length>0)throw new Error("Incompatible filters. You only can create a filter using fluent mode [withId, withModel, withModelVersion, withManufacturer] methods or custom filter [filter] method");return void 0!==r&&Object.keys(r).length>0?e.filter=r:void 0!==t&&Object.keys(t).length>0&&(e.filter=t),e}}]),t}(c.default);r.default=m,t.exports=r.default},{"../../util/searchingFields/FieldFinder":313,"./SearchWithSummaryBuilder":284,merge:104}],271:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var r=0,n=!1;for(r=0;r0){var t=0;for(t=0;t0&&void 0!==t&&Object.keys(t).length>0)throw new Error("Incompatible filters. You only can create a filter using fluent mode [withId, withName, withVersion, withType, withHardwareId, withModel, withModelVersion, withManufacturer] methods or custom filter [filter] method");return void 0!==r&&Object.keys(r).length>0?e.filter=r:void 0!==t&&Object.keys(t).length>0&&(e.filter=t),e}}]),t}(c.default);r.default=y},{"../../util/searchingFields/FieldFinder":313,"./SearchWithSummaryBuilder":284,merge:104}],287:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var t=this._builderParams.filter;void 0!==t._filterTemplate?e.and.push(t._filterTemplate.filter):e.and.push(t)}return{filter:e}}}]),t}(c.default);r.default=h,t.exports=r.default},{"../../util/searchingFields/FieldFinder":313,"./PreFilteredSearchBuilder":278}],288:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var t=this._builderParams.filter;void 0!==t._filterTemplate?e.and.push(t._filterTemplate.filter):e.and.push(t)}return{filter:e}}}]),t}(c.default);r.default=h,t.exports=r.default},{"../../util/searchingFields/FieldFinder":313,"./PreFilteredSearchBuilder":278}],289:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(e,t,r){for(var n=!0;n;){var i=e,o=t,a=r;n=!1,null===i&&(i=Function.prototype);var s=Object.getOwnPropertyDescriptor(i,o);if(void 0!==s){if("value"in s)return s.value;var u=s.get;if(void 0===u)return;return u.call(a)}var c=Object.getPrototypeOf(i);if(null===c)return;e=c,t=o,r=a,n=!0,s=c=void 0}},s=e("./SearchWithSummaryBuilder"),u=n(s),c=e("../../util/searchingFields/FieldFinder"),l=n(c),f="/tasks",d=function(e){function t(e){i(this,t), -a(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,e,{},new l.default(e,f)),this._url=f}return o(t,e),t}(u.default);r.default=d,t.exports=r.default},{"../../util/searchingFields/FieldFinder":313,"./SearchWithSummaryBuilder":284}],290:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r, mimetype allowed <'"+JSON.stringify(p.MIME_TYPES_ENUM)+"'>");return this._id=e,this._type=t,this._download()}},{key:"_download",value:function(){var e=f.default.defer(),t=e.promise,r=this._error_not_found;return this._api.get(this._downloadUrl(),void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){204===t.statusCode?e.reject({data:r,statusCode:h.default.NOT_FOUND}):e.resolve({data:t,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(c.default);r.default=m,t.exports=r.default},{"../ProvisionGenericFinder":138,"./MIME_TYPES_ENUM":302,"http-status-codes":68,q:109}],301:[function(require,module,exports){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var r=0;rmax_length_id)throw new Error("Parameter id must be a string, cannot be empty and has a maximum length of "+max_length_id);return this._id=e,this}},{key:"withName",value:function(e){if("string"!=typeof e||0===e.length||e.length>max_length_name)throw new Error("Parameter name must be a string, cannot be empty and has a maximum length of "+max_length_name);return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||0===e.length||e.length>max_length_description)throw new Error("Parameter description must be a string, cannot be empty and has a maximum length of "+max_length_description);return this._description=e,this}},{key:"withAdministrativeState",value:function(e){if("string"!=typeof e||e.length<=0)throw new Error("Parameter administrativeState must be typeof string and cannot be empty");var t="";if(void 0===_ADMINISTRATIVE_STATE_ENUM.ADMINISTRATIVE_STATE_ENUM.find(function(e){return e==this},e)&&(t=e),""!==t)throw new Error("Parameter in administrativeState is not allowed. Parameter value '"+JSON.stringify(t)+"', parameters allowed in administrativeState are: '"+JSON.stringify(_ADMINISTRATIVE_STATE_ENUM.ADMINISTRATIVE_STATE_ENUM)+"'");return this._administrativeState=e,this}},{key:"withUsages",value:function(e){if(void 0===e||e.constructor!==Array||0===e.length)throw new Error("Parameter usages must be typeof Array and cannot be empty");for(var t=[],r=0;r0?valid=!0:3===length&&hardware.manufacturer&&hardware.model&&hardware.modelVersion&&"string"==typeof hardware.manufacturer&&"string"==typeof hardware.model&&"string"==typeof hardware.modelVersion&&hardware.manufacturer.length>0&&hardware.model.length>0&&hardware.modelVersion.length>0&&(valid=!0),valid}},{key:"withTags",value:function(e){if(void 0===e||e.constructor!==Array||e.length<=0)throw new Error("Parameter tags must be typeof Array and cannot be empty");for(var t=[],r=0;r100)throw new Error("Parameter name must be a string and has a maximum length of 100");return this._name=e,this}},{key:"withSurname",value:function(e){if("string"!=typeof e||e.length>100)throw new Error("Parameter surname must be a string and has a maximum length of 100");return this._surname=e,this}},{key:"withEmail",value:function(e){if("string"!=typeof e||e.length>100)throw new Error("Parameter email must be a string and has a maximum length of 100");return this._email=e,this}},{key:"withPassword",value:function(e){if("string"!=typeof e||e.length>50)throw new Error("Parameter password must be a string and has a maximum length of 50");return this._password=e,this}},{key:"withWorkgroup",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_WORKGROUP");return this._workgroup=e,this}},{key:"withDomain",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_DOMAIN");return this._domain=e,this}},{key:"withProfile",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_PROFILE");return this._profile=e,this}},{key:"withCountryCode",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_COUNTRY_CODE");return this._countryCode=e,this}},{key:"withLangCode",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_LANGUAGE");return this._langCode=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_DESCRIPTION");return this._description=e,this}},{key:"withTimezone",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_TIMEZONE");return this._timezone=e,this}},{key:"_buildURL",value:function(){if(void 0===this._email)throw new Error("OGAPI_EMAIL_MUST_BE_DEFINED");return this._resource+"/"+this._email}},{key:"_composeElement",value:function(){return{user:{name:this._name||void 0,surname:this._surname||void 0,password:this._password||void 0,description:this._description||void 0,email:this._email||void 0,workgroup:this._workgroup||void 0,domain:this._domain||void 0,profile:this._profile||void 0,countryCode:this._countryCode||void 0,langCode:this._langCode||void 0,timezone:this._timezone||void 0}}}},{key:"_composeUpdateElement",value:function(){if(this._password)throw new Error("OGAPI_PASSWORD_NOT_ALLOWED");if(void 0===this._email)throw new Error("OGAPI_USER_UPDATE_PARAMETER_MUST_BE_DEFINED");return{user:{name:this._name||void 0,surname:this._surname||void 0,description:this._description||void 0,email:this._email||void 0,workgroup:this._workgroup||void 0,domain:this._domain||void 0,profile:this._profile||void 0,countryCode:this._countryCode||void 0,langCode:this._langCode||void 0,timezone:this._timezone||void 0}}}},{key:"updatePassword",value:function(e){if(this._newPassword=e, -void 0===this._email||void 0===this._password||void 0===this._newPassword)throw new Error("OGAPI_USER_UPDATE_PASSWORD_PARAMETER_MUST_BE_DEFINED");var t={user:{password:this._newPassword}},r=f.default.defer(),n=r.promise;return this._setExtraHeaders({"X-ApiPass":this._password}),this._ogapi.Napi.put(this._buildURL(),t,void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){200===e.statusCode?r.resolve({statusCode:e.statusCode}):200===e.status?r.resolve({statusCode:e.status}):r.reject({errors:e.errors,statusCode:e.statusCode})}).catch(function(e){r.reject(e)}),n}}]),t}(c.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":214,q:109}],307:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});r.DATE_FORMAT="";r.TIME_FORMAT="HH:mm:ssZ"},{}],308:[function(e,t,r){"use strict";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0){var n=e.substring(e.indexOf("?"),e.length),i=e.substring(0,e.indexOf("?"));r.push((0,c.default)(i)+n)}else r.push((0,c.default)(e))}),this._url(this._options)+"/"+r.join("/")}},{key:"_createPromiseRequest",value:function(e,t,r,n,i){var o=r;void 0!==o&&null!==o||(o=this._options.timeout);var a=h.default.defer(),s=a.promise,u=this._options.apiKey,c=-1===o?e:e.timeout(o);if(u&&(c=c.set("X-ApiKey",this._options.apiKey)),n)for(var l=Object.keys(n),f=0;ft)throw new Error([{message:"OGAPI_STRING_PARAMETER",parameter:r},{message:"OGAPI_MAX_LENGTH",parameter:t}])},_checkNumber:function(e,t){if("number"!=typeof e)throw new Error([{message:"OGAPI_NUMBER_PARAMETER",parameter:t}])},_checkArray:function(e,t){if(!Array.isArray(e)||0===e.length)throw new Error({message:"OGAPI_ARRAY_PARAMETER",parameter:t})},_checkObject:function(e,t){if("object"!=typeof e)throw new Error({message:"OGAPI_OBJECT_PARAMETER",parameter:t})}}},{}],313:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.defineProperty(r,"__esModule",{value:!0});var o,a=function(){function e(e,t){for(var r=0;r=0?"complex":"SearchOnDatamodel"===p[e]?w:"simple"}},A=(o={},i(o,w,function(e,t,r,n,i,o){function a(e){for(var t=!0;t;){var r=e;t=!1;{if(!(r.length>0&&r[0].constructor===Array))return r;r=r.reduce(function(e,t){return e.concat(t)}),e=r,t=!0}}}var s=this._ogapi.datamodelsSearchBuilder(),u={and:[]};this._resourceTypes&&u.and.push({in:{"datamodels.allowedResourceTypes":this._resourceTypes}}),i&&u.and.push({eq:{"datamodels.categories.datastreams.identifier":i}}),u.and.length>0&&s.filter(u),s.build().execute().then(function(e){var t=[];200===e.statusCode&&(t=e.data.datamodels.map(function(e){return(e.categories||[]).map(function(e){return(e.datastreams||[]).map(function(e){return i||o?e:e.identifier})})}),t=a(t)),i?n.resolve(t.find(function(e){return i===e.identifier})):n.resolve(t)}).catch(function(e){n.reject(e)})}),i(o,"simple",function(e,t,r,n,i){var o=[];if(t[r]instanceof Array)i?function(){var e=0,n=null;for(e=0;null===n&&e-1&&o.push(t[r][a[s]]);else for(var a=Object.keys(t[r]),s=0;s50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"name"});return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withAdministrative",value:function(e){return this._administrative=e,this}},{key:"withDomainName",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"domainName"});return this._domainName=e,this}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),this._resource="provision/domains/"+this._domainName+"/workgroups",{workgroup:{name:this._name||void 0,description:this._description||void 0,administrative:this._administrative||!1}}}},{key:"_composeElementUpdate",value:function(){return this._checkRequiredParameters(),this._resource="provision/domains/"+this._domainName+"/workgroups",{workgroup:{description:this._description||void 0}}}},{key:"_buildURL",value:function(){return"provision/domains/"+this._domainName+"/workgroups/"+this._name}},{key:"update",value:function(){var e=c.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),this._composeElementUpdate(),void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):200===t.status?e.resolve({statusCode:t.status}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(f.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":214,q:109}]},{},[1]); -//# sourceMappingURL=opengate-api-bower-10.6.0.min.js.map diff --git a/dist/opengate-api-bower-10.6.0.min.js.map b/dist/opengate-api-bower-10.6.0.min.js.map deleted file mode 100644 index dd7371ac6..000000000 --- a/dist/opengate-api-bower-10.6.0.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["opengate-api-bower.js"],"names":["e","t","n","r","s","o","u","a","require","i","Error","f","exports","call","length","1","module","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_inherits","subClass","superClass","prototype","Object","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","defineProperty","_get","_x","_x2","_x3","_again","object","property","receiver","Function","desc","getOwnPropertyDescriptor","undefined","getter","get","parent","getPrototypeOf","_srcInternalOpenGateAPI","_srcInternalOpenGateAPI2","_srcUtilNorthAmpliaREST","_srcUtilNorthAmpliaREST2","_srcUtilSouthAmpliaREST","_srcUtilSouthAmpliaREST2","OpenGateAPI","_InternalOpenGateAPI","_options","this","window","./src/InternalOpenGateAPI","./src/util/NorthAmpliaREST","./src/util/SouthAmpliaREST","2","Ajv","opts","_opts","util","copy","setLogger","_schemas","_refs","_fragments","_formats","formats","format","_cache","cache","Cache","_loadingSchemas","_compilations","RULES","rules","_getId","chooseGetId","loopRequired","Infinity","errorDataPath","_errorDataPathProperty","serialize","stableStringify","_metaOpts","getMetaSchemaOptions","addInitialFormats","keywords","addInitialKeywords","addDefaultMetaSchema","meta","addMetaSchema","nullable","addKeyword","metaSchema","type","addInitialSchemas","validate","schemaKeyRef","data","v","getSchema","schemaObj","_addSchema","_compile","valid","$async","errors","compile","schema","_meta","addSchema","key","_skipValidation","Array","isArray","id","resolve","normalizeId","checkUnique","skipValidation","validateSchema","throwOrLogError","$schema","defaultMeta","logger","warn","message","errorsText","error","self","META_SCHEMA_ID","keyRef","_getSchemaObj","_getSchemaFragment","ref","res","root","baseId","compileSchema","SchemaObject","fragment","removeSchema","RegExp","_removeAllSchemas","clear","del","cacheKey","schemas","regex","test","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","localRefs","ids","put","callValidate","_validate","result","apply","arguments","compiling","currentOpts","refs","refVal","schemaId","_get$IdOrId","_get$Id","$id","options","separator","dataVar","text","dataPath","slice","addFormat","name","$dataSchema","$data","$dataMetaSchema","META_SUPPORT_DATA","optsSchemas","keyword","metaOpts","META_IGNORE_OPTIONS","log","noop","console","compileAsync","customKeyword","add","getKeyword","removeKeyword","remove","validateKeyword","errorClasses","ValidationError","Validation","MissingRefError","MissingRef","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./data","./keyword","./refs/data.json","./refs/json-schema-draft-07.json","fast-json-stable-stringify","3","4","callback","loadMetaSchemaOf","sch","$ref","Promise","_compileAsync","removePromise","added","missingSchema","missingRef","schemaPromise","loadSchema","then","p","./error_classes","5","ajv","validation","url","fullPath","errorSubclass","Subclass","./resolve","6","mode","isLeapYear","year","date","str","matches","match","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","split","DATE_TIME_SEPARATOR","uri","NOT_URI_FRAGMENT","URI","Z_ANCHOR","HOSTNAME","URIREF","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","fast","date-time","uri-reference","uri-template","email","hostname","ipv4","ipv6","uuid","json-pointer","json-pointer-uri-fragment","relative-json-pointer","./util","7","compilation","localCompile","_schema","_root","isRoot","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","processCode","equal","ucs2length","source","code","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","removeLocalRef","refId","inline","regexStr","index","patternsHash","toQuotedString","valueStr","defaultsHash","rule","parentSchema","it","deps","definition","dependencies","every","hasOwnProperty","join","macro","c","checkCompiling","cv","endCompiling","compIndex","splice","arr","statement","../dotjs/validate","fast-deep-equal","8","resolveSchema","parse","refPath","_getFullPath","getFullPath","keys","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","limit","checkNoRef","countKeys","item","count","SIMPLE_INLINED","normalize","replace","TRAILING_SLASH_HASH","resolveIds","baseIds","","fullPaths","traverse","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","toHash","./schema_obj","json-schema-traverse","uri-js","9","ruleModules","maximum","minimum","properties","ALL","KEYWORDS","TYPES","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","concat","custom","../dotjs","10","11","len","pos","charCodeAt","12","to","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","array","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","hash","getProperty","IDENTIFIER","escapeQuotes","SINGLE_QUOTE","varOccurences","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","finalCleanUpCode","async","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","schemaHasRules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","escapeJsonPointer","getData","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","b","decodeURIComponent","encodeURIComponent","./ucs2length","13","keywordsJsonPointers","JSON","stringify","j","anyOf","14","definitions","simpleTypes","statements","not","required","items","modifying","const","15","$keyword","$ruleType","$errorKeyword","$schemaValue","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opExpr","$opStr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","16","17","unicode","18","19","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","20","$valid","$errs","$wasComposite","21","22","23","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","24","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","25","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$prop","$useData","$propertyPath","$missingProperty","arr2","i2","l2","26","$vSchema","27","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","indexOf","$formatRef","28","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","29","allOf","contains","enum","if","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","./_limit","./_limitItems","./_limitLength","./_limitProperties","./allOf","./anyOf","./comment","./const","./contains","./dependencies","./enum","./format","./if","./items","./multipleOf","./not","./oneOf","./pattern","./properties","./propertyNames","./ref","./required","./uniqueItems","./validate","30","$additionalItems","additionalItems","$currErrSchemaPath","31","multipleOfPrecision","32","$allErrorsOption","33","$prevValid","$passingSchemas","34","$regexp","35","$key","$dataProperties","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","arr4","i4","l4","36","$invalidName","37","$refCode","$refVal","$message","missingRefs","__callValidate","38","$propertySch","$loopRequired","39","$itemType","$typeIsArray","$method","40","$shouldUseGroup","$rulesGroup","$shouldUseRule","$ruleImplementsSomeKeyword","impl","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","extendRefs","coerceTypes","$coerceToTypes","$dataType","$coerced","$bracesCoercion","$type","arr5","i5","l5","41","_addRule","ruleGroup","rg","throwError","_validateKeyword","definitionSchema","./definition_schema","./dotjs/custom","42","description","43","title","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","stringArray","readOnly","examples","exclusiveMinimum","exclusiveMaximum","contentMediaType","contentEncoding","else","44","Emitter","mixin","on","addEventListener","event","fn","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","callbacks","cb","emit","args","listeners","hasListeners","45","isExpression","node","isIterationStatement","isStatement","isSourceElement","trailingStatement","alternate","consequent","body","isProblematicIfStatement","current","46","isDecimalDigit","ch","isHexDigit","isOctalDigit","isWhiteSpace","NON_ASCII_WHITESPACES","isLineTerminator","fromCodePoint","cp","String","fromCharCode","floor","isIdentifierStartES5","IDENTIFIER_START","ES5Regex","NonAsciiIdentifierStart","isIdentifierPartES5","IDENTIFIER_PART","NonAsciiIdentifierPart","isIdentifierStartES6","ES6Regex","isIdentifierPartES6","47","isStrictModeReservedWordES6","isKeywordES5","strict","isKeywordES6","isReservedWordES5","isReservedWordES6","isRestrictedWord","isIdentifierNameES5","iz","decodeUtf16","lead","trail","isIdentifierNameES6","lowCh","check","isIdentifierES5","isIdentifierES6","./code","48","ast","./ast","49","flags","valueOf","toString","50","cmp","cycles","aobj","bobj","seen","toJSON","isFinite","seenIndex","sort","51","replacer","isUndefined","isNaN","isFunction","isRegExp","truncate","isString","getMessage","actual","operator","expected","fail","stackStartFunction","assert","AssertionError","ok","_deepEqual","isBuffer","isDate","getTime","global","multiline","lastIndex","ignoreCase","isObject","objEquiv","isArguments","isNullOrUndefined","pSlice","ka","objectKeys","kb","expectedException","_throws","shouldThrow","block","hasOwn","generatedMessage","captureStackTrace","err","stack","fn_name","idx","next_line","substring","inherits","notEqual","deepEqual","notDeepEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","util/","52","ctor","superCtor","super_","TempCtor","53","arg","fill","readUInt8","54","process","inspect","ctx","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","style","styles","arrayToHash","val","recurseTimes","ret","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","isError","formatError","Date","base","braces","toUTCString","output","formatArray","formatProperty","reduceToSingleString","simple","isNull","l","set","line","substr","numLinesEst","reduce","prev","cur","ar","isSymbol","re","objectToString","d","isPrimitive","pad","timestamp","getHours","getMinutes","getSeconds","getDate","months","getMonth","formatRegExp","objects","x","Number","_","deprecate","msg","deprecated","warned","throwDeprecation","traceDeprecation","trace","noDeprecation","debugEnviron","debugs","debuglog","env","NODE_DEBUG","toUpperCase","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","string","regexp","origin","./support/isBuffer","lYpoI2","55","decode","elt","PLUS","PLUS_URL_SAFE","SLASH","SLASH_URL_SAFE","NUMBER","UPPER","LOWER","b64ToByteArray","b64","L","tmp","placeHolders","charAt","Arr","uint8ToBase64","uint8","encode","num","temp","extraBytes","Uint8Array","toByteArray","fromByteArray","base64js","56","57","Buffer","subject","encoding","noZero","stringtrim","coerce","byteLength","buf","_useTypedArrays","_augment","_isBuffer","_set","isArrayish","write","_hexWrite","offset","remaining","strLen","byte","parseInt","_charsWritten","_utf8Write","blitBuffer","utf8ToBytes","_asciiWrite","asciiToBytes","_binaryWrite","_base64Write","base64ToBytes","_utf16leWrite","utf16leToBytes","_base64Slice","start","end","base64","_utf8Slice","min","decodeUtf8Char","_asciiSlice","_binarySlice","_hexSlice","toHex","_utf16leSlice","bytes","_readUInt16","littleEndian","noAssert","_readUInt32","_readInt16","_readInt32","_readFloat","ieee754","read","_readDouble","_writeUInt16","verifuint","_writeUInt32","_writeInt16","verifsint","_writeInt32","_writeFloat","verifIEEE754","_writeDouble","trim","clamp","defaultValue","ceil","byteArray","h","hi","lo","src","dst","max","SlowBuffer","INSPECT_MAX_BYTES","poolSize","ArrayBuffer","foo","subarray","isEncoding","toLowerCase","list","totalLength","swap","_arr","target","target_start","sliceLen","newBuf","writeUInt8","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","toArrayBuffer","buffer","BP","toLocaleString","base64-js","58","EventEmitter","_events","_maxListeners","defaultMaxListeners","setMaxListeners","er","handler","addListener","listener","m","newListener","g","fired","position","listenerCount","emitter","59","nextTick","canSetImmediate","setImmediate","canPost","postMessage","queue","ev","stopPropagation","shift","setTimeout","browser","argv","binding","cwd","chdir","dir","60","Duplex","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","_write","./readable.js","./writable.js","process/browser.js","61","Stream","EE","Transform","PassThrough","pipe","dest","ondata","chunk","pause","ondrain","resume","didOnEnd","onclose","destroy","onerror","cleanup","_isStdio","./duplex.js","./passthrough.js","./transform.js","events","62","63","_transform","64","ReadableState","stream","hwm","highWaterMark","pipes","pipesCount","flowing","endEmitted","reading","calledRead","sync","needReadable","emittedReadable","readableListening","objectMode","defaultEncoding","ranOut","awaitDrain","readingMore","decoder","StringDecoder","_readableState","readableAddChunk","state","addToFront","chunkInvalid","onEofChunk","unshift","emitReadable","maybeReadMore","needMoreData","roundUpToNextPowerOf2","MAX_HWM","howMuchToRead","endReadable","emitReadable_","maybeReadMore_","pipeOnDrain","flow","emitDataEvents","pipeOnReadable","startPaused","paused","fromList","stringMode","cpy","xs","setEncoding","enc","nOrig","doRead","_read","pipeOpts","onunpipe","onfinish","needDrain","unpipe","errListeners","doEnd","stdout","stderr","endFn","dests","wrap","method","_fromList","./index.js","string_decoder","65","TransformState","afterTransform","needTransform","transforming","writecb","writechunk","ts","_transformState","rs","_flush","done","ws","writeencoding","66","WriteReq","WritableState","ending","finished","noDecode","decodeStrings","writing","bufferProcessing","onwrite","writelen","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","doWrite","onwriteError","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","finishMaybe","entry","need","endWritable","isUint8Array","isArrayBuffer","67","assertEncoding","passThroughWrite","utf16DetectIncompleteChar","incomplete","charReceived","charLength","base64DetectIncompleteChar","surrogateSize","detectIncompleteChar","charBuffer","charStr","charCode","lenIncomplete","size","cr","68","statusCodes","ACCEPTED","BAD_GATEWAY","BAD_REQUEST","CONFLICT","CONTINUE","CREATED","EXPECTATION_FAILED","FAILED_DEPENDENCY","FORBIDDEN","GATEWAY_TIMEOUT","GONE","HTTP_VERSION_NOT_SUPPORTED","IM_A_TEAPOT","INSUFFICIENT_SPACE_ON_RESOURCE","INSUFFICIENT_STORAGE","INTERNAL_SERVER_ERROR","LENGTH_REQUIRED","LOCKED","METHOD_FAILURE","METHOD_NOT_ALLOWED","MOVED_PERMANENTLY","MOVED_TEMPORARILY","MULTI_STATUS","MULTIPLE_CHOICES","NETWORK_AUTHENTICATION_REQUIRED","NO_CONTENT","NON_AUTHORITATIVE_INFORMATION","NOT_ACCEPTABLE","NOT_FOUND","NOT_IMPLEMENTED","NOT_MODIFIED","PARTIAL_CONTENT","PAYMENT_REQUIRED","PERMANENT_REDIRECT","PRECONDITION_FAILED","PRECONDITION_REQUIRED","PROCESSING","PROXY_AUTHENTICATION_REQUIRED","REQUEST_HEADER_FIELDS_TOO_LARGE","REQUEST_TIMEOUT","REQUEST_TOO_LONG","REQUEST_URI_TOO_LONG","REQUESTED_RANGE_NOT_SATISFIABLE","RESET_CONTENT","SEE_OTHER","SERVICE_UNAVAILABLE","SWITCHING_PROTOCOLS","TEMPORARY_REDIRECT","TOO_MANY_REQUESTS","UNAUTHORIZED","UNPROCESSABLE_ENTITY","UNSUPPORTED_MEDIA_TYPE","USE_PROXY","getStatusText","statusCode","69","DBCSCodec","codecOptions","iconv","encodingName","table","mappingTable","decodeTables","UNASSIGNED_NODE","decodeTableSeq","_addDecodeChunk","defaultCharUnicode","encodeTable","encodeTableSeq","skipEncodeChars","encodeSkipVals","from","_fillEncodeTable","encodeAdd","uChar","_setEncodeChar","defCharSB","defaultCharSingleByte","UNASSIGNED","gb18030","thirdByteNodeIdx","thirdByteNode","fourthByteNodeIdx","fourthByteNode","secondByteNodeIdx","NODE_START","secondByteNode","GB18030_CODE","DBCSEncoder","codec","leadSurrogate","seqObj","DBCSDecoder","nodeIdx","prevBuf","alloc","findIdx","mid","_dbcs","encoder","_getDecodeTrieNode","addr","curAddr","writeTable","codeTrail","seq","_getEncodeBucket","uCode","high","dbcsCode","bucket","low","_setEncodeSequence","oldVal","prefix","mbCode","nextChar","resCode","subtable","uChars","gbChars","prevBufOffset","seqStart","curByte","curSeq","ptr","uCodeLead","safer-buffer","70","shiftjis","¥","‾","csshiftjis","mskanji","sjis","windows31j","ms31j","xsjis","windows932","ms932","932","cp932","eucjp","gb2312","gb231280","gb23121980","csgb2312","csiso58gb231280","euccn","windows936","ms936","936","cp936","gbk","xgbk","isoir58","€","chinese","windows949","ms949","949","cp949","cseuckr","csksc56011987","euckr","isoir149","korean","ksc56011987","ksc56011989","ksc5601","windows950","ms950","950","cp950","big5","big5hkscs","cnbig5","csbig5","xxbig5","./tables/big5-added.json","./tables/cp936.json","./tables/cp949.json","./tables/cp950.json","./tables/eucjp.json","./tables/gb18030-ranges.json","./tables/gbk-added.json","./tables/shiftjis.json","71","modules","./dbcs-codec","./dbcs-data","./internal","./sbcs-codec","./sbcs-data","./sbcs-data-generated","./utf16","./utf7","72","InternalCodec","bomAware","InternalEncoderBase64","InternalEncoderCesu8","InternalDecoderCesu8","InternalDecoder","InternalEncoder","prevStr","acc","contBytes","accBytes","utf8","cesu8","unicode11utf8","ucs2","utf16le","binary","hex","_internal","completeQuads","bufIdx","73","SBCSCodec","chars","asciiString","decodeBuf","encodeBuf","SBCSEncoder","SBCSDecoder","_sbcs","idx1","idx2","74","437","737","775","850","852","855","856","857","858","860","861","862","863","864","865","866","869","874","922","1046","1124","1125","1129","1133","1161","1162","1163","1250","1251","1252","1253","1254","1255","1256","1257","1258","28591","28592","28593","28594","28595","28596","28597","28598","28599","28600","28601","28603","28604","28605","28606","windows874","win874","cp874","windows1250","win1250","cp1250","windows1251","win1251","cp1251","windows1252","win1252","cp1252","windows1253","win1253","cp1253","windows1254","win1254","cp1254","windows1255","win1255","cp1255","windows1256","win1256","cp1256","windows1257","win1257","cp1257","windows1258","win1258","cp1258","iso88591","cp28591","iso88592","cp28592","iso88593","cp28593","iso88594","cp28594","iso88595","cp28595","iso88596","cp28596","iso88597","cp28597","iso88598","cp28598","iso88599","cp28599","iso885910","cp28600","iso885911","cp28601","iso885913","cp28603","iso885914","cp28604","iso885915","cp28605","iso885916","cp28606","cp437","ibm437","csibm437","cp737","ibm737","csibm737","cp775","ibm775","csibm775","cp850","ibm850","csibm850","cp852","ibm852","csibm852","cp855","ibm855","csibm855","cp856","ibm856","csibm856","cp857","ibm857","csibm857","cp858","ibm858","csibm858","cp860","ibm860","csibm860","cp861","ibm861","csibm861","cp862","ibm862","csibm862","cp863","ibm863","csibm863","cp864","ibm864","csibm864","cp865","ibm865","csibm865","cp866","ibm866","csibm866","cp869","ibm869","csibm869","cp922","ibm922","csibm922","cp1046","ibm1046","csibm1046","cp1124","ibm1124","csibm1124","cp1125","ibm1125","csibm1125","cp1129","ibm1129","csibm1129","cp1133","ibm1133","csibm1133","cp1161","ibm1161","csibm1161","cp1162","ibm1162","csibm1162","cp1163","ibm1163","csibm1163","maccroatian","maccyrillic","macgreek","maciceland","macroman","macromania","macthai","macturkish","macukraine","koi8r","koi8u","koi8ru","koi8t","armscii8","rk1048","tcvn","georgianacademy","georgianps","pt154","viscii","iso646cn","iso646jp","hproman8","macintosh","ascii","tis620","75","10029","maccenteuro","808","ibm808","cp808","ascii8bit","usascii","ansix34","ansix341968","ansix341986","csascii","cp367","ibm367","isoir6","iso646us","iso646irv","us","latin1","latin2","latin3","latin4","latin5","latin6","latin7","latin8","latin9","latin10","csisolatin1","csisolatin2","csisolatin3","csisolatin4","csisolatincyrillic","csisolatinarabic","csisolatingreek","csisolatinhebrew","csisolatin5","csisolatin6","l6","l7","l8","l9","l10","isoir14","isoir57","isoir100","isoir101","isoir109","isoir110","isoir144","isoir127","isoir126","isoir138","isoir148","isoir157","isoir166","isoir179","isoir199","isoir203","isoir226","cp819","ibm819","cyrillic","arabic","arabic8","ecma114","asmo708","greek","greek8","ecma118","elot928","hebrew","hebrew8","turkish","turkish8","thai","thai8","celtic","celtic8","isoceltic","tis6200","tis62025291","tis62025330","10000","10006","10007","10079","10081","cspc8codepage437","cspc775baltic","cspc850multilingual","cspcp852","cspc862latinhebrew","cpgr","msee","mscyrl","msansi","msgreek","msturk","mshebr","msarab","winbaltrim","cp20866","20866","ibm878","cskoi8r","cp21866","21866","ibm1168","strk10482002","tcvn5712","tcvn57121","gb198880","cn","csiso14jisc6220ro","jisc62201969ro","jp","cshproman8","r8","roman8","xroman8","ibm1051","mac","csmacintosh","76","77","78","79","80","81","82","83","84","Utf16BECodec","Utf16BEEncoder","Utf16BEDecoder","overflowByte","Utf16Codec","Utf16Encoder","addBOM","getEncoder","Utf16Decoder","initialBytes","initialBytesLen","detectEncoding","asciiCharsLE","asciiCharsBE","_len","utf16be","buf2","utf16","getDecoder","85","Utf7Codec","Utf7Encoder","Utf7Decoder","inBase64","base64Accum","Utf7IMAPCodec","Utf7IMAPEncoder","base64AccumIdx","Utf7IMAPDecoder","utf7","unicode11utf7","nonDirectChars","bind","base64Regex","base64Chars","plusChar","minusChar","andChar","lastI","b64str","canBeDecoded","utf7imap","base64IMAPChars","86","PrependBOMWrapper","StripBOMWrapper","pass","PrependBOM","StripBOM","stripBOM","87","original","supportsNodeEncodingsExtension","extendNodeEncodings","nodeNativeEncodings","utf-8","ucs-2","utf-16le","isNativeEncoding","SlowBufferToString","SlowBufferWrite","RangeError","BufferIsEncoding","encodingExists","BufferByteLength","BufferToString","BufferWrite","_offset","_length","_encoding","supportsStreams","ReadableSetEncoding","collect","_collect","undoExtendNodeEncodings","88","bomHandling","encodings","skipDecodeWarning","getCodec","toEncoding","fromEncoding","_codecDataCache","_canonicalizeEncoding","codecDef","nodeVer","versions","nodeVerArr","../encodings","./bom-handling","./extend-node","./streams","89","IconvLiteEncoderStream","conv","IconvLiteDecoderStream","encodeStream","decodeStream","chunks","90","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","pow","rt","abs","LN2","91","92","_traverse","pre","post","arrayKeywords","propsKeywords","escapeJsonPtr","skipKeywords","93","factory","define","amd","esprima","condition","isIdentifierStart","Regex","isIdentifierPart","isFutureReservedWord","isStrictModeReservedWord","isKeyword","addComment","loc","comment","lastCommentStart","extra","range","comments","attachComment","leadingComments","trailingComments","skipSingleLineComment","lineNumber","column","lineStart","skipMultiLineComment","Messages","UnexpectedToken","skipComment","scanHexEscape","getEscapedIdentifier","getIdentifier","scanIdentifier","Token","Identifier","Keyword","NullLiteral","BooleanLiteral","scanPunctuator","code2","ch2","ch3","ch4","ch1","tokenize","openParenToken","tokens","openCurlyToken","Punctuator","scanHexLiteral","NumericLiteral","scanOctalLiteral","octal","scanNumericLiteral","parseFloat","scanStringLiteral","quote","unescaped","restore","startLineNumber","startLineStart","StringLiteral","testRegExp","InvalidRegExp","scanRegExpBody","classMarker","terminated","UnterminatedRegExp","literal","scanRegExpFlags","throwErrorTolerant","scanRegExp","lookahead","RegularExpression","collectRegex","token","isIdentifierName","advanceSlash","prevToken","checkToken","FnExprTokens","advance","EOF","collectToken","TokenName","lex","peek","Position","SourceLocation","startLine","startColumn","peekLineTerminator","found","messageFormat","whole","throwUnexpected","UnexpectedEOS","UnexpectedNumber","UnexpectedString","UnexpectedIdentifier","UnexpectedReserved","StrictReservedWord","expect","expectKeyword","matchKeyword","matchAssign","op","consumeSemicolon","isLeftHandSide","Syntax","MemberExpression","parseArrayInitialiser","startToken","elements","parseAssignmentExpression","delegate","markEnd","createArrayExpression","parsePropertyFunction","param","first","previousStrict","parseFunctionSourceElements","StrictParamName","createFunctionExpression","parseObjectPropertyKey","StrictOctalLiteral","createLiteral","createIdentifier","parseObjectProperty","createProperty","parseVariableIdentifier","parseObjectInitialiser","kind","PropertyKind","Data","Get","Set","StrictDuplicateProperty","AccessorDataProperty","AccessorGetSet","createObjectExpression","parseGroupExpression","parseExpression","parsePrimaryExpression","parseFunctionExpression","createThisExpression","parseArguments","parseNonComputedProperty","parseNonComputedMember","parseComputedMember","parseNewExpression","callee","parseLeftHandSideExpression","createNewExpression","parseLeftHandSideExpressionAllowCall","previousAllowIn","allowIn","createMemberExpression","createCallExpression","parsePostfixExpression","StrictLHSPostfix","InvalidLHSInAssignment","createPostfixExpression","parseUnaryExpression","StrictLHSPrefix","createUnaryExpression","argument","StrictDelete","binaryPrecedence","prec","parseBinaryExpression","marker","markers","right","left","createBinaryExpression","parseConditionalExpression","createConditionalExpression","StrictLHSAssignment","createAssignmentExpression","createSequenceExpression","expressions","parseStatementList","parseSourceElement","parseBlock","createBlockStatement","parseVariableDeclaration","init","StrictVarName","createVariableDeclarator","parseVariableDeclarationList","parseVariableStatement","declarations","createVariableDeclaration","parseConstLetDeclaration","parseEmptyStatement","createEmptyStatement","parseExpressionStatement","createExpressionStatement","parseIfStatement","parseStatement","createIfStatement","parseDoWhileStatement","oldInIteration","inIteration","createDoWhileStatement","parseWhileStatement","createWhileStatement","parseForVariableDeclaration","parseForStatement","update","InvalidLHSInForIn","createForStatement","createForInStatement","parseContinueStatement","label","IllegalContinue","createContinueStatement","labelSet","UnknownLabel","parseBreakStatement","inSwitch","IllegalBreak","createBreakStatement","parseReturnStatement","inFunctionBody","IllegalReturn","createReturnStatement","parseWithStatement","StrictModeWith","createWithStatement","parseSwitchCase","createSwitchCase","parseSwitchStatement","discriminant","cases","clause","oldInSwitch","defaultFound","createSwitchStatement","MultipleDefaultsInSwitch","parseThrowStatement","NewlineAfterThrow","createThrowStatement","parseCatchClause","StrictCatchVariable","createCatchClause","parseTryStatement","handlers","finalizer","NoCatchOrFinally","createTryStatement","parseDebuggerStatement","createDebuggerStatement","labeledBody","parseFunctionDeclaration","Redeclaration","createLabeledStatement","sourceElement","directive","firstRestricted","oldLabelSet","oldInFunctionBody","sourceElements","expression","Literal","parseParams","stricted","paramSet","params","StrictParamDupe","StrictFunctionName","createFunctionDeclaration","parseSourceElements","parseProgram","createProgram","filterTokenLocation","SyntaxTreeDelegate","tolerant","lexError","program","bottomRightStack","AssignmentExpression","ArrayExpression","BlockStatement","BinaryExpression","BreakStatement","CallExpression","CatchClause","ConditionalExpression","ContinueStatement","DoWhileStatement","DebuggerStatement","EmptyStatement","ExpressionStatement","ForStatement","ForInStatement","FunctionDeclaration","FunctionExpression","IfStatement","LabeledStatement","LogicalExpression","NewExpression","ObjectExpression","Program","Property","ReturnStatement","SequenceExpression","SwitchStatement","SwitchCase","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","processComment","lastChild","postProcess","each","rest","generator","raw","accessor","computed","guardedHandlers","version","freeze","94","parser","Parser","yy","symbols_","JSON_PATH","DOLLAR","PATH_COMPONENTS","LEADING_CHILD_MEMBER_EXPRESSION","PATH_COMPONENT","MEMBER_COMPONENT","SUBSCRIPT_COMPONENT","CHILD_MEMBER_COMPONENT","DESCENDANT_MEMBER_COMPONENT","DOT","MEMBER_EXPRESSION","DOT_DOT","STAR","SCRIPT_EXPRESSION","INTEGER","END","CHILD_SUBSCRIPT_COMPONENT","DESCENDANT_SUBSCRIPT_COMPONENT","[","SUBSCRIPT","]","SUBSCRIPT_EXPRESSION","SUBSCRIPT_EXPRESSION_LIST","SUBSCRIPT_EXPRESSION_LISTABLE",",","STRING_LITERAL","ARRAY_SLICE","FILTER_EXPRESSION","QQ_STRING","Q_STRING","$accept","$end","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","_ast","initialize","$0","yield","operation","scope","$","defaultActions","parseError","recoverable","input","vstack","lstack","recovering","lexer","setInput","yylloc","yyloc","ranges","symbol","preErrorSymbol","action","newState","yyval","errStr","showPosition","first_line","last_line","first_column","last_column","_nodes","_node","_stash","props","_input","_more","_backtrack","matched","conditionStack","unput","lines","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","next","test_match","indexed_rule","backup","tempMatch","_currentRules","flex","begin","popState","conditions","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","main","exit","readFileSync","fs","path","95","./lib/index","96","identifier","qq_string","q_string","97","dict","grammar","macros","esc","int","bnf","moduleInclude","actionInclude","./dict","98","eval_recurse","partial","template","aesprim","evaluate","@","results","nodes","is_array","is_object","traverser","recurse","passable","descend","element","_descend","component","_evaluate","unique","filter","_uniq","_parse_nullable_int","sval","uniq","Handlers","_fns","register","member-child-identifier","member-descendant-identifier","subscript-child-numeric_literal","member-child-numeric_literal","subscript-descendant-numeric_literal","member-child-wildcard","member-descendant-wildcard","subscript-descendant-wildcard","subscript-child-wildcard","subscript-child-slice","values","subscript-child-union","_component","_results","subscript-descendant-union","subscript-child-filter_expression","subscript-descendant-filter_expression","subscript-child-script_expression","member-child-script_expression","member-descendant-script_expression","..","./aesprim","./index","./slice","static-eval","underscore","99","_is_string","JSONPath","_vivify","query","setValue","partials","_partials","templates","descendant-member","child-member","descendant-subscript","child-subscript","_normalize","_path","./handlers","./parser","100","gparser","_parseError","../generated/parser","./grammar","101","step","102","previousUnderscore","ArrayProto","ObjProto","FuncProto","nativeIsArray","nativeKeys","nativeBind","_wrapped","VERSION","createCallback","func","context","argCount","other","collection","accumulator","iteratee","identity","currentKey","reduceError","foldl","inject","memo","reduceRight","foldr","find","detect","predicate","some","select","any","include","invoke","isFunc","pluck","where","attrs","findWhere","lastComputed","shuffle","rand","shuffled","random","sample","guard","sortBy","criteria","behavior","groupBy","has","indexBy","countBy","sortedIndex","toArray","partition","head","take","initial","last","tail","drop","compact","flatten","shallow","without","difference","isSorted","union","intersection","argsLength","zip","lastIndexOf","stop","Ctor","bound","boundArgs","bindAll","memoize","hasher","address","delay","wait","defer","throttle","timeout","previous","later","leading","now","clearTimeout","trailing","debounce","immediate","callNow","wrapper","compose","after","times","before","pairs","invert","functions","methods","names","extend","pick","omit","clone","tap","interceptor","eq","aStack","bStack","className","aCtor","bCtor","isEqual","isEmpty","isElement","nodeType","noConflict","constant","pair","accum","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","testRegexp","replaceRegexp","escape","unescape","idCounter","uniqueId","templateSettings","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","settings","oldSettings","matcher","variable","render","chain","_chain","103","baseCompareAscending","valIsNull","valIsUndef","valIsReflexive","othIsNull","othIsUndef","othIsReflexive","baseFindIndex","fromRight","baseIndexOf","fromIndex","indexOfNaN","baseIsFunction","baseToString","charsLeftIndex","charsRightIndex","compareAscending","compareMultiple","orders","objCriteria","othCriteria","ordersLength","order","deburrLetter","letter","deburredLetters","escapeHtmlChar","chr","htmlEscapes","escapeRegExpChar","leadingChar","whitespaceChar","regexpEscapes","stringEscapes","escapeStringChar","isObjectLike","isSpace","replaceHolders","placeholder","resIndex","PLACEHOLDER","sortedUniq","trimmedLeftIndex","trimmedRightIndex","unescapeHtmlChar","htmlUnescapes","runInContext","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseLodash","chainAll","actions","__wrapped__","__actions__","__chain__","__dir__","__filtered__","__iteratees__","__takeCount__","POSITIVE_INFINITY","__views__","lazyClone","arrayCopy","lazyReverse","lazyValue","isArr","isRight","arrLength","view","getView","iteratees","iterLength","takeCount","nativeMin","LARGE_ARRAY_SIZE","baseWrapperValue","reverse","outer","iterIndex","LAZY_MAP_FLAG","LAZY_FILTER_FLAG","MapCache","__data__","mapDelete","mapGet","mapHas","mapSet","SetCache","nativeCreate","cacheIndexOf","cachePush","arrayConcat","othIndex","othLength","arrayEach","arrayEachRight","arrayEvery","arrayExtremum","comparator","exValue","arrayFilter","arrayMap","arrayPush","arrayReduce","initFromArray","arrayReduceRight","arraySome","arraySum","assignDefaults","objectValue","sourceValue","assignOwnDefaults","assignWith","customizer","baseAssign","baseCopy","baseAt","isNil","isArrayLike","propsLength","isIndex","baseCallback","thisArg","bindCallback","baseMatches","baseMatchesProperty","baseClone","isDeep","stackA","stackB","initCloneArray","tag","objToString","funcTag","objectTag","argsTag","cloneableTags","initCloneByTag","initCloneObject","baseForOwn","subValue","baseDelay","FUNC_ERROR_TEXT","baseDifference","getIndexOf","isCommon","createCache","valuesLength","valuesIndex","baseEvery","baseEach","baseExtremum","baseFill","baseFilter","baseFind","eachFunc","retKey","baseFlatten","isStrict","baseForIn","baseFor","keysIn","baseForOwnRight","baseForRight","baseFunctions","baseGet","pathKey","toObject","baseIsEqual","isLoose","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","arrayTag","othTag","isTypedArray","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","equalArrays","equalObjects","baseIsMatch","matchData","noCustomizer","objValue","srcValue","baseMap","getMatchData","isKey","isStrictComparable","toPath","baseSlice","baseMerge","isSrcArr","baseMergeDeep","mergeFunc","isPlainObject","toPlainObject","baseProperty","basePropertyDeep","basePullAt","indexes","baseRandom","nativeFloor","nativeRandom","baseReduce","initFromCollection","baseSome","baseSortBy","comparer","baseSortByOrder","getCallback","baseSum","baseUniq","isLarge","baseValues","baseWhile","isDrop","binaryIndex","retHighest","HALF_MAX_ARRAY_LENGTH","binaryIndexBy","valIsNaN","isDef","isReflexive","setLow","MAX_ARRAY_INDEX","bufferClone","composeArgs","holders","holdersLength","argsIndex","nativeMax","leftIndex","leftLength","composeArgsRight","holdersIndex","rightIndex","rightLength","createAggregator","setter","initializer","createAssigner","assigner","restParam","sources","isIterateeCall","createBaseEach","getLength","isLength","iterable","createBaseFor","keysFunc","createBindWrapper","createCtorWrapper","createCompounder","words","deburr","thisBinding","baseCreate","createCurry","flag","curryFunc","arity","createWrapper","createDefaults","createExtremum","toIterable","createFind","createFindIndex","createFindKey","objectFunc","createFlow","funcs","thru","getFuncName","funcName","isLaziable","ARY_FLAG","CURRY_FLAG","PARTIAL_FLAG","REARG_FLAG","plant","createForEach","arrayFunc","createForIn","createForOwn","createObjectMapper","isMapKeys","mapped","createPadDir","createPadding","createPartial","partialFunc","createReduce","createHybridWrapper","bitmask","partialsRight","holdersRight","argPos","ary","isCurry","isCurryRight","argsHolders","newArgPos","newArity","newsHolders","newHoldersRight","newPartials","newPartialsRight","PARTIAL_RIGHT_FLAG","isCurryBound","BIND_FLAG","BIND_KEY_FLAG","newData","setData","isBind","isBindKey","reorder","isAry","CURRY_BOUND_FLAG","CURRY_RIGHT_FLAG","strLength","nativeIsFinite","padLength","repeat","nativeCeil","createPartialWrapper","createRound","methodName","precision","createSortedIndex","mergeData","baseSetData","arrValue","othValue","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","objProps","objLength","skipCtor","objCtor","othCtor","realNames","otherFunc","getNative","isNative","transforms","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","byteOffset","reFlags","exec","invokePath","reIsUint","MAX_SAFE_INTEGER","reIsPlainProp","reIsDeepProp","srcBitmask","newBitmask","isCombo","mergeDefaults","merge","pickByArray","pickByCallback","oldArray","shimKeys","allowIndexes","rePropName","reEscapeChar","dropRight","dropRightWhile","dropWhile","flattenDeep","pull","takeRight","takeRightWhile","takeWhile","unzip","unzipWith","xor","zipObject","wrapperChain","wrapperCommit","wrapperPlant","wrapperReverse","wrapped","wrapperToString","wrapperValue","includes","sortByOrder","cancel","timeoutId","maxTimeoutId","lastCalled","trailingCall","complete","isCalled","delayed","stamp","maxDelayed","debounced","maxWait","leadingCall","resolver","memoized","otherArgs","spread","cloneDeep","gt","gte","propertyIsEnumerable","isMatch","reIsNative","fnToString","reIsHostCtor","typedArrayTags","lt","lte","multiValue","isProto","skipIndexes","nested","transform","valuesIn","inRange","floating","noMin","noMax","capitalize","reLatin1","reComboMark","endsWith","reHasUnescapedHtml","reUnescapedHtml","escapeRegExp","reHasRegExpChars","reRegExpChars","radix","nativeParseInt","reHasHexPrefix","startsWith","otherOptions","isEscaping","isEvaluating","imports","importsKeys","importsValues","reNoMatch","reDelimiters","reInterpolate","reEsTemplate","sourceURL","templateCounter","escapeValue","interpolateValue","esTemplateValue","evaluateValue","reUnescapedString","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","attempt","trimLeft","trimRight","trunc","DEFAULT_TRUNC_LENGTH","omission","DEFAULT_TRUNC_OMISSION","search","newEnd","reHasEscapedHtml","reEscapedHtml","reWords","matchesProperty","isObj","methodNames","oldDash","propertyOf","MAX_ARRAY_LENGTH","augend","addend","sum","contextProps","arrayProto","objectProto","stringProto","WeakMap","nativeNow","NEGATIVE_INFINITY","metaMap","support","reEscape","reEvaluate","baseEachRight","HOT_SPAN","HOT_COUNT","findIndex","findLastIndex","arrays","caches","pullAt","sortedLastIndex","zipWith","wrapperConcat","at","findLast","forEachRight","isProp","sortByAll","bindKey","curry","curryRight","flowRight","modArgs","partialRight","rearg","assign","defaultsDeep","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","mapKeys","mapValues","camelCase","word","kebabCase","padLeft","padRight","snakeCase","startCase","methodOf","round","backflow","eachRight","filtered","isFilter","takeName","dropName","operationName","checkIteratee","retUnwrapped","lodashFunc","isHybrid","isLazy","useLazy","onlyLazy","chainName","commit","run","upper","lower","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","&","<",">",""","'","`","objectTypes","function","0","A","B","C","D","E","F","freeExports","freeModule","freeGlobal","freeSelf","freeWindow","moduleExports","104","isNode","merge_recursive","typeOf","recursive","sitem","Public","105","moment","hooks","hookCallback","isObjectEmpty","hasOwnProp","createUTC","locale","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecateSimple","deprecations","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","calendar","mom","_calendar","longDateFormat","_longDateFormat","formatUpper","invalidDate","_invalidDate","ordinal","_ordinal","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","addUnitPriority","priority","priorities","getPrioritizedUnits","unitsObj","zeroFill","targetLength","forceSign","absNumber","zerosToFill","addFormatToken","padded","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","expandFormat","formatFunctions","replaceLongDateFormatTokens","localFormattingTokens","addRegexToken","strictRegex","regexes","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInYear","getIsLeapYear","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","mod","modMonth","localeMonths","_months","isFormat","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","monthsShort","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","defaultMonthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","createDate","y","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","weekdays","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","defaultWeekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","normalizeLocale","chooseLocale","loadLocale","globalLocale","oldLocale","locales","_abbr","getSetGlobalLocale","getLocale","defineLocale","baseConfig","abbr","parentLocale","localeFamilies","updateLocale","tmpLocale","listLocales","checkOverflow","MONTH","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","w","weekYear","weekdayOverflow","GG","W","createLocal","curWeek","gg","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","extendedIsoRegex","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","defaultLocaleMonthsShort","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","defaultLocaleWeekdaysShort","calculateOffset","obsOffset","militaryOffset","numOffset","obsOffsets","hm","configFromRFC2822","parsedArray","configFromString","aspNetJsonRegex","createFromInputFallback","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","_meridiem","meridiemFixWrap","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","pickBy","moments","isDurationValid","ordering","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","days","seconds","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","utcOffset","sign","offsetFromString","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","matchShortOffset","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","dur","isAdding","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","zone","suffix","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","isoWeekday","unix","isValid$2","parsingFlags","invalidAt","creationData","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","isoWeek","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfYear","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","clone$1","get$2","makeGetter","substituteTimeAgo","relativeTime$1","posNegDuration","thresholds","ss","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","withSuffix","toISOString$1","abs$1","Y","toFixed","total","asSeconds","totalSign","ymSign","daysSign","hmsSign","fun","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","defaultDayOfMonthOrdinalParse","defaultRelativeTime","future","mm","hh","dd","MM","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","parseTwoDigitYear","getSetYear","defaultLocaleMonths","defaultLocaleWeek","defaultLocaleWeekdays","defaultLocaleWeekdaysMin","kInput","_isPm","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","dayOfMonthOrdinalParse","meridiemParse","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","prototypeMin","prototypeMax","invalid","lang","isoWeekYear","getSetDayOfMonth","getSetMinute","getSetSecond","getSetMillisecond","proto","isoWeeks","isoWeeksInYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","firstDayOfYear","firstDayOfWeek","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","106","normalizeArray","allowAboveRoot","basename","matchedSlash","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","ext","extname","startDot","startPart","preDotState","107","defaultDelimiter","PATH_REGEXP","escaped","capture","modifier","asterisk","optional","escapeGroup","escapeString","tokensToFunction","encodeURIComponentPretty","encodeURI","encodeAsterisk","pretty","isarray","attachKeys","sensitive","regexpToRegexp","groups","arrayToRegexp","pathToRegexp","stringToRegexp","tokensToRegExp","route","endsWithDelimiter","108","109","bootstrap","ses","makeQ","previousQ","Q","uncurryThis","isStopIteration","exception","object_toString","QReturnValue","makeStackTraceLong","promise","hasStacks","stacks","__minimumStackCounter__","stackCounter","object_defineProperty","concatedStacks","STACK_JUMP_SEPARATOR","filterStackString","stackString","desiredLines","isInternalFrame","isNodeFrame","stackLine","getFileNameAndLineNumber","attempt1","attempt2","attempt3","fileNameAndLineNumber","fileName","qFileName","qStartingLine","qEndingLine","captureLine","firstLine","isPromiseAlike","fulfill","become","newPromise","resolvedPromise","longStackSupport","array_reduce","promiseDispatch","progressListeners","deferred","object_create","operands","array_slice","nearerValue","nearer","isPromise","longStackCounter","reason","notify","progress","progressListener","race","answerPs","descriptor","fallback","inspected","when","fulfilled","rejected","progressed","isPending","isFulfilled","isRejected","resetUnhandledRejections","unhandledReasons","unhandledRejections","trackUnhandledRejections","trackRejection","runAfter","array_indexOf","reportedUnhandledRejections","untrackRejection","atReport","rejection","rhs","delete","thisp","object_keys","master","dispatch","makeGenerator","continuer","verb","StopIteration","errback","spawn","_return","promised","promises","pendingCount","snapshot","onFulfilled","onRejected","onProgress","allResolved","array_map","allSettled","nodeify","nodeback","flush","task","domain","enter","runSingle","laterQueue","flushing","isNodeJS","requestTick","MessageChannel","channel","port1","onmessage","requestPortTick","port2","basis","Type","object_hasOwnProperty","ReturnValue","Q_DEBUG","makeNodeResolver","passByCopy","makePromise","_fulfilled","_rejected","newException","_progressed","newValue","threw","fcall","thenResolve","thenReject","getUnhandledReasons","stopUnhandledRejectionTracking","mapply","send","mcall","fapply","fbind","alternative","regardless","fin","onUnhandledError","nfapply","nodeArgs","nfcall","nfbind","denodeify","baseArgs","nbind","nmapply","npost","nsend","nmcall","ninvoke","110","safer","Safer","encodingOrOffset","kStringMaxLength","constants","MAX_LENGTH","kMaxLength","MAX_STRING_LENGTH","111","unparse","generate","FAIL","walk","scopeVars","bodies","oldVars","vals","quasis","quasi","strings","cooked","escodegen","112","CodeGenerator","Expression","Statement","getDefaultOptions","indent","adjustMultilineComment","newline","space","json","renumber","hexadecimal","quotes","escapeless","parentheses","semicolons","safeConcatenation","preserveBlankLines","moz","comprehensionExpressionStartsWithAssignment","starlessGenerator","sourceMap","sourceMapRoot","sourceMapWithCode","verbatim","stringRepeat","hasLineTerminator","endsWithLineTerminator","esutils","override","updateDeeply","isHashObject","generateNumber","point","exponent","escapeRegExpCharacter","previousIsBackslash","generateRegExp","reg","characterInBrack","escapeAllowedCharacter","escapeDisallowedCharacter","escapeDirective","single","singleQuotes","doubleQuotes","flattenToString","elem","toSourceNodeWhenNeeded","generated","SourceNode","noEmptySpace","leftSource","rightSource","leftCharCode","rightCharCode","addIndent","stmt","withIndent","previousBase","calculateSpaces","specialBase","spaces","sn","MAX_VALUE","generateComment","addComments","save","tailingToStatement","extRange","prevRange","infix","extendedRange","generateBlankLines","newlineCount","parenthesize","should","generateVerbatimString","generateVerbatim","precedence","Precedence","Sequence","content","generateIdentifier","generateAsyncPrefix","spaceRequired","generateStarSuffix","generateMethodPrefix","generateInternal","codegen","generateStatement","S_TFFF","generateExpression","E_TTT","defaultOptions","toStringWithSourceMap","file","sourceRoot","sourceContent","setSourceContent","BinaryPrecedence","estraverse","FORMAT_MINIFY","FORMAT_DEFAULTS","Yield","Assignment","Conditional","ArrowFunction","LogicalOR","LogicalAND","BitwiseOR","BitwiseXOR","BitwiseAND","Equality","Relational","BitwiseSHIFT","Additive","Multiplicative","Exponentiation","Await","Unary","Postfix","Call","New","TaggedTemplate","Member","Primary","||","&&","|","^","==","!=","===","!==","is","isnt","<=",">=","in","instanceof","<<",">>",">>>","+","-","*","%","/","**","F_ALLOW_IN","maybeBlock","noLeadingComment","maybeBlockSuffix","ends","generatePattern","generateFunctionParams","hasDefault","ArrowFunctionExpression","generateAssignment","generateFunctionBody","generateIterationForStatement","await","generatePropertyKey","semicolon","bodyFlags","ClassBody","ClassDeclaration","DirectiveStatement","ExportDefaultDeclaration","declaration","ExportNamedDeclaration","specifiers","ExportBatchSpecifier","ExportAllDeclaration","ImportDeclaration","cursor","ImportDefaultSpecifier","ImportNamespaceSpecifier","itemFlags","F_ALLOW_CALL","semicolonOptional","ForOfStatement","leftPrecedence","rightPrecedence","currentPrecedence","MetaProperty","YieldExpression","AwaitExpression","ArrayPattern","isPattern","RestElement","ClassExpression","MethodDefinition","AssignmentPattern","ObjectPattern","Super","ImportSpecifier","imported","ExportSpecifier","exported","GeneratorExpression","ComprehensionExpression","blocks","ComprehensionBlock","of","SpreadElement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ModuleSpecifier","ImportExpression","replaceRight","attachComments","./package.json","source-map","113","_args","_from","_id","_inBundle","_integrity","_location","_phantomChildren","_requested","registry","escapedName","rawSpec","saveSpec","fetchSpec","_requiredBy","_resolved","_spec","_where","bin","esgenerate","bugs","optionator","devDependencies","acorn","bluebird","bower-registry-client","chai","commonjs-everywhere","gulp","gulp-eslint","gulp-mocha","semver","engines","files","homepage","license","maintainers","optionalDependencies","repository","scripts","build","build-min","lint","release","unit-test","114","deepCopy","upperBound","Reference","Element","Controller","isProperty","visitor","extendCommentRange","tree","providedComments","VisitorOption","Break","Skip","leave","VisitorKeys","BREAK","SKIP","REMOVE","Remove","addToPath","jz","__current","__leavelist","parents","__execute","__state","skip","__initialize","__worklist","__fallback","__keys","worklist","leavelist","current2","candidates","candidate","sentinel","removeElem","nextElem","cloneEnvironment","115","babel-preset-env","babel-register","espree","gulp-bump","gulp-filter","gulp-git","gulp-tag-version","jshint","mocha","116","ArraySet","_array","hasNativeMap","Map","fromArray","aArray","aAllowDuplicates","aStr","sStr","toSetString","isDuplicate","aIdx","117","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","digit","encoded","vlq","VLQ_BASE","aIndex","aOutParam","continuation","./base64","118","intToCharMap","119","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","LEAST_UPPER_BOUND","GREATEST_LOWER_BOUND","120","generatedPositionAfter","mappingA","mappingB","lineA","generatedLine","lineB","columnA","generatedColumn","columnB","compareByGeneratedPositionsInflated","MappingList","_sorted","_last","unsortedForEach","aCallback","aThisArg","aMapping","121","randomIntInRange","doQuickSort","pivotIndex","pivot","q","quickSort","122","SourceMapConsumer","aSourceMap","aSourceMapURL","parseSourceMapInput","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","getArg","sourcesContent","mappings","_version","_names","_sources","_absoluteSources","computeSourceURL","_mappings","_sourceMapURL","Mapping","originalLine","originalColumn","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","consumer","binarySearch","base64VLQ","fromSourceMap","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","aContext","aOrder","_generatedMappings","_originalMappings","mapping","allGeneratedPositionsFor","aArgs","needle","_findSourceIndex","_findMapping","compareByOriginalPositions","lastColumn","aSource","relativeSource","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","compareByGeneratedPositionsDeflated","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","nextMapping","lastGeneratedColumn","originalPositionFor","hasContentsOfAllSources","sc","sourceContentFor","nullOnMissing","urlParse","fileUriAbsPath","scheme","generatedPositionFor","sectionIndex","section","bias","generatedPosition","sectionMappings","adjustedMapping","./array-set","./base64-vlq","./binary-search","./quick-sort","123","SourceMapGenerator","_sourcesContents","aSourceMapConsumer","newMapping","addMapping","sourceFile","sourceRelative","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aName","_serializeMappings","nameIdx","sourceIdx","previousGeneratedLine","aSources","./mapping-list","124","aLine","aColumn","aChunks","children","sourceContents","isSourceNode","REGEX_NEWLINE","fromStringWithSourceMap","aGeneratedCode","aRelativePath","addMappingWithCode","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","aChunk","prepend","aFn","aSep","newChildren","aPattern","aReplacement","walkSourceContents","fromSetString","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","./source-map-generator","125","aDefaultValue","aUrl","urlRegexp","auth","host","port","urlGenerate","aParsedUrl","aPath","aRoot","aPathUrl","aRootUrl","dataUrlRegexp","joined","isProtoString","onlyCompareOriginal","strcmp","onlyCompareGenerated","aStr1","aStr2","sourceMapURL","parsed","supportsNullProto","126","./lib/source-map-consumer","./lib/source-map-generator","./lib/source-node","127","mock","superagent","_patchedBySuperagentMocker","methodsMapping","httpMethod","patch","reqProto","Request","oldEnd","originalMethods","_superagentMockerState","request","response","status","ex","oldSet","headers","oldSend","mergeObjects","oldQuery","objectOrString","parseQueryString","stringifyValues","routes","defineRoute","Route","old","orig","oldObj","pathtoRegexp","clearRoutes","clearRoute","unmock","req","path-to-regexp","128","Agent","_defaults","_setDefaults","def","129","pushEncodedKeyValuePair","subkey","parseString","parseHeader","fields","isJSON","mime","Response","xhr","responseType","responseText","statusText","_setStatusProperties","header","getAllResponseHeaders","getResponseHeader","_setHeaderProperties","_responseType","_parseBody","_query","_header","rawResponse","new_err","_isResponseOK","custom_err","RequestBase","ResponseBase","getXHR","XMLHttpRequest","location","protocol","ActiveXObject","serializeObject","html","xml","urlencoded","form","form-data","application/x-www-form-urlencoded","application/json","_parser","toError","accept","user","btoa","_auth","attach","_getFormData","append","_formData","FormData","_shouldRetry","_retry","_callback","_maxRetries","retries","_retries","crossDomainError","crossDomain","ca","agent","_isHost","_endCalled","_finalizeQueryString","_end","_setTimeouts","onreadystatechange","readyState","_responseTimeoutTimer","timedout","_aborted","handleProgress","percent","loaded","onprogress","upload","username","password","open","_withCredentials","withCredentials","contentType","_serializer","setRequestHeader","./agent-base","./is-object","./request-base","./response-base","component-emitter","130","131","_timer","_timeout","_responseTimeout","option","deadline","retry","_retryCallback","ERROR_CODES","_fullfilledPromise","innerResolve","innerReject","use","_okCallback","getHeader","unset","abort","base64Encoder","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","sortQuery","_sort","queryArr","_appendQueryString","_timeoutError","errno","132","utils","ct","links","link","parseLinks","statusType","info","redirect","clientError","serverError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","./utils","133","cleanHeader","changesOrigin","134","sets","_key","xl","subexp","setInterval","buildExps","isIRI","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","UCSCHAR$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","DIGIT$$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","error$1","mapDomain","regexSeparators","ucs2decode","counter","pctEncChar","pctDecChars","newStr","il","c2","_c","c3","_normalizeComponentEncoding","components","decodeUnreserved","decStr","userinfo","_stripLeadingZeros","_normalizeIPv4","_matches","slicedToArray","_normalizeIPv6","_matches2","_address$toLowerCase$","_address$toLowerCase$2","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","allZeroFields","lastLongest","longestZeroFields","newHost","newFirst","newLast","uriString","iri","IRI_PROTOCOL","URI_PROTOCOL","reference","URI_PARSE","NO_MATCH_IS_UNDEFINED","schemeHandler","SCHEMES","unicodeSupport","domainHost","punycode","toASCII","_recomposeAuthority","uriTokens","$1","$2","removeDotSegments","RDS1","RDS2","RDS3","im","RDS5","toUnicode","authority","absolutePath","resolveComponents","skipNormalization","baseURI","relativeURI","schemelessOptions","uriA","uriB","escapeComponent","unescapeComponent","sliceIterator","_n","_e","_s","Symbol","iterator","toConsumableArray","maxInt","regexPunycode","regexNonASCII","not-basic","invalid-input","stringFromCharCode","ucs2encode","basicToDigit","codePoint","digitToBasic","adapt","delta","numPoints","baseMinusTMin","inputLength","basic","oldi","baseMinusT","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","basicLength","handledCPCount","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","currentValue","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","qMinusT","handler$1","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$2","mailtoComponents","unknownHeaders","hfields","hfield","toAddrs","_xl","_xl2","toAddr","atIdx","localPart","URN_PARSE","handler$3","urnComponents","nid","nss","urnScheme","uriComponents","handler$4","uuidComponents","135","isUTF8","charset","encodeStr","qs","maxKeys","kstr","vstr","isASCII","encodeComponent","stringifyString","stringifyArray","stringifyObject","iconv-lite","136","_createClass","defineProperties","protoProps","staticProps","_q","_q2","_httpStatusCodes","_httpStatusCodes2","GenericFinder","ogapi","entity","error_not_found","_api","Napi","_baseUrl","_entity","_error_not_found","_headers","_urlParameters","parameters","defered","_composeUrl","_getExtraHeaders","_getUrlParameters","provision","http-status-codes","137","_operationsOperations","_operationsOperations2","_usersUserFinder","_usersUserFinder2","_securityCertificates","_securityCertificates2","_usersUsers","_usersUsers2","_organizationsOrganizationFinder","_organizationsOrganizationFinder2","_channelsChannelFinder","_channelsChannelFinder2","_searchingBuilderAreasSearchBuilder","_searchingBuilderAreasSearchBuilder2","_searchingBuilderDatasetsCatalogSearchBuilder","_searchingBuilderDatasetsCatalogSearchBuilder2","_areasAreaFinder","_areasAreaFinder2","_searchingBuilderBulkSearchBuilder","_searchingBuilderBulkSearchBuilder2","_searchingBuilderBulkExecutionSearchBuilder","_searchingBuilderBulkExecutionSearchBuilder2","_bulkBulkFinder","_bulkBulkFinder2","_bulkBulkExecutionFinder","_bulkBulkExecutionFinder2","_channelsChannels","_channelsChannels2","_areasAreas","_areasAreas2","_searchingBuilderChannelsSearchBuilder","_searchingBuilderChannelsSearchBuilder2","_rulesConfigurationRuleConfigurations","_rulesConfigurationRuleConfigurations2","_rulesConfigurationRuleConfigurationsFinder","_rulesConfigurationRuleConfigurationsFinder2","_rulesConfigurationRuleConfigurationsCatalog","_rulesConfigurationRuleConfigurationsCatalog2","_securityCertificateFinder","_securityCertificateFinder2","_operationsOperationFinder","_operationsOperationFinder2","_searchingFilterBuilder","_searchingFilterBuilder2","_searchingSelectBuilder","_searchingSelectBuilder2","_operationsOperationActions","_operationsOperationActions2","_operationsPeriodicityActions","_operationsPeriodicityActions2","_utilExpression","_utilExpression2","_utilSelectElement","_utilSelectElement2","_searchingQuickSearch","_searchingQuickSearch2","_searchingBuilderRawSearchBuilder","_searchingBuilderRawSearchBuilder2","_searchingBuilderDevicesSearchBuilder","_searchingBuilderDevicesSearchBuilder2","_searchingBuilderSubscribersSearchBuilder","_searchingBuilderSubscribersSearchBuilder2","_searchingBuilderSubscriptionsSearchBuilder","_searchingBuilderSubscriptionsSearchBuilder2","_searchingBuilderAssetsSearchBuilder","_searchingBuilderAssetsSearchBuilder2","_searchingBuilderTicketsSearchBuilder","_searchingBuilderTicketsSearchBuilder2","_searchingBuilderTasksSearchBuilder","_searchingBuilderTasksSearchBuilder2","_searchingBuilderOperationsSearchBuilder","_searchingBuilderOperationsSearchBuilder2","_searchingBuilderExecutionsSearchBuilder","_searchingBuilderExecutionsSearchBuilder2","_searchingBuilderAlarmsSearchBuilder","_searchingBuilderAlarmsSearchBuilder2","_searchingBuilderDatamodelsSearchBuilder","_searchingBuilderDatamodelsSearchBuilder2","_searchingBuilderFeedsSearchBuilder","_searchingBuilderFeedsSearchBuilder2","_searchingBuilderDatastreamsSearchBuilder","_searchingBuilderDatastreamsSearchBuilder2","_searchingBuilderDatapointsSearchBuilder","_searchingBuilderDatapointsSearchBuilder2","_searchingBuilderBundlesSearchBuilder","_searchingBuilderBundlesSearchBuilder2","_searchingBuilderCertificatesSearchBuilder","_searchingBuilderCertificatesSearchBuilder2","_searchingBuilderHardwaresSearchBuilder","_searchingBuilderHardwaresSearchBuilder2","_searchingBuilderSoftwaresSearchBuilder","_searchingBuilderSoftwaresSearchBuilder2","_searchingBuilderOperationalStatusSearchBuilder","_searchingBuilderOperationalStatusSearchBuilder2","_searchingBuilderServiceGroupSearchBuilder","_searchingBuilderServiceGroupSearchBuilder2","_searchingBuilderAdministrativeStateSearchBuilder","_searchingBuilderAdministrativeStateSearchBuilder2","_searchingBuilderCommunicationsModuleTypeSearchBuilder","_searchingBuilderCommunicationsModuleTypeSearchBuilder2","_searchingBuilderFieldsDefinitionSearchBuilder","_searchingBuilderFieldsDefinitionSearchBuilder2","_searchingBuilderBasicTypesSearchBuilder","_searchingBuilderBasicTypesSearchBuilder2","_searchingBuilderMobilePhoneProviderSearchBuilder","_searchingBuilderMobilePhoneProviderSearchBuilder2","_searchingBuilderIoTDatastreamPeriodSearchBuilder","_searchingBuilderIoTDatastreamPeriodSearchBuilder2","_searchingBuilderResourceTypeSearchBuilder","_searchingBuilderResourceTypeSearchBuilder2","_searchingBuilderAllowedResourceTypeSearchBuilder","_searchingBuilderAllowedResourceTypeSearchBuilder2","_searchingBuilderIoTDatastreamAccessSearchBuilder","_searchingBuilderIoTDatastreamAccessSearchBuilder2","_searchingBuilderIoTDatastreamStoragePeriodSearchBuilder","_searchingBuilderIoTDatastreamStoragePeriodSearchBuilder2","_searchingBuilderTicketSeveritySearchBuilder","_searchingBuilderTicketSeveritySearchBuilder2","_searchingBuilderTicketPrioritySearchBuilder","_searchingBuilderTicketPrioritySearchBuilder2","_searchingBuilderTicketStatusSearchBuilder","_searchingBuilderTicketStatusSearchBuilder2","_searchingBuilderRuleConfigurationSeveritySearchBuilder","_searchingBuilderRulesSearchBuilder","_searchingBuilderRulesSearchBuilder2","_searchingBuilderUsersSearchBuilder","_searchingBuilderUsersSearchBuilder2","_searchingBuilderDomainsSearchBuilder","_searchingBuilderDomainsSearchBuilder2","_searchingBuilderPlansSearchBuilder","_searchingBuilderPlansSearchBuilder2","_bundlesBundles","_bundlesBundles2","_bundlesBundleFinder","_bundlesBundleFinder2","_organizationsOrganizations","_organizationsOrganizations2","_domainsDomains","_domainsDomains2","_domainsDomainsFinder","_domainsDomainsFinder2","_entitiesDeviceFinder","_entitiesDeviceFinder2","_entitiesTicketFinder","_entitiesTicketFinder2","_entitiesSubscriptionsFinder","_entitiesSubscriptionsFinder2","_entitiesSubscribersFinder","_entitiesSubscribersFinder2","_collectionDevicesDeviceMessage","_collectionDevicesDeviceMessage2","_collectionDevicesCollectDatastreams","_collectionDevicesCollectDatastreams2","_collectionDevicesCollectDatapoint","_collectionDevicesCollectDatapoint2","_collectionDevicesCollectHardware","_collectionDevicesCollectHardware2","_collectionDevicesCollectSoftware","_collectionDevicesCollectSoftware2","_collectionDevicesCollectStorage","_collectionDevicesCollectStorage2","_collectionDevicesCollectUsage","_collectionDevicesCollectUsage2","_collectionDevicesCollectPowerSupply","_collectionDevicesCollectPowerSupply2","_collectionDevicesCollectCommsModuleMessage","_collectionDevicesCollectCommsModuleMessage2","_collectionDevicesCollectMobile","_collectionDevicesCollectMobile2","_collectionDevicesCollectSubscriber","_collectionDevicesCollectSubscriber2","_collectionDevicesCollectSubscription","_collectionDevicesCollectSubscription2","_workgroupsWorkgroupRelations","_workgroupsWorkgroupRelations2","_workgroupsWorkgroups","_workgroupsWorkgroups2","_workgroupsWorkgroupFinder","_workgroupsWorkgroupFinder2","_searchingBuilderWorkgroupsSearchBuilder","_searchingBuilderWorkgroupsSearchBuilder2","_workgroupsWorkgroupRelationsFinder","_workgroupsWorkgroupRelationsFinder2","_searchingBuilderUserProfilesSearchBuilder","_searchingBuilderUserProfilesSearchBuilder2","_iotDatamodelsDatamodels","_iotDatamodelsDatamodels2","_iotDatamodelsDatamodelsHelper","_iotDatamodelsDatamodelsHelper2","_iotDatamodelsDatamodelsFinder","_iotDatamodelsDatamodelsFinder2","_iotCatalogDatastream","_iotCatalogDatastream2","_iotCatalogQrating","_iotCatalogQrating2","_provisionEntitiesEntityBuilder","_provisionEntitiesEntityBuilder2","_provisionBulkBulkExecutionBuilder","_provisionBulkBulkExecutionBuilder2","_searchingBuilderEntitiesSearchBuilder","_searchingBuilderEntitiesSearchBuilder2","_searchingBuilderDatasetEntitiesSearchBuilder","_searchingBuilderDatasetEntitiesSearchBuilder2","_searchingBuilderCountryCodesSearchBuilder","_searchingBuilderCountryCodesSearchBuilder2","_searchingBuilderTimezoneSearchBuilder","_searchingBuilderTimezoneSearchBuilder2","_searchingBuilderUserLanguagesSearchBuilder","_searchingBuilderUserLanguagesSearchBuilder2","_provisionProcessorsProvisionProcessors","_provisionProcessorsProvisionProcessors2","_provisionProcessorsProvisionProcessorsFinder","_provisionProcessorsProvisionProcessorsFinder2","_entitiesEntityFinder","_entitiesEntityFinder2","_alarmsAlarmActions","_alarmsAlarmActions2","_superagent2","_superagent3","RequestEndMonkeyPatching","beforeStart","InternalOpenGateAPI","northAmpliaREST","southAmpliaREST","Sapi","EX","SE","operations","alarms","entityBuilder","organization","ruleConfigObj","dataset","operationId","taskId","datamodel","processorId","./alarms/AlarmActions","./areas/AreaFinder","./areas/Areas","./bulk/BulkExecutionFinder","./bulk/BulkFinder","./bundles/BundleFinder","./bundles/Bundles","./channels/ChannelFinder","./channels/Channels","./collection/devices/DeviceMessage","./collection/devices/collect/CommsModuleMessage","./collection/devices/collect/Datapoint","./collection/devices/collect/Datastreams","./collection/devices/collect/Hardware","./collection/devices/collect/Mobile","./collection/devices/collect/PowerSupply","./collection/devices/collect/Software","./collection/devices/collect/Storage","./collection/devices/collect/Subscriber","./collection/devices/collect/Subscription","./collection/devices/collect/Usage","./domains/Domains","./domains/DomainsFinder","./entities/DeviceFinder","./entities/EntityFinder","./entities/SubscribersFinder","./entities/SubscriptionsFinder","./entities/TicketFinder","./iot/catalog/Datastream","./iot/catalog/Qrating","./iot/datamodels/Datamodels","./iot/datamodels/DatamodelsFinder","./iot/datamodels/DatamodelsHelper","./operations/OperationActions","./operations/OperationFinder","./operations/Operations","./operations/PeriodicityActions","./organizations/OrganizationFinder","./organizations/Organizations","./provision/bulk/BulkExecutionBuilder","./provision/entities/EntityBuilder","./provisionProcessors/provisionProcessors","./provisionProcessors/provisionProcessorsFinder","./rulesConfiguration/RuleConfigurations","./rulesConfiguration/RuleConfigurationsCatalog","./rulesConfiguration/RuleConfigurationsFinder","./searching/FilterBuilder","./searching/QuickSearch","./searching/SelectBuilder","./searching/builder/AdministrativeStateSearchBuilder","./searching/builder/AlarmsSearchBuilder","./searching/builder/AllowedResourceTypeSearchBuilder","./searching/builder/AreasSearchBuilder","./searching/builder/AssetsSearchBuilder","./searching/builder/BasicTypesSearchBuilder","./searching/builder/BulkExecutionSearchBuilder","./searching/builder/BulkSearchBuilder","./searching/builder/BundlesSearchBuilder","./searching/builder/CertificatesSearchBuilder","./searching/builder/ChannelsSearchBuilder","./searching/builder/CommunicationsModuleTypeSearchBuilder","./searching/builder/CountryCodesSearchBuilder","./searching/builder/DatamodelsSearchBuilder","./searching/builder/DatapointsSearchBuilder","./searching/builder/DatasetEntitiesSearchBuilder","./searching/builder/DatasetsCatalogSearchBuilder","./searching/builder/DatastreamsSearchBuilder","./searching/builder/DevicesSearchBuilder","./searching/builder/DomainsSearchBuilder","./searching/builder/EntitiesSearchBuilder","./searching/builder/ExecutionsSearchBuilder","./searching/builder/FeedsSearchBuilder","./searching/builder/FieldsDefinitionSearchBuilder","./searching/builder/HardwaresSearchBuilder","./searching/builder/IoTDatastreamAccessSearchBuilder","./searching/builder/IoTDatastreamPeriodSearchBuilder","./searching/builder/IoTDatastreamStoragePeriodSearchBuilder","./searching/builder/MobilePhoneProviderSearchBuilder","./searching/builder/OperationalStatusSearchBuilder","./searching/builder/OperationsSearchBuilder","./searching/builder/PlansSearchBuilder","./searching/builder/RawSearchBuilder","./searching/builder/ResourceTypeSearchBuilder","./searching/builder/RuleConfigurationSeveritySearchBuilder","./searching/builder/RulesSearchBuilder","./searching/builder/ServiceGroupSearchBuilder","./searching/builder/SoftwaresSearchBuilder","./searching/builder/SubscribersSearchBuilder","./searching/builder/SubscriptionsSearchBuilder","./searching/builder/TasksSearchBuilder","./searching/builder/TicketPrioritySearchBuilder","./searching/builder/TicketSeveritySearchBuilder","./searching/builder/TicketStatusSearchBuilder","./searching/builder/TicketsSearchBuilder","./searching/builder/TimezoneSearchBuilder","./searching/builder/UserLanguagesSearchBuilder","./searching/builder/UserProfilesSearchBuilder","./searching/builder/UsersSearchBuilder","./searching/builder/WorkgroupsSearchBuilder","./security/CertificateFinder","./security/Certificates","./users/UserFinder","./users/Users","./util/Expression","./util/SelectElement","./workgroups/WorkgroupFinder","./workgroups/WorkgroupRelations","./workgroups/WorkgroupRelationsFinder","./workgroups/Workgroups","138","_GenericFinder2","_GenericFinder3","ProvisionGenericFinder","_GenericFinder","./GenericFinder","139","_actionsAlarmAttendBuilder","_actionsAlarmAttendBuilder2","_actionsAlarmCloseBuilder","_actionsAlarmCloseBuilder2","AlarmActions","_ogapi","./actions/AlarmAttendBuilder","./actions/AlarmCloseBuilder","140","Operation","resource","postObj","_resource","_postObj","_this","141","_Alarm","_Alarm2","AlarmActionBuilder","_action","_build","notes","alarmId","./Alarm","142","_AlarmActionBuilder2","_AlarmActionBuilder3","AlarmAttendBuilder","_AlarmActionBuilder","./AlarmActionBuilder","143","AlarmCloseBuilder","144","_ProvisionGenericFinder2","_ProvisionGenericFinder3","AreaFinder","_ProvisionGenericFinder","_checkString","_organization","_identifier","_execute","parameter","../ProvisionGenericFinder","145","_TYPE_ENUM","_provisionBaseProvision","_provisionBaseProvision2","_utilFormatsCheck_types","_utilFormatsCheck_types2","Areas","_BaseProvision","_name","_description","_checkNumber","_order","coordinates","_checkType","TYPE_ENUM","_checkArray","_type","_coordinates","entities","_entities","geometry","area","../provision/BaseProvision","../util/formats/check_types","./TYPE_ENUM","146","147","MIME_TYPES_ENUM","BulkExecutionFinder","_details","mimetype","not_found","mime_type","_setExtraHeaders","_download","../GenericFinder","148","BulkFinder","_raw","_setUrlParameters","149","ACTION_ENUM","150","BundleFinder","151","_ACTION_ENUM","_deploymentDeploymentElement","_deploymentDeploymentElement2","Bundles","hardware","_hardware","workgroup","_workgroup","preaction","_preaction","_checkActions","postactions","_postaction","userNotes","_userNotes","active","_active","bundle","postaction","_buildURL","progressEvent","_deploymentElements","newDE","_parent","totalTB","de","_validators","_allPromisesOk","onCreateBundle","bundleLocation","dePromises","deTmp","deploy","activate","onCreateBundleError","_this2","newBundleFinder","findByNameAndVersion","bundleUpdate","_composeElement","./ACTION_ENUM","./deployment/DeploymentElement","152","_OPERATION_ENUM","_OPTION_ENUM","_TYPE_VALIDATORS_ENUM","_MODE_VALIDATORS_ENUM","DeploymentElement","_progressEvent","_operation","_option","_fileName","_downloadUrl","_oldName","_oldVersion","_oldPath","allowed","OPERATION_ENUM","OPTION_ENUM","validators","validator","validatorsArray","trustedBootExists","_checkValidator","validatorElement","MODE_VALIDATORS_ENUM","TYPE_VALIDATORS_ENUM","downloadUrl","rawFile","_rawFile","fileValidationRequired","deploymentElement","oldName","oldVersion","oldPath","blob","Blob","petitionOpts","post_multipart","_composeUrlCreate","createWithFile","../../provision/BaseProvision","./MODE_VALIDATORS_ENUM","./OPERATION_ENUM","./OPTION_ENUM","./TYPE_VALIDATORS_ENUM","153","154","155","156","157","158","ChannelFinder","_domain","_executeWorkgroupRelation","globalData","finalData","channels","workgroupsRelationsUrl","workgroupRelation","159","Channels","certificate","_certificates","_checkRequiredParameters","certificates","160","_collectEvent","_collectEvent2","_devicesCollectDatastreams","_devicesCollectDatastreams2","DeviceMessage","_Event","_iotMessage","_dmmMessage","_dataStreamVersion","_deviceId","_datastreams","deviceId","datastream","composeElement","device","datastreams","boxPromises","_buildIotURL","_composeIotMessage","_buildDmmURL","_composeDmmMessage","errores","../devices/collect/Datastreams","./collect/Event","161","_enumANTENNA_STATUS_ENUM","_Hardware","_Hardware2","_Software","_Software2","_Mobile","_Mobile2","_Subscriber","_Subscriber2","_Subscription","_Subscription2","CommsModuleMessage","_operationalStatus","_antennaStatus","_softwareList","_mobile","_subscriber","_subscription","operationalStatus","operationalStatusSearchBuilder","withEntityType","withId","execute","antennaStatus","_checkValues","ANTENNA_STATUS_ENUM","software","mobile","subscriber","subscription","enumName","commsModule","softwareList","./Hardware","./Mobile","./Software","./Subscriber","./Subscription","./enum/ANTENNA_STATUS_ENUM","162","Datapoint","_at","_value","_tags","tags","163","_Datapoint","_Datapoint2","Datastream","_feed","_datapoints","feed","datapoint","datapoints","./Datapoint","164","_Usage","_Usage2","_Storage","_Storage2","_PowerSupply","_PowerSupply2","_CommsModuleMessage","_CommsModuleMessage2","_enumTEMPERATURE_STATUS_ENUM","_enumLEVEL_TREND_ENUM","Event","_event_id","_temperature","_cpuUsage","_ram","_volatilStorage","_nonVolatilStorage","_powerSupply","_upTime","_communicationsModulesList","latitude","longitude","currentTemperature","unitTemperature","TEMPERATURE_STATUS_ENUM","trend","LEVEL_TREND_ENUM","averageTemperature","average","minimumTemperature","maximumTemperature","cpuUsage","ram","volatilStorage","nonVolatilStorage","powerSupply","communicationsModules","upTime","temperature","./CommsModuleMessage","./PowerSupply","./Storage","./Usage","./enum/LEVEL_TREND_ENUM","./enum/TEMPERATURE_STATUS_ENUM","165","Hardware","_serialnumber","_manufacturerName","_manufacturerOui","_modelName","_modelVersion","_clockDate","serialnumber","manufacturerName","manufacturerOui","modelName","modelVersion","clockDate","_isValidDate","thisYear","manufacturer","oui","166","Mobile","_mr","_apn","_bcch","_cgi","_cellId","_lac","_ratType","_plmn","_timingAdvance","_signalStrength","_signalStrengthMax","_signalStrengthMin","_signalQuality","_signalQualityMax","_signalQualityMin","mr","apn","bcch","cgi","cellId","lac","ratType","plmn","timingAdvance","signalStrength","signalStrengthMax","signalStrengthMin","signalQuality","signalQualityMax","signalQualityMin","167","_enumPOWER_SUPPLY_SOURCE_ENUM","_enumBATTERY_CHARGE_STATUS_ENUM","_enumBATTERY_CHARGE_LEVEL_STATUS_ENUM","PowerSupply","_source","_status","_trend","_batteryStatus","_percentage","_outageDate","_outageDuration","POWER_SUPPLY_SOURCE_ENUM","BATTERY_CHARGE_STATUS_ENUM","BATTERY_CHARGE_LEVEL_STATUS_ENUM","percentage","outageDate","batteryChargeLevel","outage","./enum/BATTERY_CHARGE_LEVEL_STATUS_ENUM","./enum/BATTERY_CHARGE_STATUS_ENUM","./enum/POWER_SUPPLY_SOURCE_ENUM","168","_enumSOFTWARE_TYPE_ENUM","Software","_date","SOFTWARE_TYPE_ENUM","./enum/SOFTWARE_TYPE_ENUM","169","_Usage3","Storage","_unit","_total","usage","170","Subscriber","171","_enumADDRESS_TYPE_ENUM","Subscription","_operator","_imsi","_msisdn","_addressType","_addressValue","_addressApn","imsi","msisdn","addressType","ADDRESS_TYPE_ENUM","addressValue","addressApn","./enum/ADDRESS_TYPE_ENUM","172","Usage","_usageUnit","_current","_average","_maximum","_minimum","173","174","175","176","177","178","179","180","181","Domains","parentDomain","_parentDomain","182","DomainFinder","hierarchy","_hierarchy","183","_EntityFinder2","_EntityFinder3","DeviceFinder","_EntityFinder","./EntityFinder","184","EntityFinder","entitySource","_entitySource","_flattened","flattened","185","SubscribersFinder","186","SubscriptionsFinder","187","TicketFinder","188","_Datastream","Category","_isValidString","_errors","addDatastream","param_name","max_length","./Datastream","189","_ajv","_ajv2","_period","qrating","_qrating","_storage","access","_access","hardwaresIds","_hardwares","errValidation","storage","hardwareIds","190","Qrating","_isValidNumber","_minRequired","_minDesired","_ideal","_maxDesired","_maxAllowed","maxScore","_maxScore","cumulativePeriodDivisor","_cumulativePeriodDivisor","conversionMatrix","_conversionMatrix","min_required","min_desired","ideal","max_desired","max_allowed","max_score","cumulative_period_divisor","conversion_matrix","191","_catalogCategory","_catalogCategory2","_catalogDatastream","PRE_RESOURCE","DATAMODELS_RESOURCE","Datamodels","_categories","_resourceType","resourceType","category","_category","withName","addDatastreams","exists_category","allowedResourceTypes","categories","../catalog/Category","../catalog/Datastream","192","DATAMODEL_RESOURCE","DatamodelsFinder","../../ProvisionGenericFinder","193","POST_RESOURCE","DatamodelsHelper","_datamodel","remove_index","id_datastream","remove_category_index","remove_datastream_index","category_index","datastream_index","old_category","new_category","old_category_index","new_category_index","update_category_index","update_datastream_index","_datastream","194","_moment","_moment2","OperationActions","_operationId","_update","_cancel","_periodicityActions","schedule","_readAndUpdate","_formatError","newOperationFinder","findById","periodicityId","forceToActivate","_this3","195","_x4","_x5","OperationFinder","_limit","base_url","196","_catalogBaseOperationBuilder","_catalogBaseOperationBuilder2","_catalogPeriodPeriodicityUpdateBuilder","_catalogPeriodPeriodicityUpdateBuilder2","_merge","_merge2","Operations","_operations","_operationNames","findPeriodicityById","_createPeriodicBuilder","opN","_findOperation","_loadOperationCatalog","_createBuilder","rawSearchBuilder","./catalog/BaseOperationBuilder","./catalog/period/PeriodicityUpdateBuilder","197","PeriodicityActions","_taskId","findPeriodicityByPeriodicityId","198","AppendEntitiesBy","_filter","entityType","applicableTo","_entityTypeWhenFilter","_filterTemplate","entitiesWithParameters","_tag","199","_Operation","_Operation2","_parametersParameterBuilderFactory","_AppendEntitiesBy","_AppendEntitiesBy2","_periodExecuteEachBuilder","_periodExecuteEachBuilder2","_periodExecuteEveryBuilder","_periodExecuteEveryBuilder2","_utilDATE_FORMAT","VALIDATE","editable","BaseOperationBuilder","appendEntitiesBy","_resourcesAvailables","job","operationParameters","ackTimeout","retriesDelay","scattering","maxSpread","factor","warningMaxRate","strategy","_getName","_getEnd","apiKey","_addSpecificParameter","retriesNumber","_checkMandatoryParameters","executeImmediately","jobTimeout","repeating","maxJobTimeout","withJobTimeout","_convertToTask","_convertToJob","jobObj","taskObj","DATE_FORMAT","stopDate","paramName","configParam","attr","attributes","./../../util/DATE_FORMAT","./AppendEntitiesBy","./Operation","./parameters/ParameterBuilderFactory","./period/ExecuteEachBuilder","./period/ExecuteEveryBuilder","200","201","_defineProperty","BaseParameterBuilderWithParent","_appendParameterValue","_isTypeValueAllow","_isAllowValue","_getType","subtype","_isArray","_isString","_isDate","_isTime","_isObject","_isNumber","_isBoolean","isAllowed","paramObject","202","_BaseParameterBuilderWithParent","ParameterBuilderFactory","./BaseParameterBuilderWithParent","203","DAYS_ENUM","204","ExecuteEachBuilder","periodicityName","_skeleton","_stop","executions","startDate","_minutes","_addPeriod","_hours","skeleton","205","_MONTHS_ENUM","_patternByWeek","_patternByWeek2","_patternByYear","_patternByYear2","_patternByMonth","_patternByMonth2","_patternByGeneric","_patternByGeneric2","ExecuteEveryBuilder","_day","_periodicityName","_task","monthly","MONTHS_ENUM","./MONTHS_ENUM","./pattern/ByGeneric","./pattern/ByMonth","./pattern/ByWeek","./pattern/ByYear","206","207","_ExecuteEveryBuilder","_ExecuteEveryBuilder2","_ExecuteEachBuilder","_ExecuteEachBuilder2","PeriodicityUpdateBuilder","task_id","_getStart","_byGeneric","_updateTask","../Operation","./../../../util/DATE_FORMAT","./ExecuteEachBuilder","./ExecuteEveryBuilder","208","ByGeneric","TIME_FORMAT","_create","./../../../../util/DATE_FORMAT","209","_ByGeneric2","_ByGeneric3","ByMonth","_ByGeneric","./ByGeneric","210","_DAYS_ENUM","ByWeek","weekly","./../DAYS_ENUM","211","ByYear","yearly","_month","./../MONTHS_ENUM","212","OrganizationFinder","organizations","213","Organizations","_countryCode","_langCode","_timeZone","_zoom","countryCode","langCode","plan","_plan","onlyDomainCerts","_onlyDomainCerts","zoom","_mapDefault","updateData","timezone","onlyAssignedDomainCertificates","mapDefault","214","BaseProvision","requiredParameters","_requiredParameters","parametersNotFound","_postElement","_onCreated","_composeUpdateElement","215","_BaseProvision2","_BaseProvision3","xls","xlsx","BulkExecutionBuilder","_processorId","extension","numberOfEntriesToProcess","_extension","_executeOperation","processorBulkFile","petitionUrl","resultQuery","_statusCode","../BaseProvision","216","_SimpleBuilder2","_SimpleBuilder3","AssetID","AssetBuilder","_SimpleBuilder","allowedDatastreams","definedSchemas","jsonSchemaValidator","./SimpleBuilder","217","BulkBuilder","csv_response","bulkFile","218","ComplexBuilder","_flattenedEntityData","_content","_relation","_index","withComplex","_jsonEntityData","complex","cm","_initFromJson","idCommunicationModules","getAllowedDatastreams","ds","_found","_idx","_rel","219","_BulkBuilder2","_BulkBuilder3","CsvBulkBuilder","_BulkBuilder","./BulkBuilder","220","_ComplexBuilder2","_ComplexBuilder3","_SubscriberBuilder","_SubscriptionBuilder","_jsonpath","_jsonpath2","BoxBuilder","urlParameters","subscribers","subscriptions","_obj","_url","_deviceKeys","dsName","_subscriberKeys","_subscriptionKeys","_administrationKeys","_wrappers","commsId","WrapperBuilder","SubscriptionID","SubscriberID","putObj","childEntityPromises","deviceKey","previousValue","_urlWithKey","deletePromises","_this4","_created","_checkExists","exists","DeviceBuilder","_ComplexBuilder","_getEntityKey","./ComplexBuilder","./SubscriberBuilder","./SubscriptionBuilder","jsonpath","221","_AssetBuilder","_AssetBuilder2","_DeviceBuilder","_DeviceBuilder2","_TicketBuilder","_TicketBuilder2","_SubscriberBuilder2","_SubscriptionBuilder2","_CsvBulkBuilder","_CsvBulkBuilder2","_JsonFlattenedBulkBuilder","_JsonFlattenedBulkBuilder2","_JsonBulkBuilder","_JsonBulkBuilder2","BULK_RESOURCES","EntityBuilder","filterElement","newFilterBuilder","and","like","datamodels.categories.datastreams.identifier","datamodels.organizationName","datamodels.allowedResourceTypes","datamodelsSearchBuilder","okh","_getJsonPathElements","_setDevicesProperties","basicTypesSearchBuilder","withPath","complexFunctions","simpleFunctions","includeSubscriberOrSubscription","_genericBuilder","_validateBulk","onFindAllowedDatastreams","_loadAllowedDatastreams","./AssetBuilder","./CsvBulkBuilder","./DeviceBuilder","./JsonBulkBuilder","./JsonFlattenedBulkBuilder","./TicketBuilder","222","JsonBulkBuilder","223","JsonFlattenedBulkBuilder","224","SimpleBuilder","_allowedDatastreams","_definedSchemas","_jsonSchemaValidator","getEntityKey","ERROR_DATASTREAM_NOT_ALLOWED","jSchema","225","SubscriberBuilder","226","SubscriptionBuilder","227","TicketID","TicketBuilder","228","ProvisionProcessors","configurationParams","_checkObject","_configurationParams","scriptProcessor","_scriptProcessor","229","provisionProcessorsFinder","_withId","230","_RuleCondition2","_RuleNotification2","RuleConfigurations","ruleConfigurationObj","withOrganization","withChannel","withIdentifier","withMode","withType","withDescription","withActive","withCondition","actionsDelay","withActionsDelay","withActions","withParameters","javascript","withJavascript","_channel","_javascript","_mode","_actionsDelay","conditionFilter","_condition","_actions","_parameters","severity","_severity","isUpdate","_doNorthPost","_doNorthPut","newParameters","./_RuleCondition","./_RuleNotification","231","RuleConfigurationsCatalog","232","RuleConfigurationsFinder","233","_RuleConfigurations","_RuleConfigurations2","_RuleCondition","conditionData","_ruleConfiguration","parameterName","parameterValue","paramTmp","./RuleConfigurations","234","_RuleNotification","notificationData","_notification","enabled","bearerName","bearerRecipients","bearers","bearerTmp","recipients","235","_Search2","_Search3","AssetSearch","_Search","urlParams","assets","./Search","236","BaseSearch","Accept","loadAll","parsedResult","ignoreError","paging","_asyncPagingFilter","_loadData","237","DeviceSearch","devices","ele","dato","238","EntitySearch","239","FilterBuilder","or","_len2","_key2","./../util/Expression","240","_EntitySearch2","_EntitySearch3","DEFAULT_PARAMETERS","QuickSearch","_EntitySearch","filterTemplate","fieldLike","./EntitySearch","241","_BaseSearch2","_BaseSearch3","Search","_BaseSearch","./BaseSearch","242","SelectBuilder","_selectTemplate","input_element","exists_element","input_fields","input_field","fieldExists","z","./../util/SelectElement","243","StaticSearch","customFilters","_contentType","_customFilters","finalContent","count_filters","contentTmp","finalValue","createAndAddFileObj","finalObj","entityTypeTmp","typeTmp","dataTmp","filterTmp","profileTmp","managed","resourceTypeIdx","statuscode","resultContent","ticketSeverity","ticketPriority","ticketStatus","serviceGroups","ASSET","SUBSCRIBER","SUBSCRIPTION","GATEWAY","administrativeState","COMMUNICATIONS_MODULE","CERTIFICATE","communicationsModuleType","ADSL","mandatory","CAN","ETH","GENERIC","GSM","HAN","I2C","LOWPAN","LTE_M","MESH","MOBILE","MULTIMOBILE","NARROWBAND","PLC","RS232","RS422","RS485","SIGFOX","ZIGBEE","ruleMode","ruleType","ruleConfigurationSeverity","userProfile","admin_domain","admin","advanced","viewer","ioTDatastreamAccess","ioTDatastreamStoragePeriod","ioTDatastreamPeriod","allowedResourceType","fieldsDefinition","enumeration","topology","userLanguages","language","countryCodes","country","timezones","244","WPSearch","245","_SearchBuilder2","_SearchBuilder3","_StaticSearch","_StaticSearch2","AdministrativeStateSearchBuilder","_SearchBuilder","_buildUrl","_buildFilter","_builderParams","administrativeStateId","../StaticSearch","./SearchBuilder","246","_SearchWithSummaryBuilder2","_SearchWithSummaryBuilder3","_utilSearchingFieldsFieldFinder","_utilSearchingFieldsFieldFinder2","TOKEN_URL","AlarmsSearchBuilder","_SearchWithSummaryBuilder","fieldFinder","onDevices","onSubscriptions","_routes","../../util/searchingFields/FieldFinder","./SearchWithSummaryBuilder","247","AllowedResourceTypeSearchBuilder","248","BASE_URL","AreasSearchBuilder","249","_PreFilteredSearchBuilder2","_PreFilteredSearchBuilder3","_AssetSearch","_AssetSearch2","AssetsSearchBuilder","_PreFilteredSearchBuilder","finalFilter","provision.asset.identifier","_group","_buildLimit","_buildSort","_buildGroup","_buildSelect","_urlParams","_select","../AssetSearch","./PreFilteredSearchBuilder","250","BasicTypesSearchBuilder","_og_basic_types","publicParameters","newPath","pathExpression","jsonSchemaValue","251","_WPSearch","_WPSearch2","BulkExecutionSearchBuilder","../WPSearch","252","BulkSearchBuilder","253","BundlesSearchBuilder","254","CertificatesSearchBuilder","_fetch","_assignable","fetch","visibility","255","ChannelsSearchBuilder","_summary","defaultSorted","256","CommunicationsModuleTypeSearchBuilder","257","CountryCodesSearchBuilder","258","DatamodelsSearchBuilder","259","DatapointsSearchBuilder","fluentFilter","tagsFilter","datastreamId","feedId","fromDate","_fluentFilter","_customFilter","../../util/DATE_FORMAT","260","DatasetEntitiesSearchBuilder","caseSensitive","../EntitySearch","261","DatasetsCatalogSearchBuilder","262","DatastreamsSearchBuilder","../Search","263","DevicesSearchBuilder","provision.device.identifier","264","DomainsSearchBuilder","265","EntitiesSearchBuilder","266","ExecutionsSearchBuilder","onSubscribers","onCommunicationsModules","_checkConstraintRoutes","267","FeedsSearchBuilder","268","FieldsDefinitionSearchBuilder","fieldDefinitionType","269","_DeviceSearch","_DeviceSearch2","FlattenedSearchBuilder","../DeviceSearch","270","HardwaresSearchBuilder","hardwareId","271","IoTDatastreamAccessSearchBuilder","272","IoTDatastreamPeriodSearchBuilder","273","IoTDatastreamStoragePeriodSearchBuilder","274","MobilePhoneProviderSearchBuilder","275","OperationalStatusSearchBuilder","operationalStatusId","276","OperationsSearchBuilder","277","PlansSearchBuilder","domainName","_domainName","278","_FlattenedSearchBuilder2","_FlattenedSearchBuilder3","PreFilteredSearchBuilder","_FlattenedSearchBuilder","_provisioned","_collected","./FlattenedSearchBuilder","279","RawSearchBuilder","rawFilter","rawLimit","280","ResourceTypeSearchBuilder","281","RuleConfigurationSeveritySearchBuilder","282","RulesSearchBuilder","283","SearchBuilder","_fieldFinder","_routesName","summary","_route","findAll","findFieldPath","filterField","addSortBy","typeSort","_groupTemplate","isMultipleRouteEnabled","atLeastOneTrue","284","SearchWithSummaryBuilder","285","staticSearchType","ServiceGroupSearchBuilder","286","SOFTWARE_TYPES_ENUM","SoftwaresSearchBuilder","softwareId","softwareName","softwareType","softwareVersion","287","SubscribersSearchBuilder","provision.device.communicationModules[].subscriber.identifier","device.communicationModules[].subscriber.identifier","288","SubscriptionsSearchBuilder","provision.device.communicationModules[].subscription.identifier","device.communicationModules[].subscription.identifier","289","TasksSearchBuilder","290","TicketPrioritySearchBuilder","291","TicketSeveritySearchBuilder","292","TicketStatusSearchBuilder","293","TicketsSearchBuilder","294","TimezoneSearchBuilder","295","UserLanguagesSearchBuilder","296","UserProfilesSearchBuilder","userProfileId","297","UsersSearchBuilder","298","WorkgroupsSearchBuilder","299","ADMINISTRATIVE_STATE_ENUM","300","_MIME_TYPES_ENUM","CertificateFinder","./MIME_TYPES_ENUM","301","_Security2","_Security3","_ADMINISTRATIVE_STATE_ENUM","_USAGES_ENUM","max_length_name","max_length_id","max_length_description","Certificates","_Security","_administrativeState","usages","USAGES_ENUM","_usages","_checkHardware","igerr","eval","not_correct","domains","_domains","./ADMINISTRATIVE_STATE_ENUM","./Security","./USAGES_ENUM","302","303","Security","304","305","UserFinder","X-ApiPass","306","User","surname","_surname","_email","_password","profile","_profile","_timezone","newPassword","_newPassword","307","308","neq","309","_urlencode","_urlencode2","_superagent","_lodash","_lodash2","_superagentMocker","_superagentMocker2","NorthAmpliaREST","mocks","_applyMocks","toLocaleUpperCase","methodByUrl","asBlob","_createUrl","_createPromiseRequest","formData","sendFormData","Content-Type","relativeUrl","queryParameter","relativeUrlSplit","_item","_req","_event","errorMessage","superagent-mocker","urlencode","310","SelectElement","311","_NorthAmpliaREST2","_NorthAmpliaREST3","SouthAmpliaREST","_NorthAmpliaREST","south","./NorthAmpliaREST","312","313","_FIELD_SEARCHER","_sourcePrecompiledFields","_IotFields","FIELDS","GENERATED_FIELDS","IOT_FIELDS","subfield","match_url","/jobs","/tasks","/alarms","/operations","/certificates","/bundles","/datapoints","/datastreams","/datamodels","/dmmQRating","/iotQRating","/catalog/softwares","/catalog/hardwares","/catalog/operators","/domains","/users","/areas","/bulk/async","provisionProcessors/bulk/search","/devices","/subscriptions","/subscribers","/entities","entity-asset","/tickets","/channels","match_context","ENTITY_ALARM","UPDATE_BUNDLE_VERSION","DATAPOINTS","ENTITY_OPERATION","match_url_resourceType","match_type","communicationsModule","match_type_inverse","DEVICE_PART_SUBSCRIBER","DEVICE_PART_SUBSCRIPTION","DEVICE_PART_COMMSMODULE","DEVICE_PART_DEVICE","fields_related","complexPrimaryType","complexFields","SEARCH_FIELDS","TYPE_FIELD","FIELD_SEARCHER","states","primaryType","selectedField","selectAll","preVal","datamodelSearchBuilder","rtFilter","_resourceTypes","datamodels","dsIdTmp","fieldIdx","fieldMatch","fieldTmp","ctxMatch","fieldsCfg","fieldsNestedState","fieldsRelated","filterRelatedEntities","relatedEntity","appendPreviousStates","arrayField","finiteStateMachine","secondState","statesSize","currentState","FieldFinder","./IotFields","./source-precompiled/Fields","314","DATAMODELS","DATASTREAMS","IOT","USER","DOMAIN","AREAS","color","TASKS","LEGACY_BULK","userEmail","headerAccept","headerCsvFormat","paramsFlattened","paramsAction","paramsFull","paramsType","startedDate","finishedDate","processed","successful","BULK","provisionProcessorId","RULE","organizationId","channelId","alarmSubEntityIdentifier","entityId","organizationName","channelName","alarmRuleName","alarmName","alarmSeverity","alarmPriority","alarmDescription","alarmStatus","alarmOpenDate","alarmAttentionDate","alarmAttentionUser","alarmAttentionNote","alarmClosureDate","alarmClosureUser","alarmClosureNote","GENERAL","EMPTY","OPERATORS","315","MANUFACTURER","JOB","MODEL","OPERATION_TYPE","SOFTWARE_VERSION","DATAMODEL","316","WorkgroupFinder","317","_Workgroups","_Workgroups2","WorkgroupRelations","_channels","relations","../channels/Channels","./Workgroups","318","WorkgroupRelationsFinder","319","Workgroups","administrative","_administrative","_composeElementUpdate"],"mappings":"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,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,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M,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM;ulCAAOC,SAAW,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,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","file":"opengate-api-bower-10.6.0.min.js","sourceRoot":".."} \ No newline at end of file diff --git a/dist/opengate-api-bower-10.6.0.js b/dist/opengate-api-bower-10.6.2.js similarity index 65% rename from dist/opengate-api-bower-10.6.0.js rename to dist/opengate-api-bower-10.6.2.js index d4ef2ab78..d9fd610e4 100755 --- a/dist/opengate-api-bower-10.6.0.js +++ b/dist/opengate-api-bower-10.6.2.js @@ -42,9 +42,9 @@ exports['default'] = OpenGateAPI; window.OpenGateAPI = OpenGateAPI; module.exports = exports['default']; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2plbmtpbnMvd29ya3NwYWNlL29nLXV4X2dlbmVyYXRlX2hvdGZpeF9mcm9tX2dpdGh1Yi9mYWtlX2M0YzZhODVjLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7c0NBRW1CLDJCQUEyQjs7OztzQ0FDL0IsNEJBQTRCOzs7O3NDQUM1Qiw0QkFBNEI7Ozs7SUFFbkMsV0FBVztjQUFYLFdBQVc7O0FBQ2pCLGFBRE0sV0FBVyxDQUNoQixRQUFRLEVBQUU7OEJBREwsV0FBVzs7QUFFeEIsbUNBRmEsV0FBVyw2Q0FHcEIsd0NBQW9CLFFBQVEsQ0FBQyxFQUM3Qix3Q0FBb0IsUUFBUSxDQUFDLEVBQzdCLFFBQVEsRUFDVjtLQUNMOztXQVBnQixXQUFXOzs7cUJBQVgsV0FBVzs7QUFVaEMsTUFBTSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMiLCJmaWxlIjoiL2hvbWUvamVua2lucy93b3Jrc3BhY2Uvb2ctdXhfZ2VuZXJhdGVfaG90Zml4X2Zyb21fZ2l0aHViL2Zha2VfYzRjNmE4NWMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XHJcblxyXG5pbXBvcnQgSW50ZXJuYWxPcGVuR2F0ZUFQSSBmcm9tICcuL3NyYy9JbnRlcm5hbE9wZW5HYXRlQVBJJztcclxuaW1wb3J0IE5vcnRoQW1wbGlhUkVTVCBmcm9tICcuL3NyYy91dGlsL05vcnRoQW1wbGlhUkVTVCc7XHJcbmltcG9ydCBTb3V0aEFtcGxpYVJFU1QgZnJvbSAnLi9zcmMvdXRpbC9Tb3V0aEFtcGxpYVJFU1QnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3BlbkdhdGVBUEkgZXh0ZW5kcyBJbnRlcm5hbE9wZW5HYXRlQVBJIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIoXHJcbiAgICAgICAgICAgIG5ldyBOb3J0aEFtcGxpYVJFU1QoX29wdGlvbnMpLFxyXG4gICAgICAgICAgICBuZXcgU291dGhBbXBsaWFSRVNUKF9vcHRpb25zKSxcclxuICAgICAgICAgICAgX29wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG53aW5kb3cuT3BlbkdhdGVBUEkgPSBPcGVuR2F0ZUFQSTsiXX0= -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/fake_c4c6a85c.js","/") -},{"./src/InternalOpenGateAPI":137,"./src/util/NorthAmpliaREST":309,"./src/util/SouthAmpliaREST":311,"buffer":57,"lYpoI2":59}],2:[function(require,module,exports){ +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL21hbnVlbC9Fc2NyaXRvcmlvL3Byb3llY3Rvcy9vcGVuZ2F0ZUpzL29wZW5nYXRlLWpzL2Zha2VfNjc5NDc0MDIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7OztzQ0FFbUIsMkJBQTJCOzs7O3NDQUMvQiw0QkFBNEI7Ozs7c0NBQzVCLDRCQUE0Qjs7OztJQUVuQyxXQUFXO2NBQVgsV0FBVzs7QUFDakIsYUFETSxXQUFXLENBQ2hCLFFBQVEsRUFBRTs4QkFETCxXQUFXOztBQUV4QixtQ0FGYSxXQUFXLDZDQUdwQix3Q0FBb0IsUUFBUSxDQUFDLEVBQzdCLHdDQUFvQixRQUFRLENBQUMsRUFDN0IsUUFBUSxFQUNWO0tBQ0w7O1dBUGdCLFdBQVc7OztxQkFBWCxXQUFXOztBQVVoQyxNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyIsImZpbGUiOiIvaG9tZS9tYW51ZWwvRXNjcml0b3Jpby9wcm95ZWN0b3Mvb3BlbmdhdGVKcy9vcGVuZ2F0ZS1qcy9mYWtlXzY3OTQ3NDAyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xyXG5cclxuaW1wb3J0IEludGVybmFsT3BlbkdhdGVBUEkgZnJvbSAnLi9zcmMvSW50ZXJuYWxPcGVuR2F0ZUFQSSc7XHJcbmltcG9ydCBOb3J0aEFtcGxpYVJFU1QgZnJvbSAnLi9zcmMvdXRpbC9Ob3J0aEFtcGxpYVJFU1QnO1xyXG5pbXBvcnQgU291dGhBbXBsaWFSRVNUIGZyb20gJy4vc3JjL3V0aWwvU291dGhBbXBsaWFSRVNUJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wZW5HYXRlQVBJIGV4dGVuZHMgSW50ZXJuYWxPcGVuR2F0ZUFQSSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihfb3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKFxyXG4gICAgICAgICAgICBuZXcgTm9ydGhBbXBsaWFSRVNUKF9vcHRpb25zKSxcclxuICAgICAgICAgICAgbmV3IFNvdXRoQW1wbGlhUkVTVChfb3B0aW9ucyksXHJcbiAgICAgICAgICAgIF9vcHRpb25zXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG5cclxud2luZG93Lk9wZW5HYXRlQVBJID0gT3BlbkdhdGVBUEk7Il19 +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/fake_67947402.js","/") +},{"./src/InternalOpenGateAPI":137,"./src/util/NorthAmpliaREST":309,"./src/util/SouthAmpliaREST":311,"FWaASH":50,"buffer":52}],2:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -553,8 +553,8 @@ function setLogger(self) { function noop() {} -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/ajv.js","/node_modules/ajv/lib") -},{"./cache":3,"./compile":7,"./compile/async":4,"./compile/error_classes":5,"./compile/formats":6,"./compile/resolve":8,"./compile/rules":9,"./compile/schema_obj":10,"./compile/util":12,"./data":13,"./keyword":41,"./refs/data.json":42,"./refs/json-schema-draft-07.json":43,"buffer":57,"fast-json-stable-stringify":50,"lYpoI2":59}],3:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/ajv.js","/node_modules/ajv/lib") +},{"./cache":3,"./compile":7,"./compile/async":4,"./compile/error_classes":5,"./compile/formats":6,"./compile/resolve":8,"./compile/rules":9,"./compile/schema_obj":10,"./compile/util":12,"./data":13,"./keyword":41,"./refs/data.json":42,"./refs/json-schema-draft-07.json":43,"FWaASH":50,"buffer":52,"fast-json-stable-stringify":75}],3:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -583,8 +583,8 @@ Cache.prototype.clear = function Cache_clear() { this._cache = {}; }; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/cache.js","/node_modules/ajv/lib") -},{"buffer":57,"lYpoI2":59}],4:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/cache.js","/node_modules/ajv/lib") +},{"FWaASH":50,"buffer":52}],4:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -677,8 +677,8 @@ function compileAsync(schema, meta, callback) { } } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/async.js","/node_modules/ajv/lib/compile") -},{"./error_classes":5,"buffer":57,"lYpoI2":59}],5:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/async.js","/node_modules/ajv/lib/compile") +},{"./error_classes":5,"FWaASH":50,"buffer":52}],5:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -715,8 +715,8 @@ function errorSubclass(Subclass) { return Subclass; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/error_classes.js","/node_modules/ajv/lib/compile") -},{"./resolve":8,"buffer":57,"lYpoI2":59}],6:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/error_classes.js","/node_modules/ajv/lib/compile") +},{"./resolve":8,"FWaASH":50,"buffer":52}],6:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -733,8 +733,8 @@ var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@| // For the source: https://gist.github.com/dperini/729294 // For test cases: https://mathiasbynens.be/demo/url-regex // @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. -// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; -var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; +// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; +var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; @@ -756,8 +756,8 @@ formats.fast = { time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i, - 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, + uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, + 'uri-reference': /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, 'uri-template': URITEMPLATE, url: URL, // email (sources from jsen validator): @@ -861,8 +861,8 @@ function regex(str) { } } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/formats.js","/node_modules/ajv/lib/compile") -},{"./util":12,"buffer":57,"lYpoI2":59}],7:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/formats.js","/node_modules/ajv/lib/compile") +},{"./util":12,"FWaASH":50,"buffer":52}],7:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -979,7 +979,7 @@ function compile(schema, root, localRefs, baseId) { + vars(defaults, defaultCode) + vars(customRules, customRuleCode) + sourceCode; - if (opts.processCode) sourceCode = opts.processCode(sourceCode); + if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema); // console.log('\n\n\n *** \n', JSON.stringify(sourceCode)); var validate; try { @@ -1252,8 +1252,8 @@ function vars(arr, statement) { return code; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/index.js","/node_modules/ajv/lib/compile") -},{"../dotjs/validate":40,"./error_classes":5,"./resolve":8,"./util":12,"buffer":57,"fast-deep-equal":49,"fast-json-stable-stringify":50,"lYpoI2":59}],8:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/index.js","/node_modules/ajv/lib/compile") +},{"../dotjs/validate":40,"./error_classes":5,"./resolve":8,"./util":12,"FWaASH":50,"buffer":52,"fast-deep-equal":74,"fast-json-stable-stringify":75}],8:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1526,8 +1526,8 @@ function resolveIds(schema) { return localRefs; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/resolve.js","/node_modules/ajv/lib/compile") -},{"./schema_obj":10,"./util":12,"buffer":57,"fast-deep-equal":49,"json-schema-traverse":92,"lYpoI2":59,"uri-js":134}],9:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/resolve.js","/node_modules/ajv/lib/compile") +},{"./schema_obj":10,"./util":12,"FWaASH":50,"buffer":52,"fast-deep-equal":74,"json-schema-traverse":101,"uri-js":134}],9:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1596,8 +1596,8 @@ module.exports = function rules() { return RULES; }; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/rules.js","/node_modules/ajv/lib/compile") -},{"../dotjs":29,"./util":12,"buffer":57,"lYpoI2":59}],10:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/rules.js","/node_modules/ajv/lib/compile") +},{"../dotjs":29,"./util":12,"FWaASH":50,"buffer":52}],10:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1609,8 +1609,8 @@ function SchemaObject(obj) { util.copy(obj, this); } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/schema_obj.js","/node_modules/ajv/lib/compile") -},{"./util":12,"buffer":57,"lYpoI2":59}],11:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/schema_obj.js","/node_modules/ajv/lib/compile") +},{"./util":12,"FWaASH":50,"buffer":52}],11:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1633,8 +1633,8 @@ module.exports = function ucs2length(str) { return length; }; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/ucs2length.js","/node_modules/ajv/lib/compile") -},{"buffer":57,"lYpoI2":59}],12:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/ucs2length.js","/node_modules/ajv/lib/compile") +},{"FWaASH":50,"buffer":52}],12:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1651,8 +1651,6 @@ module.exports = { ucs2length: require('./ucs2length'), varOccurences: varOccurences, varReplace: varReplace, - cleanUpCode: cleanUpCode, - finalCleanUpCode: finalCleanUpCode, schemaHasRules: schemaHasRules, schemaHasRulesExcept: schemaHasRulesExcept, schemaUnknownRules: schemaUnknownRules, @@ -1674,7 +1672,7 @@ function copy(o, to) { } -function checkDataType(dataType, data, negate) { +function checkDataType(dataType, data, strictNumbers, negate) { var EQUAL = negate ? ' !== ' : ' === ' , AND = negate ? ' || ' : ' && ' , OK = negate ? '!' : '' @@ -1687,15 +1685,18 @@ function checkDataType(dataType, data, negate) { NOT + 'Array.isArray(' + data + '))'; case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + ')'; + AND + data + EQUAL + data + + (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; + case 'number': return '(typeof ' + data + EQUAL + '"' + dataType + '"' + + (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; } } -function checkDataTypes(dataTypes, data) { +function checkDataTypes(dataTypes, data, strictNumbers) { switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, true); + case 1: return checkDataType(dataTypes[0], data, strictNumbers, true); default: var code = ''; var types = toHash(dataTypes); @@ -1708,7 +1709,7 @@ function checkDataTypes(dataTypes, data) { } if (types.number) delete types.integer; for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, true); + code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true); return code; } @@ -1774,42 +1775,6 @@ function varReplace(str, dataVar, expr) { } -var EMPTY_ELSE = /else\s*{\s*}/g - , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g - , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g; -function cleanUpCode(out) { - return out.replace(EMPTY_ELSE, '') - .replace(EMPTY_IF_NO_ELSE, '') - .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))'); -} - - -var ERRORS_REGEXP = /[^v.]errors/g - , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g - , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g - , RETURN_VALID = 'return errors === 0;' - , RETURN_TRUE = 'validate.errors = null; return true;' - , RETURN_ASYNC = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/ - , RETURN_DATA_ASYNC = 'return data;' - , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g - , REMOVE_ROOTDATA = /if \(rootData === undefined\) rootData = data;/; - -function finalCleanUpCode(out, async) { - var matches = out.match(ERRORS_REGEXP); - if (matches && matches.length == 2) { - out = async - ? out.replace(REMOVE_ERRORS_ASYNC, '') - .replace(RETURN_ASYNC, RETURN_DATA_ASYNC) - : out.replace(REMOVE_ERRORS, '') - .replace(RETURN_VALID, RETURN_TRUE); - } - - matches = out.match(ROOTDATA_REGEXP); - if (!matches || matches.length !== 3) return out; - return out.replace(REMOVE_ROOTDATA, ''); -} - - function schemaHasRules(schema, rules) { if (typeof schema == 'boolean') return !schema; for (var key in schema) if (rules[key]) return true; @@ -1888,7 +1853,7 @@ function getData($data, lvl, paths) { function joinPaths (a, b) { if (a == '""') return b; - return (a + ' + ' + b).replace(/' \+ '/g, ''); + return (a + ' + ' + b).replace(/([^\\])' \+ '/g, '$1'); } @@ -1911,8 +1876,8 @@ function unescapeJsonPointer(str) { return str.replace(/~1/g, '/').replace(/~0/g, '~'); } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/util.js","/node_modules/ajv/lib/compile") -},{"./ucs2length":11,"buffer":57,"fast-deep-equal":49,"lYpoI2":59}],13:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/util.js","/node_modules/ajv/lib/compile") +},{"./ucs2length":11,"FWaASH":50,"buffer":52,"fast-deep-equal":74}],13:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1954,7 +1919,7 @@ module.exports = function (metaSchema, keywordsJsonPointers) { keywords[key] = { anyOf: [ schema, - { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' } + { $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' } ] }; } @@ -1964,15 +1929,15 @@ module.exports = function (metaSchema, keywordsJsonPointers) { return metaSchema; }; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/data.js","/node_modules/ajv/lib") -},{"buffer":57,"lYpoI2":59}],14:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/data.js","/node_modules/ajv/lib") +},{"FWaASH":50,"buffer":52}],14:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; var metaSchema = require('./refs/json-schema-draft-07.json'); module.exports = { - $id: 'https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js', + $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js', definitions: { simpleTypes: metaSchema.definitions.simpleTypes }, @@ -2005,8 +1970,8 @@ module.exports = { } }; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/definition_schema.js","/node_modules/ajv/lib") -},{"./refs/json-schema-draft-07.json":43,"buffer":57,"lYpoI2":59}],15:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/definition_schema.js","/node_modules/ajv/lib") +},{"./refs/json-schema-draft-07.json":43,"FWaASH":50,"buffer":52}],15:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate__limit(it, $keyword, $ruleType) { @@ -2034,6 +1999,12 @@ module.exports = function generate__limit(it, $keyword, $ruleType) { $op = $isMax ? '<' : '>', $notOp = $isMax ? '>' : '<', $errorKeyword = undefined; + if (!($isData || typeof $schema == 'number' || $schema === undefined)) { + throw new Error($keyword + ' must be number'); + } + if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) { + throw new Error($exclusiveKeyword + ' must be number or boolean'); + } if ($isDataExcl) { var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), $exclusive = 'exclusive' + $lvl, @@ -2166,8 +2137,8 @@ module.exports = function generate__limit(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limit.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],16:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limit.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],16:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate__limitItems(it, $keyword, $ruleType) { @@ -2188,6 +2159,9 @@ module.exports = function generate__limitItems(it, $keyword, $ruleType) { } else { $schemaValue = $schema; } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } var $op = $keyword == 'maxItems' ? '>' : '<'; out += 'if ( '; if ($isData) { @@ -2247,8 +2221,8 @@ module.exports = function generate__limitItems(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitItems.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],17:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitItems.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],17:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate__limitLength(it, $keyword, $ruleType) { @@ -2269,6 +2243,9 @@ module.exports = function generate__limitLength(it, $keyword, $ruleType) { } else { $schemaValue = $schema; } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } var $op = $keyword == 'maxLength' ? '>' : '<'; out += 'if ( '; if ($isData) { @@ -2333,8 +2310,8 @@ module.exports = function generate__limitLength(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitLength.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],18:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitLength.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],18:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate__limitProperties(it, $keyword, $ruleType) { @@ -2355,6 +2332,9 @@ module.exports = function generate__limitProperties(it, $keyword, $ruleType) { } else { $schemaValue = $schema; } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } var $op = $keyword == 'maxProperties' ? '>' : '<'; out += 'if ( '; if ($isData) { @@ -2414,8 +2394,8 @@ module.exports = function generate__limitProperties(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitProperties.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],19:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitProperties.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],19:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_allOf(it, $keyword, $ruleType) { @@ -2436,7 +2416,7 @@ module.exports = function generate_allOf(it, $keyword, $ruleType) { l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { $allSchemasEmpty = false; $it.schema = $sch; $it.schemaPath = $schemaPath + '[' + $i + ']'; @@ -2457,12 +2437,11 @@ module.exports = function generate_allOf(it, $keyword, $ruleType) { out += ' ' + ($closingBraces.slice(0, -1)) + ' '; } } - out = it.util.cleanUpCode(out); return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/allOf.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],20:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/allOf.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],20:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_anyOf(it, $keyword, $ruleType) { @@ -2481,7 +2460,7 @@ module.exports = function generate_anyOf(it, $keyword, $ruleType) { $it.level++; var $nextValid = 'valid' + $it.level; var $noEmptySchema = $schema.every(function($sch) { - return (it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)); + return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all)); }); if ($noEmptySchema) { var $currentBaseId = $it.baseId; @@ -2530,7 +2509,6 @@ module.exports = function generate_anyOf(it, $keyword, $ruleType) { if (it.opts.allErrors) { out += ' } '; } - out = it.util.cleanUpCode(out); } else { if ($breakOnError) { out += ' if (true) { '; @@ -2539,8 +2517,8 @@ module.exports = function generate_anyOf(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/anyOf.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],21:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/anyOf.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],21:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_comment(it, $keyword, $ruleType) { @@ -2557,8 +2535,8 @@ module.exports = function generate_comment(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/comment.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],22:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/comment.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],22:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_const(it, $keyword, $ruleType) { @@ -2617,8 +2595,8 @@ module.exports = function generate_const(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/const.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],23:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/const.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],23:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_contains(it, $keyword, $ruleType) { @@ -2640,7 +2618,7 @@ module.exports = function generate_contains(it, $keyword, $ruleType) { $dataNxt = $it.dataLevel = it.dataLevel + 1, $nextData = 'data' + $dataNxt, $currentBaseId = it.baseId, - $nonEmptySchema = (it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all)); + $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all)); out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; if ($nonEmptySchema) { var $wasComposite = it.compositeRule; @@ -2699,12 +2677,11 @@ module.exports = function generate_contains(it, $keyword, $ruleType) { if (it.opts.allErrors) { out += ' } '; } - out = it.util.cleanUpCode(out); return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/contains.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],24:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/contains.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],24:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_custom(it, $keyword, $ruleType) { @@ -2935,8 +2912,8 @@ module.exports = function generate_custom(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/custom.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],25:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/custom.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],25:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_dependencies(it, $keyword, $ruleType) { @@ -2957,6 +2934,7 @@ module.exports = function generate_dependencies(it, $keyword, $ruleType) { $propertyDeps = {}, $ownProperties = it.opts.ownProperties; for ($property in $schema) { + if ($property == '__proto__') continue; var $sch = $schema[$property]; var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; $deps[$property] = $sch; @@ -3082,7 +3060,7 @@ module.exports = function generate_dependencies(it, $keyword, $ruleType) { var $currentBaseId = $it.baseId; for (var $property in $schemaDeps) { var $sch = $schemaDeps[$property]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; if ($ownProperties) { out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; @@ -3103,12 +3081,11 @@ module.exports = function generate_dependencies(it, $keyword, $ruleType) { if ($breakOnError) { out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; } - out = it.util.cleanUpCode(out); return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/dependencies.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],26:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/dependencies.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],26:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_enum(it, $keyword, $ruleType) { @@ -3177,8 +3154,8 @@ module.exports = function generate_enum(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/enum.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],27:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/enum.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],27:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_format(it, $keyword, $ruleType) { @@ -3331,8 +3308,8 @@ module.exports = function generate_format(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/format.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],28:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/format.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],28:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_if(it, $keyword, $ruleType) { @@ -3351,8 +3328,8 @@ module.exports = function generate_if(it, $keyword, $ruleType) { var $nextValid = 'valid' + $it.level; var $thenSch = it.schema['then'], $elseSch = it.schema['else'], - $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? typeof $thenSch == 'object' && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)), - $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? typeof $elseSch == 'object' && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)), + $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)), + $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)), $currentBaseId = $it.baseId; if ($thenPresent || $elsePresent) { var $ifClause; @@ -3430,7 +3407,6 @@ module.exports = function generate_if(it, $keyword, $ruleType) { if ($breakOnError) { out += ' else { '; } - out = it.util.cleanUpCode(out); } else { if ($breakOnError) { out += ' if (true) { '; @@ -3439,8 +3415,8 @@ module.exports = function generate_if(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/if.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],29:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/if.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],29:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -3476,8 +3452,8 @@ module.exports = { validate: require('./validate') }; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/index.js","/node_modules/ajv/lib/dotjs") -},{"./_limit":15,"./_limitItems":16,"./_limitLength":17,"./_limitProperties":18,"./allOf":19,"./anyOf":20,"./comment":21,"./const":22,"./contains":23,"./dependencies":25,"./enum":26,"./format":27,"./if":28,"./items":30,"./multipleOf":31,"./not":32,"./oneOf":33,"./pattern":34,"./properties":35,"./propertyNames":36,"./ref":37,"./required":38,"./uniqueItems":39,"./validate":40,"buffer":57,"lYpoI2":59}],30:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/index.js","/node_modules/ajv/lib/dotjs") +},{"./_limit":15,"./_limitItems":16,"./_limitLength":17,"./_limitProperties":18,"./allOf":19,"./anyOf":20,"./comment":21,"./const":22,"./contains":23,"./dependencies":25,"./enum":26,"./format":27,"./if":28,"./items":30,"./multipleOf":31,"./not":32,"./oneOf":33,"./pattern":34,"./properties":35,"./propertyNames":36,"./ref":37,"./required":38,"./uniqueItems":39,"./validate":40,"FWaASH":50,"buffer":52}],30:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_items(it, $keyword, $ruleType) { @@ -3547,7 +3523,7 @@ module.exports = function generate_items(it, $keyword, $ruleType) { l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; var $passData = $data + '[' + $i + ']'; $it.schema = $sch; @@ -3570,7 +3546,7 @@ module.exports = function generate_items(it, $keyword, $ruleType) { } } } - if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) { + if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) { $it.schema = $additionalItems; $it.schemaPath = it.schemaPath + '.additionalItems'; $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; @@ -3594,7 +3570,7 @@ module.exports = function generate_items(it, $keyword, $ruleType) { $closingBraces += '}'; } } - } else if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { + } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; @@ -3617,12 +3593,11 @@ module.exports = function generate_items(it, $keyword, $ruleType) { if ($breakOnError) { out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; } - out = it.util.cleanUpCode(out); return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/items.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],31:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/items.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],31:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_multipleOf(it, $keyword, $ruleType) { @@ -3642,6 +3617,9 @@ module.exports = function generate_multipleOf(it, $keyword, $ruleType) { } else { $schemaValue = $schema; } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } out += 'var division' + ($lvl) + ';if ('; if ($isData) { out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; @@ -3702,8 +3680,8 @@ module.exports = function generate_multipleOf(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/multipleOf.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],32:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/multipleOf.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],32:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_not(it, $keyword, $ruleType) { @@ -3719,7 +3697,7 @@ module.exports = function generate_not(it, $keyword, $ruleType) { var $it = it.util.copy(it); $it.level++; var $nextValid = 'valid' + $it.level; - if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { + if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; @@ -3790,8 +3768,8 @@ module.exports = function generate_not(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/not.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],33:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/not.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],33:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_oneOf(it, $keyword, $ruleType) { @@ -3821,7 +3799,7 @@ module.exports = function generate_oneOf(it, $keyword, $ruleType) { l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { $it.schema = $sch; $it.schemaPath = $schemaPath + '[' + $i + ']'; $it.errSchemaPath = $errSchemaPath + '/' + $i; @@ -3867,8 +3845,8 @@ module.exports = function generate_oneOf(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/oneOf.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],34:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/oneOf.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],34:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_pattern(it, $keyword, $ruleType) { @@ -3946,8 +3924,8 @@ module.exports = function generate_pattern(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/pattern.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],35:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/pattern.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],35:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_properties(it, $keyword, $ruleType) { @@ -3969,9 +3947,9 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { $dataNxt = $it.dataLevel = it.dataLevel + 1, $nextData = 'data' + $dataNxt, $dataProperties = 'dataProperties' + $lvl; - var $schemaKeys = Object.keys($schema || {}), + var $schemaKeys = Object.keys($schema || {}).filter(notProto), $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties), + $pPropertyKeys = Object.keys($pProperties).filter(notProto), $aProperties = it.schema.additionalProperties, $someProperties = $schemaKeys.length || $pPropertyKeys.length, $noAdditional = $aProperties === false, @@ -3981,7 +3959,13 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { $ownProperties = it.opts.ownProperties, $currentBaseId = it.baseId; var $required = it.schema.required; - if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); + if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) { + var $requiredHash = it.util.toHash($required); + } + + function notProto(p) { + return p !== '__proto__'; + } out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; if ($ownProperties) { out += ' var ' + ($dataProperties) + ' = undefined;'; @@ -4134,7 +4118,7 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { while (i3 < l3) { $propertyKey = arr3[i3 += 1]; var $sch = $schema[$propertyKey]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { var $prop = it.util.getProperty($propertyKey), $passData = $data + $prop, $hasDefault = $useDefaults && $sch.default !== undefined; @@ -4237,7 +4221,7 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { while (i4 < l4) { $pProperty = arr4[i4 += 1]; var $sch = $pProperties[$pProperty]; - if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { $it.schema = $sch; $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); @@ -4276,12 +4260,11 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { if ($breakOnError) { out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; } - out = it.util.cleanUpCode(out); return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/properties.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],36:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/properties.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],36:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_propertyNames(it, $keyword, $ruleType) { @@ -4299,7 +4282,7 @@ module.exports = function generate_propertyNames(it, $keyword, $ruleType) { $it.level++; var $nextValid = 'valid' + $it.level; out += 'var ' + ($errs) + ' = errors;'; - if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { + if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; @@ -4362,12 +4345,11 @@ module.exports = function generate_propertyNames(it, $keyword, $ruleType) { if ($breakOnError) { out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; } - out = it.util.cleanUpCode(out); return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/propertyNames.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],37:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/propertyNames.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],37:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_ref(it, $keyword, $ruleType) { @@ -4494,8 +4476,8 @@ module.exports = function generate_ref(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/ref.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],38:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/ref.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],38:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_required(it, $keyword, $ruleType) { @@ -4527,7 +4509,7 @@ module.exports = function generate_required(it, $keyword, $ruleType) { while (i1 < l1) { $property = arr1[i1 += 1]; var $propertySch = it.schema.properties[$property]; - if (!($propertySch && (it.opts.strictKeywords ? typeof $propertySch == 'object' && Object.keys($propertySch).length > 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) { + if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) { $required[$required.length] = $property; } } @@ -4768,8 +4750,8 @@ module.exports = function generate_required(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/required.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],39:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/required.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],39:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { @@ -4802,7 +4784,7 @@ module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { } else { out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); - out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; '; + out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; '; if ($typeIsArray) { out += ' if (typeof item == \'string\') item = \'"\' + item; '; } @@ -4858,8 +4840,8 @@ module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/uniqueItems.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],40:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/uniqueItems.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],40:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_validate(it, $keyword, $ruleType) { @@ -4954,7 +4936,7 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); it.baseId = it.baseId || it.rootId; delete it.isTop; - it.dataPathArr = [undefined]; + it.dataPathArr = [""]; if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) { var $defaultMsg = 'default is ignored in the schema root'; if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); @@ -5012,47 +4994,39 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { var $schemaPath = it.schemaPath + '.type', $errSchemaPath = it.errSchemaPath + '/type', $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; + out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { '; if ($coerceToTypes) { var $dataType = 'dataType' + $lvl, $coerced = 'coerced' + $lvl; - out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; '; + out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; '; if (it.opts.coerceTypes == 'array') { - out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; '; + out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } '; } - out += ' var ' + ($coerced) + ' = undefined; '; - var $bracesCoercion = ''; + out += ' if (' + ($coerced) + ' !== undefined) ; '; var arr1 = $coerceToTypes; if (arr1) { var $type, $i = -1, l1 = arr1.length - 1; while ($i < l1) { $type = arr1[$i += 1]; - if ($i) { - out += ' if (' + ($coerced) + ' === undefined) { '; - $bracesCoercion += '}'; - } - if (it.opts.coerceTypes == 'array' && $type != 'array') { - out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } '; - } if ($type == 'string') { - out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; + out += ' else if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; } else if ($type == 'number' || $type == 'integer') { - out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; + out += ' else if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; if ($type == 'integer') { out += ' && !(' + ($data) + ' % 1)'; } out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; } else if ($type == 'boolean') { - out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; + out += ' else if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; } else if ($type == 'null') { - out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; + out += ' else if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; } else if (it.opts.coerceTypes == 'array' && $type == 'array') { - out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; + out += ' else if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; } } } - out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { '; + out += ' else { '; var $$outStack = $$outStack || []; $$outStack.push(out); out = ''; /* istanbul ignore else */ @@ -5092,7 +5066,7 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { } else { out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; } - out += ' } else { '; + out += ' } if (' + ($coerced) + ' !== undefined) { '; var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; out += ' ' + ($data) + ' = ' + ($coerced) + '; '; @@ -5165,7 +5139,7 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { $rulesGroup = arr2[i2 += 1]; if ($shouldUseGroup($rulesGroup)) { if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; + out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { '; } if (it.opts.useDefaults) { if ($rulesGroup.type == 'object' && it.schema.properties) { @@ -5333,10 +5307,6 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { } else { out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; } - out = it.util.cleanUpCode(out); - if ($top) { - out = it.util.finalCleanUpCode(out, $async); - } function $shouldUseGroup($rulesGroup) { var rules = $rulesGroup.rules; @@ -5356,8 +5326,8 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { return out; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/validate.js","/node_modules/ajv/lib/dotjs") -},{"buffer":57,"lYpoI2":59}],41:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/validate.js","/node_modules/ajv/lib/dotjs") +},{"FWaASH":50,"buffer":52}],41:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -5407,7 +5377,7 @@ function addKeyword(keyword, definition) { metaSchema = { anyOf: [ metaSchema, - { '$ref': 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' } + { '$ref': 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' } ] }; } @@ -5506,11 +5476,11 @@ function validateKeyword(definition, throwError) { return false; } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/keyword.js","/node_modules/ajv/lib") -},{"./definition_schema":14,"./dotjs/custom":24,"buffer":57,"lYpoI2":59}],42:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/keyword.js","/node_modules/ajv/lib") +},{"./definition_schema":14,"./dotjs/custom":24,"FWaASH":50,"buffer":52}],42:[function(require,module,exports){ module.exports={ "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#", + "$id": "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", "description": "Meta-schema for $data reference (JSON Schema extension proposal)", "type": "object", "required": [ "$data" ], @@ -5698,1178 +5668,1192 @@ module.exports={ },{}],44:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ - -/** - * Expose `Emitter`. - */ - -if (typeof module !== 'undefined') { - module.exports = Emitter; -} - -/** - * Initialize a new `Emitter`. - * - * @api public - */ - -function Emitter(obj) { - if (obj) return mixin(obj); -}; - -/** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; -} - -/** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.on = -Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks['$' + event] = this._callbacks['$' + event] || []) - .push(fn); - return this; -}; - -/** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.once = function(event, fn){ - function on() { - this.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; -}; - -/** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.off = -Emitter.prototype.removeListener = -Emitter.prototype.removeAllListeners = -Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks['$' + event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - return this; -}; - -/** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - -Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks['$' + event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; -}; - -/** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - -Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks['$' + event] || []; -}; - -/** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - -Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; -}; +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/component-emitter/index.js","/node_modules/component-emitter") -},{"buffer":57,"lYpoI2":59}],45:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2013 Yusuke Suzuki +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ +var assert = module.exports = ok; -(function () { - 'use strict'; +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) - function isExpression(node) { - if (node == null) { return false; } - switch (node.type) { - case 'ArrayExpression': - case 'AssignmentExpression': - case 'BinaryExpression': - case 'CallExpression': - case 'ConditionalExpression': - case 'FunctionExpression': - case 'Identifier': - case 'Literal': - case 'LogicalExpression': - case 'MemberExpression': - case 'NewExpression': - case 'ObjectExpression': - case 'SequenceExpression': - case 'ThisExpression': - case 'UnaryExpression': - case 'UpdateExpression': - return true; - } - return false; - } +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; - function isIterationStatement(node) { - if (node == null) { return false; } - switch (node.type) { - case 'DoWhileStatement': - case 'ForInStatement': - case 'ForStatement': - case 'WhileStatement': - return true; - } - return false; - } + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; - function isStatement(node) { - if (node == null) { return false; } - switch (node.type) { - case 'BlockStatement': - case 'BreakStatement': - case 'ContinueStatement': - case 'DebuggerStatement': - case 'DoWhileStatement': - case 'EmptyStatement': - case 'ExpressionStatement': - case 'ForInStatement': - case 'ForStatement': - case 'IfStatement': - case 'LabeledStatement': - case 'ReturnStatement': - case 'SwitchStatement': - case 'ThrowStatement': - case 'TryStatement': - case 'VariableDeclaration': - case 'WhileStatement': - case 'WithStatement': - return true; - } - return false; - } + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } - function isSourceElement(node) { - return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; + this.stack = out; } + } +}; - function trailingStatement(node) { - switch (node.type) { - case 'IfStatement': - if (node.alternate != null) { - return node.alternate; - } - return node.consequent; +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); - case 'LabeledStatement': - case 'ForStatement': - case 'ForInStatement': - case 'WhileStatement': - case 'WithStatement': - return node.body; - } - return null; - } +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} - function isProblematicIfStatement(node) { - var current; +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} - if (node.type !== 'IfStatement') { - return false; - } - if (node.alternate == null) { - return false; - } - current = node.consequent; - do { - if (current.type === 'IfStatement') { - if (current.alternate == null) { - return true; - } - } - current = trailingStatement(current); - } while (current); +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} - return false; - } +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. - module.exports = { - isExpression: isExpression, - isStatement: isStatement, - isIterationStatement: isIterationStatement, - isSourceElement: isSourceElement, - isProblematicIfStatement: isProblematicIfStatement, +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. - trailingStatement: trailingStatement - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/ast.js","/node_modules/esutils/lib") -},{"buffer":57,"lYpoI2":59}],46:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2013-2014 Yusuke Suzuki - Copyright (C) 2014 Ivan Nikulin +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); -(function () { - 'use strict'; +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; - var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); - // See `tools/generate-identifier-regex.js`. - ES5Regex = { - // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart: - NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, - // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart: - NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ - }; +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; - ES6Regex = { - // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart: - NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/, - // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart: - NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ - }; +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); - function isDecimalDigit(ch) { - return 0x30 <= ch && ch <= 0x39; // 0..9 - } +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; - function isHexDigit(ch) { - return 0x30 <= ch && ch <= 0x39 || // 0..9 - 0x61 <= ch && ch <= 0x66 || // a..f - 0x41 <= ch && ch <= 0x46; // A..F - } +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; - function isOctalDigit(ch) { - return ch >= 0x30 && ch <= 0x37; // 0..7 + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; } - // 7.2 White Space + return true; - NON_ASCII_WHITESPACES = [ - 0x1680, 0x180E, - 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, - 0x202F, 0x205F, - 0x3000, - 0xFEFF - ]; - - function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || - ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0; - } + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); - // 7.3 Line Terminators + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; - function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; - } + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; - // 7.6 Identifier Names and Identifiers + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} - function fromCodePoint(cp) { - if (cp <= 0xFFFF) { return String.fromCharCode(cp); } - var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); - var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00); - return cu1 + cu2; - } +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} - IDENTIFIER_START = new Array(0x80); - for(ch = 0; ch < 0x80; ++ch) { - IDENTIFIER_START[ch] = - ch >= 0x61 && ch <= 0x7A || // a..z - ch >= 0x41 && ch <= 0x5A || // A..Z - ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; } + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + try { + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} - IDENTIFIER_PART = new Array(0x80); - for(ch = 0; ch < 0x80; ++ch) { - IDENTIFIER_PART[ch] = - ch >= 0x61 && ch <= 0x7A || // a..z - ch >= 0x41 && ch <= 0x5A || // A..Z - ch >= 0x30 && ch <= 0x39 || // 0..9 - ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) - } +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); - function isIdentifierStartES5(ch) { - return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); - } +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; - function isIdentifierPartES5(ch) { - return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); - } +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); - function isIdentifierStartES6(ch) { - return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); - } +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; - function isIdentifierPartES6(ch) { - return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); - } +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); - module.exports = { - isDecimalDigit: isDecimalDigit, - isHexDigit: isHexDigit, - isOctalDigit: isOctalDigit, - isWhiteSpace: isWhiteSpace, - isLineTerminator: isLineTerminator, - isIdentifierStartES5: isIdentifierStartES5, - isIdentifierPartES5: isIdentifierPartES5, - isIdentifierStartES6: isIdentifierStartES6, - isIdentifierPartES6: isIdentifierPartES6 - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/code.js","/node_modules/esutils/lib") -},{"buffer":57,"lYpoI2":59}],47:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2013 Yusuke Suzuki +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + return false; +} - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ +function _throws(shouldThrow, block, expected, message) { + var actual; -(function () { - 'use strict'; + if (util.isString(expected)) { + message = expected; + expected = null; + } - var code = require('./code'); + try { + block(); + } catch (e) { + actual = e; + } - function isStrictModeReservedWordES6(id) { - switch (id) { - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'let': - return true; - default: - return false; - } - } + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); - function isKeywordES5(id, strict) { - // yield should not be treated as keyword under non-strict mode. - if (!strict && id === 'yield') { - return false; - } - return isKeywordES6(id, strict); - } + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } - function isKeywordES6(id, strict) { - if (strict && isStrictModeReservedWordES6(id)) { - return true; - } + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } - switch (id.length) { - case 2: - return (id === 'if') || (id === 'in') || (id === 'do'); - case 3: - return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); - case 4: - return (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum'); - case 5: - return (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || - (id === 'class') || (id === 'super'); - case 6: - return (id === 'return') || (id === 'typeof') || (id === 'delete') || - (id === 'switch') || (id === 'export') || (id === 'import'); - case 7: - return (id === 'default') || (id === 'finally') || (id === 'extends'); - case 8: - return (id === 'function') || (id === 'continue') || (id === 'debugger'); - case 10: - return (id === 'instanceof'); - default: - return false; - } - } + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} - function isReservedWordES5(id, strict) { - return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict); - } +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); - function isReservedWordES6(id, strict) { - return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict); - } +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; - function isIdentifierNameES5(id) { - var i, iz, ch; +assert.ifError = function(err) { if (err) {throw err;}}; - if (id.length === 0) { return false; } +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; - ch = id.charCodeAt(0); - if (!code.isIdentifierStartES5(ch)) { - return false; - } +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/assert/assert.js","/node_modules/assert") +},{"FWaASH":50,"buffer":52,"util/":47}],45:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} - for (i = 1, iz = id.length; i < iz; ++i) { - ch = id.charCodeAt(i); - if (!code.isIdentifierPartES5(ch)) { - return false; - } - } - return true; - } +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/assert/node_modules/inherits/inherits_browser.js","/node_modules/assert/node_modules/inherits") +},{"FWaASH":50,"buffer":52}],46:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/assert/node_modules/util/support/isBufferBrowser.js","/node_modules/assert/node_modules/util/support") +},{"FWaASH":50,"buffer":52}],47:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - function decodeUtf16(lead, trail) { - return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); } + return objects.join(' '); + } - function isIdentifierNameES6(id) { - var i, iz, ch, lowCh, check; - - if (id.length === 0) { return false; } - - check = code.isIdentifierStartES6; - for (i = 0, iz = id.length; i < iz; ++i) { - ch = id.charCodeAt(i); - if (0xD800 <= ch && ch <= 0xDBFF) { - ++i; - if (i >= iz) { return false; } - lowCh = id.charCodeAt(i); - if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) { - return false; - } - ch = decodeUtf16(ch, lowCh); - } - if (!check(ch)) { - return false; - } - check = code.isIdentifierPartES6; + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; } - return true; + default: + return x; } - - function isIdentifierES5(id, strict) { - return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); } + } + return str; +}; - function isIdentifierES6(id, strict) { - return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); - } - module.exports = { - isKeywordES5: isKeywordES5, - isKeywordES6: isKeywordES6, - isReservedWordES5: isReservedWordES5, - isReservedWordES6: isReservedWordES6, - isRestrictedWord: isRestrictedWord, - isIdentifierNameES5: isIdentifierNameES5, - isIdentifierNameES6: isIdentifierNameES6, - isIdentifierES5: isIdentifierES5, - isIdentifierES6: isIdentifierES6 +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ - -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/keyword.js","/node_modules/esutils/lib") -},{"./code":46,"buffer":57,"lYpoI2":59}],48:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: + } - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + if (process.noDeprecation === true) { + return fn; + } - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + return deprecated; +}; -(function () { - 'use strict'; - exports.ast = require('./ast'); - exports.code = require('./code'); - exports.keyword = require('./keyword'); -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/utils.js","/node_modules/esutils/lib") -},{"./ast":45,"./code":46,"./keyword":47,"buffer":57,"lYpoI2":59}],49:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -'use strict'; -// do not edit .js files directly - edit src/index.jst +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; -module.exports = function equal(a, b) { - if (a === b) return true; +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); +function stylizeNoColor(str, styleType) { + return str; +} - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; +function arrayToHash(array) { + var hash = {}; - for (i = length; i-- !== 0;) { - var key = keys[i]; + array.forEach(function(val, idx) { + hash[val] = true; + }); - if (!equal(a[key], b[key])) return false; + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); } + return ret; + } - return true; + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; } - // true if both NaN, false otherwise - return a!==a && b!==b; -}; + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/fast-deep-equal/index.js","/node_modules/fast-deep-equal") -},{"buffer":57,"lYpoI2":59}],50:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -'use strict'; + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } -module.exports = function (data, opts) { - if (!opts) opts = {}; - if (typeof opts === 'function') opts = { cmp: opts }; - var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } - var cmp = opts.cmp && (function (f) { - return function (node) { - return function (a, b) { - var aobj = { key: a, value: node[a] }; - var bobj = { key: b, value: node[b] }; - return f(aobj, bobj); - }; - }; - })(opts.cmp); + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } - var seen = []; - return (function stringify (node) { - if (node && node.toJSON && typeof node.toJSON === 'function') { - node = node.toJSON(); - } + var base = '', array = false, braces = ['{', '}']; - if (node === undefined) return; - if (typeof node == 'number') return isFinite(node) ? '' + node : 'null'; - if (typeof node !== 'object') return JSON.stringify(node); + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } - var i, out; - if (Array.isArray(node)) { - out = '['; - for (i = 0; i < node.length; i++) { - if (i) out += ','; - out += stringify(node[i]) || 'null'; - } - return out + ']'; - } + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } - if (node === null) return 'null'; + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } - if (seen.indexOf(node) !== -1) { - if (cycles) return JSON.stringify('__cycle__'); - throw new TypeError('Converting circular structure to JSON'); - } + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } - var seenIndex = seen.push(node) - 1; - var keys = Object.keys(node).sort(cmp && cmp(node)); - out = ''; - for (i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = stringify(node[key]); + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } - if (!value) continue; - if (out) out += ','; - out += JSON.stringify(key) + ':' + value; - } - seen.splice(seenIndex, 1); - return '{' + out + '}'; - })(data); -}; + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/fast-json-stable-stringify/index.js","/node_modules/fast-json-stable-stringify") -},{"buffer":57,"lYpoI2":59}],51:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 -// -// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! -// -// Originally from narwhal.js (http://narwhaljs.org) -// Copyright (c) 2009 Thomas Robinson <280north.com> -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the 'Software'), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } -// when used in node, this will actually load the util module we depend on -// versus loading the builtin util module as happens otherwise -// this is a bug in node module loading as far as I am concerned -var util = require('util/'); + ctx.seen.push(value); -var pSlice = Array.prototype.slice; -var hasOwn = Object.prototype.hasOwnProperty; + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. + ctx.seen.pop(); -var assert = module.exports = ok; + return reduceToSingleString(output, base, braces); +} -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({ message: message, -// actual: actual, -// expected: expected }) -assert.AssertionError = function AssertionError(options) { - this.name = 'AssertionError'; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - if (options.message) { - this.message = options.message; - this.generatedMessage = false; - } else { - this.message = getMessage(this); - this.generatedMessage = true; +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); } - var stackStartFunction = options.stackStartFunction || fail; + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } - else { - // non v8 browsers so we can have a stacktrace - var err = new Error(); - if (err.stack) { - var out = err.stack; - // try to strip useless frames - var fn_name = stackStartFunction.name; - var idx = out.indexOf('\n' + fn_name); - if (idx >= 0) { - // once we have located the function frame - // we need to strip out everything before it (and its line) - var next_line = out.indexOf('\n', idx + 1); - out = out.substring(next_line + 1); - } +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} - this.stack = out; + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); } } -}; + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} -// assert.AssertionError instanceof Error -util.inherits(assert.AssertionError, Error); -function replacer(key, value) { - if (util.isUndefined(value)) { - return '' + value; +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } } - if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) { - return value.toString(); + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; } - if (util.isFunction(value) || util.isRegExp(value)) { - return value.toString(); + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } } - return value; + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; } -function truncate(s, n) { - if (util.isString(s)) { - return s.length < n ? s : s.slice(0, n); - } else { - return s; + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; } -} -function getMessage(self) { - return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + - self.operator + ' ' + - truncate(JSON.stringify(self.expected, replacer), 128); + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; } -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. - -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. -function fail(actual, expected, message, operator, stackStartFunction) { - throw new assert.AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); } +exports.isArray = isArray; -// EXTENSION! allows for well behaved errors defined elsewhere. -assert.fail = fail; +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, !!guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; -function ok(value, message) { - if (!value) fail(value, true, message, '==', assert.ok); +function isNullOrUndefined(arg) { + return arg == null; } -assert.ok = ok; +exports.isNullOrUndefined = isNullOrUndefined; -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; -assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, '==', assert.equal); -}; +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; -assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, '!=', assert.notEqual); - } -}; +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; -assert.deepEqual = function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected)) { - fail(actual, expected, message, 'deepEqual', assert.deepEqual); - } -}; +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; -function _deepEqual(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; - } else if (util.isBuffer(actual) && util.isBuffer(expected)) { - if (actual.length != expected.length) return false; +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; - for (var i = 0; i < actual.length; i++) { - if (actual[i] !== expected[i]) return false; - } +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; - return true; +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (util.isDate(actual) && util.isDate(expected)) { - return actual.getTime() === expected.getTime(); +exports.isBuffer = require('./support/isBuffer'); - // 7.3 If the expected value is a RegExp object, the actual value is - // equivalent if it is also a RegExp object with the same source and - // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). - } else if (util.isRegExp(actual) && util.isRegExp(expected)) { - return actual.source === expected.source && - actual.global === expected.global && - actual.multiline === expected.multiline && - actual.lastIndex === expected.lastIndex && - actual.ignoreCase === expected.ignoreCase; +function objectToString(o) { + return Object.prototype.toString.call(o); +} - // 7.4. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (!util.isObject(actual) && !util.isObject(expected)) { - return actual == expected; - // 7.5 For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); } -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} -function objEquiv(a, b) { - if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b); - } - try { - var ka = objectKeys(a), - kb = objectKeys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key])) return false; - } - return true; +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); } -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected)) { - fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); - } +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); }; -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); -assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, '===', assert.strictEqual); - } -}; +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); -// 10. The strict non-equality assertion tests for strict inequality, as -// determined by !==. assert.notStrictEqual(actual, expected, message_opt); +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, '!==', assert.notStrictEqual); + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; } + return origin; }; -function expectedException(actual, expected) { - if (!actual || !expected) { - return false; - } +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} - if (Object.prototype.toString.call(expected) == '[object RegExp]') { - return expected.test(actual); - } else if (actual instanceof expected) { - return true; - } else if (expected.call({}, actual) === true) { - return true; - } +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/assert/node_modules/util/util.js","/node_modules/assert/node_modules/util") +},{"./support/isBuffer":46,"FWaASH":50,"buffer":52,"inherits":45}],48:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - return false; -} +;(function (exports) { + 'use strict'; -function _throws(shouldThrow, block, expected, message) { - var actual; + var Arr = (typeof Uint8Array !== 'undefined') + ? Uint8Array + : Array - if (util.isString(expected)) { - message = expected; - expected = null; - } + var PLUS = '+'.charCodeAt(0) + var SLASH = '/'.charCodeAt(0) + var NUMBER = '0'.charCodeAt(0) + var LOWER = 'a'.charCodeAt(0) + var UPPER = 'A'.charCodeAt(0) + var PLUS_URL_SAFE = '-'.charCodeAt(0) + var SLASH_URL_SAFE = '_'.charCodeAt(0) - try { - block(); - } catch (e) { - actual = e; - } + function decode (elt) { + var code = elt.charCodeAt(0) + if (code === PLUS || + code === PLUS_URL_SAFE) + return 62 // '+' + if (code === SLASH || + code === SLASH_URL_SAFE) + return 63 // '/' + if (code < NUMBER) + return -1 //no match + if (code < NUMBER + 10) + return code - NUMBER + 26 + 26 + if (code < UPPER + 26) + return code - UPPER + if (code < LOWER + 26) + return code - LOWER + 26 + } - message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + - (message ? ' ' + message : '.'); + function b64ToByteArray (b64) { + var i, j, l, tmp, placeHolders, arr - if (shouldThrow && !actual) { - fail(actual, expected, 'Missing expected exception' + message); - } + if (b64.length % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } - if (!shouldThrow && expectedException(actual, expected)) { - fail(actual, expected, 'Got unwanted exception' + message); - } + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + var len = b64.length + placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 - if ((shouldThrow && actual && expected && - !expectedException(actual, expected)) || (!shouldThrow && actual)) { - throw actual; - } -} + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(b64.length * 3 / 4 - placeHolders) -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? b64.length - 4 : b64.length -assert.throws = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [true].concat(pSlice.call(arguments))); -}; + var L = 0 -// EXTENSION! This is annoying to write outside this module. -assert.doesNotThrow = function(block, /*optional*/message) { - _throws.apply(this, [false].concat(pSlice.call(arguments))); -}; + function push (v) { + arr[L++] = v + } -assert.ifError = function(err) { if (err) {throw err;}}; + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) + push((tmp & 0xFF0000) >> 16) + push((tmp & 0xFF00) >> 8) + push(tmp & 0xFF) + } -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - if (hasOwn.call(obj, key)) keys.push(key); - } - return keys; -}; + if (placeHolders === 2) { + tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) + push(tmp & 0xFF) + } else if (placeHolders === 1) { + tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) + push((tmp >> 8) & 0xFF) + push(tmp & 0xFF) + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/assert/assert.js","/node_modules/gulp-browserify/node_modules/assert") -},{"buffer":57,"lYpoI2":59,"util/":54}],52:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} + return arr + } + + function uint8ToBase64 (uint8) { + var i, + extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes + output = "", + temp, length + + function encode (num) { + return lookup.charAt(num) + } + + function tripletToBase64 (num) { + return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) + } + + // go through the array every three bytes, we'll deal with trailing stuff later + for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { + temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output += tripletToBase64(temp) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + switch (extraBytes) { + case 1: + temp = uint8[uint8.length - 1] + output += encode(temp >> 2) + output += encode((temp << 4) & 0x3F) + output += '==' + break + case 2: + temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) + output += encode(temp >> 10) + output += encode((temp >> 4) & 0x3F) + output += encode((temp << 2) & 0x3F) + output += '=' + break + } + + return output + } + + exports.toByteArray = b64ToByteArray + exports.fromByteArray = uint8ToBase64 +}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/base64-js/lib/b64.js","/node_modules/base64-js/lib") +},{"FWaASH":50,"buffer":52}],49:[function(require,module,exports){ -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/assert/node_modules/inherits/inherits_browser.js","/node_modules/gulp-browserify/node_modules/assert/node_modules/inherits") -},{"buffer":57,"lYpoI2":59}],53:[function(require,module,exports){ +},{"FWaASH":50,"buffer":52}],50:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; +// shim for using process in browser + +var process = module.exports = {}; + +process.nextTick = (function () { + var canSetImmediate = typeof window !== 'undefined' + && window.setImmediate; + var canPost = typeof window !== 'undefined' + && window.postMessage && window.addEventListener + ; + + if (canSetImmediate) { + return function (f) { return window.setImmediate(f) }; + } + + if (canPost) { + var queue = []; + window.addEventListener('message', function (ev) { + var source = ev.source; + if ((source === window || source === null) && ev.data === 'process-tick') { + ev.stopPropagation(); + if (queue.length > 0) { + var fn = queue.shift(); + fn(); + } + } + }, true); + + return function nextTick(fn) { + queue.push(fn); + window.postMessage('process-tick', '*'); + }; + } + + return function nextTick(fn) { + setTimeout(fn, 0); + }; +})(); + +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/assert/node_modules/util/support/isBufferBrowser.js","/node_modules/gulp-browserify/node_modules/assert/node_modules/util/support") -},{"buffer":57,"lYpoI2":59}],54:[function(require,module,exports){ + +// TODO(shtylman) +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/browserify/node_modules/process/browser.js","/node_modules/browserify/node_modules/process") +},{"FWaASH":50,"buffer":52}],51:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ // Copyright Joyent, Inc. and other Node contributors. // @@ -6892,11792 +6876,15494 @@ module.exports = function isBuffer(arg) { // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); +var Buffer = require('buffer').Buffer; + +function assertEncoding(encoding) { + if (encoding && !Buffer.isEncoding(encoding)) { + throw new Error('Unknown encoding: ' + encoding); } +} - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } +var StringDecoder = exports.StringDecoder = function(encoding) { + this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); + assertEncoding(encoding); + switch (this.encoding) { + case 'utf8': + // CESU-8 represents each of Surrogate Pair by 3-bytes + this.surrogateSize = 3; + break; + case 'ucs2': + case 'utf16le': + // UTF-16 represents each of Surrogate Pair by 2-bytes + this.surrogateSize = 2; + this.detectIncompleteChar = utf16DetectIncompleteChar; + break; + case 'base64': + // Base-64 stores 3 bytes in 4 chars, and pads the remainder. + this.surrogateSize = 3; + this.detectIncompleteChar = base64DetectIncompleteChar; + break; + default: + this.write = passThroughWrite; + return; } - return str; + + this.charBuffer = new Buffer(6); + this.charReceived = 0; + this.charLength = 0; }; -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } +StringDecoder.prototype.write = function(buffer) { + var charStr = ''; + var offset = 0; - if (process.noDeprecation === true) { - return fn; - } + // if our last write ended with an incomplete multibyte character + while (this.charLength) { + // determine how many remaining bytes this buffer has to offer for this char + var i = (buffer.length >= this.charLength - this.charReceived) ? + this.charLength - this.charReceived : + buffer.length; - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } + // add the new bytes to the char buffer + buffer.copy(this.charBuffer, this.charReceived, offset, i); + this.charReceived += (i - offset); + offset = i; - return deprecated; -}; + if (this.charReceived < this.charLength) { + // still not enough chars in this buffer? wait for more ... + return ''; + } + // get the character that was split + charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; + // lead surrogate (D800-DBFF) is also the incomplete character + var charCode = charStr.charCodeAt(charStr.length - 1); + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + this.charLength += this.surrogateSize; + charStr = ''; + continue; } + this.charReceived = this.charLength = 0; + + // if there are no more bytes in this buffer, just emit our char + if (i == buffer.length) return charStr; + + // otherwise cut off the characters end from the beginning of this buffer + buffer = buffer.slice(i, buffer.length); + break; } - return debugs[set]; -}; + var lenIncomplete = this.detectIncompleteChar(buffer); -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); + var end = buffer.length; + if (this.charLength) { + // buffer the incomplete character bytes we got + buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); + this.charReceived = lenIncomplete; + end -= lenIncomplete; } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; + charStr += buffer.toString(this.encoding, 0, end); -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; + var end = charStr.length - 1; + var charCode = charStr.charCodeAt(end); + // lead surrogate (D800-DBFF) is also the incomplete character + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + var size = this.surrogateSize; + this.charLength += size; + this.charReceived += size; + this.charBuffer.copy(this.charBuffer, size, 0, size); + this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); + return charStr.substring(0, end); + } -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' + // or just emit the charStr + return charStr; }; +StringDecoder.prototype.detectIncompleteChar = function(buffer) { + // determine how many bytes we have to check at the end of this buffer + var i = (buffer.length >= 3) ? 3 : buffer.length; + + // Figure out if one of the last i bytes of our buffer announces an + // incomplete char. + for (; i > 0; i--) { + var c = buffer[buffer.length - i]; -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; + // See http://en.wikipedia.org/wiki/UTF-8#Description - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; + // 110XXXXX + if (i == 1 && c >> 5 == 0x06) { + this.charLength = 2; + break; + } + + // 1110XXXX + if (i <= 2 && c >> 4 == 0x0E) { + this.charLength = 3; + break; + } + + // 11110XXX + if (i <= 3 && c >> 3 == 0x1E) { + this.charLength = 4; + break; + } } -} + return i; +}; -function stylizeNoColor(str, styleType) { - return str; -} +StringDecoder.prototype.end = function(buffer) { + var res = ''; + if (buffer && buffer.length) + res = this.write(buffer); + if (this.charReceived) { + var cr = this.charReceived; + var buf = this.charBuffer; + var enc = this.encoding; + res += buf.slice(0, cr).toString(enc); + } -function arrayToHash(array) { - var hash = {}; + return res; +}; - array.forEach(function(val, idx) { - hash[val] = true; - }); +function passThroughWrite(buffer) { + return buffer.toString(this.encoding); +} - return hash; +function utf16DetectIncompleteChar(buffer) { + var incomplete = this.charReceived = buffer.length % 2; + this.charLength = incomplete ? 2 : 0; + return incomplete; } +function base64DetectIncompleteChar(buffer) { + var incomplete = this.charReceived = buffer.length % 3; + this.charLength = incomplete ? 3 : 0; + return incomplete; +} -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/browserify/node_modules/string_decoder/index.js","/node_modules/browserify/node_modules/string_decoder") +},{"FWaASH":50,"buffer":52}],52:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; +var base64 = require('base64-js') +var ieee754 = require('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = Buffer +exports.INSPECT_MAX_BYTES = 50 +Buffer.poolSize = 8192 + +/** + * If `Buffer._useTypedArrays`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (compatible down to IE6) + */ +Buffer._useTypedArrays = (function () { + // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+, + // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding + // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support + // because we need to be able to add all the node Buffer API methods. This is an issue + // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438 + try { + var buf = new ArrayBuffer(0) + var arr = new Uint8Array(buf) + arr.foo = function () { return 42 } + return 42 === arr.foo() && + typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray` + } catch (e) { + return false } +})() - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); +/** + * Class: Buffer + * ============= + * + * The Buffer constructor returns instances of `Uint8Array` that are augmented + * with function properties for all the node `Buffer` API functions. We use + * `Uint8Array` so that square bracket notation works as expected -- it returns + * a single octet. + * + * By augmenting the instances, we can avoid modifying the `Uint8Array` + * prototype. + */ +function Buffer (subject, encoding, noZero) { + if (!(this instanceof Buffer)) + return new Buffer(subject, encoding, noZero) - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); + var type = typeof subject + + // Workaround: node's base64 implementation allows for non-padded strings + // while base64-js does not. + if (encoding === 'base64' && type === 'string') { + subject = stringtrim(subject) + while (subject.length % 4 !== 0) { + subject = subject + '=' + } } - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); + // Find the length + var length + if (type === 'number') + length = coerce(subject) + else if (type === 'string') + length = Buffer.byteLength(subject, encoding) + else if (type === 'object') + length = coerce(subject.length) // assume that object is array-like + else + throw new Error('First argument needs to be a number, array or string.') + + var buf + if (Buffer._useTypedArrays) { + // Preferred: Return an augmented `Uint8Array` instance for best performance + buf = Buffer._augment(new Uint8Array(length)) + } else { + // Fallback: Return THIS instance of Buffer (created by `new`) + buf = this + buf.length = length + buf._isBuffer = true } - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); + var i + if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') { + // Speed optimization -- use set if we're copying from a typed array + buf._set(subject) + } else if (isArrayish(subject)) { + // Treat array-ish objects as a byte array + for (i = 0; i < length; i++) { + if (Buffer.isBuffer(subject)) + buf[i] = subject.readUInt8(i) + else + buf[i] = subject[i] } - if (isError(value)) { - return formatError(value); + } else if (type === 'string') { + buf.write(subject, 0, encoding) + } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) { + for (i = 0; i < length; i++) { + buf[i] = 0 } } - var base = '', array = false, braces = ['{', '}']; + return buf +} - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } +// STATIC METHODS +// ============== - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; +Buffer.isEncoding = function (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'binary': + case 'base64': + case 'raw': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false } +} - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } +Buffer.isBuffer = function (b) { + return !!(b !== null && b !== undefined && b._isBuffer) +} - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); +Buffer.byteLength = function (str, encoding) { + var ret + str = str + '' + switch (encoding || 'utf8') { + case 'hex': + ret = str.length / 2 + break + case 'utf8': + case 'utf-8': + ret = utf8ToBytes(str).length + break + case 'ascii': + case 'binary': + case 'raw': + ret = str.length + break + case 'base64': + ret = base64ToBytes(str).length + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = str.length * 2 + break + default: + throw new Error('Unknown encoding') } + return ret +} - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } +Buffer.concat = function (list, totalLength) { + assert(isArray(list), 'Usage: Buffer.concat(list, [totalLength])\n' + + 'list should be an Array.') - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; + if (list.length === 0) { + return new Buffer(0) + } else if (list.length === 1) { + return list[0] } - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); + var i + if (typeof totalLength !== 'number') { + totalLength = 0 + for (i = 0; i < list.length; i++) { + totalLength += list[i].length } } - ctx.seen.push(value); + var buf = new Buffer(totalLength) + var pos = 0 + for (i = 0; i < list.length; i++) { + var item = list[i] + item.copy(buf, pos) + pos += item.length + } + return buf +} - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); +// BUFFER INSTANCE METHODS +// ======================= + +function _hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); + length = Number(length) + if (length > remaining) { + length = remaining + } } - ctx.seen.pop(); + // must be an even number of digits + var strLen = string.length + assert(strLen % 2 === 0, 'Invalid hex string') - return reduceToSingleString(output, base, braces); + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; i++) { + var byte = parseInt(string.substr(i * 2, 2), 16) + assert(!isNaN(byte), 'Invalid hex string') + buf[offset + i] = byte + } + Buffer._charsWritten = i * 2 + return i } +function _utf8Write (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(utf8ToBytes(string), buf, offset, length) + return charsWritten +} -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); +function _asciiWrite (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(asciiToBytes(string), buf, offset, length) + return charsWritten } +function _binaryWrite (buf, string, offset, length) { + return _asciiWrite(buf, string, offset, length) +} -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; +function _base64Write (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(base64ToBytes(string), buf, offset, length) + return charsWritten } +function _utf16leWrite (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(utf16leToBytes(string), buf, offset, length) + return charsWritten +} -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); +Buffer.prototype.write = function (string, offset, length, encoding) { + // Support both (string, offset, length, encoding) + // and the legacy (string, encoding, offset, length) + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length + length = undefined } + } else { // legacy + var swap = encoding + encoding = offset + offset = length + length = swap } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } + offset = Number(offset) || 0 + var remaining = this.length - offset + if (!length) { + length = remaining } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); + length = Number(length) + if (length > remaining) { + length = remaining } } + encoding = String(encoding || 'utf8').toLowerCase() - return name + ': ' + str; + var ret + switch (encoding) { + case 'hex': + ret = _hexWrite(this, string, offset, length) + break + case 'utf8': + case 'utf-8': + ret = _utf8Write(this, string, offset, length) + break + case 'ascii': + ret = _asciiWrite(this, string, offset, length) + break + case 'binary': + ret = _binaryWrite(this, string, offset, length) + break + case 'base64': + ret = _base64Write(this, string, offset, length) + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = _utf16leWrite(this, string, offset, length) + break + default: + throw new Error('Unknown encoding') + } + return ret } +Buffer.prototype.toString = function (encoding, start, end) { + var self = this -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); + encoding = String(encoding || 'utf8').toLowerCase() + start = Number(start) || 0 + end = (end !== undefined) + ? Number(end) + : end = self.length - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; + // Fastpath empty strings + if (end === start) + return '' + + var ret + switch (encoding) { + case 'hex': + ret = _hexSlice(self, start, end) + break + case 'utf8': + case 'utf-8': + ret = _utf8Slice(self, start, end) + break + case 'ascii': + ret = _asciiSlice(self, start, end) + break + case 'binary': + ret = _binarySlice(self, start, end) + break + case 'base64': + ret = _base64Slice(self, start, end) + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = _utf16leSlice(self, start, end) + break + default: + throw new Error('Unknown encoding') } + return ret +} - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +Buffer.prototype.toJSON = function () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } } +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function (target, target_start, start, end) { + var source = this -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (!target_start) target_start = 0 -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; + // Copy 0 bytes; we're done + if (end === start) return + if (target.length === 0 || source.length === 0) return -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; + // Fatal error conditions + assert(end >= start, 'sourceEnd < sourceStart') + assert(target_start >= 0 && target_start < target.length, + 'targetStart out of bounds') + assert(start >= 0 && start < source.length, 'sourceStart out of bounds') + assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds') -function isNullOrUndefined(arg) { - return arg == null; + // Are we oob? + if (end > this.length) + end = this.length + if (target.length - target_start < end - start) + end = target.length - target_start + start + + var len = end - start + + if (len < 100 || !Buffer._useTypedArrays) { + for (var i = 0; i < len; i++) + target[i + target_start] = this[i + start] + } else { + target._set(this.subarray(start, start + len), target_start) + } } -exports.isNullOrUndefined = isNullOrUndefined; -function isNumber(arg) { - return typeof arg === 'number'; +function _base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } } -exports.isNumber = isNumber; -function isString(arg) { - return typeof arg === 'string'; +function _utf8Slice (buf, start, end) { + var res = '' + var tmp = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) { + if (buf[i] <= 0x7F) { + res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]) + tmp = '' + } else { + tmp += '%' + buf[i].toString(16) + } + } + + return res + decodeUtf8Char(tmp) } -exports.isString = isString; -function isSymbol(arg) { - return typeof arg === 'symbol'; +function _asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) + ret += String.fromCharCode(buf[i]) + return ret } -exports.isSymbol = isSymbol; -function isUndefined(arg) { - return arg === void 0; +function _binarySlice (buf, start, end) { + return _asciiSlice(buf, start, end) } -exports.isUndefined = isUndefined; -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; +function _hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; i++) { + out += toHex(buf[i]) + } + return out } -exports.isRegExp = isRegExp; -function isObject(arg) { - return typeof arg === 'object' && arg !== null; +function _utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i+1] * 256) + } + return res } -exports.isObject = isObject; -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; +Buffer.prototype.slice = function (start, end) { + var len = this.length + start = clamp(start, len, 0) + end = clamp(end, len, len) + + if (Buffer._useTypedArrays) { + return Buffer._augment(this.subarray(start, end)) + } else { + var sliceLen = end - start + var newBuf = new Buffer(sliceLen, undefined, true) + for (var i = 0; i < sliceLen; i++) { + newBuf[i] = this[i + start] + } + return newBuf + } } -exports.isDate = isDate; -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); +// `get` will be removed in Node 0.13+ +Buffer.prototype.get = function (offset) { + console.log('.get() is deprecated. Access using array indexes instead.') + return this.readUInt8(offset) } -exports.isError = isError; -function isFunction(arg) { - return typeof arg === 'function'; +// `set` will be removed in Node 0.13+ +Buffer.prototype.set = function (v, offset) { + console.log('.set() is deprecated. Access using array indexes instead.') + return this.writeUInt8(v, offset) } -exports.isFunction = isFunction; -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; +Buffer.prototype.readUInt8 = function (offset, noAssert) { + if (!noAssert) { + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'Trying to read beyond buffer length') + } + + if (offset >= this.length) + return + + return this[offset] } -exports.isPrimitive = isPrimitive; -exports.isBuffer = require('./support/isBuffer'); +function _readUInt16 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') + } -function objectToString(o) { - return Object.prototype.toString.call(o); + var len = buf.length + if (offset >= len) + return + + var val + if (littleEndian) { + val = buf[offset] + if (offset + 1 < len) + val |= buf[offset + 1] << 8 + } else { + val = buf[offset] << 8 + if (offset + 1 < len) + val |= buf[offset + 1] + } + return val } +Buffer.prototype.readUInt16LE = function (offset, noAssert) { + return _readUInt16(this, offset, true, noAssert) +} -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); +Buffer.prototype.readUInt16BE = function (offset, noAssert) { + return _readUInt16(this, offset, false, noAssert) } +function _readUInt32 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') + } -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; + var len = buf.length + if (offset >= len) + return -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); + var val + if (littleEndian) { + if (offset + 2 < len) + val = buf[offset + 2] << 16 + if (offset + 1 < len) + val |= buf[offset + 1] << 8 + val |= buf[offset] + if (offset + 3 < len) + val = val + (buf[offset + 3] << 24 >>> 0) + } else { + if (offset + 1 < len) + val = buf[offset + 1] << 16 + if (offset + 2 < len) + val |= buf[offset + 2] << 8 + if (offset + 3 < len) + val |= buf[offset + 3] + val = val + (buf[offset] << 24 >>> 0) + } + return val } +Buffer.prototype.readUInt32LE = function (offset, noAssert) { + return _readUInt32(this, offset, true, noAssert) +} -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; +Buffer.prototype.readUInt32BE = function (offset, noAssert) { + return _readUInt32(this, offset, false, noAssert) +} +Buffer.prototype.readInt8 = function (offset, noAssert) { + if (!noAssert) { + assert(offset !== undefined && offset !== null, + 'missing offset') + assert(offset < this.length, 'Trying to read beyond buffer length') + } -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = require('inherits'); + if (offset >= this.length) + return -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; + var neg = this[offset] & 0x80 + if (neg) + return (0xff - this[offset] + 1) * -1 + else + return this[offset] +} - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; +function _readInt16 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') } - return origin; -}; -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); + var len = buf.length + if (offset >= len) + return + + var val = _readUInt16(buf, offset, littleEndian, true) + var neg = val & 0x8000 + if (neg) + return (0xffff - val + 1) * -1 + else + return val } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/assert/node_modules/util/util.js","/node_modules/gulp-browserify/node_modules/assert/node_modules/util") -},{"./support/isBuffer":53,"buffer":57,"inherits":52,"lYpoI2":59}],55:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; +Buffer.prototype.readInt16LE = function (offset, noAssert) { + return _readInt16(this, offset, true, noAssert) +} -;(function (exports) { - 'use strict'; +Buffer.prototype.readInt16BE = function (offset, noAssert) { + return _readInt16(this, offset, false, noAssert) +} - var Arr = (typeof Uint8Array !== 'undefined') - ? Uint8Array - : Array - - var PLUS = '+'.charCodeAt(0) - var SLASH = '/'.charCodeAt(0) - var NUMBER = '0'.charCodeAt(0) - var LOWER = 'a'.charCodeAt(0) - var UPPER = 'A'.charCodeAt(0) - var PLUS_URL_SAFE = '-'.charCodeAt(0) - var SLASH_URL_SAFE = '_'.charCodeAt(0) +function _readInt32 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') + } - function decode (elt) { - var code = elt.charCodeAt(0) - if (code === PLUS || - code === PLUS_URL_SAFE) - return 62 // '+' - if (code === SLASH || - code === SLASH_URL_SAFE) - return 63 // '/' - if (code < NUMBER) - return -1 //no match - if (code < NUMBER + 10) - return code - NUMBER + 26 + 26 - if (code < UPPER + 26) - return code - UPPER - if (code < LOWER + 26) - return code - LOWER + 26 - } + var len = buf.length + if (offset >= len) + return - function b64ToByteArray (b64) { - var i, j, l, tmp, placeHolders, arr + var val = _readUInt32(buf, offset, littleEndian, true) + var neg = val & 0x80000000 + if (neg) + return (0xffffffff - val + 1) * -1 + else + return val +} - if (b64.length % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } +Buffer.prototype.readInt32LE = function (offset, noAssert) { + return _readInt32(this, offset, true, noAssert) +} - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - var len = b64.length - placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 +Buffer.prototype.readInt32BE = function (offset, noAssert) { + return _readInt32(this, offset, false, noAssert) +} - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(b64.length * 3 / 4 - placeHolders) +function _readFloat (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') + } - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? b64.length - 4 : b64.length + return ieee754.read(buf, offset, littleEndian, 23, 4) +} - var L = 0 +Buffer.prototype.readFloatLE = function (offset, noAssert) { + return _readFloat(this, offset, true, noAssert) +} - function push (v) { - arr[L++] = v - } +Buffer.prototype.readFloatBE = function (offset, noAssert) { + return _readFloat(this, offset, false, noAssert) +} - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) - push((tmp & 0xFF0000) >> 16) - push((tmp & 0xFF00) >> 8) - push(tmp & 0xFF) - } +function _readDouble (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset + 7 < buf.length, 'Trying to read beyond buffer length') + } - if (placeHolders === 2) { - tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) - push(tmp & 0xFF) - } else if (placeHolders === 1) { - tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) - push((tmp >> 8) & 0xFF) - push(tmp & 0xFF) - } + return ieee754.read(buf, offset, littleEndian, 52, 8) +} - return arr - } +Buffer.prototype.readDoubleLE = function (offset, noAssert) { + return _readDouble(this, offset, true, noAssert) +} - function uint8ToBase64 (uint8) { - var i, - extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes - output = "", - temp, length +Buffer.prototype.readDoubleBE = function (offset, noAssert) { + return _readDouble(this, offset, false, noAssert) +} - function encode (num) { - return lookup.charAt(num) - } +Buffer.prototype.writeUInt8 = function (value, offset, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'trying to write beyond buffer length') + verifuint(value, 0xff) + } - function tripletToBase64 (num) { - return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) - } + if (offset >= this.length) return - // go through the array every three bytes, we'll deal with trailing stuff later - for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { - temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output += tripletToBase64(temp) - } + this[offset] = value +} - // pad the end with zeros, but make sure to not forget the extra bytes - switch (extraBytes) { - case 1: - temp = uint8[uint8.length - 1] - output += encode(temp >> 2) - output += encode((temp << 4) & 0x3F) - output += '==' - break - case 2: - temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) - output += encode(temp >> 10) - output += encode((temp >> 4) & 0x3F) - output += encode((temp << 2) & 0x3F) - output += '=' - break - } +function _writeUInt16 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'trying to write beyond buffer length') + verifuint(value, 0xffff) + } - return output - } + var len = buf.length + if (offset >= len) + return - exports.toByteArray = b64ToByteArray - exports.fromByteArray = uint8ToBase64 -}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) + for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) { + buf[offset + i] = + (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/base64-js/lib/b64.js","/node_modules/gulp-browserify/node_modules/base64-js/lib") -},{"buffer":57,"lYpoI2":59}],56:[function(require,module,exports){ +Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) { + _writeUInt16(this, value, offset, true, noAssert) +} -},{"buffer":57,"lYpoI2":59}],57:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ +Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) { + _writeUInt16(this, value, offset, false, noAssert) +} -var base64 = require('base64-js') -var ieee754 = require('ieee754') +function _writeUInt32 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'trying to write beyond buffer length') + verifuint(value, 0xffffffff) + } -exports.Buffer = Buffer -exports.SlowBuffer = Buffer -exports.INSPECT_MAX_BYTES = 50 -Buffer.poolSize = 8192 + var len = buf.length + if (offset >= len) + return -/** - * If `Buffer._useTypedArrays`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (compatible down to IE6) - */ -Buffer._useTypedArrays = (function () { - // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+, - // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding - // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support - // because we need to be able to add all the node Buffer API methods. This is an issue - // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438 - try { - var buf = new ArrayBuffer(0) - var arr = new Uint8Array(buf) - arr.foo = function () { return 42 } - return 42 === arr.foo() && - typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray` - } catch (e) { - return false + for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) { + buf[offset + i] = + (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff } -})() +} -/** - * Class: Buffer - * ============= - * - * The Buffer constructor returns instances of `Uint8Array` that are augmented - * with function properties for all the node `Buffer` API functions. We use - * `Uint8Array` so that square bracket notation works as expected -- it returns - * a single octet. - * - * By augmenting the instances, we can avoid modifying the `Uint8Array` - * prototype. - */ -function Buffer (subject, encoding, noZero) { - if (!(this instanceof Buffer)) - return new Buffer(subject, encoding, noZero) +Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) { + _writeUInt32(this, value, offset, true, noAssert) +} - var type = typeof subject +Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) { + _writeUInt32(this, value, offset, false, noAssert) +} - // Workaround: node's base64 implementation allows for non-padded strings - // while base64-js does not. - if (encoding === 'base64' && type === 'string') { - subject = stringtrim(subject) - while (subject.length % 4 !== 0) { - subject = subject + '=' - } +Buffer.prototype.writeInt8 = function (value, offset, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7f, -0x80) } - // Find the length - var length - if (type === 'number') - length = coerce(subject) - else if (type === 'string') - length = Buffer.byteLength(subject, encoding) - else if (type === 'object') - length = coerce(subject.length) // assume that object is array-like + if (offset >= this.length) + return + + if (value >= 0) + this.writeUInt8(value, offset, noAssert) else - throw new Error('First argument needs to be a number, array or string.') + this.writeUInt8(0xff + value + 1, offset, noAssert) +} - var buf - if (Buffer._useTypedArrays) { - // Preferred: Return an augmented `Uint8Array` instance for best performance - buf = Buffer._augment(new Uint8Array(length)) - } else { - // Fallback: Return THIS instance of Buffer (created by `new`) - buf = this - buf.length = length - buf._isBuffer = true +function _writeInt16 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7fff, -0x8000) } - var i - if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') { - // Speed optimization -- use set if we're copying from a typed array - buf._set(subject) - } else if (isArrayish(subject)) { - // Treat array-ish objects as a byte array - for (i = 0; i < length; i++) { - if (Buffer.isBuffer(subject)) - buf[i] = subject.readUInt8(i) - else - buf[i] = subject[i] - } - } else if (type === 'string') { - buf.write(subject, 0, encoding) - } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) { - for (i = 0; i < length; i++) { - buf[i] = 0 - } - } + var len = buf.length + if (offset >= len) + return - return buf + if (value >= 0) + _writeUInt16(buf, value, offset, littleEndian, noAssert) + else + _writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert) } -// STATIC METHODS -// ============== - -Buffer.isEncoding = function (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'binary': - case 'base64': - case 'raw': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } +Buffer.prototype.writeInt16LE = function (value, offset, noAssert) { + _writeInt16(this, value, offset, true, noAssert) } -Buffer.isBuffer = function (b) { - return !!(b !== null && b !== undefined && b._isBuffer) +Buffer.prototype.writeInt16BE = function (value, offset, noAssert) { + _writeInt16(this, value, offset, false, noAssert) } -Buffer.byteLength = function (str, encoding) { - var ret - str = str + '' - switch (encoding || 'utf8') { - case 'hex': - ret = str.length / 2 - break - case 'utf8': - case 'utf-8': - ret = utf8ToBytes(str).length - break - case 'ascii': - case 'binary': - case 'raw': - ret = str.length - break - case 'base64': - ret = base64ToBytes(str).length - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = str.length * 2 - break - default: - throw new Error('Unknown encoding') +function _writeInt32 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7fffffff, -0x80000000) } - return ret -} -Buffer.concat = function (list, totalLength) { - assert(isArray(list), 'Usage: Buffer.concat(list, [totalLength])\n' + - 'list should be an Array.') - - if (list.length === 0) { - return new Buffer(0) - } else if (list.length === 1) { - return list[0] - } + var len = buf.length + if (offset >= len) + return - var i - if (typeof totalLength !== 'number') { - totalLength = 0 - for (i = 0; i < list.length; i++) { - totalLength += list[i].length - } - } + if (value >= 0) + _writeUInt32(buf, value, offset, littleEndian, noAssert) + else + _writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert) +} - var buf = new Buffer(totalLength) - var pos = 0 - for (i = 0; i < list.length; i++) { - var item = list[i] - item.copy(buf, pos) - pos += item.length - } - return buf +Buffer.prototype.writeInt32LE = function (value, offset, noAssert) { + _writeInt32(this, value, offset, true, noAssert) } -// BUFFER INSTANCE METHODS -// ======================= +Buffer.prototype.writeInt32BE = function (value, offset, noAssert) { + _writeInt32(this, value, offset, false, noAssert) +} -function _hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } +function _writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') + verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38) } - // must be an even number of digits - var strLen = string.length - assert(strLen % 2 === 0, 'Invalid hex string') + var len = buf.length + if (offset >= len) + return - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; i++) { - var byte = parseInt(string.substr(i * 2, 2), 16) - assert(!isNaN(byte), 'Invalid hex string') - buf[offset + i] = byte - } - Buffer._charsWritten = i * 2 - return i + ieee754.write(buf, value, offset, littleEndian, 23, 4) } -function _utf8Write (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(utf8ToBytes(string), buf, offset, length) - return charsWritten +Buffer.prototype.writeFloatLE = function (value, offset, noAssert) { + _writeFloat(this, value, offset, true, noAssert) } -function _asciiWrite (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(asciiToBytes(string), buf, offset, length) - return charsWritten +Buffer.prototype.writeFloatBE = function (value, offset, noAssert) { + _writeFloat(this, value, offset, false, noAssert) } -function _binaryWrite (buf, string, offset, length) { - return _asciiWrite(buf, string, offset, length) +function _writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 7 < buf.length, + 'Trying to write beyond buffer length') + verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + + var len = buf.length + if (offset >= len) + return + + ieee754.write(buf, value, offset, littleEndian, 52, 8) } -function _base64Write (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(base64ToBytes(string), buf, offset, length) - return charsWritten +Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) { + _writeDouble(this, value, offset, true, noAssert) } -function _utf16leWrite (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(utf16leToBytes(string), buf, offset, length) - return charsWritten +Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) { + _writeDouble(this, value, offset, false, noAssert) } -Buffer.prototype.write = function (string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length - length = undefined - } - } else { // legacy - var swap = encoding - encoding = offset - offset = length - length = swap - } - - offset = Number(offset) || 0 - var remaining = this.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - encoding = String(encoding || 'utf8').toLowerCase() - - var ret - switch (encoding) { - case 'hex': - ret = _hexWrite(this, string, offset, length) - break - case 'utf8': - case 'utf-8': - ret = _utf8Write(this, string, offset, length) - break - case 'ascii': - ret = _asciiWrite(this, string, offset, length) - break - case 'binary': - ret = _binaryWrite(this, string, offset, length) - break - case 'base64': - ret = _base64Write(this, string, offset, length) - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = _utf16leWrite(this, string, offset, length) - break - default: - throw new Error('Unknown encoding') - } - return ret -} - -Buffer.prototype.toString = function (encoding, start, end) { - var self = this - - encoding = String(encoding || 'utf8').toLowerCase() - start = Number(start) || 0 - end = (end !== undefined) - ? Number(end) - : end = self.length - - // Fastpath empty strings - if (end === start) - return '' - - var ret - switch (encoding) { - case 'hex': - ret = _hexSlice(self, start, end) - break - case 'utf8': - case 'utf-8': - ret = _utf8Slice(self, start, end) - break - case 'ascii': - ret = _asciiSlice(self, start, end) - break - case 'binary': - ret = _binarySlice(self, start, end) - break - case 'base64': - ret = _base64Slice(self, start, end) - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = _utf16leSlice(self, start, end) - break - default: - throw new Error('Unknown encoding') - } - return ret -} +// fill(value, start=0, end=buffer.length) +Buffer.prototype.fill = function (value, start, end) { + if (!value) value = 0 + if (!start) start = 0 + if (!end) end = this.length -Buffer.prototype.toJSON = function () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) + if (typeof value === 'string') { + value = value.charCodeAt(0) } -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function (target, target_start, start, end) { - var source = this - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (!target_start) target_start = 0 + assert(typeof value === 'number' && !isNaN(value), 'value is not a number') + assert(end >= start, 'end < start') - // Copy 0 bytes; we're done + // Fill 0 bytes; we're done if (end === start) return - if (target.length === 0 || source.length === 0) return - - // Fatal error conditions - assert(end >= start, 'sourceEnd < sourceStart') - assert(target_start >= 0 && target_start < target.length, - 'targetStart out of bounds') - assert(start >= 0 && start < source.length, 'sourceStart out of bounds') - assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) - end = this.length - if (target.length - target_start < end - start) - end = target.length - target_start + start + if (this.length === 0) return - var len = end - start + assert(start >= 0 && start < this.length, 'start out of bounds') + assert(end >= 0 && end <= this.length, 'end out of bounds') - if (len < 100 || !Buffer._useTypedArrays) { - for (var i = 0; i < len; i++) - target[i + target_start] = this[i + start] - } else { - target._set(this.subarray(start, start + len), target_start) + for (var i = start; i < end; i++) { + this[i] = value } } -function _base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) +Buffer.prototype.inspect = function () { + var out = [] + var len = this.length + for (var i = 0; i < len; i++) { + out[i] = toHex(this[i]) + if (i === exports.INSPECT_MAX_BYTES) { + out[i + 1] = '...' + break + } } + return '' } -function _utf8Slice (buf, start, end) { - var res = '' - var tmp = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) { - if (buf[i] <= 0x7F) { - res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]) - tmp = '' +/** + * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. + * Added in Node 0.12. Only available in browsers that support ArrayBuffer. + */ +Buffer.prototype.toArrayBuffer = function () { + if (typeof Uint8Array !== 'undefined') { + if (Buffer._useTypedArrays) { + return (new Buffer(this)).buffer } else { - tmp += '%' + buf[i].toString(16) + var buf = new Uint8Array(this.length) + for (var i = 0, len = buf.length; i < len; i += 1) + buf[i] = this[i] + return buf.buffer } + } else { + throw new Error('Buffer.toArrayBuffer not supported in this browser') } - - return res + decodeUtf8Char(tmp) } -function _asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) - ret += String.fromCharCode(buf[i]) - return ret -} +// HELPER FUNCTIONS +// ================ -function _binarySlice (buf, start, end) { - return _asciiSlice(buf, start, end) +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') } -function _hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len +var BP = Buffer.prototype - var out = '' - for (var i = start; i < end; i++) { - out += toHex(buf[i]) - } - return out -} +/** + * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods + */ +Buffer._augment = function (arr) { + arr._isBuffer = true -function _utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i+1] * 256) - } - return res -} + // save reference to original Uint8Array get/set methods before overwriting + arr._get = arr.get + arr._set = arr.set -Buffer.prototype.slice = function (start, end) { - var len = this.length - start = clamp(start, len, 0) - end = clamp(end, len, len) + // deprecated, will be removed in node 0.13+ + arr.get = BP.get + arr.set = BP.set - if (Buffer._useTypedArrays) { - return Buffer._augment(this.subarray(start, end)) - } else { - var sliceLen = end - start - var newBuf = new Buffer(sliceLen, undefined, true) - for (var i = 0; i < sliceLen; i++) { - newBuf[i] = this[i + start] - } - return newBuf - } -} + arr.write = BP.write + arr.toString = BP.toString + arr.toLocaleString = BP.toString + arr.toJSON = BP.toJSON + arr.copy = BP.copy + arr.slice = BP.slice + arr.readUInt8 = BP.readUInt8 + arr.readUInt16LE = BP.readUInt16LE + arr.readUInt16BE = BP.readUInt16BE + arr.readUInt32LE = BP.readUInt32LE + arr.readUInt32BE = BP.readUInt32BE + arr.readInt8 = BP.readInt8 + arr.readInt16LE = BP.readInt16LE + arr.readInt16BE = BP.readInt16BE + arr.readInt32LE = BP.readInt32LE + arr.readInt32BE = BP.readInt32BE + arr.readFloatLE = BP.readFloatLE + arr.readFloatBE = BP.readFloatBE + arr.readDoubleLE = BP.readDoubleLE + arr.readDoubleBE = BP.readDoubleBE + arr.writeUInt8 = BP.writeUInt8 + arr.writeUInt16LE = BP.writeUInt16LE + arr.writeUInt16BE = BP.writeUInt16BE + arr.writeUInt32LE = BP.writeUInt32LE + arr.writeUInt32BE = BP.writeUInt32BE + arr.writeInt8 = BP.writeInt8 + arr.writeInt16LE = BP.writeInt16LE + arr.writeInt16BE = BP.writeInt16BE + arr.writeInt32LE = BP.writeInt32LE + arr.writeInt32BE = BP.writeInt32BE + arr.writeFloatLE = BP.writeFloatLE + arr.writeFloatBE = BP.writeFloatBE + arr.writeDoubleLE = BP.writeDoubleLE + arr.writeDoubleBE = BP.writeDoubleBE + arr.fill = BP.fill + arr.inspect = BP.inspect + arr.toArrayBuffer = BP.toArrayBuffer -// `get` will be removed in Node 0.13+ -Buffer.prototype.get = function (offset) { - console.log('.get() is deprecated. Access using array indexes instead.') - return this.readUInt8(offset) + return arr } -// `set` will be removed in Node 0.13+ -Buffer.prototype.set = function (v, offset) { - console.log('.set() is deprecated. Access using array indexes instead.') - return this.writeUInt8(v, offset) +// slice(start, end) +function clamp (index, len, defaultValue) { + if (typeof index !== 'number') return defaultValue + index = ~~index; // Coerce to integer. + if (index >= len) return len + if (index >= 0) return index + index += len + if (index >= 0) return index + return 0 } -Buffer.prototype.readUInt8 = function (offset, noAssert) { - if (!noAssert) { - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'Trying to read beyond buffer length') - } - - if (offset >= this.length) - return - - return this[offset] +function coerce (length) { + // Coerce length to a number (possibly NaN), round up + // in case it's fractional (e.g. 123.456) then do a + // double negate to coerce a NaN to 0. Easy, right? + length = ~~Math.ceil(+length) + return length < 0 ? 0 : length } -function _readUInt16 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') - } - - var len = buf.length - if (offset >= len) - return - - var val - if (littleEndian) { - val = buf[offset] - if (offset + 1 < len) - val |= buf[offset + 1] << 8 - } else { - val = buf[offset] << 8 - if (offset + 1 < len) - val |= buf[offset + 1] - } - return val +function isArray (subject) { + return (Array.isArray || function (subject) { + return Object.prototype.toString.call(subject) === '[object Array]' + })(subject) } -Buffer.prototype.readUInt16LE = function (offset, noAssert) { - return _readUInt16(this, offset, true, noAssert) +function isArrayish (subject) { + return isArray(subject) || Buffer.isBuffer(subject) || + subject && typeof subject === 'object' && + typeof subject.length === 'number' } -Buffer.prototype.readUInt16BE = function (offset, noAssert) { - return _readUInt16(this, offset, false, noAssert) +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) } -function _readUInt32 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') - } - - var len = buf.length - if (offset >= len) - return - - var val - if (littleEndian) { - if (offset + 2 < len) - val = buf[offset + 2] << 16 - if (offset + 1 < len) - val |= buf[offset + 1] << 8 - val |= buf[offset] - if (offset + 3 < len) - val = val + (buf[offset + 3] << 24 >>> 0) - } else { - if (offset + 1 < len) - val = buf[offset + 1] << 16 - if (offset + 2 < len) - val |= buf[offset + 2] << 8 - if (offset + 3 < len) - val |= buf[offset + 3] - val = val + (buf[offset] << 24 >>> 0) +function utf8ToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; i++) { + var b = str.charCodeAt(i) + if (b <= 0x7F) + byteArray.push(str.charCodeAt(i)) + else { + var start = i + if (b >= 0xD800 && b <= 0xDFFF) i++ + var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%') + for (var j = 0; j < h.length; j++) + byteArray.push(parseInt(h[j], 16)) + } } - return val -} - -Buffer.prototype.readUInt32LE = function (offset, noAssert) { - return _readUInt32(this, offset, true, noAssert) -} - -Buffer.prototype.readUInt32BE = function (offset, noAssert) { - return _readUInt32(this, offset, false, noAssert) + return byteArray } -Buffer.prototype.readInt8 = function (offset, noAssert) { - if (!noAssert) { - assert(offset !== undefined && offset !== null, - 'missing offset') - assert(offset < this.length, 'Trying to read beyond buffer length') +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; i++) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) } - - if (offset >= this.length) - return - - var neg = this[offset] & 0x80 - if (neg) - return (0xff - this[offset] + 1) * -1 - else - return this[offset] + return byteArray } -function _readInt16 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') +function utf16leToBytes (str) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; i++) { + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) } - var len = buf.length - if (offset >= len) - return - - var val = _readUInt16(buf, offset, littleEndian, true) - var neg = val & 0x8000 - if (neg) - return (0xffff - val + 1) * -1 - else - return val -} - -Buffer.prototype.readInt16LE = function (offset, noAssert) { - return _readInt16(this, offset, true, noAssert) + return byteArray } -Buffer.prototype.readInt16BE = function (offset, noAssert) { - return _readInt16(this, offset, false, noAssert) +function base64ToBytes (str) { + return base64.toByteArray(str) } -function _readInt32 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') +function blitBuffer (src, dst, offset, length) { + var pos + for (var i = 0; i < length; i++) { + if ((i + offset >= dst.length) || (i >= src.length)) + break + dst[i + offset] = src[i] } - - var len = buf.length - if (offset >= len) - return - - var val = _readUInt32(buf, offset, littleEndian, true) - var neg = val & 0x80000000 - if (neg) - return (0xffffffff - val + 1) * -1 - else - return val + return i } -Buffer.prototype.readInt32LE = function (offset, noAssert) { - return _readInt32(this, offset, true, noAssert) +function decodeUtf8Char (str) { + try { + return decodeURIComponent(str) + } catch (err) { + return String.fromCharCode(0xFFFD) // UTF 8 invalid char + } } -Buffer.prototype.readInt32BE = function (offset, noAssert) { - return _readInt32(this, offset, false, noAssert) +/* + * We have to make sure that the value is a valid integer. This means that it + * is non-negative. It has no fractional component and that it does not + * exceed the maximum allowed value. + */ +function verifuint (value, max) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value >= 0, 'specified a negative value for writing an unsigned value') + assert(value <= max, 'value is larger than maximum value for type') + assert(Math.floor(value) === value, 'value has a fractional component') } -function _readFloat (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') - } - - return ieee754.read(buf, offset, littleEndian, 23, 4) +function verifsint (value, max, min) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value <= max, 'value larger than maximum allowed value') + assert(value >= min, 'value smaller than minimum allowed value') + assert(Math.floor(value) === value, 'value has a fractional component') } -Buffer.prototype.readFloatLE = function (offset, noAssert) { - return _readFloat(this, offset, true, noAssert) +function verifIEEE754 (value, max, min) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value <= max, 'value larger than maximum allowed value') + assert(value >= min, 'value smaller than minimum allowed value') } -Buffer.prototype.readFloatBE = function (offset, noAssert) { - return _readFloat(this, offset, false, noAssert) +function assert (test, message) { + if (!test) throw new Error(message || 'Failed assertion') } -function _readDouble (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset + 7 < buf.length, 'Trying to read beyond buffer length') - } - - return ieee754.read(buf, offset, littleEndian, 52, 8) -} - -Buffer.prototype.readDoubleLE = function (offset, noAssert) { - return _readDouble(this, offset, true, noAssert) -} +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/buffer/index.js","/node_modules/buffer") +},{"FWaASH":50,"base64-js":48,"buffer":52,"ieee754":98}],53:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ + +/** + * Expose `Emitter`. + */ + +if (typeof module !== 'undefined') { + module.exports = Emitter; +} + +/** + * Initialize a new `Emitter`. + * + * @api public + */ + +function Emitter(obj) { + if (obj) return mixin(obj); +}; + +/** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; +} + +/** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.on = +Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []) + .push(fn); + return this; +}; + +/** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.once = function(event, fn){ + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; +}; + +/** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.off = +Emitter.prototype.removeListener = +Emitter.prototype.removeAllListeners = +Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + + // Remove event specific arrays for event types that no + // one is subscribed for to avoid memory leak. + if (callbacks.length === 0) { + delete this._callbacks['$' + event]; + } + + return this; +}; + +/** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + +Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + + var args = new Array(arguments.length - 1) + , callbacks = this._callbacks['$' + event]; + + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; +}; + +/** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + +Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; +}; + +/** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + +Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; +}; -Buffer.prototype.readDoubleBE = function (offset, noAssert) { - return _readDouble(this, offset, false, noAssert) -} +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/component-emitter/index.js","/node_modules/component-emitter") +},{"FWaASH":50,"buffer":52}],54:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2012-2014 Yusuke Suzuki + Copyright (C) 2015 Ingvar Stepanyan + Copyright (C) 2014 Ivan Nikulin + Copyright (C) 2012-2013 Michael Ficarra + Copyright (C) 2012-2013 Mathias Bynens + Copyright (C) 2013 Irakli Gozalishvili + Copyright (C) 2012 Robert Gust-Bardon + Copyright (C) 2012 John Freeman + Copyright (C) 2011-2012 Ariya Hidayat + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Kris Kowal + Copyright (C) 2012 Arpad Borsos -Buffer.prototype.writeUInt8 = function (value, offset, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'trying to write beyond buffer length') - verifuint(value, 0xff) - } + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: - if (offset >= this.length) return + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. - this[offset] = value -} + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ -function _writeUInt16 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'trying to write beyond buffer length') - verifuint(value, 0xffff) - } +/*global exports:true, require:true, global:true*/ +(function () { + 'use strict'; - var len = buf.length - if (offset >= len) - return + var Syntax, + Precedence, + BinaryPrecedence, + SourceNode, + estraverse, + esutils, + base, + indent, + json, + renumber, + hexadecimal, + quotes, + escapeless, + newline, + space, + parentheses, + semicolons, + safeConcatenation, + directive, + extra, + parse, + sourceMap, + sourceCode, + preserveBlankLines, + FORMAT_MINIFY, + FORMAT_DEFAULTS; - for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) { - buf[offset + i] = - (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} + estraverse = require('estraverse'); + esutils = require('esutils'); -Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) { - _writeUInt16(this, value, offset, true, noAssert) -} + Syntax = estraverse.Syntax; -Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) { - _writeUInt16(this, value, offset, false, noAssert) -} + // Generation is done by generateExpression. + function isExpression(node) { + return CodeGenerator.Expression.hasOwnProperty(node.type); + } -function _writeUInt32 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'trying to write beyond buffer length') - verifuint(value, 0xffffffff) - } + // Generation is done by generateStatement. + function isStatement(node) { + return CodeGenerator.Statement.hasOwnProperty(node.type); + } - var len = buf.length - if (offset >= len) - return + Precedence = { + Sequence: 0, + Yield: 1, + Assignment: 1, + Conditional: 2, + ArrowFunction: 2, + LogicalOR: 3, + LogicalAND: 4, + BitwiseOR: 5, + BitwiseXOR: 6, + BitwiseAND: 7, + Equality: 8, + Relational: 9, + BitwiseSHIFT: 10, + Additive: 11, + Multiplicative: 12, + Exponentiation: 13, + Await: 14, + Unary: 14, + Postfix: 15, + Call: 16, + New: 17, + TaggedTemplate: 18, + Member: 19, + Primary: 20 + }; - for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) { - buf[offset + i] = - (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff - } -} + BinaryPrecedence = { + '||': Precedence.LogicalOR, + '&&': Precedence.LogicalAND, + '|': Precedence.BitwiseOR, + '^': Precedence.BitwiseXOR, + '&': Precedence.BitwiseAND, + '==': Precedence.Equality, + '!=': Precedence.Equality, + '===': Precedence.Equality, + '!==': Precedence.Equality, + 'is': Precedence.Equality, + 'isnt': Precedence.Equality, + '<': Precedence.Relational, + '>': Precedence.Relational, + '<=': Precedence.Relational, + '>=': Precedence.Relational, + 'in': Precedence.Relational, + 'instanceof': Precedence.Relational, + '<<': Precedence.BitwiseSHIFT, + '>>': Precedence.BitwiseSHIFT, + '>>>': Precedence.BitwiseSHIFT, + '+': Precedence.Additive, + '-': Precedence.Additive, + '*': Precedence.Multiplicative, + '%': Precedence.Multiplicative, + '/': Precedence.Multiplicative, + '**': Precedence.Exponentiation + }; -Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) { - _writeUInt32(this, value, offset, true, noAssert) -} + //Flags + var F_ALLOW_IN = 1, + F_ALLOW_CALL = 1 << 1, + F_ALLOW_UNPARATH_NEW = 1 << 2, + F_FUNC_BODY = 1 << 3, + F_DIRECTIVE_CTX = 1 << 4, + F_SEMICOLON_OPT = 1 << 5; -Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) { - _writeUInt32(this, value, offset, false, noAssert) -} + //Expression flag sets + //NOTE: Flag order: + // F_ALLOW_IN + // F_ALLOW_CALL + // F_ALLOW_UNPARATH_NEW + var E_FTT = F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW, + E_TTF = F_ALLOW_IN | F_ALLOW_CALL, + E_TTT = F_ALLOW_IN | F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW, + E_TFF = F_ALLOW_IN, + E_FFT = F_ALLOW_UNPARATH_NEW, + E_TFT = F_ALLOW_IN | F_ALLOW_UNPARATH_NEW; -Buffer.prototype.writeInt8 = function (value, offset, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7f, -0x80) - } + //Statement flag sets + //NOTE: Flag order: + // F_ALLOW_IN + // F_FUNC_BODY + // F_DIRECTIVE_CTX + // F_SEMICOLON_OPT + var S_TFFF = F_ALLOW_IN, + S_TFFT = F_ALLOW_IN | F_SEMICOLON_OPT, + S_FFFF = 0x00, + S_TFTF = F_ALLOW_IN | F_DIRECTIVE_CTX, + S_TTFF = F_ALLOW_IN | F_FUNC_BODY; - if (offset >= this.length) - return + function getDefaultOptions() { + // default options + return { + indent: null, + base: null, + parse: null, + comment: false, + format: { + indent: { + style: ' ', + base: 0, + adjustMultilineComment: false + }, + newline: '\n', + space: ' ', + json: false, + renumber: false, + hexadecimal: false, + quotes: 'single', + escapeless: false, + compact: false, + parentheses: true, + semicolons: true, + safeConcatenation: false, + preserveBlankLines: false + }, + moz: { + comprehensionExpressionStartsWithAssignment: false, + starlessGenerator: false + }, + sourceMap: null, + sourceMapRoot: null, + sourceMapWithCode: false, + directive: false, + raw: true, + verbatim: null, + sourceCode: null + }; + } - if (value >= 0) - this.writeUInt8(value, offset, noAssert) - else - this.writeUInt8(0xff + value + 1, offset, noAssert) -} + function stringRepeat(str, num) { + var result = ''; -function _writeInt16 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7fff, -0x8000) - } + for (num |= 0; num > 0; num >>>= 1, str += str) { + if (num & 1) { + result += str; + } + } - var len = buf.length - if (offset >= len) - return + return result; + } - if (value >= 0) - _writeUInt16(buf, value, offset, littleEndian, noAssert) - else - _writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert) -} + function hasLineTerminator(str) { + return (/[\r\n]/g).test(str); + } -Buffer.prototype.writeInt16LE = function (value, offset, noAssert) { - _writeInt16(this, value, offset, true, noAssert) -} + function endsWithLineTerminator(str) { + var len = str.length; + return len && esutils.code.isLineTerminator(str.charCodeAt(len - 1)); + } -Buffer.prototype.writeInt16BE = function (value, offset, noAssert) { - _writeInt16(this, value, offset, false, noAssert) -} + function merge(target, override) { + var key; + for (key in override) { + if (override.hasOwnProperty(key)) { + target[key] = override[key]; + } + } + return target; + } -function _writeInt32 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7fffffff, -0x80000000) - } + function updateDeeply(target, override) { + var key, val; - var len = buf.length - if (offset >= len) - return + function isHashObject(target) { + return typeof target === 'object' && target instanceof Object && !(target instanceof RegExp); + } - if (value >= 0) - _writeUInt32(buf, value, offset, littleEndian, noAssert) - else - _writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert) -} + for (key in override) { + if (override.hasOwnProperty(key)) { + val = override[key]; + if (isHashObject(val)) { + if (isHashObject(target[key])) { + updateDeeply(target[key], val); + } else { + target[key] = updateDeeply({}, val); + } + } else { + target[key] = val; + } + } + } + return target; + } -Buffer.prototype.writeInt32LE = function (value, offset, noAssert) { - _writeInt32(this, value, offset, true, noAssert) -} + function generateNumber(value) { + var result, point, temp, exponent, pos; -Buffer.prototype.writeInt32BE = function (value, offset, noAssert) { - _writeInt32(this, value, offset, false, noAssert) -} + if (value !== value) { + throw new Error('Numeric literal whose value is NaN'); + } + if (value < 0 || (value === 0 && 1 / value < 0)) { + throw new Error('Numeric literal whose value is negative'); + } -function _writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') - verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38) - } + if (value === 1 / 0) { + return json ? 'null' : renumber ? '1e400' : '1e+400'; + } - var len = buf.length - if (offset >= len) - return + result = '' + value; + if (!renumber || result.length < 3) { + return result; + } - ieee754.write(buf, value, offset, littleEndian, 23, 4) -} + point = result.indexOf('.'); + if (!json && result.charCodeAt(0) === 0x30 /* 0 */ && point === 1) { + point = 0; + result = result.slice(1); + } + temp = result; + result = result.replace('e+', 'e'); + exponent = 0; + if ((pos = temp.indexOf('e')) > 0) { + exponent = +temp.slice(pos + 1); + temp = temp.slice(0, pos); + } + if (point >= 0) { + exponent -= temp.length - point - 1; + temp = +(temp.slice(0, point) + temp.slice(point + 1)) + ''; + } + pos = 0; + while (temp.charCodeAt(temp.length + pos - 1) === 0x30 /* 0 */) { + --pos; + } + if (pos !== 0) { + exponent -= pos; + temp = temp.slice(0, pos); + } + if (exponent !== 0) { + temp += 'e' + exponent; + } + if ((temp.length < result.length || + (hexadecimal && value > 1e12 && Math.floor(value) === value && (temp = '0x' + value.toString(16)).length < result.length)) && + +temp === value) { + result = temp; + } -Buffer.prototype.writeFloatLE = function (value, offset, noAssert) { - _writeFloat(this, value, offset, true, noAssert) -} + return result; + } -Buffer.prototype.writeFloatBE = function (value, offset, noAssert) { - _writeFloat(this, value, offset, false, noAssert) -} + // Generate valid RegExp expression. + // This function is based on https://github.com/Constellation/iv Engine -function _writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 7 < buf.length, - 'Trying to write beyond buffer length') - verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308) - } + function escapeRegExpCharacter(ch, previousIsBackslash) { + // not handling '\' and handling \u2028 or \u2029 to unicode escape sequence + if ((ch & ~1) === 0x2028) { + return (previousIsBackslash ? 'u' : '\\u') + ((ch === 0x2028) ? '2028' : '2029'); + } else if (ch === 10 || ch === 13) { // \n, \r + return (previousIsBackslash ? '' : '\\') + ((ch === 10) ? 'n' : 'r'); + } + return String.fromCharCode(ch); + } - var len = buf.length - if (offset >= len) - return + function generateRegExp(reg) { + var match, result, flags, i, iz, ch, characterInBrack, previousIsBackslash; - ieee754.write(buf, value, offset, littleEndian, 52, 8) -} + result = reg.toString(); -Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) { - _writeDouble(this, value, offset, true, noAssert) -} + if (reg.source) { + // extract flag from toString result + match = result.match(/\/([^/]*)$/); + if (!match) { + return result; + } -Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) { - _writeDouble(this, value, offset, false, noAssert) -} + flags = match[1]; + result = ''; -// fill(value, start=0, end=buffer.length) -Buffer.prototype.fill = function (value, start, end) { - if (!value) value = 0 - if (!start) start = 0 - if (!end) end = this.length + characterInBrack = false; + previousIsBackslash = false; + for (i = 0, iz = reg.source.length; i < iz; ++i) { + ch = reg.source.charCodeAt(i); - if (typeof value === 'string') { - value = value.charCodeAt(0) - } + if (!previousIsBackslash) { + if (characterInBrack) { + if (ch === 93) { // ] + characterInBrack = false; + } + } else { + if (ch === 47) { // / + result += '\\'; + } else if (ch === 91) { // [ + characterInBrack = true; + } + } + result += escapeRegExpCharacter(ch, previousIsBackslash); + previousIsBackslash = ch === 92; // \ + } else { + // if new RegExp("\\\n') is provided, create /\n/ + result += escapeRegExpCharacter(ch, previousIsBackslash); + // prevent like /\\[/]/ + previousIsBackslash = false; + } + } - assert(typeof value === 'number' && !isNaN(value), 'value is not a number') - assert(end >= start, 'end < start') + return '/' + result + '/' + flags; + } - // Fill 0 bytes; we're done - if (end === start) return - if (this.length === 0) return + return result; + } - assert(start >= 0 && start < this.length, 'start out of bounds') - assert(end >= 0 && end <= this.length, 'end out of bounds') + function escapeAllowedCharacter(code, next) { + var hex; - for (var i = start; i < end; i++) { - this[i] = value - } -} + if (code === 0x08 /* \b */) { + return '\\b'; + } -Buffer.prototype.inspect = function () { - var out = [] - var len = this.length - for (var i = 0; i < len; i++) { - out[i] = toHex(this[i]) - if (i === exports.INSPECT_MAX_BYTES) { - out[i + 1] = '...' - break - } - } - return '' -} + if (code === 0x0C /* \f */) { + return '\\f'; + } -/** - * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. - * Added in Node 0.12. Only available in browsers that support ArrayBuffer. - */ -Buffer.prototype.toArrayBuffer = function () { - if (typeof Uint8Array !== 'undefined') { - if (Buffer._useTypedArrays) { - return (new Buffer(this)).buffer - } else { - var buf = new Uint8Array(this.length) - for (var i = 0, len = buf.length; i < len; i += 1) - buf[i] = this[i] - return buf.buffer + if (code === 0x09 /* \t */) { + return '\\t'; + } + + hex = code.toString(16).toUpperCase(); + if (json || code > 0xFF) { + return '\\u' + '0000'.slice(hex.length) + hex; + } else if (code === 0x0000 && !esutils.code.isDecimalDigit(next)) { + return '\\0'; + } else if (code === 0x000B /* \v */) { // '\v' + return '\\x0B'; + } else { + return '\\x' + '00'.slice(hex.length) + hex; + } } - } else { - throw new Error('Buffer.toArrayBuffer not supported in this browser') - } -} -// HELPER FUNCTIONS -// ================ + function escapeDisallowedCharacter(code) { + if (code === 0x5C /* \ */) { + return '\\\\'; + } -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} + if (code === 0x0A /* \n */) { + return '\\n'; + } -var BP = Buffer.prototype + if (code === 0x0D /* \r */) { + return '\\r'; + } -/** - * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods - */ -Buffer._augment = function (arr) { - arr._isBuffer = true + if (code === 0x2028) { + return '\\u2028'; + } - // save reference to original Uint8Array get/set methods before overwriting - arr._get = arr.get - arr._set = arr.set + if (code === 0x2029) { + return '\\u2029'; + } - // deprecated, will be removed in node 0.13+ - arr.get = BP.get - arr.set = BP.set + throw new Error('Incorrectly classified character'); + } - arr.write = BP.write - arr.toString = BP.toString - arr.toLocaleString = BP.toString - arr.toJSON = BP.toJSON - arr.copy = BP.copy - arr.slice = BP.slice - arr.readUInt8 = BP.readUInt8 - arr.readUInt16LE = BP.readUInt16LE - arr.readUInt16BE = BP.readUInt16BE - arr.readUInt32LE = BP.readUInt32LE - arr.readUInt32BE = BP.readUInt32BE - arr.readInt8 = BP.readInt8 - arr.readInt16LE = BP.readInt16LE - arr.readInt16BE = BP.readInt16BE - arr.readInt32LE = BP.readInt32LE - arr.readInt32BE = BP.readInt32BE - arr.readFloatLE = BP.readFloatLE - arr.readFloatBE = BP.readFloatBE - arr.readDoubleLE = BP.readDoubleLE - arr.readDoubleBE = BP.readDoubleBE - arr.writeUInt8 = BP.writeUInt8 - arr.writeUInt16LE = BP.writeUInt16LE - arr.writeUInt16BE = BP.writeUInt16BE - arr.writeUInt32LE = BP.writeUInt32LE - arr.writeUInt32BE = BP.writeUInt32BE - arr.writeInt8 = BP.writeInt8 - arr.writeInt16LE = BP.writeInt16LE - arr.writeInt16BE = BP.writeInt16BE - arr.writeInt32LE = BP.writeInt32LE - arr.writeInt32BE = BP.writeInt32BE - arr.writeFloatLE = BP.writeFloatLE - arr.writeFloatBE = BP.writeFloatBE - arr.writeDoubleLE = BP.writeDoubleLE - arr.writeDoubleBE = BP.writeDoubleBE - arr.fill = BP.fill - arr.inspect = BP.inspect - arr.toArrayBuffer = BP.toArrayBuffer + function escapeDirective(str) { + var i, iz, code, quote; - return arr -} + quote = quotes === 'double' ? '"' : '\''; + for (i = 0, iz = str.length; i < iz; ++i) { + code = str.charCodeAt(i); + if (code === 0x27 /* ' */) { + quote = '"'; + break; + } else if (code === 0x22 /* " */) { + quote = '\''; + break; + } else if (code === 0x5C /* \ */) { + ++i; + } + } -// slice(start, end) -function clamp (index, len, defaultValue) { - if (typeof index !== 'number') return defaultValue - index = ~~index; // Coerce to integer. - if (index >= len) return len - if (index >= 0) return index - index += len - if (index >= 0) return index - return 0 -} + return quote + str + quote; + } -function coerce (length) { - // Coerce length to a number (possibly NaN), round up - // in case it's fractional (e.g. 123.456) then do a - // double negate to coerce a NaN to 0. Easy, right? - length = ~~Math.ceil(+length) - return length < 0 ? 0 : length -} + function escapeString(str) { + var result = '', i, len, code, singleQuotes = 0, doubleQuotes = 0, single, quote; -function isArray (subject) { - return (Array.isArray || function (subject) { - return Object.prototype.toString.call(subject) === '[object Array]' - })(subject) -} + for (i = 0, len = str.length; i < len; ++i) { + code = str.charCodeAt(i); + if (code === 0x27 /* ' */) { + ++singleQuotes; + } else if (code === 0x22 /* " */) { + ++doubleQuotes; + } else if (code === 0x2F /* / */ && json) { + result += '\\'; + } else if (esutils.code.isLineTerminator(code) || code === 0x5C /* \ */) { + result += escapeDisallowedCharacter(code); + continue; + } else if (!esutils.code.isIdentifierPartES5(code) && (json && code < 0x20 /* SP */ || !json && !escapeless && (code < 0x20 /* SP */ || code > 0x7E /* ~ */))) { + result += escapeAllowedCharacter(code, str.charCodeAt(i + 1)); + continue; + } + result += String.fromCharCode(code); + } -function isArrayish (subject) { - return isArray(subject) || Buffer.isBuffer(subject) || - subject && typeof subject === 'object' && - typeof subject.length === 'number' -} + single = !(quotes === 'double' || (quotes === 'auto' && doubleQuotes < singleQuotes)); + quote = single ? '\'' : '"'; -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} + if (!(single ? singleQuotes : doubleQuotes)) { + return quote + result + quote; + } -function utf8ToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; i++) { - var b = str.charCodeAt(i) - if (b <= 0x7F) - byteArray.push(str.charCodeAt(i)) - else { - var start = i - if (b >= 0xD800 && b <= 0xDFFF) i++ - var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%') - for (var j = 0; j < h.length; j++) - byteArray.push(parseInt(h[j], 16)) - } - } - return byteArray -} + str = result; + result = quote; -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; i++) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} + for (i = 0, len = str.length; i < len; ++i) { + code = str.charCodeAt(i); + if ((code === 0x27 /* ' */ && single) || (code === 0x22 /* " */ && !single)) { + result += '\\'; + } + result += String.fromCharCode(code); + } -function utf16leToBytes (str) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; i++) { - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } + return result + quote; + } - return byteArray -} + /** + * flatten an array to a string, where the array can contain + * either strings or nested arrays + */ + function flattenToString(arr) { + var i, iz, elem, result = ''; + for (i = 0, iz = arr.length; i < iz; ++i) { + elem = arr[i]; + result += Array.isArray(elem) ? flattenToString(elem) : elem; + } + return result; + } -function base64ToBytes (str) { - return base64.toByteArray(str) -} + /** + * convert generated to a SourceNode when source maps are enabled. + */ + function toSourceNodeWhenNeeded(generated, node) { + if (!sourceMap) { + // with no source maps, generated is either an + // array or a string. if an array, flatten it. + // if a string, just return it + if (Array.isArray(generated)) { + return flattenToString(generated); + } else { + return generated; + } + } + if (node == null) { + if (generated instanceof SourceNode) { + return generated; + } else { + node = {}; + } + } + if (node.loc == null) { + return new SourceNode(null, null, sourceMap, generated, node.name || null); + } + return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated, node.name || null); + } -function blitBuffer (src, dst, offset, length) { - var pos - for (var i = 0; i < length; i++) { - if ((i + offset >= dst.length) || (i >= src.length)) - break - dst[i + offset] = src[i] - } - return i -} + function noEmptySpace() { + return (space) ? space : ' '; + } -function decodeUtf8Char (str) { - try { - return decodeURIComponent(str) - } catch (err) { - return String.fromCharCode(0xFFFD) // UTF 8 invalid char - } -} + function join(left, right) { + var leftSource, + rightSource, + leftCharCode, + rightCharCode; -/* - * We have to make sure that the value is a valid integer. This means that it - * is non-negative. It has no fractional component and that it does not - * exceed the maximum allowed value. - */ -function verifuint (value, max) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value >= 0, 'specified a negative value for writing an unsigned value') - assert(value <= max, 'value is larger than maximum value for type') - assert(Math.floor(value) === value, 'value has a fractional component') -} + leftSource = toSourceNodeWhenNeeded(left).toString(); + if (leftSource.length === 0) { + return [right]; + } -function verifsint (value, max, min) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value <= max, 'value larger than maximum allowed value') - assert(value >= min, 'value smaller than minimum allowed value') - assert(Math.floor(value) === value, 'value has a fractional component') -} + rightSource = toSourceNodeWhenNeeded(right).toString(); + if (rightSource.length === 0) { + return [left]; + } -function verifIEEE754 (value, max, min) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value <= max, 'value larger than maximum allowed value') - assert(value >= min, 'value smaller than minimum allowed value') -} + leftCharCode = leftSource.charCodeAt(leftSource.length - 1); + rightCharCode = rightSource.charCodeAt(0); -function assert (test, message) { - if (!test) throw new Error(message || 'Failed assertion') -} + if ((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode || + esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode) || + leftCharCode === 0x2F /* / */ && rightCharCode === 0x69 /* i */) { // infix word operators all start with `i` + return [left, noEmptySpace(), right]; + } else if (esutils.code.isWhiteSpace(leftCharCode) || esutils.code.isLineTerminator(leftCharCode) || + esutils.code.isWhiteSpace(rightCharCode) || esutils.code.isLineTerminator(rightCharCode)) { + return [left, right]; + } + return [left, space, right]; + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/buffer/index.js","/node_modules/gulp-browserify/node_modules/buffer") -},{"base64-js":55,"buffer":57,"ieee754":90,"lYpoI2":59}],58:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + function addIndent(stmt) { + return [base, stmt]; + } -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; + function withIndent(fn) { + var previousBase; + previousBase = base; + base += indent; + fn(base); + base = previousBase; + } -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; + function calculateSpaces(str) { + var i; + for (i = str.length - 1; i >= 0; --i) { + if (esutils.code.isLineTerminator(str.charCodeAt(i))) { + break; + } + } + return (str.length - 1) - i; + } -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; + function adjustMultilineComment(value, specialBase) { + var array, i, len, line, j, spaces, previousBase, sn; -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; + array = value.split(/\r\n|[\r\n]/); + spaces = Number.MAX_VALUE; -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; + // first line doesn't have indentation + for (i = 1, len = array.length; i < len; ++i) { + line = array[i]; + j = 0; + while (j < line.length && esutils.code.isWhiteSpace(line.charCodeAt(j))) { + ++j; + } + if (spaces > j) { + spaces = j; + } + } -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; + if (typeof specialBase !== 'undefined') { + // pattern like + // { + // var t = 20; /* + // * this is comment + // */ + // } + previousBase = base; + if (array[1][spaces] === '*') { + specialBase += ' '; + } + base = specialBase; + } else { + if (spaces & 1) { + // /* + // * + // */ + // If spaces are odd number, above pattern is considered. + // We waste 1 space. + --spaces; + } + previousBase = base; + } - if (!this._events) - this._events = {}; + for (i = 1, len = array.length; i < len; ++i) { + sn = toSourceNodeWhenNeeded(addIndent(array[i].slice(spaces))); + array[i] = sourceMap ? sn.join('') : sn; + } - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } - throw TypeError('Uncaught, unspecified "error" event.'); + base = previousBase; + + return array.join('\n'); } - } - handler = this._events[type]; + function generateComment(comment, specialBase) { + if (comment.type === 'Line') { + if (endsWithLineTerminator(comment.value)) { + return '//' + comment.value; + } else { + // Always use LineTerminator + var result = '//' + comment.value; + if (!preserveBlankLines) { + result += '\n'; + } + return result; + } + } + if (extra.format.indent.adjustMultilineComment && /[\n\r]/.test(comment.value)) { + return adjustMultilineComment('/*' + comment.value + '*/', specialBase); + } + return '/*' + comment.value + '*/'; + } - if (isUndefined(handler)) - return false; + function addComments(stmt, result) { + var i, len, comment, save, tailingToStatement, specialBase, fragment, + extRange, range, prevRange, prefix, infix, suffix, count; - if (isFunction(handler)) { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - len = arguments.length; - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; - handler.apply(this, args); - } - } else if (isObject(handler)) { - len = arguments.length; - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; + if (stmt.leadingComments && stmt.leadingComments.length > 0) { + save = result; - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } + if (preserveBlankLines) { + comment = stmt.leadingComments[0]; + result = []; - return true; -}; + extRange = comment.extendedRange; + range = comment.range; -EventEmitter.prototype.addListener = function(type, listener) { - var m; + prefix = sourceCode.substring(extRange[0], range[0]); + count = (prefix.match(/\n/g) || []).length; + if (count > 0) { + result.push(stringRepeat('\n', count)); + result.push(addIndent(generateComment(comment))); + } else { + result.push(prefix); + result.push(generateComment(comment)); + } - if (!isFunction(listener)) - throw TypeError('listener must be a function'); + prevRange = range; - if (!this._events) - this._events = {}; + for (i = 1, len = stmt.leadingComments.length; i < len; i++) { + comment = stmt.leadingComments[i]; + range = comment.range; - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); + infix = sourceCode.substring(prevRange[1], range[0]); + count = (infix.match(/\n/g) || []).length; + result.push(stringRepeat('\n', count)); + result.push(addIndent(generateComment(comment))); - if (!this._events[type]) - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; + prevRange = range; + } - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - var m; - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } + suffix = sourceCode.substring(range[1], extRange[1]); + count = (suffix.match(/\n/g) || []).length; + result.push(stringRepeat('\n', count)); + } else { + comment = stmt.leadingComments[0]; + result = []; + if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) { + result.push('\n'); + } + result.push(generateComment(comment)); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push('\n'); + } - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } + for (i = 1, len = stmt.leadingComments.length; i < len; ++i) { + comment = stmt.leadingComments[i]; + fragment = [generateComment(comment)]; + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + fragment.push('\n'); + } + result.push(addIndent(fragment)); + } + } - return this; -}; + result.push(addIndent(save)); + } -EventEmitter.prototype.on = EventEmitter.prototype.addListener; + if (stmt.trailingComments) { -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); + if (preserveBlankLines) { + comment = stmt.trailingComments[0]; + extRange = comment.extendedRange; + range = comment.range; - var fired = false; + prefix = sourceCode.substring(extRange[0], range[0]); + count = (prefix.match(/\n/g) || []).length; - function g() { - this.removeListener(type, g); + if (count > 0) { + result.push(stringRepeat('\n', count)); + result.push(addIndent(generateComment(comment))); + } else { + result.push(prefix); + result.push(generateComment(comment)); + } + } else { + tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); + specialBase = stringRepeat(' ', calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString())); + for (i = 0, len = stmt.trailingComments.length; i < len; ++i) { + comment = stmt.trailingComments[i]; + if (tailingToStatement) { + // We assume target like following script + // + // var t = 20; /** + // * This is comment of t + // */ + if (i === 0) { + // first case + result = [result, indent]; + } else { + result = [result, specialBase]; + } + result.push(generateComment(comment, specialBase)); + } else { + result = [result, addIndent(generateComment(comment))]; + } + if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result = [result, '\n']; + } + } + } + } - if (!fired) { - fired = true; - listener.apply(this, arguments); + return result; } - } - g.listener = listener; - this.on(type, g); + function generateBlankLines(start, end, result) { + var j, newlineCount = 0; - return this; -}; + for (j = start; j < end; j++) { + if (sourceCode[j] === '\n') { + newlineCount++; + } + } -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; + for (j = 1; j < newlineCount; j++) { + result.push(newline); + } + } - if (!isFunction(listener)) - throw TypeError('listener must be a function'); + function parenthesize(text, current, should) { + if (current < should) { + return ['(', text, ')']; + } + return text; + } - if (!this._events || !this._events[type]) - return this; + function generateVerbatimString(string) { + var i, iz, result; + result = string.split(/\r\n|\n/); + for (i = 1, iz = result.length; i < iz; i++) { + result[i] = newline + base + result[i]; + } + return result; + } - list = this._events[type]; - length = list.length; - position = -1; + function generateVerbatim(expr, precedence) { + var verbatim, result, prec; + verbatim = expr[extra.verbatim]; - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); + if (typeof verbatim === 'string') { + result = parenthesize(generateVerbatimString(verbatim), Precedence.Sequence, precedence); + } else { + // verbatim is object + result = generateVerbatimString(verbatim.content); + prec = (verbatim.precedence != null) ? verbatim.precedence : Precedence.Sequence; + result = parenthesize(result, prec, precedence); + } - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } + return toSourceNodeWhenNeeded(result, expr); } - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); + function CodeGenerator() { } - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } + // Helpers. - return this; -}; + CodeGenerator.prototype.maybeBlock = function(stmt, flags) { + var result, noLeadingComment, that = this; -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; + noLeadingComment = !extra.comment || !stmt.leadingComments; - if (!this._events) - return this; + if (stmt.type === Syntax.BlockStatement && noLeadingComment) { + return [space, this.generateStatement(stmt, flags)]; + } - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } + if (stmt.type === Syntax.EmptyStatement && noLeadingComment) { + return ';'; + } - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } + withIndent(function () { + result = [ + newline, + addIndent(that.generateStatement(stmt, flags)) + ]; + }); - listeners = this._events[type]; + return result; + }; - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; + CodeGenerator.prototype.maybeBlockSuffix = function (stmt, result) { + var ends = endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); + if (stmt.type === Syntax.BlockStatement && (!extra.comment || !stmt.leadingComments) && !ends) { + return [result, space]; + } + if (ends) { + return [result, base]; + } + return [result, newline, base]; + }; - return this; -}; + function generateIdentifier(node) { + return toSourceNodeWhenNeeded(node.name, node); + } -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; + function generateAsyncPrefix(node, spaceRequired) { + return node.async ? 'async' + (spaceRequired ? noEmptySpace() : space) : ''; + } -EventEmitter.listenerCount = function(emitter, type) { - var ret; - if (!emitter._events || !emitter._events[type]) - ret = 0; - else if (isFunction(emitter._events[type])) - ret = 1; - else - ret = emitter._events[type].length; - return ret; -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} + function generateStarSuffix(node) { + var isGenerator = node.generator && !extra.moz.starlessGenerator; + return isGenerator ? '*' + space : ''; + } -function isUndefined(arg) { - return arg === void 0; -} + function generateMethodPrefix(prop) { + var func = prop.value, prefix = ''; + if (func.async) { + prefix += generateAsyncPrefix(func, !prop.computed); + } + if (func.generator) { + // avoid space before method name + prefix += generateStarSuffix(func) ? '*' : ''; + } + return prefix; + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/events/events.js","/node_modules/gulp-browserify/node_modules/events") -},{"buffer":57,"lYpoI2":59}],59:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// shim for using process in browser + CodeGenerator.prototype.generatePattern = function (node, precedence, flags) { + if (node.type === Syntax.Identifier) { + return generateIdentifier(node); + } + return this.generateExpression(node, precedence, flags); + }; -var process = module.exports = {}; + CodeGenerator.prototype.generateFunctionParams = function (node) { + var i, iz, result, hasDefault; -process.nextTick = (function () { - var canSetImmediate = typeof window !== 'undefined' - && window.setImmediate; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; + hasDefault = false; - if (canSetImmediate) { - return function (f) { return window.setImmediate(f) }; - } + if (node.type === Syntax.ArrowFunctionExpression && + !node.rest && (!node.defaults || node.defaults.length === 0) && + node.params.length === 1 && node.params[0].type === Syntax.Identifier) { + // arg => { } case + result = [generateAsyncPrefix(node, true), generateIdentifier(node.params[0])]; + } else { + result = node.type === Syntax.ArrowFunctionExpression ? [generateAsyncPrefix(node, false)] : []; + result.push('('); + if (node.defaults) { + hasDefault = true; + } + for (i = 0, iz = node.params.length; i < iz; ++i) { + if (hasDefault && node.defaults[i]) { + // Handle default values. + result.push(this.generateAssignment(node.params[i], node.defaults[i], '=', Precedence.Assignment, E_TTT)); + } else { + result.push(this.generatePattern(node.params[i], Precedence.Assignment, E_TTT)); + } + if (i + 1 < iz) { + result.push(',' + space); + } + } - if (canPost) { - var queue = []; - window.addEventListener('message', function (ev) { - var source = ev.source; - if ((source === window || source === null) && ev.data === 'process-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); + if (node.rest) { + if (node.params.length) { + result.push(',' + space); } + result.push('...'); + result.push(generateIdentifier(node.rest)); } - }, true); - return function nextTick(fn) { - queue.push(fn); - window.postMessage('process-tick', '*'); - }; - } + result.push(')'); + } - return function nextTick(fn) { - setTimeout(fn, 0); + return result; }; -})(); - -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; + CodeGenerator.prototype.generateFunctionBody = function (node) { + var result, expr; -process.binding = function (name) { - throw new Error('process.binding is not supported'); -} + result = this.generateFunctionParams(node); -// TODO(shtylman) -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; + if (node.type === Syntax.ArrowFunctionExpression) { + result.push(space); + result.push('=>'); + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/process/browser.js","/node_modules/gulp-browserify/node_modules/process") -},{"buffer":57,"lYpoI2":59}],60:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + if (node.expression) { + result.push(space); + expr = this.generateExpression(node.body, Precedence.Assignment, E_TTT); + if (expr.toString().charAt(0) === '{') { + expr = ['(', expr, ')']; + } + result.push(expr); + } else { + result.push(this.maybeBlock(node.body, S_TTFF)); + } -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. + return result; + }; -module.exports = Duplex; -var inherits = require('inherits'); -var setImmediate = require('process/browser.js').nextTick; -var Readable = require('./readable.js'); -var Writable = require('./writable.js'); + CodeGenerator.prototype.generateIterationForStatement = function (operator, stmt, flags) { + var result = ['for' + (stmt.await ? noEmptySpace() + 'await' : '') + space + '('], that = this; + withIndent(function () { + if (stmt.left.type === Syntax.VariableDeclaration) { + withIndent(function () { + result.push(stmt.left.kind + noEmptySpace()); + result.push(that.generateStatement(stmt.left.declarations[0], S_FFFF)); + }); + } else { + result.push(that.generateExpression(stmt.left, Precedence.Call, E_TTT)); + } -inherits(Duplex, Readable); + result = join(result, operator); + result = [join( + result, + that.generateExpression(stmt.right, Precedence.Assignment, E_TTT) + ), ')']; + }); + result.push(this.maybeBlock(stmt.body, flags)); + return result; + }; -Duplex.prototype.write = Writable.prototype.write; -Duplex.prototype.end = Writable.prototype.end; -Duplex.prototype._write = Writable.prototype._write; + CodeGenerator.prototype.generatePropertyKey = function (expr, computed) { + var result = []; -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); + if (computed) { + result.push('['); + } - Readable.call(this, options); - Writable.call(this, options); + result.push(this.generateExpression(expr, Precedence.Assignment, E_TTT)); - if (options && options.readable === false) - this.readable = false; + if (computed) { + result.push(']'); + } - if (options && options.writable === false) - this.writable = false; + return result; + }; - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; + CodeGenerator.prototype.generateAssignment = function (left, right, operator, precedence, flags) { + if (Precedence.Assignment < precedence) { + flags |= F_ALLOW_IN; + } - this.once('end', onend); -} + return parenthesize( + [ + this.generateExpression(left, Precedence.Call, flags), + space + operator + space, + this.generateExpression(right, Precedence.Assignment, flags) + ], + Precedence.Assignment, + precedence + ); + }; -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; + CodeGenerator.prototype.semicolon = function (flags) { + if (!semicolons && flags & F_SEMICOLON_OPT) { + return ''; + } + return ';'; + }; - // no more data can be written. - // But allow more writes to happen in this tick. - var self = this; - setImmediate(function () { - self.end(); - }); -} + // Statements. -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/duplex.js","/node_modules/gulp-browserify/node_modules/stream-browserify") -},{"./readable.js":64,"./writable.js":66,"buffer":57,"inherits":91,"lYpoI2":59,"process/browser.js":62}],61:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + CodeGenerator.Statement = { -module.exports = Stream; + BlockStatement: function (stmt, flags) { + var range, content, result = ['{', newline], that = this; -var EE = require('events').EventEmitter; -var inherits = require('inherits'); + withIndent(function () { + // handle functions without any code + if (stmt.body.length === 0 && preserveBlankLines) { + range = stmt.range; + if (range[1] - range[0] > 2) { + content = sourceCode.substring(range[0] + 1, range[1] - 1); + if (content[0] === '\n') { + result = ['{']; + } + result.push(content); + } + } -inherits(Stream, EE); -Stream.Readable = require('./readable.js'); -Stream.Writable = require('./writable.js'); -Stream.Duplex = require('./duplex.js'); -Stream.Transform = require('./transform.js'); -Stream.PassThrough = require('./passthrough.js'); + var i, iz, fragment, bodyFlags; + bodyFlags = S_TFFF; + if (flags & F_FUNC_BODY) { + bodyFlags |= F_DIRECTIVE_CTX; + } -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; + for (i = 0, iz = stmt.body.length; i < iz; ++i) { + if (preserveBlankLines) { + // handle spaces before the first line + if (i === 0) { + if (stmt.body[0].leadingComments) { + range = stmt.body[0].leadingComments[0].extendedRange; + content = sourceCode.substring(range[0], range[1]); + if (content[0] === '\n') { + result = ['{']; + } + } + if (!stmt.body[0].leadingComments) { + generateBlankLines(stmt.range[0], stmt.body[0].range[0], result); + } + } + // handle spaces between lines + if (i > 0) { + if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { + generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); + } + } + } + if (i === iz - 1) { + bodyFlags |= F_SEMICOLON_OPT; + } -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. + if (stmt.body[i].leadingComments && preserveBlankLines) { + fragment = that.generateStatement(stmt.body[i], bodyFlags); + } else { + fragment = addIndent(that.generateStatement(stmt.body[i], bodyFlags)); + } -function Stream() { - EE.call(this); -} + result.push(fragment); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + if (preserveBlankLines && i < iz - 1) { + // don't add a new line if there are leading coments + // in the next statement + if (!stmt.body[i + 1].leadingComments) { + result.push(newline); + } + } else { + result.push(newline); + } + } -Stream.prototype.pipe = function(dest, options) { - var source = this; + if (preserveBlankLines) { + // handle spaces after the last line + if (i === iz - 1) { + if (!stmt.body[i].trailingComments) { + generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); + } + } + } + } + }); - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } + result.push(addIndent('}')); + return result; + }, - source.on('data', ondata); + BreakStatement: function (stmt, flags) { + if (stmt.label) { + return 'break ' + stmt.label.name + this.semicolon(flags); + } + return 'break' + this.semicolon(flags); + }, - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } + ContinueStatement: function (stmt, flags) { + if (stmt.label) { + return 'continue ' + stmt.label.name + this.semicolon(flags); + } + return 'continue' + this.semicolon(flags); + }, - dest.on('drain', ondrain); + ClassBody: function (stmt, flags) { + var result = [ '{', newline], that = this; - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } + withIndent(function (indent) { + var i, iz; - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; + for (i = 0, iz = stmt.body.length; i < iz; ++i) { + result.push(indent); + result.push(that.generateExpression(stmt.body[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(newline); + } + } + }); - dest.end(); - } + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(base); + result.push('}'); + return result; + }, + ClassDeclaration: function (stmt, flags) { + var result, fragment; + result = ['class']; + if (stmt.id) { + result = join(result, this.generateExpression(stmt.id, Precedence.Sequence, E_TTT)); + } + if (stmt.superClass) { + fragment = join('extends', this.generateExpression(stmt.superClass, Precedence.Unary, E_TTT)); + result = join(result, fragment); + } + result.push(space); + result.push(this.generateStatement(stmt.body, S_TFFT)); + return result; + }, - function onclose() { - if (didOnEnd) return; - didOnEnd = true; + DirectiveStatement: function (stmt, flags) { + if (extra.raw && stmt.raw) { + return stmt.raw + this.semicolon(flags); + } + return escapeDirective(stmt.directive) + this.semicolon(flags); + }, - if (typeof dest.destroy === 'function') dest.destroy(); - } + DoWhileStatement: function (stmt, flags) { + // Because `do 42 while (cond)` is Syntax Error. We need semicolon. + var result = join('do', this.maybeBlock(stmt.body, S_TFFF)); + result = this.maybeBlockSuffix(stmt.body, result); + return join(result, [ + 'while' + space + '(', + this.generateExpression(stmt.test, Precedence.Sequence, E_TTT), + ')' + this.semicolon(flags) + ]); + }, - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } + CatchClause: function (stmt, flags) { + var result, that = this; + withIndent(function () { + var guard; - source.on('error', onerror); - dest.on('error', onerror); + if (stmt.param) { + result = [ + 'catch' + space + '(', + that.generateExpression(stmt.param, Precedence.Sequence, E_TTT), + ')' + ]; - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); + if (stmt.guard) { + guard = that.generateExpression(stmt.guard, Precedence.Sequence, E_TTT); + result.splice(2, 0, ' if ', guard); + } + } else { + result = ['catch']; + } + }); + result.push(this.maybeBlock(stmt.body, S_TFFF)); + return result; + }, - source.removeListener('end', onend); - source.removeListener('close', onclose); + DebuggerStatement: function (stmt, flags) { + return 'debugger' + this.semicolon(flags); + }, - source.removeListener('error', onerror); - dest.removeListener('error', onerror); + EmptyStatement: function (stmt, flags) { + return ';'; + }, - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); + ExportDefaultDeclaration: function (stmt, flags) { + var result = [ 'export' ], bodyFlags; - dest.removeListener('close', cleanup); - } + bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF; - source.on('end', cleanup); - source.on('close', cleanup); + // export default HoistableDeclaration[Default] + // export default AssignmentExpression[In] ; + result = join(result, 'default'); + if (isStatement(stmt.declaration)) { + result = join(result, this.generateStatement(stmt.declaration, bodyFlags)); + } else { + result = join(result, this.generateExpression(stmt.declaration, Precedence.Assignment, E_TTT) + this.semicolon(flags)); + } + return result; + }, - dest.on('close', cleanup); + ExportNamedDeclaration: function (stmt, flags) { + var result = [ 'export' ], bodyFlags, that = this; - dest.emit('pipe', source); + bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF; - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; + // export VariableStatement + // export Declaration[Default] + if (stmt.declaration) { + return join(result, this.generateStatement(stmt.declaration, bodyFlags)); + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/index.js","/node_modules/gulp-browserify/node_modules/stream-browserify") -},{"./duplex.js":60,"./passthrough.js":63,"./readable.js":64,"./transform.js":65,"./writable.js":66,"buffer":57,"events":58,"inherits":91,"lYpoI2":59}],62:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// shim for using process in browser + // export ExportClause[NoReference] FromClause ; + // export ExportClause ; + if (stmt.specifiers) { + if (stmt.specifiers.length === 0) { + result = join(result, '{' + space + '}'); + } else if (stmt.specifiers[0].type === Syntax.ExportBatchSpecifier) { + result = join(result, this.generateExpression(stmt.specifiers[0], Precedence.Sequence, E_TTT)); + } else { + result = join(result, '{'); + withIndent(function (indent) { + var i, iz; + result.push(newline); + for (i = 0, iz = stmt.specifiers.length; i < iz; ++i) { + result.push(indent); + result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(',' + newline); + } + } + }); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(base + '}'); + } -var process = module.exports = {}; + if (stmt.source) { + result = join(result, [ + 'from' + space, + // ModuleSpecifier + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), + this.semicolon(flags) + ]); + } else { + result.push(this.semicolon(flags)); + } + } + return result; + }, -process.nextTick = (function () { - var canSetImmediate = typeof window !== 'undefined' - && window.setImmediate; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; + ExportAllDeclaration: function (stmt, flags) { + // export * FromClause ; + return [ + 'export' + space, + '*' + space, + 'from' + space, + // ModuleSpecifier + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), + this.semicolon(flags) + ]; + }, - if (canSetImmediate) { - return function (f) { return window.setImmediate(f) }; - } + ExpressionStatement: function (stmt, flags) { + var result, fragment; - if (canPost) { - var queue = []; - window.addEventListener('message', function (ev) { - var source = ev.source; - if ((source === window || source === null) && ev.data === 'process-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); + function isClassPrefixed(fragment) { + var code; + if (fragment.slice(0, 5) !== 'class') { + return false; } + code = fragment.charCodeAt(5); + return code === 0x7B /* '{' */ || esutils.code.isWhiteSpace(code) || esutils.code.isLineTerminator(code); } - }, true); - return function nextTick(fn) { - queue.push(fn); - window.postMessage('process-tick', '*'); - }; - } + function isFunctionPrefixed(fragment) { + var code; + if (fragment.slice(0, 8) !== 'function') { + return false; + } + code = fragment.charCodeAt(8); + return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A /* '*' */ || esutils.code.isLineTerminator(code); + } - return function nextTick(fn) { - setTimeout(fn, 0); - }; -})(); + function isAsyncPrefixed(fragment) { + var code, i, iz; + if (fragment.slice(0, 5) !== 'async') { + return false; + } + if (!esutils.code.isWhiteSpace(fragment.charCodeAt(5))) { + return false; + } + for (i = 6, iz = fragment.length; i < iz; ++i) { + if (!esutils.code.isWhiteSpace(fragment.charCodeAt(i))) { + break; + } + } + if (i === iz) { + return false; + } + if (fragment.slice(i, i + 8) !== 'function') { + return false; + } + code = fragment.charCodeAt(i + 8); + return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A /* '*' */ || esutils.code.isLineTerminator(code); + } -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; + result = [this.generateExpression(stmt.expression, Precedence.Sequence, E_TTT)]; + // 12.4 '{', 'function', 'class' is not allowed in this position. + // wrap expression with parentheses + fragment = toSourceNodeWhenNeeded(result).toString(); + if (fragment.charCodeAt(0) === 0x7B /* '{' */ || // ObjectExpression + isClassPrefixed(fragment) || + isFunctionPrefixed(fragment) || + isAsyncPrefixed(fragment) || + (directive && (flags & F_DIRECTIVE_CTX) && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === 'string')) { + result = ['(', result, ')' + this.semicolon(flags)]; + } else { + result.push(this.semicolon(flags)); + } + return result; + }, -process.binding = function (name) { - throw new Error('process.binding is not supported'); -} + ImportDeclaration: function (stmt, flags) { + // ES6: 15.2.1 valid import declarations: + // - import ImportClause FromClause ; + // - import ModuleSpecifier ; + var result, cursor, that = this; -// TODO(shtylman) -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; + // If no ImportClause is present, + // this should be `import ModuleSpecifier` so skip `from` + // ModuleSpecifier is StringLiteral. + if (stmt.specifiers.length === 0) { + // import ModuleSpecifier ; + return [ + 'import', + space, + // ModuleSpecifier + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), + this.semicolon(flags) + ]; + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/node_modules/process/browser.js","/node_modules/gulp-browserify/node_modules/stream-browserify/node_modules/process") -},{"buffer":57,"lYpoI2":59}],63:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + // import ImportClause FromClause ; + result = [ + 'import' + ]; + cursor = 0; -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. + // ImportedBinding + if (stmt.specifiers[cursor].type === Syntax.ImportDefaultSpecifier) { + result = join(result, [ + this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT) + ]); + ++cursor; + } -module.exports = PassThrough; + if (stmt.specifiers[cursor]) { + if (cursor !== 0) { + result.push(','); + } -var Transform = require('./transform.js'); -var inherits = require('inherits'); -inherits(PassThrough, Transform); + if (stmt.specifiers[cursor].type === Syntax.ImportNamespaceSpecifier) { + // NameSpaceImport + result = join(result, [ + space, + this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT) + ]); + } else { + // NamedImports + result.push(space + '{'); -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); + if ((stmt.specifiers.length - cursor) === 1) { + // import { ... } from "..."; + result.push(space); + result.push(this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT)); + result.push(space + '}' + space); + } else { + // import { + // ..., + // ..., + // } from "..."; + withIndent(function (indent) { + var i, iz; + result.push(newline); + for (i = cursor, iz = stmt.specifiers.length; i < iz; ++i) { + result.push(indent); + result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(',' + newline); + } + } + }); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(base + '}' + space); + } + } + } - Transform.call(this, options); -} + result = join(result, [ + 'from' + space, + // ModuleSpecifier + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), + this.semicolon(flags) + ]); + return result; + }, -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; + VariableDeclarator: function (stmt, flags) { + var itemFlags = (flags & F_ALLOW_IN) ? E_TTT : E_FTT; + if (stmt.init) { + return [ + this.generateExpression(stmt.id, Precedence.Assignment, itemFlags), + space, + '=', + space, + this.generateExpression(stmt.init, Precedence.Assignment, itemFlags) + ]; + } + return this.generatePattern(stmt.id, Precedence.Assignment, itemFlags); + }, -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/passthrough.js","/node_modules/gulp-browserify/node_modules/stream-browserify") -},{"./transform.js":65,"buffer":57,"inherits":91,"lYpoI2":59}],64:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + VariableDeclaration: function (stmt, flags) { + // VariableDeclarator is typed as Statement, + // but joined with comma (not LineTerminator). + // So if comment is attached to target node, we should specialize. + var result, i, iz, node, bodyFlags, that = this; -module.exports = Readable; -Readable.ReadableState = ReadableState; + result = [ stmt.kind ]; -var EE = require('events').EventEmitter; -var Stream = require('./index.js'); -var Buffer = require('buffer').Buffer; -var setImmediate = require('process/browser.js').nextTick; -var StringDecoder; + bodyFlags = (flags & F_ALLOW_IN) ? S_TFFF : S_FFFF; -var inherits = require('inherits'); -inherits(Readable, Stream); + function block() { + node = stmt.declarations[0]; + if (extra.comment && node.leadingComments) { + result.push('\n'); + result.push(addIndent(that.generateStatement(node, bodyFlags))); + } else { + result.push(noEmptySpace()); + result.push(that.generateStatement(node, bodyFlags)); + } -function ReadableState(options, stream) { - options = options || {}; + for (i = 1, iz = stmt.declarations.length; i < iz; ++i) { + node = stmt.declarations[i]; + if (extra.comment && node.leadingComments) { + result.push(',' + newline); + result.push(addIndent(that.generateStatement(node, bodyFlags))); + } else { + result.push(',' + space); + result.push(that.generateStatement(node, bodyFlags)); + } + } + } - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; + if (stmt.declarations.length > 1) { + withIndent(block); + } else { + block(); + } - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; + result.push(this.semicolon(flags)); - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; + return result; + }, - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; + ThrowStatement: function (stmt, flags) { + return [join( + 'throw', + this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) + ), this.semicolon(flags)]; + }, - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; + TryStatement: function (stmt, flags) { + var result, i, iz, guardedHandlers; - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; + result = ['try', this.maybeBlock(stmt.block, S_TFFF)]; + result = this.maybeBlockSuffix(stmt.block, result); + if (stmt.handlers) { + // old interface + for (i = 0, iz = stmt.handlers.length; i < iz; ++i) { + result = join(result, this.generateStatement(stmt.handlers[i], S_TFFF)); + if (stmt.finalizer || i + 1 !== iz) { + result = this.maybeBlockSuffix(stmt.handlers[i].body, result); + } + } + } else { + guardedHandlers = stmt.guardedHandlers || []; - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; + for (i = 0, iz = guardedHandlers.length; i < iz; ++i) { + result = join(result, this.generateStatement(guardedHandlers[i], S_TFFF)); + if (stmt.finalizer || i + 1 !== iz) { + result = this.maybeBlockSuffix(guardedHandlers[i].body, result); + } + } - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; + // new interface + if (stmt.handler) { + if (Array.isArray(stmt.handler)) { + for (i = 0, iz = stmt.handler.length; i < iz; ++i) { + result = join(result, this.generateStatement(stmt.handler[i], S_TFFF)); + if (stmt.finalizer || i + 1 !== iz) { + result = this.maybeBlockSuffix(stmt.handler[i].body, result); + } + } + } else { + result = join(result, this.generateStatement(stmt.handler, S_TFFF)); + if (stmt.finalizer) { + result = this.maybeBlockSuffix(stmt.handler.body, result); + } + } + } + } + if (stmt.finalizer) { + result = join(result, ['finally', this.maybeBlock(stmt.finalizer, S_TFFF)]); + } + return result; + }, - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; + SwitchStatement: function (stmt, flags) { + var result, fragment, i, iz, bodyFlags, that = this; + withIndent(function () { + result = [ + 'switch' + space + '(', + that.generateExpression(stmt.discriminant, Precedence.Sequence, E_TTT), + ')' + space + '{' + newline + ]; + }); + if (stmt.cases) { + bodyFlags = S_TFFF; + for (i = 0, iz = stmt.cases.length; i < iz; ++i) { + if (i === iz - 1) { + bodyFlags |= F_SEMICOLON_OPT; + } + fragment = addIndent(this.generateStatement(stmt.cases[i], bodyFlags)); + result.push(fragment); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + result.push(newline); + } + } + } + result.push(addIndent('}')); + return result; + }, - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; + SwitchCase: function (stmt, flags) { + var result, fragment, i, iz, bodyFlags, that = this; + withIndent(function () { + if (stmt.test) { + result = [ + join('case', that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)), + ':' + ]; + } else { + result = ['default:']; + } - // if true, a maybeReadMore has been scheduled - this.readingMore = false; + i = 0; + iz = stmt.consequent.length; + if (iz && stmt.consequent[0].type === Syntax.BlockStatement) { + fragment = that.maybeBlock(stmt.consequent[0], S_TFFF); + result.push(fragment); + i = 1; + } - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} + if (i !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); + bodyFlags = S_TFFF; + for (; i < iz; ++i) { + if (i === iz - 1 && flags & F_SEMICOLON_OPT) { + bodyFlags |= F_SEMICOLON_OPT; + } + fragment = addIndent(that.generateStatement(stmt.consequent[i], bodyFlags)); + result.push(fragment); + if (i + 1 !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + result.push(newline); + } + } + }); + return result; + }, - this._readableState = new ReadableState(options, this); + IfStatement: function (stmt, flags) { + var result, bodyFlags, semicolonOptional, that = this; + withIndent(function () { + result = [ + 'if' + space + '(', + that.generateExpression(stmt.test, Precedence.Sequence, E_TTT), + ')' + ]; + }); + semicolonOptional = flags & F_SEMICOLON_OPT; + bodyFlags = S_TFFF; + if (semicolonOptional) { + bodyFlags |= F_SEMICOLON_OPT; + } + if (stmt.alternate) { + result.push(this.maybeBlock(stmt.consequent, S_TFFF)); + result = this.maybeBlockSuffix(stmt.consequent, result); + if (stmt.alternate.type === Syntax.IfStatement) { + result = join(result, ['else ', this.generateStatement(stmt.alternate, bodyFlags)]); + } else { + result = join(result, join('else', this.maybeBlock(stmt.alternate, bodyFlags))); + } + } else { + result.push(this.maybeBlock(stmt.consequent, bodyFlags)); + } + return result; + }, - // legacy - this.readable = true; + ForStatement: function (stmt, flags) { + var result, that = this; + withIndent(function () { + result = ['for' + space + '(']; + if (stmt.init) { + if (stmt.init.type === Syntax.VariableDeclaration) { + result.push(that.generateStatement(stmt.init, S_FFFF)); + } else { + // F_ALLOW_IN becomes false. + result.push(that.generateExpression(stmt.init, Precedence.Sequence, E_FTT)); + result.push(';'); + } + } else { + result.push(';'); + } - Stream.call(this); -} + if (stmt.test) { + result.push(space); + result.push(that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)); + result.push(';'); + } else { + result.push(';'); + } -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; + if (stmt.update) { + result.push(space); + result.push(that.generateExpression(stmt.update, Precedence.Sequence, E_TTT)); + result.push(')'); + } else { + result.push(')'); + } + }); - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } + result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); + return result; + }, - return readableAddChunk(this, state, chunk, encoding, false); -}; + ForInStatement: function (stmt, flags) { + return this.generateIterationForStatement('in', stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF); + }, -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; + ForOfStatement: function (stmt, flags) { + return this.generateIterationForStatement('of', stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF); + }, -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); + LabeledStatement: function (stmt, flags) { + return [stmt.label.name + ':', this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)]; + }, - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } + Program: function (stmt, flags) { + var result, fragment, i, iz, bodyFlags; + iz = stmt.body.length; + result = [safeConcatenation && iz > 0 ? '\n' : '']; + bodyFlags = S_TFTF; + for (i = 0; i < iz; ++i) { + if (!safeConcatenation && i === iz - 1) { + bodyFlags |= F_SEMICOLON_OPT; + } - if (state.needReadable) - emitReadable(stream); + if (preserveBlankLines) { + // handle spaces before the first line + if (i === 0) { + if (!stmt.body[0].leadingComments) { + generateBlankLines(stmt.range[0], stmt.body[i].range[0], result); + } + } - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } + // handle spaces between lines + if (i > 0) { + if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { + generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); + } + } + } - return needMoreData(state); -} + fragment = addIndent(this.generateStatement(stmt.body[i], bodyFlags)); + result.push(fragment); + if (i + 1 < iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + if (preserveBlankLines) { + if (!stmt.body[i + 1].leadingComments) { + result.push(newline); + } + } else { + result.push(newline); + } + } + if (preserveBlankLines) { + // handle spaces after the last line + if (i === iz - 1) { + if (!stmt.body[i].trailingComments) { + generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); + } + } + } + } + return result; + }, + FunctionDeclaration: function (stmt, flags) { + return [ + generateAsyncPrefix(stmt, true), + 'function', + generateStarSuffix(stmt) || noEmptySpace(), + stmt.id ? generateIdentifier(stmt.id) : '', + this.generateFunctionBody(stmt) + ]; + }, -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} + ReturnStatement: function (stmt, flags) { + if (stmt.argument) { + return [join( + 'return', + this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) + ), this.semicolon(flags)]; + } + return ['return' + this.semicolon(flags)]; + }, -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; + WhileStatement: function (stmt, flags) { + var result, that = this; + withIndent(function () { + result = [ + 'while' + space + '(', + that.generateExpression(stmt.test, Precedence.Sequence, E_TTT), + ')' + ]; + }); + result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); + return result; + }, -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} + WithStatement: function (stmt, flags) { + var result, that = this; + withIndent(function () { + result = [ + 'with' + space + '(', + that.generateExpression(stmt.object, Precedence.Sequence, E_TTT), + ')' + ]; + }); + result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); + return result; + } -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; + }; - if (state.objectMode) - return n === 0 ? 0 : 1; + merge(CodeGenerator.prototype, CodeGenerator.Statement); - if (isNaN(n) || n === null) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } + // Expressions. - if (n <= 0) - return 0; + CodeGenerator.Expression = { - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); + SequenceExpression: function (expr, precedence, flags) { + var result, i, iz; + if (Precedence.Sequence < precedence) { + flags |= F_ALLOW_IN; + } + result = []; + for (i = 0, iz = expr.expressions.length; i < iz; ++i) { + result.push(this.generateExpression(expr.expressions[i], Precedence.Assignment, flags)); + if (i + 1 < iz) { + result.push(',' + space); + } + } + return parenthesize(result, Precedence.Sequence, precedence); + }, - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } + AssignmentExpression: function (expr, precedence, flags) { + return this.generateAssignment(expr.left, expr.right, expr.operator, precedence, flags); + }, - return n; -} + ArrowFunctionExpression: function (expr, precedence, flags) { + return parenthesize(this.generateFunctionBody(expr), Precedence.ArrowFunction, precedence); + }, -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; + ConditionalExpression: function (expr, precedence, flags) { + if (Precedence.Conditional < precedence) { + flags |= F_ALLOW_IN; + } + return parenthesize( + [ + this.generateExpression(expr.test, Precedence.LogicalOR, flags), + space + '?' + space, + this.generateExpression(expr.consequent, Precedence.Assignment, flags), + space + ':' + space, + this.generateExpression(expr.alternate, Precedence.Assignment, flags) + ], + Precedence.Conditional, + precedence + ); + }, - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; + LogicalExpression: function (expr, precedence, flags) { + return this.BinaryExpression(expr, precedence, flags); + }, - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } + BinaryExpression: function (expr, precedence, flags) { + var result, leftPrecedence, rightPrecedence, currentPrecedence, fragment, leftSource; + currentPrecedence = BinaryPrecedence[expr.operator]; + leftPrecedence = expr.operator === '**' ? Precedence.Postfix : currentPrecedence; + rightPrecedence = expr.operator === '**' ? currentPrecedence : currentPrecedence + 1; - n = howMuchToRead(n, state); + if (currentPrecedence < precedence) { + flags |= F_ALLOW_IN; + } - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) - endReadable(this); - return null; - } + fragment = this.generateExpression(expr.left, leftPrecedence, flags); - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. + leftSource = fragment.toString(); - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; + if (leftSource.charCodeAt(leftSource.length - 1) === 0x2F /* / */ && esutils.code.isIdentifierPartES5(expr.operator.charCodeAt(0))) { + result = [fragment, noEmptySpace(), expr.operator]; + } else { + result = join(fragment, expr.operator); + } - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; + fragment = this.generateExpression(expr.right, rightPrecedence, flags); - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; + if (expr.operator === '/' && fragment.toString().charAt(0) === '/' || + expr.operator.slice(-1) === '<' && fragment.toString().slice(0, 3) === '!--') { + // If '/' concats with '/' or `<` concats with `!--`, it is interpreted as comment start + result.push(noEmptySpace()); + result.push(fragment); + } else { + result = join(result, fragment); + } - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } + if (expr.operator === 'in' && !(flags & F_ALLOW_IN)) { + return ['(', result, ')']; + } + return parenthesize(result, currentPrecedence, precedence); + }, - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); + CallExpression: function (expr, precedence, flags) { + var result, i, iz; + // F_ALLOW_UNPARATH_NEW becomes false. + result = [this.generateExpression(expr.callee, Precedence.Call, E_TTF)]; + result.push('('); + for (i = 0, iz = expr['arguments'].length; i < iz; ++i) { + result.push(this.generateExpression(expr['arguments'][i], Precedence.Assignment, E_TTT)); + if (i + 1 < iz) { + result.push(',' + space); + } + } + result.push(')'); - var ret; - if (n > 0) - ret = fromList(n, state); - else - ret = null; + if (!(flags & F_ALLOW_CALL)) { + return ['(', result, ')']; + } + return parenthesize(result, Precedence.Call, precedence); + }, - if (ret === null) { - state.needReadable = true; - n = 0; - } + NewExpression: function (expr, precedence, flags) { + var result, length, i, iz, itemFlags; + length = expr['arguments'].length; - state.length -= n; + // F_ALLOW_CALL becomes false. + // F_ALLOW_UNPARATH_NEW may become false. + itemFlags = (flags & F_ALLOW_UNPARATH_NEW && !parentheses && length === 0) ? E_TFT : E_TFF; - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; + result = join( + 'new', + this.generateExpression(expr.callee, Precedence.New, itemFlags) + ); - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); + if (!(flags & F_ALLOW_UNPARATH_NEW) || parentheses || length > 0) { + result.push('('); + for (i = 0, iz = length; i < iz; ++i) { + result.push(this.generateExpression(expr['arguments'][i], Precedence.Assignment, E_TTT)); + if (i + 1 < iz) { + result.push(',' + space); + } + } + result.push(')'); + } - return ret; -}; + return parenthesize(result, Precedence.New, precedence); + }, -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode && - !er) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} + MemberExpression: function (expr, precedence, flags) { + var result, fragment; + // F_ALLOW_UNPARATH_NEW becomes false. + result = [this.generateExpression(expr.object, Precedence.Call, (flags & F_ALLOW_CALL) ? E_TTF : E_TFF)]; -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; + if (expr.computed) { + result.push('['); + result.push(this.generateExpression(expr.property, Precedence.Sequence, flags & F_ALLOW_CALL ? E_TTT : E_TFT)); + result.push(']'); + } else { + if (expr.object.type === Syntax.Literal && typeof expr.object.value === 'number') { + fragment = toSourceNodeWhenNeeded(result).toString(); + // When the following conditions are all true, + // 1. No floating point + // 2. Don't have exponents + // 3. The last character is a decimal digit + // 4. Not hexadecimal OR octal number literal + // we should add a floating point. + if ( + fragment.indexOf('.') < 0 && + !/[eExX]/.test(fragment) && + esutils.code.isDecimalDigit(fragment.charCodeAt(fragment.length - 1)) && + !(fragment.length >= 2 && fragment.charCodeAt(0) === 48) // '0' + ) { + result.push(' '); + } + } + result.push('.'); + result.push(generateIdentifier(expr.property)); + } - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} + return parenthesize(result, Precedence.Member, precedence); + }, -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; + MetaProperty: function (expr, precedence, flags) { + var result; + result = []; + result.push(typeof expr.meta === "string" ? expr.meta : generateIdentifier(expr.meta)); + result.push('.'); + result.push(typeof expr.property === "string" ? expr.property : generateIdentifier(expr.property)); + return parenthesize(result, Precedence.Member, precedence); + }, - state.emittedReadable = true; - if (state.sync) - setImmediate(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} + UnaryExpression: function (expr, precedence, flags) { + var result, fragment, rightCharCode, leftSource, leftCharCode; + fragment = this.generateExpression(expr.argument, Precedence.Unary, E_TTT); -function emitReadable_(stream) { - stream.emit('readable'); -} + if (space === '') { + result = join(expr.operator, fragment); + } else { + result = [expr.operator]; + if (expr.operator.length > 2) { + // delete, void, typeof + // get `typeof []`, not `typeof[]` + result = join(result, fragment); + } else { + // Prevent inserting spaces between operator and argument if it is unnecessary + // like, `!cond` + leftSource = toSourceNodeWhenNeeded(result).toString(); + leftCharCode = leftSource.charCodeAt(leftSource.length - 1); + rightCharCode = fragment.toString().charCodeAt(0); + if (((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode) || + (esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode))) { + result.push(noEmptySpace()); + result.push(fragment); + } else { + result.push(fragment); + } + } + } + return parenthesize(result, Precedence.Unary, precedence); + }, -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - setImmediate(function() { - maybeReadMore_(stream, state); - }); - } -} + YieldExpression: function (expr, precedence, flags) { + var result; + if (expr.delegate) { + result = 'yield*'; + } else { + result = 'yield'; + } + if (expr.argument) { + result = join( + result, + this.generateExpression(expr.argument, Precedence.Yield, E_TTT) + ); + } + return parenthesize(result, Precedence.Yield, precedence); + }, -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} + AwaitExpression: function (expr, precedence, flags) { + var result = join( + expr.all ? 'await*' : 'await', + this.generateExpression(expr.argument, Precedence.Await, E_TTT) + ); + return parenthesize(result, Precedence.Await, precedence); + }, -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; + UpdateExpression: function (expr, precedence, flags) { + if (expr.prefix) { + return parenthesize( + [ + expr.operator, + this.generateExpression(expr.argument, Precedence.Unary, E_TTT) + ], + Precedence.Unary, + precedence + ); + } + return parenthesize( + [ + this.generateExpression(expr.argument, Precedence.Postfix, E_TTT), + expr.operator + ], + Precedence.Postfix, + precedence + ); + }, -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; + FunctionExpression: function (expr, precedence, flags) { + var result = [ + generateAsyncPrefix(expr, true), + 'function' + ]; + if (expr.id) { + result.push(generateStarSuffix(expr) || noEmptySpace()); + result.push(generateIdentifier(expr.id)); + } else { + result.push(generateStarSuffix(expr) || space); + } + result.push(this.generateFunctionBody(expr)); + return result; + }, - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; + ArrayPattern: function (expr, precedence, flags) { + return this.ArrayExpression(expr, precedence, flags, true); + }, - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; + ArrayExpression: function (expr, precedence, flags, isPattern) { + var result, multiline, that = this; + if (!expr.elements.length) { + return '[]'; + } + multiline = isPattern ? false : expr.elements.length > 1; + result = ['[', multiline ? newline : '']; + withIndent(function (indent) { + var i, iz; + for (i = 0, iz = expr.elements.length; i < iz; ++i) { + if (!expr.elements[i]) { + if (multiline) { + result.push(indent); + } + if (i + 1 === iz) { + result.push(','); + } + } else { + result.push(multiline ? indent : ''); + result.push(that.generateExpression(expr.elements[i], Precedence.Assignment, E_TTT)); + } + if (i + 1 < iz) { + result.push(',' + (multiline ? newline : space)); + } + } + }); + if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(multiline ? base : ''); + result.push(']'); + return result; + }, - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - setImmediate(endFn); - else - src.once('end', endFn); + RestElement: function(expr, precedence, flags) { + return '...' + this.generatePattern(expr.argument); + }, - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } + ClassExpression: function (expr, precedence, flags) { + var result, fragment; + result = ['class']; + if (expr.id) { + result = join(result, this.generateExpression(expr.id, Precedence.Sequence, E_TTT)); + } + if (expr.superClass) { + fragment = join('extends', this.generateExpression(expr.superClass, Precedence.Unary, E_TTT)); + result = join(result, fragment); + } + result.push(space); + result.push(this.generateStatement(expr.body, S_TFFT)); + return result; + }, - function onend() { - dest.end(); - } + MethodDefinition: function (expr, precedence, flags) { + var result, fragment; + if (expr['static']) { + result = ['static' + space]; + } else { + result = []; + } + if (expr.kind === 'get' || expr.kind === 'set') { + fragment = [ + join(expr.kind, this.generatePropertyKey(expr.key, expr.computed)), + this.generateFunctionBody(expr.value) + ]; + } else { + fragment = [ + generateMethodPrefix(expr), + this.generatePropertyKey(expr.key, expr.computed), + this.generateFunctionBody(expr.value) + ]; + } + return join(result, fragment); + }, - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); + Property: function (expr, precedence, flags) { + if (expr.kind === 'get' || expr.kind === 'set') { + return [ + expr.kind, noEmptySpace(), + this.generatePropertyKey(expr.key, expr.computed), + this.generateFunctionBody(expr.value) + ]; + } - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); + if (expr.shorthand) { + if (expr.value.type === "AssignmentPattern") { + return this.AssignmentPattern(expr.value, Precedence.Sequence, E_TTT); + } + return this.generatePropertyKey(expr.key, expr.computed); + } - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } + if (expr.method) { + return [ + generateMethodPrefix(expr), + this.generatePropertyKey(expr.key, expr.computed), + this.generateFunctionBody(expr.value) + ]; + } - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - // check for listeners before emit removes one-time listeners. - var errListeners = EE.listenerCount(dest, 'error'); - function onerror(er) { - unpipe(); - if (errListeners === 0 && EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - dest.once('error', onerror); + return [ + this.generatePropertyKey(expr.key, expr.computed), + ':' + space, + this.generateExpression(expr.value, Precedence.Assignment, E_TTT) + ]; + }, - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); + ObjectExpression: function (expr, precedence, flags) { + var multiline, result, fragment, that = this; - function unpipe() { - src.unpipe(dest); - } + if (!expr.properties.length) { + return '{}'; + } + multiline = expr.properties.length > 1; - // tell the dest that it's being piped to - dest.emit('pipe', src); + withIndent(function () { + fragment = that.generateExpression(expr.properties[0], Precedence.Sequence, E_TTT); + }); - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); + if (!multiline) { + // issues 4 + // Do not transform from + // dejavu.Class.declare({ + // method2: function () {} + // }); + // to + // dejavu.Class.declare({method2: function () { + // }}); + if (!hasLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + return [ '{', space, fragment, space, '}' ]; + } + } - state.flowing = true; - setImmediate(function() { - flow(src); - }); - } + withIndent(function (indent) { + var i, iz; + result = [ '{', newline, indent, fragment ]; - return dest; -}; + if (multiline) { + result.push(',' + newline); + for (i = 1, iz = expr.properties.length; i < iz; ++i) { + result.push(indent); + result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(',' + newline); + } + } + } + }); -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(base); + result.push('}'); + return result; + }, -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; + AssignmentPattern: function(expr, precedence, flags) { + return this.generateAssignment(expr.left, expr.right, '=', precedence, flags); + }, - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } + ObjectPattern: function (expr, precedence, flags) { + var result, i, iz, multiline, property, that = this; + if (!expr.properties.length) { + return '{}'; + } - while (state.pipesCount && null !== (chunk = src.read())) { + multiline = false; + if (expr.properties.length === 1) { + property = expr.properties[0]; + if ( + property.type === Syntax.Property + && property.value.type !== Syntax.Identifier + ) { + multiline = true; + } + } else { + for (i = 0, iz = expr.properties.length; i < iz; ++i) { + property = expr.properties[i]; + if ( + property.type === Syntax.Property + && !property.shorthand + ) { + multiline = true; + break; + } + } + } + result = ['{', multiline ? newline : '' ]; - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); + withIndent(function (indent) { + var i, iz; + for (i = 0, iz = expr.properties.length; i < iz; ++i) { + result.push(multiline ? indent : ''); + result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(',' + (multiline ? newline : space)); + } + } + }); - src.emit('data', chunk); + if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(multiline ? base : ''); + result.push('}'); + return result; + }, - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } + ThisExpression: function (expr, precedence, flags) { + return 'this'; + }, - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; + Super: function (expr, precedence, flags) { + return 'super'; + }, - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } + Identifier: function (expr, precedence, flags) { + return generateIdentifier(expr); + }, - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} + ImportDefaultSpecifier: function (expr, precedence, flags) { + return generateIdentifier(expr.id || expr.local); + }, -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} + ImportNamespaceSpecifier: function (expr, precedence, flags) { + var result = ['*']; + var id = expr.id || expr.local; + if (id) { + result.push(space + 'as' + noEmptySpace() + generateIdentifier(id)); + } + return result; + }, + ImportSpecifier: function (expr, precedence, flags) { + var imported = expr.imported; + var result = [ imported.name ]; + var local = expr.local; + if (local && local.name !== imported.name) { + result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(local)); + } + return result; + }, -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; + ExportSpecifier: function (expr, precedence, flags) { + var local = expr.local; + var result = [ local.name ]; + var exported = expr.exported; + if (exported && exported.name !== local.name) { + result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(exported)); + } + return result; + }, - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; + Literal: function (expr, precedence, flags) { + var raw; + if (expr.hasOwnProperty('raw') && parse && extra.raw) { + try { + raw = parse(expr.raw).body[0].expression; + if (raw.type === Syntax.Literal) { + if (raw.value === expr.value) { + return expr.raw; + } + } + } catch (e) { + // not use raw property + } + } - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; + if (expr.regex) { + return '/' + expr.regex.pattern + '/' + expr.regex.flags; + } - if (!dest) - dest = state.pipes; + if (expr.value === null) { + return 'null'; + } - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } + if (typeof expr.value === 'string') { + return escapeString(expr.value); + } - // slow case. multiple pipe destinations. + if (typeof expr.value === 'number') { + return generateNumber(expr.value); + } - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; + if (typeof expr.value === 'boolean') { + return expr.value ? 'true' : 'false'; + } - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } + return generateRegExp(expr.value); + }, - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; + GeneratorExpression: function (expr, precedence, flags) { + return this.ComprehensionExpression(expr, precedence, flags); + }, - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; + ComprehensionExpression: function (expr, precedence, flags) { + // GeneratorExpression should be parenthesized with (...), ComprehensionExpression with [...] + // Due to https://bugzilla.mozilla.org/show_bug.cgi?id=883468 position of expr.body can differ in Spidermonkey and ES6 - dest.emit('unpipe', this); + var result, i, iz, fragment, that = this; + result = (expr.type === Syntax.GeneratorExpression) ? ['('] : ['[']; - return this; -}; + if (extra.moz.comprehensionExpressionStartsWithAssignment) { + fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT); + result.push(fragment); + } -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); + if (expr.blocks) { + withIndent(function () { + for (i = 0, iz = expr.blocks.length; i < iz; ++i) { + fragment = that.generateExpression(expr.blocks[i], Precedence.Sequence, E_TTT); + if (i > 0 || extra.moz.comprehensionExpressionStartsWithAssignment) { + result = join(result, fragment); + } else { + result.push(fragment); + } + } + }); + } - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); + if (expr.filter) { + result = join(result, 'if' + space); + fragment = this.generateExpression(expr.filter, Precedence.Sequence, E_TTT); + result = join(result, [ '(', fragment, ')' ]); + } - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } + if (!extra.moz.comprehensionExpressionStartsWithAssignment) { + fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT); - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; + result = join(result, fragment); + } -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; + result.push((expr.type === Syntax.GeneratorExpression) ? ')' : ']'); + return result; + }, -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; + ComprehensionBlock: function (expr, precedence, flags) { + var fragment; + if (expr.left.type === Syntax.VariableDeclaration) { + fragment = [ + expr.left.kind, noEmptySpace(), + this.generateStatement(expr.left.declarations[0], S_FFFF) + ]; + } else { + fragment = this.generateExpression(expr.left, Precedence.Call, E_TTT); + } -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; + fragment = join(fragment, expr.of ? 'of' : 'in'); + fragment = join(fragment, this.generateExpression(expr.right, Precedence.Sequence, E_TTT)); - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } + return [ 'for' + space + '(', fragment, ')' ]; + }, - var paused = startPaused || false; - var readable = false; + SpreadElement: function (expr, precedence, flags) { + return [ + '...', + this.generateExpression(expr.argument, Precedence.Assignment, E_TTT) + ]; + }, - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; + TaggedTemplateExpression: function (expr, precedence, flags) { + var itemFlags = E_TTF; + if (!(flags & F_ALLOW_CALL)) { + itemFlags = E_TFF; + } + var result = [ + this.generateExpression(expr.tag, Precedence.Call, itemFlags), + this.generateExpression(expr.quasi, Precedence.Primary, E_FFT) + ]; + return parenthesize(result, Precedence.TaggedTemplate, precedence); + }, - stream.on('readable', function() { - readable = true; + TemplateElement: function (expr, precedence, flags) { + // Don't use "cooked". Since tagged template can use raw template + // representation. So if we do so, it breaks the script semantics. + return expr.value.raw; + }, - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); + TemplateLiteral: function (expr, precedence, flags) { + var result, i, iz; + result = [ '`' ]; + for (i = 0, iz = expr.quasis.length; i < iz; ++i) { + result.push(this.generateExpression(expr.quasis[i], Precedence.Primary, E_TTT)); + if (i + 1 < iz) { + result.push('${' + space); + result.push(this.generateExpression(expr.expressions[i], Precedence.Sequence, E_TTT)); + result.push(space + '}'); + } + } + result.push('`'); + return result; + }, - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); + ModuleSpecifier: function (expr, precedence, flags) { + return this.Literal(expr, precedence, flags); + }, - stream.pause = function() { - paused = true; - this.emit('pause'); - }; + ImportExpression: function(expr, precedence, flag) { + return parenthesize([ + 'import(', + this.generateExpression(expr.source, Precedence.Assignment, E_TTT), + ')' + ], Precedence.Call, precedence); + }, - stream.resume = function() { - paused = false; - if (readable) - setImmediate(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; + }; - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} + merge(CodeGenerator.prototype, CodeGenerator.Expression); -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; + CodeGenerator.prototype.generateExpression = function (expr, precedence, flags) { + var result, type; - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } + type = expr.type || Syntax.Property; - self.push(null); - }); + if (extra.verbatim && expr.hasOwnProperty(extra.verbatim)) { + return generateVerbatim(expr, precedence); + } - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - if (!chunk || !state.objectMode && !chunk.length) - return; + result = this[type](expr, precedence, flags); - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } + if (extra.comment) { + result = addComments(expr, result); + } + return toSourceNodeWhenNeeded(result, expr); + }; - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, function (x) { - return self.emit.apply(self, ev, x); - }); - }); + CodeGenerator.prototype.generateStatement = function (stmt, flags) { + var result, + fragment; - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; + result = this[stmt.type](stmt, flags); - return self; -}; + // Attach comments + if (extra.comment) { + result = addComments(stmt, result); + } + fragment = toSourceNodeWhenNeeded(result).toString(); + if (stmt.type === Syntax.Program && !safeConcatenation && newline === '' && fragment.charAt(fragment.length - 1) === '\n') { + result = sourceMap ? toSourceNodeWhenNeeded(result).replaceRight(/\s+$/, '') : fragment.replace(/\s+$/, ''); + } -// exposed for testing purposes only. -Readable._fromList = fromList; + return toSourceNodeWhenNeeded(result, stmt); + }; -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; + function generateInternal(node) { + var codegen; - // nothing in the list, definitely empty. - if (list.length === 0) - return null; + codegen = new CodeGenerator(); + if (isStatement(node)) { + return codegen.generateStatement(node, S_TFFF); + } - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); + if (isExpression(node)) { + return codegen.generateExpression(node, Precedence.Sequence, E_TTT); + } - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); + throw new Error('Unknown node type: ' + node.type); + } - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); + function generate(node, options) { + var defaultOptions = getDefaultOptions(), result, pair; - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); + if (options != null) { + // Obsolete options + // + // `options.indent` + // `options.base` + // + // Instead of them, we can use `option.format.indent`. + if (typeof options.indent === 'string') { + defaultOptions.format.indent.style = options.indent; + } + if (typeof options.base === 'number') { + defaultOptions.format.indent.base = options.base; + } + options = updateDeeply(defaultOptions, options); + indent = options.format.indent.style; + if (typeof options.base === 'string') { + base = options.base; + } else { + base = stringRepeat(indent, options.format.indent.base); + } + } else { + options = defaultOptions; + indent = options.format.indent.style; + base = stringRepeat(indent, options.format.indent.base); + } + json = options.format.json; + renumber = options.format.renumber; + hexadecimal = json ? false : options.format.hexadecimal; + quotes = json ? 'double' : options.format.quotes; + escapeless = options.format.escapeless; + newline = options.format.newline; + space = options.format.space; + if (options.format.compact) { + newline = space = indent = base = ''; + } + parentheses = options.format.parentheses; + semicolons = options.format.semicolons; + safeConcatenation = options.format.safeConcatenation; + directive = options.directive; + parse = json ? null : options.parse; + sourceMap = options.sourceMap; + sourceCode = options.sourceCode; + preserveBlankLines = options.format.preserveBlankLines && sourceCode !== null; + extra = options; - c += cpy; - } - } - } + if (sourceMap) { + if (!exports.browser) { + // We assume environment is node.js + // And prevent from including source-map by browserify + SourceNode = require('source-map').SourceNode; + } else { + SourceNode = global.sourceMap.SourceNode; + } + } - return ret; -} + result = generateInternal(node); -function endReadable(stream) { - var state = stream._readableState; + if (!sourceMap) { + pair = {code: result.toString(), map: null}; + return options.sourceMapWithCode ? pair : pair.code; + } - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - if (!state.endEmitted && state.calledRead) { - state.ended = true; - setImmediate(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} + pair = result.toStringWithSourceMap({ + file: options.file, + sourceRoot: options.sourceMapRoot + }); -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} + if (options.sourceContent) { + pair.map.setSourceContent(options.sourceMap, + options.sourceContent); + } -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} + if (options.sourceMapWithCode) { + return pair; + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/readable.js","/node_modules/gulp-browserify/node_modules/stream-browserify") -},{"./index.js":61,"buffer":57,"events":58,"inherits":91,"lYpoI2":59,"process/browser.js":62,"string_decoder":67}],65:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + return pair.map.toString(); + } -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. + FORMAT_MINIFY = { + indent: { + style: '', + base: 0 + }, + renumber: true, + hexadecimal: true, + quotes: 'auto', + escapeless: true, + compact: true, + parentheses: false, + semicolons: false + }; -module.exports = Transform; + FORMAT_DEFAULTS = getDefaultOptions().format; -var Duplex = require('./duplex.js'); -var inherits = require('inherits'); -inherits(Transform, Duplex); + exports.version = require('./package.json').version; + exports.generate = generate; + exports.attachComments = estraverse.attachComments; + exports.Precedence = updateDeeply({}, Precedence); + exports.browser = false; + exports.FORMAT_MINIFY = FORMAT_MINIFY; + exports.FORMAT_DEFAULTS = FORMAT_DEFAULTS; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/escodegen.js","/node_modules/escodegen") +},{"./package.json":68,"FWaASH":50,"buffer":52,"estraverse":55,"esutils":72,"source-map":67}],55:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2012-2013 Yusuke Suzuki + Copyright (C) 2012 Ariya Hidayat -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/*jslint vars:false, bitwise:true*/ +/*jshint indent:4*/ +/*global exports:true*/ +(function clone(exports) { + 'use strict'; - var cb = ts.writecb; + var Syntax, + VisitorOption, + VisitorKeys, + BREAK, + SKIP, + REMOVE; - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); + function deepCopy(obj) { + var ret = {}, key, val; + for (key in obj) { + if (obj.hasOwnProperty(key)) { + val = obj[key]; + if (typeof val === 'object' && val !== null) { + ret[key] = deepCopy(val); + } else { + ret[key] = val; + } + } + } + return ret; + } - ts.writechunk = null; - ts.writecb = null; + // based on LLVM libc++ upper_bound / lower_bound + // MIT License - if (data !== null && data !== undefined) - stream.push(data); + function upperBound(array, func) { + var diff, len, i, current; - if (cb) - cb(er); + len = array.length; + i = 0; - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} + while (len) { + diff = len >>> 1; + current = i + diff; + if (func(array[current])) { + len = diff; + } else { + i = current + 1; + len -= diff + 1; + } + } + return i; + } + Syntax = { + AssignmentExpression: 'AssignmentExpression', + AssignmentPattern: 'AssignmentPattern', + ArrayExpression: 'ArrayExpression', + ArrayPattern: 'ArrayPattern', + ArrowFunctionExpression: 'ArrowFunctionExpression', + AwaitExpression: 'AwaitExpression', // CAUTION: It's deferred to ES7. + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ClassBody: 'ClassBody', + ClassDeclaration: 'ClassDeclaration', + ClassExpression: 'ClassExpression', + ComprehensionBlock: 'ComprehensionBlock', // CAUTION: It's deferred to ES7. + ComprehensionExpression: 'ComprehensionExpression', // CAUTION: It's deferred to ES7. + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DebuggerStatement: 'DebuggerStatement', + DirectiveStatement: 'DirectiveStatement', + DoWhileStatement: 'DoWhileStatement', + EmptyStatement: 'EmptyStatement', + ExportAllDeclaration: 'ExportAllDeclaration', + ExportDefaultDeclaration: 'ExportDefaultDeclaration', + ExportNamedDeclaration: 'ExportNamedDeclaration', + ExportSpecifier: 'ExportSpecifier', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForInStatement: 'ForInStatement', + ForOfStatement: 'ForOfStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + GeneratorExpression: 'GeneratorExpression', // CAUTION: It's deferred to ES7. + Identifier: 'Identifier', + IfStatement: 'IfStatement', + ImportExpression: 'ImportExpression', + ImportDeclaration: 'ImportDeclaration', + ImportDefaultSpecifier: 'ImportDefaultSpecifier', + ImportNamespaceSpecifier: 'ImportNamespaceSpecifier', + ImportSpecifier: 'ImportSpecifier', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + MetaProperty: 'MetaProperty', + MethodDefinition: 'MethodDefinition', + ModuleSpecifier: 'ModuleSpecifier', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + ObjectPattern: 'ObjectPattern', + Program: 'Program', + Property: 'Property', + RestElement: 'RestElement', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SpreadElement: 'SpreadElement', + Super: 'Super', + SwitchStatement: 'SwitchStatement', + SwitchCase: 'SwitchCase', + TaggedTemplateExpression: 'TaggedTemplateExpression', + TemplateElement: 'TemplateElement', + TemplateLiteral: 'TemplateLiteral', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement', + YieldExpression: 'YieldExpression' + }; -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); + VisitorKeys = { + AssignmentExpression: ['left', 'right'], + AssignmentPattern: ['left', 'right'], + ArrayExpression: ['elements'], + ArrayPattern: ['elements'], + ArrowFunctionExpression: ['params', 'body'], + AwaitExpression: ['argument'], // CAUTION: It's deferred to ES7. + BlockStatement: ['body'], + BinaryExpression: ['left', 'right'], + BreakStatement: ['label'], + CallExpression: ['callee', 'arguments'], + CatchClause: ['param', 'body'], + ClassBody: ['body'], + ClassDeclaration: ['id', 'superClass', 'body'], + ClassExpression: ['id', 'superClass', 'body'], + ComprehensionBlock: ['left', 'right'], // CAUTION: It's deferred to ES7. + ComprehensionExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7. + ConditionalExpression: ['test', 'consequent', 'alternate'], + ContinueStatement: ['label'], + DebuggerStatement: [], + DirectiveStatement: [], + DoWhileStatement: ['body', 'test'], + EmptyStatement: [], + ExportAllDeclaration: ['source'], + ExportDefaultDeclaration: ['declaration'], + ExportNamedDeclaration: ['declaration', 'specifiers', 'source'], + ExportSpecifier: ['exported', 'local'], + ExpressionStatement: ['expression'], + ForStatement: ['init', 'test', 'update', 'body'], + ForInStatement: ['left', 'right', 'body'], + ForOfStatement: ['left', 'right', 'body'], + FunctionDeclaration: ['id', 'params', 'body'], + FunctionExpression: ['id', 'params', 'body'], + GeneratorExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7. + Identifier: [], + IfStatement: ['test', 'consequent', 'alternate'], + ImportExpression: ['source'], + ImportDeclaration: ['specifiers', 'source'], + ImportDefaultSpecifier: ['local'], + ImportNamespaceSpecifier: ['local'], + ImportSpecifier: ['imported', 'local'], + Literal: [], + LabeledStatement: ['label', 'body'], + LogicalExpression: ['left', 'right'], + MemberExpression: ['object', 'property'], + MetaProperty: ['meta', 'property'], + MethodDefinition: ['key', 'value'], + ModuleSpecifier: [], + NewExpression: ['callee', 'arguments'], + ObjectExpression: ['properties'], + ObjectPattern: ['properties'], + Program: ['body'], + Property: ['key', 'value'], + RestElement: [ 'argument' ], + ReturnStatement: ['argument'], + SequenceExpression: ['expressions'], + SpreadElement: ['argument'], + Super: [], + SwitchStatement: ['discriminant', 'cases'], + SwitchCase: ['test', 'consequent'], + TaggedTemplateExpression: ['tag', 'quasi'], + TemplateElement: [], + TemplateLiteral: ['quasis', 'expressions'], + ThisExpression: [], + ThrowStatement: ['argument'], + TryStatement: ['block', 'handler', 'finalizer'], + UnaryExpression: ['argument'], + UpdateExpression: ['argument'], + VariableDeclaration: ['declarations'], + VariableDeclarator: ['id', 'init'], + WhileStatement: ['test', 'body'], + WithStatement: ['object', 'body'], + YieldExpression: ['argument'] + }; - Duplex.call(this, options); + // unique id + BREAK = {}; + SKIP = {}; + REMOVE = {}; - var ts = this._transformState = new TransformState(options, this); + VisitorOption = { + Break: BREAK, + Skip: SKIP, + Remove: REMOVE + }; - // when the writable side finishes, then flush out anything remaining. - var stream = this; + function Reference(parent, key) { + this.parent = parent; + this.key = key; + } - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; + Reference.prototype.replace = function replace(node) { + this.parent[this.key] = node; + }; - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; + Reference.prototype.remove = function remove() { + if (Array.isArray(this.parent)) { + this.parent.splice(this.key, 1); + return true; + } else { + this.replace(null); + return false; + } + }; - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} + function Element(node, path, wrap, ref) { + this.node = node; + this.path = path; + this.wrap = wrap; + this.ref = ref; + } -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; + function Controller() { } -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; + // API: + // return property path array from root to current node + Controller.prototype.path = function path() { + var i, iz, j, jz, result, element; -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; + function addToPath(result, path) { + if (Array.isArray(path)) { + for (j = 0, jz = path.length; j < jz; ++j) { + result.push(path[j]); + } + } else { + result.push(path); + } + } -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; + // root node + if (!this.__current.path) { + return null; + } - if (ts.writechunk && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; + // first node is sentinel, second node is root element + result = []; + for (i = 2, iz = this.__leavelist.length; i < iz; ++i) { + element = this.__leavelist[i]; + addToPath(result, element.path); + } + addToPath(result, this.__current.path); + return result; + }; + // API: + // return type of current node + Controller.prototype.type = function () { + var node = this.current(); + return node.type || this.__current.wrap; + }; -function done(stream, er) { - if (er) - return stream.emit('error', er); + // API: + // return array of parent elements + Controller.prototype.parents = function parents() { + var i, iz, result; - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; + // first node is sentinel + result = []; + for (i = 1, iz = this.__leavelist.length; i < iz; ++i) { + result.push(this.__leavelist[i].node); + } - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); + return result; + }; - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} - -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/transform.js","/node_modules/gulp-browserify/node_modules/stream-browserify") -},{"./duplex.js":60,"buffer":57,"inherits":91,"lYpoI2":59}],66:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. + // API: + // return current node + Controller.prototype.current = function current() { + return this.__current.node; + }; -module.exports = Writable; -Writable.WritableState = WritableState; + Controller.prototype.__execute = function __execute(callback, element) { + var previous, result; -var isUint8Array = typeof Uint8Array !== 'undefined' - ? function (x) { return x instanceof Uint8Array } - : function (x) { - return x && x.constructor && x.constructor.name === 'Uint8Array' - } -; -var isArrayBuffer = typeof ArrayBuffer !== 'undefined' - ? function (x) { return x instanceof ArrayBuffer } - : function (x) { - return x && x.constructor && x.constructor.name === 'ArrayBuffer' - } -; + result = undefined; -var inherits = require('inherits'); -var Stream = require('./index.js'); -var setImmediate = require('process/browser.js').nextTick; -var Buffer = require('buffer').Buffer; + previous = this.__current; + this.__current = element; + this.__state = null; + if (callback) { + result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node); + } + this.__current = previous; -inherits(Writable, Stream); + return result; + }; -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} + // API: + // notify control skip / break + Controller.prototype.notify = function notify(flag) { + this.__state = flag; + }; -function WritableState(options, stream) { - options = options || {}; + // API: + // skip child nodes of current node + Controller.prototype.skip = function () { + this.notify(SKIP); + }; - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; + // API: + // break traversals + Controller.prototype['break'] = function () { + this.notify(BREAK); + }; - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; + // API: + // remove node + Controller.prototype.remove = function () { + this.notify(REMOVE); + }; - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; + Controller.prototype.__initialize = function(root, visitor) { + this.visitor = visitor; + this.root = root; + this.__worklist = []; + this.__leavelist = []; + this.__current = null; + this.__state = null; + this.__fallback = null; + if (visitor.fallback === 'iteration') { + this.__fallback = Object.keys; + } else if (typeof visitor.fallback === 'function') { + this.__fallback = visitor.fallback; + } - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; + this.__keys = VisitorKeys; + if (visitor.keys) { + this.__keys = Object.assign(Object.create(this.__keys), visitor.keys); + } + }; - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; + function isNode(node) { + if (node == null) { + return false; + } + return typeof node === 'object' && typeof node.type === 'string'; + } - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; + function isProperty(nodeType, key) { + return (nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === key; + } - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; + Controller.prototype.traverse = function traverse(root, visitor) { + var worklist, + leavelist, + element, + node, + nodeType, + ret, + key, + current, + current2, + candidates, + candidate, + sentinel; - // a flag to see when we're in the middle of a write. - this.writing = false; + this.__initialize(root, visitor); - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; + sentinel = {}; - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; + // reference + worklist = this.__worklist; + leavelist = this.__leavelist; - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; + // initialize + worklist.push(new Element(root, null, null, null)); + leavelist.push(new Element(null, null, null, null)); - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; + while (worklist.length) { + element = worklist.pop(); - // the amount that is being written when _write is called. - this.writelen = 0; + if (element === sentinel) { + element = leavelist.pop(); - this.buffer = []; -} + ret = this.__execute(visitor.leave, element); -function Writable(options) { - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Stream.Duplex)) - return new Writable(options); + if (this.__state === BREAK || ret === BREAK) { + return; + } + continue; + } - this._writableState = new WritableState(options, this); + if (element.node) { - // legacy. - this.writable = true; + ret = this.__execute(visitor.enter, element); - Stream.call(this); -} + if (this.__state === BREAK || ret === BREAK) { + return; + } -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; + worklist.push(sentinel); + leavelist.push(element); + if (this.__state === SKIP || ret === SKIP) { + continue; + } -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - setImmediate(function() { - cb(er); - }); -} + node = element.node; + nodeType = node.type || element.wrap; + candidates = this.__keys[nodeType]; + if (!candidates) { + if (this.__fallback) { + candidates = this.__fallback(node); + } else { + throw new Error('Unknown node type ' + nodeType + '.'); + } + } -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - setImmediate(function() { - cb(er); - }); - valid = false; - } - return valid; -} + current = candidates.length; + while ((current -= 1) >= 0) { + key = candidates[current]; + candidate = node[key]; + if (!candidate) { + continue; + } -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; + if (Array.isArray(candidate)) { + current2 = candidate.length; + while ((current2 -= 1) >= 0) { + if (!candidate[current2]) { + continue; + } + if (isProperty(nodeType, candidates[current])) { + element = new Element(candidate[current2], [key, current2], 'Property', null); + } else if (isNode(candidate[current2])) { + element = new Element(candidate[current2], [key, current2], null, null); + } else { + continue; + } + worklist.push(element); + } + } else if (isNode(candidate)) { + worklist.push(new Element(candidate, key, null, null)); + } + } + } + } + }; - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } + Controller.prototype.replace = function replace(root, visitor) { + var worklist, + leavelist, + node, + nodeType, + target, + element, + current, + current2, + candidates, + candidate, + sentinel, + outer, + key; - if (!Buffer.isBuffer(chunk) && isUint8Array(chunk)) - chunk = new Buffer(chunk); - if (isArrayBuffer(chunk) && typeof Uint8Array !== 'undefined') - chunk = new Buffer(new Uint8Array(chunk)); - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; + function removeElem(element) { + var i, + key, + nextElem, + parent; - if (typeof cb !== 'function') - cb = function() {}; + if (element.ref.remove()) { + // When the reference is an element of an array. + key = element.ref.key; + parent = element.ref.parent; - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); + // If removed from array, then decrease following items' keys. + i = worklist.length; + while (i--) { + nextElem = worklist[i]; + if (nextElem.ref && nextElem.ref.parent === parent) { + if (nextElem.ref.key < key) { + break; + } + --nextElem.ref.key; + } + } + } + } - return ret; -}; + this.__initialize(root, visitor); -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} + sentinel = {}; -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - var len = state.objectMode ? 1 : chunk.length; + // reference + worklist = this.__worklist; + leavelist = this.__leavelist; - state.length += len; + // initialize + outer = { + root: root + }; + element = new Element(root, null, null, new Reference(outer, 'root')); + worklist.push(element); + leavelist.push(element); - var ret = state.length < state.highWaterMark; - state.needDrain = !ret; + while (worklist.length) { + element = worklist.pop(); - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); + if (element === sentinel) { + element = leavelist.pop(); - return ret; -} + target = this.__execute(visitor.leave, element); -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} + // node may be replaced with null, + // so distinguish between undefined and null in this place + if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) { + // replace + element.ref.replace(target); + } -function onwriteError(stream, state, sync, er, cb) { - if (sync) - setImmediate(function() { - cb(er); - }); - else - cb(er); + if (this.__state === REMOVE || target === REMOVE) { + removeElem(element); + } - stream.emit('error', er); -} + if (this.__state === BREAK || target === BREAK) { + return outer.root; + } + continue; + } -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} + target = this.__execute(visitor.enter, element); -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; + // node may be replaced with null, + // so distinguish between undefined and null in this place + if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) { + // replace + element.ref.replace(target); + element.node = target; + } - onwriteStateUpdate(state); + if (this.__state === REMOVE || target === REMOVE) { + removeElem(element); + element.node = null; + } - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); + if (this.__state === BREAK || target === BREAK) { + return outer.root; + } - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); + // node may be null + node = element.node; + if (!node) { + continue; + } - if (sync) { - setImmediate(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} + worklist.push(sentinel); + leavelist.push(element); -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} + if (this.__state === SKIP || target === SKIP) { + continue; + } -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} + nodeType = node.type || element.wrap; + candidates = this.__keys[nodeType]; + if (!candidates) { + if (this.__fallback) { + candidates = this.__fallback(node); + } else { + throw new Error('Unknown node type ' + nodeType + '.'); + } + } + current = candidates.length; + while ((current -= 1) >= 0) { + key = candidates[current]; + candidate = node[key]; + if (!candidate) { + continue; + } -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; + if (Array.isArray(candidate)) { + current2 = candidate.length; + while ((current2 -= 1) >= 0) { + if (!candidate[current2]) { + continue; + } + if (isProperty(nodeType, candidates[current])) { + element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2)); + } else if (isNode(candidate[current2])) { + element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2)); + } else { + continue; + } + worklist.push(element); + } + } else if (isNode(candidate)) { + worklist.push(new Element(candidate, key, null, new Reference(node, key))); + } + } + } - doWrite(stream, state, len, chunk, encoding, cb); + return outer.root; + }; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; + function traverse(root, visitor) { + var controller = new Controller(); + return controller.traverse(root, visitor); } - } - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} + function replace(root, visitor) { + var controller = new Controller(); + return controller.replace(root, visitor); + } -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; + function extendCommentRange(comment, tokens) { + var target; -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; + target = upperBound(tokens, function search(token) { + return token.range[0] > comment.range[0]; + }); - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } + comment.extendedRange = [comment.range[0], comment.range[1]]; - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); + if (target !== tokens.length) { + comment.extendedRange[1] = tokens[target].range[0]; + } - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; + target -= 1; + if (target >= 0) { + comment.extendedRange[0] = tokens[target].range[1]; + } + return comment; + } -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} + function attachComments(tree, providedComments, tokens) { + // At first, we should calculate extended comment ranges. + var comments = [], comment, len, i, cursor; -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} + if (!tree.range) { + throw new Error('attachComments needs range information'); + } -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - setImmediate(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} + // tokens array is empty, we attach comments to tree as 'leadingComments' + if (!tokens.length) { + if (providedComments.length) { + for (i = 0, len = providedComments.length; i < len; i += 1) { + comment = deepCopy(providedComments[i]); + comment.extendedRange = [0, tree.range[0]]; + comments.push(comment); + } + tree.leadingComments = comments; + } + return tree; + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/writable.js","/node_modules/gulp-browserify/node_modules/stream-browserify") -},{"./index.js":61,"buffer":57,"inherits":91,"lYpoI2":59,"process/browser.js":62}],67:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + for (i = 0, len = providedComments.length; i < len; i += 1) { + comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens)); + } -var Buffer = require('buffer').Buffer; + // This is based on John Freeman's implementation. + cursor = 0; + traverse(tree, { + enter: function (node) { + var comment; -function assertEncoding(encoding) { - if (encoding && !Buffer.isEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} + while (cursor < comments.length) { + comment = comments[cursor]; + if (comment.extendedRange[1] > node.range[0]) { + break; + } -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } + if (comment.extendedRange[1] === node.range[0]) { + if (!node.leadingComments) { + node.leadingComments = []; + } + node.leadingComments.push(comment); + comments.splice(cursor, 1); + } else { + cursor += 1; + } + } - this.charBuffer = new Buffer(6); - this.charReceived = 0; - this.charLength = 0; -}; + // already out of owned node + if (cursor === comments.length) { + return VisitorOption.Break; + } + if (comments[cursor].extendedRange[0] > node.range[1]) { + return VisitorOption.Skip; + } + } + }); -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - var offset = 0; + cursor = 0; + traverse(tree, { + leave: function (node) { + var comment; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var i = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; + while (cursor < comments.length) { + comment = comments[cursor]; + if (node.range[1] < comment.extendedRange[0]) { + break; + } - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, offset, i); - this.charReceived += (i - offset); - offset = i; + if (node.range[1] === comment.extendedRange[0]) { + if (!node.trailingComments) { + node.trailingComments = []; + } + node.trailingComments.push(comment); + comments.splice(cursor, 1); + } else { + cursor += 1; + } + } - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } + // already out of owned node + if (cursor === comments.length) { + return VisitorOption.Break; + } - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); + if (comments[cursor].extendedRange[0] > node.range[1]) { + return VisitorOption.Skip; + } + } + }); - // lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; + return tree; } - this.charReceived = this.charLength = 0; - // if there are no more bytes in this buffer, just emit our char - if (i == buffer.length) return charStr; + exports.version = require('./package.json').version; + exports.Syntax = Syntax; + exports.traverse = traverse; + exports.replace = replace; + exports.attachComments = attachComments; + exports.VisitorKeys = VisitorKeys; + exports.VisitorOption = VisitorOption; + exports.Controller = Controller; + exports.cloneEnvironment = function () { return clone({}); }; - // otherwise cut off the characters end from the beginning of this buffer - buffer = buffer.slice(i, buffer.length); - break; + return exports; +}(exports)); +/* vim: set sw=4 ts=4 et tw=80 : */ + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/estraverse/estraverse.js","/node_modules/escodegen/node_modules/estraverse") +},{"./package.json":56,"FWaASH":50,"buffer":52}],56:[function(require,module,exports){ +module.exports={ + "name": "estraverse", + "description": "ECMAScript JS AST traversal functions", + "homepage": "https://github.com/estools/estraverse", + "main": "estraverse.js", + "version": "4.3.0", + "engines": { + "node": ">=4.0" + }, + "maintainers": [ + { + "name": "Yusuke Suzuki", + "email": "utatane.tea@gmail.com", + "web": "http://github.com/Constellation" + } + ], + "repository": { + "type": "git", + "url": "http://github.com/estools/estraverse.git" + }, + "devDependencies": { + "babel-preset-env": "^1.6.1", + "babel-register": "^6.3.13", + "chai": "^2.1.1", + "espree": "^1.11.0", + "gulp": "^3.8.10", + "gulp-bump": "^0.2.2", + "gulp-filter": "^2.0.0", + "gulp-git": "^1.0.1", + "gulp-tag-version": "^1.3.0", + "jshint": "^2.5.6", + "mocha": "^2.1.0" + }, + "license": "BSD-2-Clause", + "scripts": { + "test": "npm run-script lint && npm run-script unit-test", + "lint": "jshint estraverse.js", + "unit-test": "mocha --compilers js:babel-register" } +} - var lenIncomplete = this.detectIncompleteChar(buffer); +},{}],57:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); - this.charReceived = lenIncomplete; - end -= lenIncomplete; - } +var util = require('./util'); +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; - charStr += buffer.toString(this.encoding, 0, end); +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); +} - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); - return charStr.substring(0, end); +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); } - - // or just emit the charStr - return charStr; + return set; }; -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; } + } +}; - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } +}; - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; } } - return i; + throw new Error('"' + aStr + '" is not in the set.'); }; -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; } - - return res; + throw new Error('No element indexed by ' + aIdx); }; -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 2; - this.charLength = incomplete ? 2 : 0; - return incomplete; -} +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; -function base64DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 3; - this.charLength = incomplete ? 3 : 0; - return incomplete; -} +exports.ArraySet = ArraySet; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/string_decoder/index.js","/node_modules/gulp-browserify/node_modules/string_decoder") -},{"buffer":57,"lYpoI2":59}],68:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/array-set.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"./util":66,"FWaASH":50,"buffer":52}],58:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/** - * Constants enumerating the HTTP status codes. +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause * - * All status codes defined in RFC1945 (HTTP/1.0, RFC2616 (HTTP/1.1), - * RFC2518 (WebDAV), RFC6585 (Additional HTTP Status Codes), and - * RFC7538 (Permanent Redirect) are supported. + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java * - * Based on the org.apache.commons.httpclient.HttpStatus Java API. + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: * - * Ported by Bryce Neal. + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -var statusCodes = {}; - -statusCodes[exports.ACCEPTED = 202] = "Accepted"; -statusCodes[exports.BAD_GATEWAY = 502] = "Bad Gateway"; -statusCodes[exports.BAD_REQUEST = 400] = "Bad Request"; -statusCodes[exports.CONFLICT = 409] = "Conflict"; -statusCodes[exports.CONTINUE = 100] = "Continue"; -statusCodes[exports.CREATED = 201] = "Created"; -statusCodes[exports.EXPECTATION_FAILED = 417] = "Expectation Failed"; -statusCodes[exports.FAILED_DEPENDENCY = 424] = "Failed Dependency"; -statusCodes[exports.FORBIDDEN = 403] = "Forbidden"; -statusCodes[exports.GATEWAY_TIMEOUT = 504] = "Gateway Timeout"; -statusCodes[exports.GONE = 410] = "Gone"; -statusCodes[exports.HTTP_VERSION_NOT_SUPPORTED = 505] = "HTTP Version Not Supported"; -statusCodes[exports.IM_A_TEAPOT = 418] = "I'm a teapot"; -statusCodes[exports.INSUFFICIENT_SPACE_ON_RESOURCE = 419] = "Insufficient Space on Resource"; -statusCodes[exports.INSUFFICIENT_STORAGE = 507] = "Insufficient Storage"; -statusCodes[exports.INTERNAL_SERVER_ERROR = 500] = "Server Error"; -statusCodes[exports.LENGTH_REQUIRED = 411] = "Length Required"; -statusCodes[exports.LOCKED = 423] = "Locked"; -statusCodes[exports.METHOD_FAILURE = 420] = "Method Failure"; -statusCodes[exports.METHOD_NOT_ALLOWED = 405] = "Method Not Allowed"; -statusCodes[exports.MOVED_PERMANENTLY = 301] = "Moved Permanently"; -statusCodes[exports.MOVED_TEMPORARILY = 302] = "Moved Temporarily"; -statusCodes[exports.MULTI_STATUS = 207] = "Multi-Status"; -statusCodes[exports.MULTIPLE_CHOICES = 300] = "Multiple Choices"; -statusCodes[exports.NETWORK_AUTHENTICATION_REQUIRED = 511] = "Network Authentication Required"; -statusCodes[exports.NO_CONTENT = 204] = "No Content"; -statusCodes[exports.NON_AUTHORITATIVE_INFORMATION = 203] = "Non Authoritative Information"; -statusCodes[exports.NOT_ACCEPTABLE = 406] = "Not Acceptable"; -statusCodes[exports.NOT_FOUND = 404] = "Not Found"; -statusCodes[exports.NOT_IMPLEMENTED = 501] = "Not Implemented"; -statusCodes[exports.NOT_MODIFIED = 304] = "Not Modified"; -statusCodes[exports.OK = 200] = "OK"; -statusCodes[exports.PARTIAL_CONTENT = 206] = "Partial Content"; -statusCodes[exports.PAYMENT_REQUIRED = 402] = "Payment Required"; -statusCodes[exports.PERMANENT_REDIRECT = 308] = "Permanent Redirect"; -statusCodes[exports.PRECONDITION_FAILED = 412] = "Precondition Failed"; -statusCodes[exports.PRECONDITION_REQUIRED = 428] = "Precondition Required"; -statusCodes[exports.PROCESSING = 102] = "Processing"; -statusCodes[exports.PROXY_AUTHENTICATION_REQUIRED = 407] = "Proxy Authentication Required"; -statusCodes[exports.REQUEST_HEADER_FIELDS_TOO_LARGE = 431] = "Request Header Fields Too Large"; -statusCodes[exports.REQUEST_TIMEOUT = 408] = "Request Timeout"; -statusCodes[exports.REQUEST_TOO_LONG = 413] = "Request Entity Too Large"; -statusCodes[exports.REQUEST_URI_TOO_LONG = 414] = "Request-URI Too Long"; -statusCodes[exports.REQUESTED_RANGE_NOT_SATISFIABLE = 416] = "Requested Range Not Satisfiable"; -statusCodes[exports.RESET_CONTENT = 205] = "Reset Content"; -statusCodes[exports.SEE_OTHER = 303] = "See Other"; -statusCodes[exports.SERVICE_UNAVAILABLE = 503] = "Service Unavailable"; -statusCodes[exports.SWITCHING_PROTOCOLS = 101] = "Switching Protocols"; -statusCodes[exports.TEMPORARY_REDIRECT = 307] = "Temporary Redirect"; -statusCodes[exports.TOO_MANY_REQUESTS = 429] = "Too Many Requests"; -statusCodes[exports.UNAUTHORIZED = 401] = "Unauthorized"; -statusCodes[exports.UNPROCESSABLE_ENTITY = 422] = "Unprocessable Entity"; -statusCodes[exports.UNSUPPORTED_MEDIA_TYPE = 415] = "Unsupported Media Type"; -statusCodes[exports.USE_PROXY = 305] = "Use Proxy"; - -exports.getStatusText = function(statusCode) { - if (statusCodes.hasOwnProperty(statusCode)) { - return statusCodes[statusCode]; - } else { - throw new Error("Status code does not exist: " + statusCode); - } -}; +var base64 = require('./base64'); -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/http-status-codes/index.js","/node_modules/http-status-codes") -},{"buffer":57,"lYpoI2":59}],69:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 -// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. -// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. -// To save memory and loading time, we read table files only when requested. +var VLQ_BASE_SHIFT = 5; -exports._dbcs = DBCSCodec; +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; -var UNASSIGNED = -1, - GB18030_CODE = -2, - SEQ_START = -10, - NODE_START = -1000, - UNASSIGNED_NODE = new Array(0x100), - DEF_CHAR = -1; +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; -for (var i = 0; i < 0x100; i++) - UNASSIGNED_NODE[i] = UNASSIGNED; +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} -// Class DBCSCodec reads and initializes mapping tables. -function DBCSCodec(codecOptions, iconv) { - this.encodingName = codecOptions.encodingName; - if (!codecOptions) - throw new Error("DBCS codec is called without the data.") - if (!codecOptions.table) - throw new Error("Encoding '" + this.encodingName + "' has no data."); +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} - // Load tables. - var mappingTable = codecOptions.table(); +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + var vlq = toVLQSigned(aValue); - // Decode tables: MBCS -> Unicode. + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); - // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. - // Trie root is decodeTables[0]. - // Values: >= 0 -> unicode character code. can be > 0xFFFF - // == UNASSIGNED -> unknown/unassigned sequence. - // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. - // <= NODE_START -> index of the next node in our trie to process next byte. - // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. - this.decodeTables = []; - this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. + return encoded; +}; - // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. - this.decodeTableSeq = []; +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; - // Actual mapping tables consist of chunks. Use them to fill up decode tables. - for (var i = 0; i < mappingTable.length; i++) - this._addDecodeChunk(mappingTable[i]); + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } - this.defaultCharUnicode = iconv.defaultCharUnicode; + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } - - // Encode tables: Unicode -> DBCS. + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); - // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. - // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. - // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). - // == UNASSIGNED -> no conversion found. Output a default char. - // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. - this.encodeTable = []; - - // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of - // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key - // means end of sequence (needed when one sequence is a strict subsequence of another). - // Objects are kept separately from encodeTable to increase performance. - this.encodeTableSeq = []; + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; - // Some chars can be decoded, but need not be encoded. - var skipEncodeChars = {}; - if (codecOptions.encodeSkipVals) - for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { - var val = codecOptions.encodeSkipVals[i]; - if (typeof val === 'number') - skipEncodeChars[val] = true; - else - for (var j = val.from; j <= val.to; j++) - skipEncodeChars[j] = true; - } - - // Use decode trie to recursively fill out encode tables. - this._fillEncodeTable(0, 0, skipEncodeChars); +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/base64-vlq.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"./base64":59,"FWaASH":50,"buffer":52}],59:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ - // Add more encoding pairs when needed. - if (codecOptions.encodeAdd) { - for (var uChar in codecOptions.encodeAdd) - if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) - this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); - } +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; - if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; - if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' - // Load & create GB18030 tables when needed. - if (typeof codecOptions.gb18030 === 'function') { - this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. + var littleA = 97; // 'a' + var littleZ = 122; // 'z' - // Add GB18030 decode tables. - var thirdByteNodeIdx = this.decodeTables.length; - var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); + var zero = 48; // '0' + var nine = 57; // '9' - var fourthByteNodeIdx = this.decodeTables.length; - var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); + var plus = 43; // '+' + var slash = 47; // '/' - for (var i = 0x81; i <= 0xFE; i++) { - var secondByteNodeIdx = NODE_START - this.decodeTables[0][i]; - var secondByteNode = this.decodeTables[secondByteNodeIdx]; - for (var j = 0x30; j <= 0x39; j++) - secondByteNode[j] = NODE_START - thirdByteNodeIdx; - } - for (var i = 0x81; i <= 0xFE; i++) - thirdByteNode[i] = NODE_START - fourthByteNodeIdx; - for (var i = 0x30; i <= 0x39; i++) - fourthByteNode[i] = GB18030_CODE - } -} + var littleOffset = 26; + var numberOffset = 52; -DBCSCodec.prototype.encoder = DBCSEncoder; -DBCSCodec.prototype.decoder = DBCSDecoder; + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } -// Decoder helpers -DBCSCodec.prototype._getDecodeTrieNode = function(addr) { - var bytes = []; - for (; addr > 0; addr >>= 8) - bytes.push(addr & 0xFF); - if (bytes.length == 0) - bytes.push(0); + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } - var node = this.decodeTables[0]; - for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. - var val = node[bytes[i]]; + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } - if (val == UNASSIGNED) { // Create new node. - node[bytes[i]] = NODE_START - this.decodeTables.length; - this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); - } - else if (val <= NODE_START) { // Existing node. - node = this.decodeTables[NODE_START - val]; - } - else - throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); - } - return node; -} + // 62: + + if (charCode == plus) { + return 62; + } + // 63: / + if (charCode == slash) { + return 63; + } -DBCSCodec.prototype._addDecodeChunk = function(chunk) { - // First element of chunk is the hex mbcs code where we start. - var curAddr = parseInt(chunk[0], 16); + // Invalid base64 digit. + return -1; +}; - // Choose the decoding node where we'll write our chars. - var writeTable = this._getDecodeTrieNode(curAddr); - curAddr = curAddr & 0xFF; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/base64.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"FWaASH":50,"buffer":52}],60:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ - // Write all other elements of the chunk to the table. - for (var k = 1; k < chunk.length; k++) { - var part = chunk[k]; - if (typeof part === "string") { // String, write as-is. - for (var l = 0; l < part.length;) { - var code = part.charCodeAt(l++); - if (0xD800 <= code && code < 0xDC00) { // Decode surrogate - var codeTrail = part.charCodeAt(l++); - if (0xDC00 <= codeTrail && codeTrail < 0xE000) - writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); - else - throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); - } - else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) - var len = 0xFFF - code + 2; - var seq = []; - for (var m = 0; m < len; m++) - seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; - writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; - this.decodeTableSeq.push(seq); - } - else - writeTable[curAddr++] = code; // Basic char - } - } - else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. - var charCode = writeTable[curAddr - 1] + 1; - for (var l = 0; l < part; l++) - writeTable[curAddr++] = charCode++; - } - else - throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); } - if (curAddr > 0xFF) - throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); -} - -// Encoder helpers -DBCSCodec.prototype._getEncodeBucket = function(uCode) { - var high = uCode >> 8; // This could be > 0xFF because of astral characters. - if (this.encodeTable[high] === undefined) - this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. - return this.encodeTable[high]; -} - -DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - if (bucket[low] <= SEQ_START) - this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. - else if (bucket[low] == UNASSIGNED) - bucket[low] = dbcsCode; -} - -DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { - - // Get the root of character tree according to first character of the sequence. - var uCode = seq[0]; - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - var node; - if (bucket[low] <= SEQ_START) { - // There's already a sequence with - use it. - node = this.encodeTableSeq[SEQ_START-bucket[low]]; + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; } - else { - // There was no sequence object - allocate a new one. - node = {}; - if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. - bucket[low] = SEQ_START - this.encodeTableSeq.length; - this.encodeTableSeq.push(node); + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); } - // Traverse the character tree, allocating new nodes as needed. - for (var j = 1; j < seq.length-1; j++) { - var oldVal = node[uCode]; - if (typeof oldVal === 'object') - node = oldVal; - else { - node = node[uCode] = {} - if (oldVal !== undefined) - node[DEF_CHAR] = oldVal - } + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; } - - // Set the leaf to given dbcsCode. - uCode = seq[seq.length-1]; - node[uCode] = dbcsCode; + } } -DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { - var node = this.decodeTables[nodeIdx]; - for (var i = 0; i < 0x100; i++) { - var uCode = node[i]; - var mbCode = prefix + i; - if (skipEncodeChars[mbCode]) - continue; - - if (uCode >= 0) - this._setEncodeChar(uCode, mbCode); - else if (uCode <= NODE_START) - this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); - else if (uCode <= SEQ_START) - this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; } -} + --index; + } + return index; +}; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/binary-search.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"FWaASH":50,"buffer":52}],61:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ -// == Encoder ================================================================== +var util = require('./util'); -function DBCSEncoder(options, codec) { - // Encoder state - this.leadSurrogate = -1; - this.seqObj = undefined; - - // Static data - this.encodeTable = codec.encodeTable; - this.encodeTableSeq = codec.encodeTableSeq; - this.defaultCharSingleByte = codec.defCharSB; - this.gb18030 = codec.gb18030; +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; } -DBCSEncoder.prototype.write = function(str) { - var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), - leadSurrogate = this.leadSurrogate, - seqObj = this.seqObj, nextChar = -1, - i = 0, j = 0; +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} - while (true) { - // 0. Get next character. - if (nextChar === -1) { - if (i == str.length) break; - var uCode = str.charCodeAt(i++); - } - else { - var uCode = nextChar; - nextChar = -1; - } +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; - // 1. Handle surrogates. - if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. - if (uCode < 0xDC00) { // We've got lead surrogate. - if (leadSurrogate === -1) { - leadSurrogate = uCode; - continue; - } else { - leadSurrogate = uCode; - // Double lead surrogate found. - uCode = UNASSIGNED; - } - } else { // We've got trail surrogate. - if (leadSurrogate !== -1) { - uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); - leadSurrogate = -1; - } else { - // Incomplete surrogate pair - only trail surrogate found. - uCode = UNASSIGNED; - } - - } - } - else if (leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. - leadSurrogate = -1; - } +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; - // 2. Convert uCode character. - var dbcsCode = UNASSIGNED; - if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence - var resCode = seqObj[uCode]; - if (typeof resCode === 'object') { // Sequence continues. - seqObj = resCode; - continue; +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; - } else if (typeof resCode == 'number') { // Sequence finished. Write it. - dbcsCode = resCode; +exports.MappingList = MappingList; - } else if (resCode == undefined) { // Current character is not part of the sequence. +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/mapping-list.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"./util":66,"FWaASH":50,"buffer":52}],62:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ - // Try default character for this sequence - resCode = seqObj[DEF_CHAR]; - if (resCode !== undefined) { - dbcsCode = resCode; // Found. Write it. - nextChar = uCode; // Current character will be written too in the next iteration. +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. - } else { - // TODO: What if we have no default? (resCode == undefined) - // Then, we should write first char of the sequence as-is and try the rest recursively. - // Didn't do it for now because no encoding has this situation yet. - // Currently, just skip the sequence and write current char. - } - } - seqObj = undefined; - } - else if (uCode >= 0) { // Regular character - var subtable = this.encodeTable[uCode >> 8]; - if (subtable !== undefined) - dbcsCode = subtable[uCode & 0xFF]; - - if (dbcsCode <= SEQ_START) { // Sequence start - seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; - continue; - } +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} - if (dbcsCode == UNASSIGNED && this.gb18030) { - // Use GB18030 algorithm to find character(s) to write. - var idx = findIdx(this.gb18030.uChars, uCode); - if (idx != -1) { - var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; - newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; - newBuf[j++] = 0x30 + dbcsCode; - continue; - } - } - } +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} - // 3. Write dbcsCode character. - if (dbcsCode === UNASSIGNED) - dbcsCode = this.defaultCharSingleByte; - - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else if (dbcsCode < 0x10000) { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - else { - newBuf[j++] = dbcsCode >> 16; - newBuf[j++] = (dbcsCode >> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } - } +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. - this.seqObj = seqObj; - this.leadSurrogate = leadSurrogate; - return newBuf.slice(0, j); -} + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. -DBCSEncoder.prototype.end = function() { - if (this.leadSurrogate === -1 && this.seqObj === undefined) - return; // All clean. Most often case. + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; - var newBuf = Buffer.alloc(10), j = 0; + swap(ary, pivotIndex, r); + var pivot = ary[r]; - if (this.seqObj) { // We're in the sequence. - var dbcsCode = this.seqObj[DEF_CHAR]; - if (dbcsCode !== undefined) { // Write beginning of the sequence. - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - } else { - // See todo above. - } - this.seqObj = undefined; + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } } - if (this.leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - newBuf[j++] = this.defaultCharSingleByte; - this.leadSurrogate = -1; - } - - return newBuf.slice(0, j); + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } } -// Export for testing -DBCSEncoder.prototype.findIdx = findIdx; +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ +exports.quickSort = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); +}; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/quick-sort.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"FWaASH":50,"buffer":52}],63:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ -// == Decoder ================================================================== +var util = require('./util'); +var binarySearch = require('./binary-search'); +var ArraySet = require('./array-set').ArraySet; +var base64VLQ = require('./base64-vlq'); +var quickSort = require('./quick-sort').quickSort; -function DBCSDecoder(options, codec) { - // Decoder state - this.nodeIdx = 0; - this.prevBuf = Buffer.alloc(0); +function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } - // Static data - this.decodeTables = codec.decodeTables; - this.decodeTableSeq = codec.decodeTableSeq; - this.defaultCharUnicode = codec.defaultCharUnicode; - this.gb18030 = codec.gb18030; + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); } -DBCSDecoder.prototype.write = function(buf) { - var newBuf = Buffer.alloc(buf.length*2), - nodeIdx = this.nodeIdx, - prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, - seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence. - uCode; - - if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later. - prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]); - - for (var i = 0, j = 0; i < buf.length; i++) { - var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset]; +SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +} - // Lookup in current trie node. - var uCode = this.decodeTables[nodeIdx][curByte]; +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; - if (uCode >= 0) { - // Normal character, just use it. - } - else if (uCode === UNASSIGNED) { // Unknown char. - // TODO: Callback with seq. - //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); - i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle). - uCode = this.defaultCharUnicode.charCodeAt(0); - } - else if (uCode === GB18030_CODE) { - var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); - var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30); - var idx = findIdx(this.gb18030.gbChars, ptr); - uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; - } - else if (uCode <= NODE_START) { // Go to next trie node. - nodeIdx = NODE_START - uCode; - continue; - } - else if (uCode <= SEQ_START) { // Output a sequence of chars. - var seq = this.decodeTableSeq[SEQ_START - uCode]; - for (var k = 0; k < seq.length - 1; k++) { - uCode = seq[k]; - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - } - uCode = seq[seq.length-1]; - } - else - throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. - // Write the character to buffer, handling higher planes using surrogate pair. - if (uCode > 0xFFFF) { - uCode -= 0x10000; - var uCodeLead = 0xD800 + Math.floor(uCode / 0x400); - newBuf[j++] = uCodeLead & 0xFF; - newBuf[j++] = uCodeLead >> 8; +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } - uCode = 0xDC00 + uCode % 0x400; - } - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; + return this.__generatedMappings; + } +}); - // Reset trie node. - nodeIdx = 0; seqStart = i+1; +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); } - this.nodeIdx = nodeIdx; - this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); - return newBuf.slice(0, j).toString('ucs2'); -} - -DBCSDecoder.prototype.end = function() { - var ret = ''; + return this.__originalMappings; + } +}); - // Try to parse all remaining chars. - while (this.prevBuf.length > 0) { - // Skip 1 character in the buffer. - ret += this.defaultCharUnicode; - var buf = this.prevBuf.slice(1); +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; - // Parse remaining as usual. - this.prevBuf = Buffer.alloc(0); - this.nodeIdx = 0; - if (buf.length > 0) - ret += this.write(buf); - } +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; - this.nodeIdx = 0; - return ret; -} +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; -// Binary search for GB18030. Returns largest i such that table[i] <= val. -function findIdx(table, val) { - if (table[0] > val) - return -1; +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; - var l = 0, r = table.length; - while (l < r-1) { // always table[l] <= val < table[r] - var mid = l + Math.floor((r-l+1)/2); - if (table[mid] <= val) - l = mid; - else - r = mid; +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); } - return l; -} + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/dbcs-codec.js","/node_modules/iconv-lite/encodings") -},{"buffer":57,"lYpoI2":59,"safer-buffer":110}],70:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); -// Description of supported double byte encodings and aliases. -// Tables are not require()-d until they are needed to speed up library load. -// require()-s are direct to support Browserify. + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; -module.exports = { - - // == Japanese/ShiftJIS ==================================================== - // All japanese encodings are based on JIS X set of standards: - // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. - // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. - // Has several variations in 1978, 1983, 1990 and 1997. - // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. - // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. - // 2 planes, first is superset of 0208, second - revised 0212. - // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } - // Byte encodings are: - // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte - // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. - // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. - // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. - // 0x00-0x7F - lower part of 0201 - // 0x8E, 0xA1-0xDF - upper part of 0201 - // (0xA1-0xFE)x2 - 0208 plane (94x94). - // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). - // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. - // Used as-is in ISO2022 family. - // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, - // 0201-1976 Roman, 0208-1978, 0208-1983. - // * ISO2022-JP-1: Adds esc seq for 0212-1990. - // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. - // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. - // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. - // - // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. - // - // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + var mappings = []; - 'shiftjis': { - type: '_dbcs', - table: function() { return require('./tables/shiftjis.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - encodeSkipVals: [{from: 0xED40, to: 0xF940}], - }, - 'csshiftjis': 'shiftjis', - 'mskanji': 'shiftjis', - 'sjis': 'shiftjis', - 'windows31j': 'shiftjis', - 'ms31j': 'shiftjis', - 'xsjis': 'shiftjis', - 'windows932': 'shiftjis', - 'ms932': 'shiftjis', - '932': 'shiftjis', - 'cp932': 'shiftjis', + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; - 'eucjp': { - type: '_dbcs', - table: function() { return require('./tables/eucjp.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - }, + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; - // TODO: KDDI extension to Shift_JIS - // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. - // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; - // == Chinese/GBK ========================================================== - // http://en.wikipedia.org/wiki/GBK - // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); - // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 - 'gb2312': 'cp936', - 'gb231280': 'cp936', - 'gb23121980': 'cp936', - 'csgb2312': 'cp936', - 'csiso58gb231280': 'cp936', - 'euccn': 'cp936', + mapping = this._originalMappings[++index]; + } + } + } - // Microsoft's CP936 is a subset and approximation of GBK. - 'windows936': 'cp936', - 'ms936': 'cp936', - '936': 'cp936', - 'cp936': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json') }, - }, + return mappings; + }; - // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. - 'gbk': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - }, - 'xgbk': 'gbk', - 'isoir58': 'gbk', +exports.SourceMapConsumer = SourceMapConsumer; - // GB18030 is an algorithmic extension of GBK. - // Main source: https://www.w3.org/TR/encoding/#gbk-encoder - // http://icu-project.org/docs/papers/gb18030.html - // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - 'gb18030': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - gb18030: function() { return require('./tables/gb18030-ranges.json') }, - encodeSkipVals: [0x80], - encodeAdd: {'€': 0xA2E3}, - }, +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } - 'chinese': 'gb18030', + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } - // == Korean =============================================================== - // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. - 'windows949': 'cp949', - 'ms949': 'cp949', - '949': 'cp949', - 'cp949': { - type: '_dbcs', - table: function() { return require('./tables/cp949.json') }, - }, + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } - 'cseuckr': 'cp949', - 'csksc56011987': 'cp949', - 'euckr': 'cp949', - 'isoir149': 'cp949', - 'korean': 'cp949', - 'ksc56011987': 'cp949', - 'ksc56011989': 'cp949', - 'ksc5601': 'cp949', + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); - // == Big5/Taiwan/Hong Kong ================================================ - // There are lots of tables for Big5 and cp950. Please see the following links for history: - // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - // Variations, in roughly number of defined chars: - // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - // * Big5-2003 (Taiwan standard) almost superset of cp950. - // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. - // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. - // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. - // Plus, it has 4 combining sequences. - // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. - // Implementations are not consistent within browsers; sometimes labeled as just big5. - // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. - // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. - // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - // - // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); - 'windows950': 'cp950', - 'ms950': 'cp950', - '950': 'cp950', - 'cp950': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json') }, - }, + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; +} - // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. - 'big5': 'big5hkscs', - 'big5hkscs': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, - encodeSkipVals: [0xa2cc], - }, +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - 'cnbig5': 'big5hkscs', - 'csbig5': 'big5hkscs', - 'xxbig5': 'big5hkscs', -}; +/** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ +BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/dbcs-data.js","/node_modules/iconv-lite/encodings") -},{"./tables/big5-added.json":76,"./tables/cp936.json":77,"./tables/cp949.json":78,"./tables/cp950.json":79,"./tables/eucjp.json":80,"./tables/gb18030-ranges.json":81,"./tables/gbk-added.json":82,"./tables/shiftjis.json":83,"buffer":57,"lYpoI2":59}],71:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } -// Update this array if you add/rename/remove files in this directory. -// We support Browserify by skipping automatic module discovery and requiring modules directly. -var modules = [ - require("./internal"), - require("./utf16"), - require("./utf7"), - require("./sbcs-codec"), - require("./sbcs-data"), - require("./sbcs-data-generated"), - require("./dbcs-codec"), - require("./dbcs-data"), -]; + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } -// Put all encoding/alias/codec definitions to single object and export it. -for (var i = 0; i < modules.length; i++) { - var module = modules[i]; - for (var enc in module) - if (Object.prototype.hasOwnProperty.call(module, enc)) - exports[enc] = module[enc]; -} + return -1; +}; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/index.js","/node_modules/iconv-lite/encodings") -},{"./dbcs-codec":69,"./dbcs-data":70,"./internal":72,"./sbcs-codec":73,"./sbcs-data":75,"./sbcs-data-generated":74,"./utf16":84,"./utf7":85,"buffer":57,"lYpoI2":59}],72:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); -// Export Node.js internal encodings. + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); -module.exports = { - // Encodings - utf8: { type: "_internal", bomAware: true}, - cesu8: { type: "_internal", bomAware: true}, - unicode11utf8: "utf8", + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. - ucs2: { type: "_internal", bomAware: true}, - utf16le: "ucs2", + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; - binary: { type: "_internal" }, - base64: { type: "_internal" }, - hex: { type: "_internal" }, + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; - // Codec. - _internal: InternalCodec, -}; - -//------------------------------------------------------------------------------ - -function InternalCodec(codecOptions, iconv) { - this.enc = codecOptions.encodingName; - this.bomAware = codecOptions.bomAware; - - if (this.enc === "base64") - this.encoder = InternalEncoderBase64; - else if (this.enc === "cesu8") { - this.enc = "utf8"; // Use utf8 for decoding. - this.encoder = InternalEncoderCesu8; + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; - // Add decoder for versions of Node not supporting CESU-8 - if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') { - this.decoder = InternalDecoderCesu8; - this.defaultCharUnicode = iconv.defaultCharUnicode; + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); } - } -} - -InternalCodec.prototype.encoder = InternalEncoder; -InternalCodec.prototype.decoder = InternalDecoder; - -//------------------------------------------------------------------------------ -// We use node.js internal decoder. Its signature is the same as ours. -var StringDecoder = require('string_decoder').StringDecoder; - -if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. - StringDecoder.prototype.end = function() {}; + destOriginalMappings.push(destMapping); + } + destGeneratedMappings.push(destMapping); + } -function InternalDecoder(options, codec) { - StringDecoder.call(this, codec.enc); -} + quickSort(smc.__originalMappings, util.compareByOriginalPositions); -InternalDecoder.prototype = StringDecoder.prototype; + return smc; + }; +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; -//------------------------------------------------------------------------------ -// Encoder is mostly trivial +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } +}); -function InternalEncoder(options, codec) { - this.enc = codec.enc; +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; } -InternalEncoder.prototype.write = function(str) { - return Buffer.from(str, this.enc); -} +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; -InternalEncoder.prototype.end = function() { -} + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); -//------------------------------------------------------------------------------ -// Except base64 encoder, which must keep its state. + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } -function InternalEncoderBase64(options, codec) { - this.prevStr = ''; -} + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } -InternalEncoderBase64.prototype.write = function(str) { - str = this.prevStr + str; - var completeQuads = str.length - (str.length % 4); - this.prevStr = str.slice(completeQuads); - str = str.slice(0, completeQuads); + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } - return Buffer.from(str, "base64"); -} + cachedSegments[str] = segment; + } -InternalEncoderBase64.prototype.end = function() { - return Buffer.from(this.prevStr, "base64"); -} + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; -//------------------------------------------------------------------------------ -// CESU-8 encoder is also special. + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; -function InternalEncoderCesu8(options, codec) { -} + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; -InternalEncoderCesu8.prototype.write = function(str) { - var buf = Buffer.alloc(str.length * 3), bufIdx = 0; - for (var i = 0; i < str.length; i++) { - var charCode = str.charCodeAt(i); - // Naive implementation, but it works because CESU-8 is especially easy - // to convert from UTF-16 (which all JS strings are encoded in). - if (charCode < 0x80) - buf[bufIdx++] = charCode; - else if (charCode < 0x800) { - buf[bufIdx++] = 0xC0 + (charCode >>> 6); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } } - else { // charCode will always be < 0x10000 in javascript. - buf[bufIdx++] = 0xE0 + (charCode >>> 12); - buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); } + } } - return buf.slice(0, bufIdx); -} - -InternalEncoderCesu8.prototype.end = function() { -} -//------------------------------------------------------------------------------ -// CESU-8 decoder is not implemented in Node v4.0+ + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; -function InternalDecoderCesu8(options, codec) { - this.acc = 0; - this.contBytes = 0; - this.accBytes = 0; - this.defaultCharUnicode = codec.defaultCharUnicode; -} + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; -InternalDecoderCesu8.prototype.write = function(buf) { - var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, - res = ''; - for (var i = 0; i < buf.length; i++) { - var curByte = buf[i]; - if ((curByte & 0xC0) !== 0x80) { // Leading byte - if (contBytes > 0) { // Previous code is invalid - res += this.defaultCharUnicode; - contBytes = 0; - } +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. - if (curByte < 0x80) { // Single-byte code - res += String.fromCharCode(curByte); - } else if (curByte < 0xE0) { // Two-byte code - acc = curByte & 0x1F; - contBytes = 1; accBytes = 1; - } else if (curByte < 0xF0) { // Three-byte code - acc = curByte & 0x0F; - contBytes = 2; accBytes = 1; - } else { // Four or more are not supported for CESU-8. - res += this.defaultCharUnicode; - } - } else { // Continuation byte - if (contBytes > 0) { // We're waiting for it. - acc = (acc << 6) | (curByte & 0x3f); - contBytes--; accBytes++; - if (contBytes === 0) { - // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) - if (accBytes === 2 && acc < 0x80 && acc > 0) - res += this.defaultCharUnicode; - else if (accBytes === 3 && acc < 0x800) - res += this.defaultCharUnicode; - else - // Actually add character. - res += String.fromCharCode(acc); - } - } else { // Unexpected continuation byte - res += this.defaultCharUnicode; - } - } + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); } - this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; - return res; -} -InternalDecoderCesu8.prototype.end = function() { - var res = 0; - if (this.contBytes > 0) - res += this.defaultCharUnicode; - return res; -} + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/internal.js","/node_modules/iconv-lite/encodings") -},{"buffer":57,"lYpoI2":59,"safer-buffer":110,"string_decoder":67}],73:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; -// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that -// correspond to encoded bytes (if 128 - then lower half is ASCII). + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; -exports._sbcs = SBCSCodec; -function SBCSCodec(codecOptions, iconv) { - if (!codecOptions) - throw new Error("SBCS codec is called without the data.") - - // Prepare char buffer for decoding. - if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) - throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); - - if (codecOptions.chars.length === 128) { - var asciiString = ""; - for (var i = 0; i < 128; i++) - asciiString += String.fromCharCode(i); - codecOptions.chars = asciiString + codecOptions.chars; + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; } + }; - this.decodeBuf = new Buffer.from(codecOptions.chars, 'ucs2'); - - // Encoding buffer. - var encodeBuf = new Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; - for (var i = 0; i < codecOptions.chars.length; i++) - encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); - this.encodeBuf = encodeBuf; -} + if (index >= 0) { + var mapping = this._generatedMappings[index]; -SBCSCodec.prototype.encoder = SBCSEncoder; -SBCSCodec.prototype.decoder = SBCSDecoder; + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + return { + source: null, + line: null, + column: null, + name: null + }; + }; -function SBCSEncoder(options, codec) { - this.encodeBuf = codec.encodeBuf; -} +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; -SBCSEncoder.prototype.write = function(str) { - var buf = Buffer.alloc(str.length); - for (var i = 0; i < str.length; i++) - buf[i] = this.encodeBuf[str.charCodeAt(i)]; - - return buf; -} +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } -SBCSEncoder.prototype.end = function() { -} + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } -function SBCSDecoder(options, codec) { - this.decodeBuf = codec.decodeBuf; -} + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } -SBCSDecoder.prototype.write = function(buf) { - // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. - var decodeBuf = this.decodeBuf; - var newBuf = Buffer.alloc(buf.length*2); - var idx1 = 0, idx2 = 0; - for (var i = 0; i < buf.length; i++) { - idx1 = buf[i]*2; idx2 = i*2; - newBuf[idx2] = decodeBuf[idx1]; - newBuf[idx2+1] = decodeBuf[idx1+1]; + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } } - return newBuf.toString('ucs2'); -} - -SBCSDecoder.prototype.end = function() { -} -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-codec.js","/node_modules/iconv-lite/encodings") -},{"buffer":57,"lYpoI2":59,"safer-buffer":110}],74:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; -// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. -module.exports = { - "437": "cp437", - "737": "cp737", - "775": "cp775", - "850": "cp850", - "852": "cp852", - "855": "cp855", - "856": "cp856", - "857": "cp857", - "858": "cp858", - "860": "cp860", - "861": "cp861", - "862": "cp862", - "863": "cp863", - "864": "cp864", - "865": "cp865", - "866": "cp866", - "869": "cp869", - "874": "windows874", - "922": "cp922", - "1046": "cp1046", - "1124": "cp1124", - "1125": "cp1125", - "1129": "cp1129", - "1133": "cp1133", - "1161": "cp1161", - "1162": "cp1162", - "1163": "cp1163", - "1250": "windows1250", - "1251": "windows1251", - "1252": "windows1252", - "1253": "windows1253", - "1254": "windows1254", - "1255": "windows1255", - "1256": "windows1256", - "1257": "windows1257", - "1258": "windows1258", - "28591": "iso88591", - "28592": "iso88592", - "28593": "iso88593", - "28594": "iso88594", - "28595": "iso88595", - "28596": "iso88596", - "28597": "iso88597", - "28598": "iso88598", - "28599": "iso88599", - "28600": "iso885910", - "28601": "iso885911", - "28603": "iso885913", - "28604": "iso885914", - "28605": "iso885915", - "28606": "iso885916", - "windows874": { - "type": "_sbcs", - "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "win874": "windows874", - "cp874": "windows874", - "windows1250": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "win1250": "windows1250", - "cp1250": "windows1250", - "windows1251": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "win1251": "windows1251", - "cp1251": "windows1251", - "windows1252": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "win1252": "windows1252", - "cp1252": "windows1252", - "windows1253": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "win1253": "windows1253", - "cp1253": "windows1253", - "windows1254": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "win1254": "windows1254", - "cp1254": "windows1254", - "windows1255": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "win1255": "windows1255", - "cp1255": "windows1255", - "windows1256": { - "type": "_sbcs", - "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" - }, - "win1256": "windows1256", - "cp1256": "windows1256", - "windows1257": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" - }, - "win1257": "windows1257", - "cp1257": "windows1257", - "windows1258": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "win1258": "windows1258", - "cp1258": "windows1258", - "iso88591": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28591": "iso88591", - "iso88592": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "cp28592": "iso88592", - "iso88593": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" - }, - "cp28593": "iso88593", - "iso88594": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" - }, - "cp28594": "iso88594", - "iso88595": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" - }, - "cp28595": "iso88595", - "iso88596": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" - }, - "cp28596": "iso88596", - "iso88597": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "cp28597": "iso88597", - "iso88598": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "cp28598": "iso88598", - "iso88599": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "cp28599": "iso88599", - "iso885910": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" - }, - "cp28600": "iso885910", - "iso885911": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "cp28601": "iso885911", - "iso885913": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" - }, - "cp28603": "iso885913", - "iso885914": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" - }, - "cp28604": "iso885914", - "iso885915": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28605": "iso885915", - "iso885916": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" - }, - "cp28606": "iso885916", - "cp437": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm437": "cp437", - "csibm437": "cp437", - "cp737": { - "type": "_sbcs", - "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " - }, - "ibm737": "cp737", - "csibm737": "cp737", - "cp775": { - "type": "_sbcs", - "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " - }, - "ibm775": "cp775", - "csibm775": "cp775", - "cp850": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm850": "cp850", - "csibm850": "cp850", - "cp852": { - "type": "_sbcs", - "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " - }, - "ibm852": "cp852", - "csibm852": "cp852", - "cp855": { - "type": "_sbcs", - "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " - }, - "ibm855": "cp855", - "csibm855": "cp855", - "cp856": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm856": "cp856", - "csibm856": "cp856", - "cp857": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " - }, - "ibm857": "cp857", - "csibm857": "cp857", - "cp858": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm858": "cp858", - "csibm858": "cp858", - "cp860": { - "type": "_sbcs", - "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm860": "cp860", - "csibm860": "cp860", - "cp861": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm861": "cp861", - "csibm861": "cp861", - "cp862": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm862": "cp862", - "csibm862": "cp862", - "cp863": { - "type": "_sbcs", - "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm863": "cp863", - "csibm863": "cp863", - "cp864": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" - }, - "ibm864": "cp864", - "csibm864": "cp864", - "cp865": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm865": "cp865", - "csibm865": "cp865", - "cp866": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " - }, - "ibm866": "cp866", - "csibm866": "cp866", - "cp869": { - "type": "_sbcs", - "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " - }, - "ibm869": "cp869", - "csibm869": "cp869", - "cp922": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" - }, - "ibm922": "cp922", - "csibm922": "cp922", - "cp1046": { - "type": "_sbcs", - "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" - }, - "ibm1046": "cp1046", - "csibm1046": "cp1046", - "cp1124": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" - }, - "ibm1124": "cp1124", - "csibm1124": "cp1124", - "cp1125": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " - }, - "ibm1125": "cp1125", - "csibm1125": "cp1125", - "cp1129": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1129": "cp1129", - "csibm1129": "cp1129", - "cp1133": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" - }, - "ibm1133": "cp1133", - "csibm1133": "cp1133", - "cp1161": { - "type": "_sbcs", - "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " - }, - "ibm1161": "cp1161", - "csibm1161": "cp1161", - "cp1162": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "ibm1162": "cp1162", - "csibm1162": "cp1162", - "cp1163": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1163": "cp1163", - "csibm1163": "cp1163", - "maccroatian": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" - }, - "maccyrillic": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "macgreek": { - "type": "_sbcs", - "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" - }, - "maciceland": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macroman": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macromania": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macthai": { - "type": "_sbcs", - "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" - }, - "macturkish": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macukraine": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "koi8r": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8u": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8ru": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8t": { - "type": "_sbcs", - "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "armscii8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" - }, - "rk1048": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "tcvn": { - "type": "_sbcs", - "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" - }, - "georgianacademy": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "georgianps": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "pt154": { - "type": "_sbcs", - "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "viscii": { - "type": "_sbcs", - "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" - }, - "iso646cn": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "iso646jp": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "hproman8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" - }, - "macintosh": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "ascii": { - "type": "_sbcs", - "chars": "��������������������������������������������������������������������������������������������������������������������������������" - }, - "tis620": { - "type": "_sbcs", - "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - } -} -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-data-generated.js","/node_modules/iconv-lite/encodings") -},{"buffer":57,"lYpoI2":59}],75:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } -// Manually added data to be used by sbcs codec in addition to generated one. + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; -module.exports = { - // Not supported by iconv, not sure why. - "10029": "maccenteuro", - "maccenteuro": { - "type": "_sbcs", - "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" - }, + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); - "808": "cp808", - "ibm808": "cp808", - "cp808": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " - }, + if (index >= 0) { + var mapping = this._originalMappings[index]; - // Aliases of generated encodings. - "ascii8bit": "ascii", - "usascii": "ascii", - "ansix34": "ascii", - "ansix341968": "ascii", - "ansix341986": "ascii", - "csascii": "ascii", - "cp367": "ascii", - "ibm367": "ascii", - "isoir6": "ascii", - "iso646us": "ascii", - "iso646irv": "ascii", - "us": "ascii", + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } - "latin1": "iso88591", - "latin2": "iso88592", - "latin3": "iso88593", - "latin4": "iso88594", - "latin5": "iso88599", - "latin6": "iso885910", - "latin7": "iso885913", - "latin8": "iso885914", - "latin9": "iso885915", - "latin10": "iso885916", + return { + line: null, + column: null, + lastColumn: null + }; + }; - "csisolatin1": "iso88591", - "csisolatin2": "iso88592", - "csisolatin3": "iso88593", - "csisolatin4": "iso88594", - "csisolatincyrillic": "iso88595", - "csisolatinarabic": "iso88596", - "csisolatingreek" : "iso88597", - "csisolatinhebrew": "iso88598", - "csisolatin5": "iso88599", - "csisolatin6": "iso885910", +exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - "l1": "iso88591", - "l2": "iso88592", - "l3": "iso88593", - "l4": "iso88594", - "l5": "iso88599", - "l6": "iso885910", - "l7": "iso885913", - "l8": "iso885914", - "l9": "iso885915", - "l10": "iso885916", +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } - "isoir14": "iso646jp", - "isoir57": "iso646cn", - "isoir100": "iso88591", - "isoir101": "iso88592", - "isoir109": "iso88593", - "isoir110": "iso88594", - "isoir144": "iso88595", - "isoir127": "iso88596", - "isoir126": "iso88597", - "isoir138": "iso88598", - "isoir148": "iso88599", - "isoir157": "iso885910", - "isoir166": "tis620", - "isoir179": "iso885913", - "isoir199": "iso885914", - "isoir203": "iso885915", - "isoir226": "iso885916", + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); - "cp819": "iso88591", - "ibm819": "iso88591", + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } - "cyrillic": "iso88595", + this._sources = new ArraySet(); + this._names = new ArraySet(); - "arabic": "iso88596", - "arabic8": "iso88596", - "ecma114": "iso88596", - "asmo708": "iso88596", + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); - "greek" : "iso88597", - "greek8" : "iso88597", - "ecma118" : "iso88597", - "elot928" : "iso88597", + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; - "hebrew": "iso88598", - "hebrew8": "iso88598", + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); +} - "turkish": "iso88599", - "turkish8": "iso88599", +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - "thai": "iso885911", - "thai8": "iso885911", +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; - "celtic": "iso885914", - "celtic8": "iso885914", - "isoceltic": "iso885914", +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } +}); - "tis6200": "tis620", - "tis62025291": "tis620", - "tis62025330": "tis620", +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; - "10000": "macroman", - "10006": "macgreek", - "10007": "maccyrillic", - "10079": "maciceland", - "10081": "macturkish", + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } - "cspc8codepage437": "cp437", - "cspc775baltic": "cp775", - "cspc850multilingual": "cp850", - "cspcp852": "cp852", - "cspc862latinhebrew": "cp862", - "cpgr": "cp869", + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; - "msee": "cp1250", - "mscyrl": "cp1251", - "msansi": "cp1252", - "msgreek": "cp1253", - "msturk": "cp1254", - "mshebr": "cp1255", - "msarab": "cp1256", - "winbaltrim": "cp1257", + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } - "cp20866": "koi8r", - "20866": "koi8r", - "ibm878": "koi8r", - "cskoi8r": "koi8r", + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; - "cp21866": "koi8u", - "21866": "koi8u", - "ibm1168": "koi8u", +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; - "strk10482002": "rk1048", +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; - "tcvn5712": "tcvn", - "tcvn57121": "tcvn", + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; - "gb198880": "iso646cn", - "cn": "iso646cn", +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; - "csiso14jisc6220ro": "iso646jp", - "jisc62201969ro": "iso646jp", - "jp": "iso646jp", + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } - "cshproman8": "hproman8", - "r8": "hproman8", - "roman8": "hproman8", - "xroman8": "hproman8", - "ibm1051": "hproman8", + return { + line: null, + column: null + }; + }; - "mac": "macintosh", - "csmacintosh": "macintosh", -}; +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-data.js","/node_modules/iconv-lite/encodings") -},{"buffer":57,"lYpoI2":59}],76:[function(require,module,exports){ -module.exports=[ -["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], -["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], -["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], -["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], -["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], -["8940","𪎩𡅅"], -["8943","攊"], -["8946","丽滝鵎釟"], -["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], -["89a1","琑糼緍楆竉刧"], -["89ab","醌碸酞肼"], -["89b0","贋胶𠧧"], -["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], -["89c1","溚舾甙"], -["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], -["8a40","𧶄唥"], -["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], -["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], -["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], -["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], -["8aac","䠋𠆩㿺塳𢶍"], -["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], -["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], -["8ac9","𪘁𠸉𢫏𢳉"], -["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], -["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], -["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], -["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], -["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], -["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], -["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], -["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], -["8ca1","𣏹椙橃𣱣泿"], -["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], -["8cc9","顨杫䉶圽"], -["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], -["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], -["8d40","𠮟"], -["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], -["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], -["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], -["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], -["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], -["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], -["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], -["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], -["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], -["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], -["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], -["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], -["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], -["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], -["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], -["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], -["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], -["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], -["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], -["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], -["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], -["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], -["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], -["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], -["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], -["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], -["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], -["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], -["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], -["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], -["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], -["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], -["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], -["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], -["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], -["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], -["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], -["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], -["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], -["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], -["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], -["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], -["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], -["9fae","酙隁酜"], -["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], -["9fc1","𤤙盖鮝个𠳔莾衂"], -["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], -["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], -["9fe7","毺蠘罸"], -["9feb","嘠𪙊蹷齓"], -["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], -["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], -["a055","𡠻𦸅"], -["a058","詾𢔛"], -["a05b","惽癧髗鵄鍮鮏蟵"], -["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], -["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], -["a0a1","嵗𨯂迚𨸹"], -["a0a6","僙𡵆礆匲阸𠼻䁥"], -["a0ae","矾"], -["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], -["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], -["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], -["a3c0","␀",31,"␡"], -["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], -["c740","す",58,"ァアィイ"], -["c7a1","ゥ",81,"А",5,"ЁЖ",4], -["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], -["c8a1","龰冈龱𧘇"], -["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], -["c8f5","ʃɐɛɔɵœøŋʊɪ"], -["f9fe","■"], -["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], -["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], -["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], -["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], -["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], -["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], -["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], -["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], -["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], -["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] -] + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } -},{}],77:[function(require,module,exports){ -module.exports=[ -["0","\u0000",127,"€"], -["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], -["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], -["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], -["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], -["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], -["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], -["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], -["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], -["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], -["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], -["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], -["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], -["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], -["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], -["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], -["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], -["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], -["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], -["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], -["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], -["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], -["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], -["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], -["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], -["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], -["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], -["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], -["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], -["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], -["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], -["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], -["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], -["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], -["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], -["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], -["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], -["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], -["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], -["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], -["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], -["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], -["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], -["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], -["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], -["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], -["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], -["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], -["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], -["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], -["9980","檧檨檪檭",114,"欥欦欨",6], -["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], -["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], -["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], -["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], -["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], -["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], -["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], -["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], -["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], -["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], -["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], -["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], -["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], -["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], -["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], -["a2a1","ⅰ",9], -["a2b1","⒈",19,"⑴",19,"①",9], -["a2e5","㈠",9], -["a2f1","Ⅰ",11], -["a3a1","!"#¥%",88," ̄"], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], -["a6ee","︻︼︷︸︱"], -["a6f4","︳︴"], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], -["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], -["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], -["a8bd","ńň"], -["a8c0","ɡ"], -["a8c5","ㄅ",36], -["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], -["a959","℡㈱"], -["a95c","‐"], -["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], -["a980","﹢",4,"﹨﹩﹪﹫"], -["a996","〇"], -["a9a4","─",75], -["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], -["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], -["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], -["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], -["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], -["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], -["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], -["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], -["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], -["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], -["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], -["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], -["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], -["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], -["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], -["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], -["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], -["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], -["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], -["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], -["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], -["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], -["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], -["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], -["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], -["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], -["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], -["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], -["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], -["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], -["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], -["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], -["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], -["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], -["bb40","籃",9,"籎",36,"籵",5,"籾",9], -["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], -["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], -["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], -["bd40","紷",54,"絯",7], -["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], -["be40","継",12,"綧",6,"綯",42], -["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], -["bf40","緻",62], -["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], -["c040","繞",35,"纃",23,"纜纝纞"], -["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], -["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], -["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], -["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], -["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], -["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], -["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], -["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], -["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], -["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], -["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], -["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], -["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], -["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], -["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], -["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], -["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], -["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], -["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], -["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], -["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], -["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], -["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], -["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], -["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], -["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], -["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], -["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], -["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], -["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], -["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], -["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], -["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], -["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], -["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], -["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], -["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], -["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], -["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], -["d440","訞",31,"訿",8,"詉",21], -["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], -["d540","誁",7,"誋",7,"誔",46], -["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], -["d640","諤",34,"謈",27], -["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], -["d740","譆",31,"譧",4,"譭",25], -["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], -["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], -["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], -["d940","貮",62], -["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], -["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], -["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], -["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], -["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], -["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], -["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], -["dd40","軥",62], -["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], -["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], -["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], -["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], -["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], -["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], -["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], -["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], -["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], -["e240","釦",62], -["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], -["e340","鉆",45,"鉵",16], -["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], -["e440","銨",5,"銯",24,"鋉",31], -["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], -["e540","錊",51,"錿",10], -["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], -["e640","鍬",34,"鎐",27], -["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], -["e740","鏎",7,"鏗",54], -["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], -["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], -["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], -["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], -["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], -["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], -["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], -["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], -["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], -["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], -["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], -["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], -["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], -["ee40","頏",62], -["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], -["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], -["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], -["f040","餈",4,"餎餏餑",28,"餯",26], -["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], -["f140","馌馎馚",10,"馦馧馩",47], -["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], -["f240","駺",62], -["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], -["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], -["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], -["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], -["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], -["f540","魼",62], -["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], -["f640","鯜",62], -["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], -["f740","鰼",62], -["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], -["f840","鳣",62], -["f880","鴢",32], -["f940","鵃",62], -["f980","鶂",32], -["fa40","鶣",62], -["fa80","鷢",32], -["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], -["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], -["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], -["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], -["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], -["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], -["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] -] + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + +exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/source-map-consumer.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"./array-set":57,"./base64-vlq":58,"./binary-search":60,"./quick-sort":62,"./util":66,"FWaASH":50,"buffer":52}],64:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var base64VLQ = require('./base64-vlq'); +var util = require('./util'); +var ArraySet = require('./array-set').ArraySet; +var MappingList = require('./mapping-list').MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} + +SourceMapGenerator.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +exports.SourceMapGenerator = SourceMapGenerator; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/source-map-generator.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"./array-set":57,"./base64-vlq":58,"./mapping-list":61,"./util":66,"FWaASH":50,"buffer":52}],65:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; +var util = require('./util'); + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +exports.SourceNode = SourceNode; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/source-node.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"./source-map-generator":64,"./util":66,"FWaASH":50,"buffer":52}],66:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +} +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + +/** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ +function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); +} +exports.parseSourceMapInput = parseSourceMapInput; + +/** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ +function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); +} +exports.computeSourceURL = computeSourceURL; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/util.js","/node_modules/escodegen/node_modules/source-map/lib") +},{"FWaASH":50,"buffer":52}],67:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; +exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; +exports.SourceNode = require('./lib/source-node').SourceNode; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/source-map.js","/node_modules/escodegen/node_modules/source-map") +},{"./lib/source-map-consumer":63,"./lib/source-map-generator":64,"./lib/source-node":65,"FWaASH":50,"buffer":52}],68:[function(require,module,exports){ +module.exports={ + "name": "escodegen", + "description": "ECMAScript code generator", + "homepage": "http://github.com/estools/escodegen", + "main": "escodegen.js", + "bin": { + "esgenerate": "./bin/esgenerate.js", + "escodegen": "./bin/escodegen.js" + }, + "files": [ + "LICENSE.BSD", + "README.md", + "bin", + "escodegen.js", + "package.json" + ], + "version": "1.14.3", + "engines": { + "node": ">=4.0" + }, + "maintainers": [ + { + "name": "Yusuke Suzuki", + "email": "utatane.tea@gmail.com", + "web": "http://github.com/Constellation" + } + ], + "repository": { + "type": "git", + "url": "http://github.com/estools/escodegen.git" + }, + "dependencies": { + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "esprima": "^4.0.1", + "optionator": "^0.8.1" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + }, + "devDependencies": { + "acorn": "^7.1.0", + "bluebird": "^3.4.7", + "bower-registry-client": "^1.0.0", + "chai": "^3.5.0", + "commonjs-everywhere": "^0.9.7", + "gulp": "^3.8.10", + "gulp-eslint": "^3.0.1", + "gulp-mocha": "^3.0.1", + "semver": "^5.1.0" + }, + "license": "BSD-2-Clause", + "scripts": { + "test": "gulp travis", + "unit-test": "gulp test", + "lint": "gulp lint", + "release": "node tools/release.js", + "build-min": "./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js", + "build": "./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js" + } +} + +},{}],69:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + function isExpression(node) { + if (node == null) { return false; } + switch (node.type) { + case 'ArrayExpression': + case 'AssignmentExpression': + case 'BinaryExpression': + case 'CallExpression': + case 'ConditionalExpression': + case 'FunctionExpression': + case 'Identifier': + case 'Literal': + case 'LogicalExpression': + case 'MemberExpression': + case 'NewExpression': + case 'ObjectExpression': + case 'SequenceExpression': + case 'ThisExpression': + case 'UnaryExpression': + case 'UpdateExpression': + return true; + } + return false; + } + + function isIterationStatement(node) { + if (node == null) { return false; } + switch (node.type) { + case 'DoWhileStatement': + case 'ForInStatement': + case 'ForStatement': + case 'WhileStatement': + return true; + } + return false; + } + + function isStatement(node) { + if (node == null) { return false; } + switch (node.type) { + case 'BlockStatement': + case 'BreakStatement': + case 'ContinueStatement': + case 'DebuggerStatement': + case 'DoWhileStatement': + case 'EmptyStatement': + case 'ExpressionStatement': + case 'ForInStatement': + case 'ForStatement': + case 'IfStatement': + case 'LabeledStatement': + case 'ReturnStatement': + case 'SwitchStatement': + case 'ThrowStatement': + case 'TryStatement': + case 'VariableDeclaration': + case 'WhileStatement': + case 'WithStatement': + return true; + } + return false; + } + + function isSourceElement(node) { + return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; + } + + function trailingStatement(node) { + switch (node.type) { + case 'IfStatement': + if (node.alternate != null) { + return node.alternate; + } + return node.consequent; + + case 'LabeledStatement': + case 'ForStatement': + case 'ForInStatement': + case 'WhileStatement': + case 'WithStatement': + return node.body; + } + return null; + } + + function isProblematicIfStatement(node) { + var current; + + if (node.type !== 'IfStatement') { + return false; + } + if (node.alternate == null) { + return false; + } + current = node.consequent; + do { + if (current.type === 'IfStatement') { + if (current.alternate == null) { + return true; + } + } + current = trailingStatement(current); + } while (current); + + return false; + } + + module.exports = { + isExpression: isExpression, + isStatement: isStatement, + isIterationStatement: isIterationStatement, + isSourceElement: isSourceElement, + isProblematicIfStatement: isProblematicIfStatement, + + trailingStatement: trailingStatement + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/ast.js","/node_modules/esutils/lib") +},{"FWaASH":50,"buffer":52}],70:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2013-2014 Yusuke Suzuki + Copyright (C) 2014 Ivan Nikulin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; + + // See `tools/generate-identifier-regex.js`. + ES5Regex = { + // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart: + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, + // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ + }; + + ES6Regex = { + // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart: + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, + // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + }; + + function isDecimalDigit(ch) { + return 0x30 <= ch && ch <= 0x39; // 0..9 + } + + function isHexDigit(ch) { + return 0x30 <= ch && ch <= 0x39 || // 0..9 + 0x61 <= ch && ch <= 0x66 || // a..f + 0x41 <= ch && ch <= 0x46; // A..F + } + + function isOctalDigit(ch) { + return ch >= 0x30 && ch <= 0x37; // 0..7 + } + + // 7.2 White Space + + NON_ASCII_WHITESPACES = [ + 0x1680, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, + 0x202F, 0x205F, + 0x3000, + 0xFEFF + ]; + + function isWhiteSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || + ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0; + } + + // 7.3 Line Terminators + + function isLineTerminator(ch) { + return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; + } + + // 7.6 Identifier Names and Identifiers + + function fromCodePoint(cp) { + if (cp <= 0xFFFF) { return String.fromCharCode(cp); } + var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); + var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00); + return cu1 + cu2; + } + + IDENTIFIER_START = new Array(0x80); + for(ch = 0; ch < 0x80; ++ch) { + IDENTIFIER_START[ch] = + ch >= 0x61 && ch <= 0x7A || // a..z + ch >= 0x41 && ch <= 0x5A || // A..Z + ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) + } + + IDENTIFIER_PART = new Array(0x80); + for(ch = 0; ch < 0x80; ++ch) { + IDENTIFIER_PART[ch] = + ch >= 0x61 && ch <= 0x7A || // a..z + ch >= 0x41 && ch <= 0x5A || // A..Z + ch >= 0x30 && ch <= 0x39 || // 0..9 + ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) + } + + function isIdentifierStartES5(ch) { + return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); + } + + function isIdentifierPartES5(ch) { + return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); + } + + function isIdentifierStartES6(ch) { + return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); + } + + function isIdentifierPartES6(ch) { + return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); + } + + module.exports = { + isDecimalDigit: isDecimalDigit, + isHexDigit: isHexDigit, + isOctalDigit: isOctalDigit, + isWhiteSpace: isWhiteSpace, + isLineTerminator: isLineTerminator, + isIdentifierStartES5: isIdentifierStartES5, + isIdentifierPartES5: isIdentifierPartES5, + isIdentifierStartES6: isIdentifierStartES6, + isIdentifierPartES6: isIdentifierPartES6 + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/code.js","/node_modules/esutils/lib") +},{"FWaASH":50,"buffer":52}],71:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + var code = require('./code'); + + function isStrictModeReservedWordES6(id) { + switch (id) { + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'let': + return true; + default: + return false; + } + } + + function isKeywordES5(id, strict) { + // yield should not be treated as keyword under non-strict mode. + if (!strict && id === 'yield') { + return false; + } + return isKeywordES6(id, strict); + } + + function isKeywordES6(id, strict) { + if (strict && isStrictModeReservedWordES6(id)) { + return true; + } + + switch (id.length) { + case 2: + return (id === 'if') || (id === 'in') || (id === 'do'); + case 3: + return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); + case 4: + return (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum'); + case 5: + return (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || (id === 'yield') || + (id === 'class') || (id === 'super'); + case 6: + return (id === 'return') || (id === 'typeof') || (id === 'delete') || + (id === 'switch') || (id === 'export') || (id === 'import'); + case 7: + return (id === 'default') || (id === 'finally') || (id === 'extends'); + case 8: + return (id === 'function') || (id === 'continue') || (id === 'debugger'); + case 10: + return (id === 'instanceof'); + default: + return false; + } + } + + function isReservedWordES5(id, strict) { + return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict); + } + + function isReservedWordES6(id, strict) { + return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict); + } + + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } + + function isIdentifierNameES5(id) { + var i, iz, ch; + + if (id.length === 0) { return false; } + + ch = id.charCodeAt(0); + if (!code.isIdentifierStartES5(ch)) { + return false; + } + + for (i = 1, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (!code.isIdentifierPartES5(ch)) { + return false; + } + } + return true; + } + + function decodeUtf16(lead, trail) { + return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + } + + function isIdentifierNameES6(id) { + var i, iz, ch, lowCh, check; + + if (id.length === 0) { return false; } + + check = code.isIdentifierStartES6; + for (i = 0, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (0xD800 <= ch && ch <= 0xDBFF) { + ++i; + if (i >= iz) { return false; } + lowCh = id.charCodeAt(i); + if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) { + return false; + } + ch = decodeUtf16(ch, lowCh); + } + if (!check(ch)) { + return false; + } + check = code.isIdentifierPartES6; + } + return true; + } + + function isIdentifierES5(id, strict) { + return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); + } + + function isIdentifierES6(id, strict) { + return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); + } + + module.exports = { + isKeywordES5: isKeywordES5, + isKeywordES6: isKeywordES6, + isReservedWordES5: isReservedWordES5, + isReservedWordES6: isReservedWordES6, + isRestrictedWord: isRestrictedWord, + isIdentifierNameES5: isIdentifierNameES5, + isIdentifierNameES6: isIdentifierNameES6, + isIdentifierES5: isIdentifierES5, + isIdentifierES6: isIdentifierES6 + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/keyword.js","/node_modules/esutils/lib") +},{"./code":70,"FWaASH":50,"buffer":52}],72:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +(function () { + 'use strict'; + + exports.ast = require('./ast'); + exports.code = require('./code'); + exports.keyword = require('./keyword'); +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/utils.js","/node_modules/esutils/lib") +},{"./ast":69,"./code":70,"./keyword":71,"FWaASH":50,"buffer":52}],73:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } -},{}],78:[function(require,module,exports){ -module.exports=[ -["0","\u0000",127], -["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], -["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], -["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], -["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], -["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], -["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], -["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], -["8361","긝",18,"긲긳긵긶긹긻긼"], -["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], -["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], -["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], -["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], -["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], -["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], -["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], -["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], -["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], -["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], -["8741","놞",9,"놩",15], -["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], -["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], -["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], -["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], -["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], -["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], -["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], -["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], -["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], -["8a61","둧",4,"둭",18,"뒁뒂"], -["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], -["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], -["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], -["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], -["8c41","똀",15,"똒똓똕똖똗똙",4], -["8c61","똞",6,"똦",5,"똭",6,"똵",5], -["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], -["8d41","뛃",16,"뛕",8], -["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], -["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], -["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], -["8e61","럂",4,"럈럊",19], -["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], -["8f41","뢅",7,"뢎",17], -["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], -["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], -["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], -["9061","륾",5,"릆릈릋릌릏",15], -["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], -["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], -["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], -["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], -["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], -["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], -["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], -["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], -["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], -["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], -["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], -["9461","봞",5,"봥",6,"봭",12], -["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], -["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], -["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], -["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], -["9641","뺸",23,"뻒뻓"], -["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], -["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], -["9741","뾃",16,"뾕",8], -["9761","뾞",17,"뾱",7], -["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], -["9841","쁀",16,"쁒",5,"쁙쁚쁛"], -["9861","쁝쁞쁟쁡",6,"쁪",15], -["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], -["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], -["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], -["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], -["9a41","숤숥숦숧숪숬숮숰숳숵",16], -["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], -["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], -["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], -["9b61","쌳",17,"썆",7], -["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], -["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], -["9c61","쏿",8,"쐉",6,"쐑",9], -["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], -["9d41","쒪",13,"쒹쒺쒻쒽",8], -["9d61","쓆",25], -["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], -["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], -["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], -["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], -["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], -["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], -["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], -["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], -["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], -["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], -["a141","좥좦좧좩",18,"좾좿죀죁"], -["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], -["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], -["a241","줐줒",5,"줙",18], -["a261","줭",6,"줵",18], -["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], -["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], -["a361","즑",6,"즚즜즞",16], -["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], -["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], -["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], -["a481","쨦쨧쨨쨪",28,"ㄱ",93], -["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], -["a561","쩫",17,"쩾",5,"쪅쪆"], -["a581","쪇",16,"쪙",14,"ⅰ",9], -["a5b0","Ⅰ",9], -["a5c1","Α",16,"Σ",6], -["a5e1","α",16,"σ",6], -["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], -["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], -["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], -["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], -["a761","쬪",22,"쭂쭃쭄"], -["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], -["a841","쭭",10,"쭺",14], -["a861","쮉",18,"쮝",6], -["a881","쮤",19,"쮹",11,"ÆÐªĦ"], -["a8a6","IJ"], -["a8a8","ĿŁØŒºÞŦŊ"], -["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], -["a941","쯅",14,"쯕",10], -["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], -["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], -["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], -["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], -["aa81","챳챴챶",29,"ぁ",82], -["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], -["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], -["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], -["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], -["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], -["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], -["acd1","а",5,"ёж",25], -["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], -["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], -["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], -["ae41","췆",5,"췍췎췏췑",16], -["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], -["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], -["af41","츬츭츮츯츲츴츶",19], -["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], -["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], -["b041","캚",5,"캢캦",5,"캮",12], -["b061","캻",5,"컂",19], -["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], -["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], -["b161","켥",6,"켮켲",5,"켹",11], -["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], -["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], -["b261","쾎",18,"쾢",5,"쾩"], -["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], -["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], -["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], -["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], -["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], -["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], -["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], -["b541","킕",14,"킦킧킩킪킫킭",5], -["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], -["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], -["b641","턅",7,"턎",17], -["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], -["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], -["b741","텮",13,"텽",6,"톅톆톇톉톊"], -["b761","톋",20,"톢톣톥톦톧"], -["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], -["b841","퇐",7,"퇙",17], -["b861","퇫",8,"퇵퇶퇷퇹",13], -["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], -["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], -["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], -["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], -["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], -["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], -["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], -["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], -["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], -["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], -["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], -["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], -["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], -["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], -["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], -["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], -["be41","퐸",7,"푁푂푃푅",14], -["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], -["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], -["bf41","풞",10,"풪",14], -["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], -["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], -["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], -["c061","픞",25], -["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], -["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], -["c161","햌햍햎햏햑",19,"햦햧"], -["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], -["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], -["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], -["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], -["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], -["c361","홢",4,"홨홪",5,"홲홳홵",11], -["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], -["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], -["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], -["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], -["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], -["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], -["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], -["c641","힍힎힏힑",6,"힚힜힞",5], -["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], -["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], -["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], -["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], -["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], -["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], -["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], -["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], -["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], -["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], -["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], -["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], -["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], -["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], -["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], -["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], -["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], -["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], -["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], -["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], -["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], -["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], -["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], -["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], -["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], -["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], -["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], -["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], -["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], -["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], -["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], -["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], -["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], -["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], -["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], -["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], -["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], -["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], -["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], -["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], -["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], -["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], -["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], -["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], -["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], -["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], -["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], -["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], -["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], -["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], -["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], -["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], -["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], -["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], -["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] -] + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} -},{}],79:[function(require,module,exports){ -module.exports=[ -["0","\u0000",127], -["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], -["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], -["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], -["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], -["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], -["a3a1","ㄐ",25,"˙ˉˊˇˋ"], -["a3e1","€"], -["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], -["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], -["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], -["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], -["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], -["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], -["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], -["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], -["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], -["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], -["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], -["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], -["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], -["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], -["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], -["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], -["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], -["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], -["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], -["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], -["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], -["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], -["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], -["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], -["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], -["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], -["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], -["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], -["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], -["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], -["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], -["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], -["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], -["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], -["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], -["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], -["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], -["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], -["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], -["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], -["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], -["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], -["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], -["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], -["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], -["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], -["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], -["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], -["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], -["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], -["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], -["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], -["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], -["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], -["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], -["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], -["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], -["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], -["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], -["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], -["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], -["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], -["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], -["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], -["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], -["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], -["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], -["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], -["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], -["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], -["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], -["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], -["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], -["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], -["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], -["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], -["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], -["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], -["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], -["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], -["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], -["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], -["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], -["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], -["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], -["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], -["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], -["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], -["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], -["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], -["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], -["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], -["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], -["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], -["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], -["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], -["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], -["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], -["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], -["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], -["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], -["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], -["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], -["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], -["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], -["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], -["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], -["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], -["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], -["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], -["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], -["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], -["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], -["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], -["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], -["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], -["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], -["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], -["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], -["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], -["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], -["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], -["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], -["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], -["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], -["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], -["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], -["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], -["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], -["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], -["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], -["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], -["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], -["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], -["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], -["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], -["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], -["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], -["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], -["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], -["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], -["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], -["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], -["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], -["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], -["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], -["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], -["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], -["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], -["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], -["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], -["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], -["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], -["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], -["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], -["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], -["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], -["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], -["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], -["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], -["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], -["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], -["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], -["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], -["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], -["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], -["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] -] +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} -},{}],80:[function(require,module,exports){ -module.exports=[ -["0","\u0000",127], -["8ea1","。",62], -["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], -["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], -["a2ba","∈∋⊆⊇⊂⊃∪∩"], -["a2ca","∧∨¬⇒⇔∀∃"], -["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["a2f2","ʼn♯♭♪†‡¶"], -["a2fe","◯"], -["a3b0","0",9], -["a3c1","A",25], -["a3e1","a",25], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["ada1","①",19,"Ⅰ",9], -["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], -["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], -["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], -["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], -["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], -["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], -["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], -["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], -["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], -["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], -["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], -["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], -["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], -["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], -["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], -["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], -["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], -["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], -["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], -["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], -["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], -["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], -["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], -["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], -["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], -["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], -["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], -["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], -["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], -["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], -["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], -["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], -["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], -["f4a1","堯槇遙瑤凜熙"], -["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], -["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], -["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["fcf1","ⅰ",9,"¬¦'""], -["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], -["8fa2c2","¡¦¿"], -["8fa2eb","ºª©®™¤№"], -["8fa6e1","ΆΈΉΊΪ"], -["8fa6e7","Ό"], -["8fa6e9","ΎΫ"], -["8fa6ec","Ώ"], -["8fa6f1","άέήίϊΐόςύϋΰώ"], -["8fa7c2","Ђ",10,"ЎЏ"], -["8fa7f2","ђ",10,"ўџ"], -["8fa9a1","ÆĐ"], -["8fa9a4","Ħ"], -["8fa9a6","IJ"], -["8fa9a8","ŁĿ"], -["8fa9ab","ŊØŒ"], -["8fa9af","ŦÞ"], -["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], -["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], -["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], -["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], -["8fabbd","ġĥíìïîǐ"], -["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], -["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], -["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], -["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], -["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], -["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], -["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], -["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], -["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], -["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], -["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], -["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], -["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], -["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], -["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], -["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], -["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], -["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], -["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], -["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], -["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], -["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], -["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], -["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], -["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], -["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], -["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], -["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], -["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], -["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], -["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], -["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], -["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], -["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], -["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], -["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], -["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], -["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], -["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], -["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], -["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], -["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], -["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], -["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], -["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], -["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], -["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], -["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], -["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], -["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], -["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], -["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], -["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], -["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], -["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], -["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], -["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], -["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], -["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], -["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], -["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], -["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], -["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] -] +function isUndefined(arg) { + return arg === void 0; +} + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/events/events.js","/node_modules/events") +},{"FWaASH":50,"buffer":52}],74:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +'use strict'; + +// do not edit .js files directly - edit src/index.jst + + + +module.exports = function equal(a, b) { + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + if (a.constructor !== b.constructor) return false; + + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } + + + + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); + + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + + for (i = length; i-- !== 0;) { + var key = keys[i]; + + if (!equal(a[key], b[key])) return false; + } + + return true; + } + + // true if both NaN, false otherwise + return a!==a && b!==b; +}; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/fast-deep-equal/index.js","/node_modules/fast-deep-equal") +},{"FWaASH":50,"buffer":52}],75:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +'use strict'; + +module.exports = function (data, opts) { + if (!opts) opts = {}; + if (typeof opts === 'function') opts = { cmp: opts }; + var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; + + var cmp = opts.cmp && (function (f) { + return function (node) { + return function (a, b) { + var aobj = { key: a, value: node[a] }; + var bobj = { key: b, value: node[b] }; + return f(aobj, bobj); + }; + }; + })(opts.cmp); + + var seen = []; + return (function stringify (node) { + if (node && node.toJSON && typeof node.toJSON === 'function') { + node = node.toJSON(); + } + + if (node === undefined) return; + if (typeof node == 'number') return isFinite(node) ? '' + node : 'null'; + if (typeof node !== 'object') return JSON.stringify(node); + + var i, out; + if (Array.isArray(node)) { + out = '['; + for (i = 0; i < node.length; i++) { + if (i) out += ','; + out += stringify(node[i]) || 'null'; + } + return out + ']'; + } + + if (node === null) return 'null'; + + if (seen.indexOf(node) !== -1) { + if (cycles) return JSON.stringify('__cycle__'); + throw new TypeError('Converting circular structure to JSON'); + } + + var seenIndex = seen.push(node) - 1; + var keys = Object.keys(node).sort(cmp && cmp(node)); + out = ''; + for (i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = stringify(node[key]); + + if (!value) continue; + if (out) out += ','; + out += JSON.stringify(key) + ':' + value; + } + seen.splice(seenIndex, 1); + return '{' + out + '}'; + })(data); +}; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/fast-json-stable-stringify/index.js","/node_modules/fast-json-stable-stringify") +},{"FWaASH":50,"buffer":52}],76:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/** + * Constants enumerating the HTTP status codes. + * + * All status codes defined in RFC1945 (HTTP/1.0, RFC2616 (HTTP/1.1), + * RFC2518 (WebDAV), RFC6585 (Additional HTTP Status Codes), and + * RFC7538 (Permanent Redirect) are supported. + * + * Based on the org.apache.commons.httpclient.HttpStatus Java API. + * + * Ported by Bryce Neal. + */ + +var statusCodes = {}; + +statusCodes[exports.ACCEPTED = 202] = "Accepted"; +statusCodes[exports.BAD_GATEWAY = 502] = "Bad Gateway"; +statusCodes[exports.BAD_REQUEST = 400] = "Bad Request"; +statusCodes[exports.CONFLICT = 409] = "Conflict"; +statusCodes[exports.CONTINUE = 100] = "Continue"; +statusCodes[exports.CREATED = 201] = "Created"; +statusCodes[exports.EXPECTATION_FAILED = 417] = "Expectation Failed"; +statusCodes[exports.FAILED_DEPENDENCY = 424] = "Failed Dependency"; +statusCodes[exports.FORBIDDEN = 403] = "Forbidden"; +statusCodes[exports.GATEWAY_TIMEOUT = 504] = "Gateway Timeout"; +statusCodes[exports.GONE = 410] = "Gone"; +statusCodes[exports.HTTP_VERSION_NOT_SUPPORTED = 505] = "HTTP Version Not Supported"; +statusCodes[exports.IM_A_TEAPOT = 418] = "I'm a teapot"; +statusCodes[exports.INSUFFICIENT_SPACE_ON_RESOURCE = 419] = "Insufficient Space on Resource"; +statusCodes[exports.INSUFFICIENT_STORAGE = 507] = "Insufficient Storage"; +statusCodes[exports.INTERNAL_SERVER_ERROR = 500] = "Server Error"; +statusCodes[exports.LENGTH_REQUIRED = 411] = "Length Required"; +statusCodes[exports.LOCKED = 423] = "Locked"; +statusCodes[exports.METHOD_FAILURE = 420] = "Method Failure"; +statusCodes[exports.METHOD_NOT_ALLOWED = 405] = "Method Not Allowed"; +statusCodes[exports.MOVED_PERMANENTLY = 301] = "Moved Permanently"; +statusCodes[exports.MOVED_TEMPORARILY = 302] = "Moved Temporarily"; +statusCodes[exports.MULTI_STATUS = 207] = "Multi-Status"; +statusCodes[exports.MULTIPLE_CHOICES = 300] = "Multiple Choices"; +statusCodes[exports.NETWORK_AUTHENTICATION_REQUIRED = 511] = "Network Authentication Required"; +statusCodes[exports.NO_CONTENT = 204] = "No Content"; +statusCodes[exports.NON_AUTHORITATIVE_INFORMATION = 203] = "Non Authoritative Information"; +statusCodes[exports.NOT_ACCEPTABLE = 406] = "Not Acceptable"; +statusCodes[exports.NOT_FOUND = 404] = "Not Found"; +statusCodes[exports.NOT_IMPLEMENTED = 501] = "Not Implemented"; +statusCodes[exports.NOT_MODIFIED = 304] = "Not Modified"; +statusCodes[exports.OK = 200] = "OK"; +statusCodes[exports.PARTIAL_CONTENT = 206] = "Partial Content"; +statusCodes[exports.PAYMENT_REQUIRED = 402] = "Payment Required"; +statusCodes[exports.PERMANENT_REDIRECT = 308] = "Permanent Redirect"; +statusCodes[exports.PRECONDITION_FAILED = 412] = "Precondition Failed"; +statusCodes[exports.PRECONDITION_REQUIRED = 428] = "Precondition Required"; +statusCodes[exports.PROCESSING = 102] = "Processing"; +statusCodes[exports.PROXY_AUTHENTICATION_REQUIRED = 407] = "Proxy Authentication Required"; +statusCodes[exports.REQUEST_HEADER_FIELDS_TOO_LARGE = 431] = "Request Header Fields Too Large"; +statusCodes[exports.REQUEST_TIMEOUT = 408] = "Request Timeout"; +statusCodes[exports.REQUEST_TOO_LONG = 413] = "Request Entity Too Large"; +statusCodes[exports.REQUEST_URI_TOO_LONG = 414] = "Request-URI Too Long"; +statusCodes[exports.REQUESTED_RANGE_NOT_SATISFIABLE = 416] = "Requested Range Not Satisfiable"; +statusCodes[exports.RESET_CONTENT = 205] = "Reset Content"; +statusCodes[exports.SEE_OTHER = 303] = "See Other"; +statusCodes[exports.SERVICE_UNAVAILABLE = 503] = "Service Unavailable"; +statusCodes[exports.SWITCHING_PROTOCOLS = 101] = "Switching Protocols"; +statusCodes[exports.TEMPORARY_REDIRECT = 307] = "Temporary Redirect"; +statusCodes[exports.TOO_MANY_REQUESTS = 429] = "Too Many Requests"; +statusCodes[exports.UNAUTHORIZED = 401] = "Unauthorized"; +statusCodes[exports.UNPROCESSABLE_ENTITY = 422] = "Unprocessable Entity"; +statusCodes[exports.UNSUPPORTED_MEDIA_TYPE = 415] = "Unsupported Media Type"; +statusCodes[exports.USE_PROXY = 305] = "Use Proxy"; -},{}],81:[function(require,module,exports){ -module.exports={"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} -},{}],82:[function(require,module,exports){ -module.exports=[ -["a140","",62], -["a180","",32], -["a240","",62], -["a280","",32], -["a2ab","",5], -["a2e3","€"], -["a2ef",""], -["a2fd",""], -["a340","",62], -["a380","",31," "], -["a440","",62], -["a480","",32], -["a4f4","",10], -["a540","",62], -["a580","",32], -["a5f7","",7], -["a640","",62], -["a680","",32], -["a6b9","",7], -["a6d9","",6], -["a6ec",""], -["a6f3",""], -["a6f6","",8], -["a740","",62], -["a780","",32], -["a7c2","",14], -["a7f2","",12], -["a896","",10], -["a8bc",""], -["a8bf","ǹ"], -["a8c1",""], -["a8ea","",20], -["a958",""], -["a95b",""], -["a95d",""], -["a989","〾⿰",11], -["a997","",12], -["a9f0","",14], -["aaa1","",93], -["aba1","",93], -["aca1","",93], -["ada1","",93], -["aea1","",93], -["afa1","",93], -["d7fa","",4], -["f8a1","",93], -["f9a1","",93], -["faa1","",93], -["fba1","",93], -["fca1","",93], -["fda1","",93], -["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], -["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93] -] +exports.getStatusText = function(statusCode) { + if (statusCodes.hasOwnProperty(statusCode)) { + return statusCodes[statusCode]; + } else { + throw new Error("Status code does not exist: " + statusCode); + } +}; + +exports.getStatusCode = function(reasonPhrase) { + for (key in statusCodes) { + if (statusCodes[key] === reasonPhrase) { + return parseInt(key, 10); + } + } + throw new Error("Reason phrase does not exist: " + reasonPhrase); +}; -},{}],83:[function(require,module,exports){ -module.exports=[ -["0","\u0000",128], -["a1","。",62], -["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], -["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], -["81b8","∈∋⊆⊇⊂⊃∪∩"], -["81c8","∧∨¬⇒⇔∀∃"], -["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["81f0","ʼn♯♭♪†‡¶"], -["81fc","◯"], -["824f","0",9], -["8260","A",25], -["8281","a",25], -["829f","ぁ",82], -["8340","ァ",62], -["8380","ム",22], -["839f","Α",16,"Σ",6], -["83bf","α",16,"σ",6], -["8440","А",5,"ЁЖ",25], -["8470","а",5,"ёж",7], -["8480","о",17], -["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["8740","①",19,"Ⅰ",9], -["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["877e","㍻"], -["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], -["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], -["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], -["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], -["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], -["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], -["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], -["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], -["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], -["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], -["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], -["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], -["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], -["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], -["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], -["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], -["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], -["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], -["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], -["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], -["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], -["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], -["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], -["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], -["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], -["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], -["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], -["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], -["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], -["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], -["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], -["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], -["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], -["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], -["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], -["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], -["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["eeef","ⅰ",9,"¬¦'""], -["f040","",62], -["f080","",124], -["f140","",62], -["f180","",124], -["f240","",62], -["f280","",124], -["f340","",62], -["f380","",124], -["f440","",62], -["f480","",124], -["f540","",62], -["f580","",124], -["f640","",62], -["f680","",124], -["f740","",62], -["f780","",124], -["f840","",62], -["f880","",124], -["f940",""], -["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], -["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], -["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], -["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], -["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] -] -},{}],84:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/http-status-codes/index.js","/node_modules/http-status-codes") +},{"FWaASH":50,"buffer":52}],77:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ "use strict"; var Buffer = require("safer-buffer").Buffer; -// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js +// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. +// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. +// To save memory and loading time, we read table files only when requested. -// == UTF16-BE codec. ========================================================== +exports._dbcs = DBCSCodec; -exports.utf16be = Utf16BECodec; -function Utf16BECodec() { -} +var UNASSIGNED = -1, + GB18030_CODE = -2, + SEQ_START = -10, + NODE_START = -1000, + UNASSIGNED_NODE = new Array(0x100), + DEF_CHAR = -1; -Utf16BECodec.prototype.encoder = Utf16BEEncoder; -Utf16BECodec.prototype.decoder = Utf16BEDecoder; -Utf16BECodec.prototype.bomAware = true; +for (var i = 0; i < 0x100; i++) + UNASSIGNED_NODE[i] = UNASSIGNED; -// -- Encoding +// Class DBCSCodec reads and initializes mapping tables. +function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) + throw new Error("DBCS codec is called without the data.") + if (!codecOptions.table) + throw new Error("Encoding '" + this.encodingName + "' has no data."); -function Utf16BEEncoder() { -} + // Load tables. + var mappingTable = codecOptions.table(); -Utf16BEEncoder.prototype.write = function(str) { - var buf = Buffer.from(str, 'ucs2'); - for (var i = 0; i < buf.length; i += 2) { - var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; - } - return buf; -} -Utf16BEEncoder.prototype.end = function() { -} + // Decode tables: MBCS -> Unicode. + // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. + // Trie root is decodeTables[0]. + // Values: >= 0 -> unicode character code. can be > 0xFFFF + // == UNASSIGNED -> unknown/unassigned sequence. + // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. + // <= NODE_START -> index of the next node in our trie to process next byte. + // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. -// -- Decoding + // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. + this.decodeTableSeq = []; -function Utf16BEDecoder() { - this.overflowByte = -1; -} + // Actual mapping tables consist of chunks. Use them to fill up decode tables. + for (var i = 0; i < mappingTable.length; i++) + this._addDecodeChunk(mappingTable[i]); -Utf16BEDecoder.prototype.write = function(buf) { - if (buf.length == 0) - return ''; + this.defaultCharUnicode = iconv.defaultCharUnicode; - var buf2 = Buffer.alloc(buf.length + 1), - i = 0, j = 0; + + // Encode tables: Unicode -> DBCS. - if (this.overflowByte !== -1) { - buf2[0] = buf[0]; - buf2[1] = this.overflowByte; - i = 1; j = 2; - } + // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. + // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. + // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). + // == UNASSIGNED -> no conversion found. Output a default char. + // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. + this.encodeTable = []; + + // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of + // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key + // means end of sequence (needed when one sequence is a strict subsequence of another). + // Objects are kept separately from encodeTable to increase performance. + this.encodeTableSeq = []; - for (; i < buf.length-1; i += 2, j+= 2) { - buf2[j] = buf[i+1]; - buf2[j+1] = buf[i]; - } + // Some chars can be decoded, but need not be encoded. + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) + for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { + var val = codecOptions.encodeSkipVals[i]; + if (typeof val === 'number') + skipEncodeChars[val] = true; + else + for (var j = val.from; j <= val.to; j++) + skipEncodeChars[j] = true; + } + + // Use decode trie to recursively fill out encode tables. + this._fillEncodeTable(0, 0, skipEncodeChars); - this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; + // Add more encoding pairs when needed. + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } - return buf2.slice(0, j).toString('ucs2'); -} + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); -Utf16BEDecoder.prototype.end = function() { -} + // Load & create GB18030 tables when needed. + if (typeof codecOptions.gb18030 === 'function') { + this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. -// == UTF-16 codec ============================================================= -// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. -// Defaults to UTF-16LE, as it's prevalent and default in Node. -// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le -// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); + // Add GB18030 decode tables. + var thirdByteNodeIdx = this.decodeTables.length; + var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); -// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). + var fourthByteNodeIdx = this.decodeTables.length; + var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); -exports.utf16 = Utf16Codec; -function Utf16Codec(codecOptions, iconv) { - this.iconv = iconv; + for (var i = 0x81; i <= 0xFE; i++) { + var secondByteNodeIdx = NODE_START - this.decodeTables[0][i]; + var secondByteNode = this.decodeTables[secondByteNodeIdx]; + for (var j = 0x30; j <= 0x39; j++) + secondByteNode[j] = NODE_START - thirdByteNodeIdx; + } + for (var i = 0x81; i <= 0xFE; i++) + thirdByteNode[i] = NODE_START - fourthByteNodeIdx; + for (var i = 0x30; i <= 0x39; i++) + fourthByteNode[i] = GB18030_CODE + } } -Utf16Codec.prototype.encoder = Utf16Encoder; -Utf16Codec.prototype.decoder = Utf16Decoder; +DBCSCodec.prototype.encoder = DBCSEncoder; +DBCSCodec.prototype.decoder = DBCSDecoder; +// Decoder helpers +DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>= 8) + bytes.push(addr & 0xFF); + if (bytes.length == 0) + bytes.push(0); -// -- Encoding (pass-through) + var node = this.decodeTables[0]; + for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. + var val = node[bytes[i]]; -function Utf16Encoder(options, codec) { - options = options || {}; - if (options.addBOM === undefined) - options.addBOM = true; - this.encoder = codec.iconv.getEncoder('utf-16le', options); + if (val == UNASSIGNED) { // Create new node. + node[bytes[i]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } + else if (val <= NODE_START) { // Existing node. + node = this.decodeTables[NODE_START - val]; + } + else + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + return node; } -Utf16Encoder.prototype.write = function(str) { - return this.encoder.write(str); -} -Utf16Encoder.prototype.end = function() { - return this.encoder.end(); -} +DBCSCodec.prototype._addDecodeChunk = function(chunk) { + // First element of chunk is the hex mbcs code where we start. + var curAddr = parseInt(chunk[0], 16); + // Choose the decoding node where we'll write our chars. + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 0xFF; -// -- Decoding + // Write all other elements of the chunk to the table. + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { // String, write as-is. + for (var l = 0; l < part.length;) { + var code = part.charCodeAt(l++); + if (0xD800 <= code && code < 0xDC00) { // Decode surrogate + var codeTrail = part.charCodeAt(l++); + if (0xDC00 <= codeTrail && codeTrail < 0xE000) + writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); + else + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } + else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) + var len = 0xFFF - code + 2; + var seq = []; + for (var m = 0; m < len; m++) + seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. -function Utf16Decoder(options, codec) { - this.decoder = null; - this.initialBytes = []; - this.initialBytesLen = 0; + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } + else + writeTable[curAddr++] = code; // Basic char + } + } + else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) + writeTable[curAddr++] = charCode++; + } + else + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); + } + if (curAddr > 0xFF) + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); +} - this.options = options || {}; - this.iconv = codec.iconv; +// Encoder helpers +DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; // This could be > 0xFF because of astral characters. + if (this.encodeTable[high] === undefined) + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. + return this.encodeTable[high]; } -Utf16Decoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBytes.push(buf); - this.initialBytesLen += buf.length; - - if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below) - return ''; +DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 0xFF; + if (bucket[low] <= SEQ_START) + this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. + else if (bucket[low] == UNASSIGNED) + bucket[low] = dbcsCode; +} - // We have enough bytes -> detect endianness. - var buf = Buffer.concat(this.initialBytes), - encoding = detectEncoding(buf, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - this.initialBytes.length = this.initialBytesLen = 0; +DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + + // Get the root of character tree according to first character of the sequence. + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 0xFF; + + var node; + if (bucket[low] <= SEQ_START) { + // There's already a sequence with - use it. + node = this.encodeTableSeq[SEQ_START-bucket[low]]; + } + else { + // There was no sequence object - allocate a new one. + node = {}; + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); + } + + // Traverse the character tree, allocating new nodes as needed. + for (var j = 1; j < seq.length-1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === 'object') + node = oldVal; + else { + node = node[uCode] = {} + if (oldVal !== undefined) + node[DEF_CHAR] = oldVal + } } - return this.decoder.write(buf); + // Set the leaf to given dbcsCode. + uCode = seq[seq.length-1]; + node[uCode] = dbcsCode; } -Utf16Decoder.prototype.end = function() { - if (!this.decoder) { - var buf = Buffer.concat(this.initialBytes), - encoding = detectEncoding(buf, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var res = this.decoder.write(buf), - trail = this.decoder.end(); +DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + for (var i = 0; i < 0x100; i++) { + var uCode = node[i]; + var mbCode = prefix + i; + if (skipEncodeChars[mbCode]) + continue; - return trail ? (res + trail) : res; + if (uCode >= 0) + this._setEncodeChar(uCode, mbCode); + else if (uCode <= NODE_START) + this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); + else if (uCode <= SEQ_START) + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); } - return this.decoder.end(); } -function detectEncoding(buf, defaultEncoding) { - var enc = defaultEncoding || 'utf-16le'; - if (buf.length >= 2) { - // Check BOM. - if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM - enc = 'utf-16be'; - else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM - enc = 'utf-16le'; + +// == Encoder ================================================================== + +function DBCSEncoder(options, codec) { + // Encoder state + this.leadSurrogate = -1; + this.seqObj = undefined; + + // Static data + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; +} + +DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), + leadSurrogate = this.leadSurrogate, + seqObj = this.seqObj, nextChar = -1, + i = 0, j = 0; + + while (true) { + // 0. Get next character. + if (nextChar === -1) { + if (i == str.length) break; + var uCode = str.charCodeAt(i++); + } else { - // No BOM found. Try to deduce encoding from initial content. - // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. - // So, we count ASCII as if it was LE or BE, and decide from that. - var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions - _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even. + var uCode = nextChar; + nextChar = -1; + } - for (var i = 0; i < _len; i += 2) { - if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++; - if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++; + // 1. Handle surrogates. + if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. + if (uCode < 0xDC00) { // We've got lead surrogate. + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + // Double lead surrogate found. + uCode = UNASSIGNED; + } + } else { // We've got trail surrogate. + if (leadSurrogate !== -1) { + uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); + leadSurrogate = -1; + } else { + // Incomplete surrogate pair - only trail surrogate found. + uCode = UNASSIGNED; + } + } - - if (asciiCharsBE > asciiCharsLE) - enc = 'utf-16be'; - else if (asciiCharsBE < asciiCharsLE) - enc = 'utf-16le'; } - } + else if (leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. + leadSurrogate = -1; + } - return enc; -} + // 2. Convert uCode character. + var dbcsCode = UNASSIGNED; + if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence + var resCode = seqObj[uCode]; + if (typeof resCode === 'object') { // Sequence continues. + seqObj = resCode; + continue; + } else if (typeof resCode == 'number') { // Sequence finished. Write it. + dbcsCode = resCode; + } else if (resCode == undefined) { // Current character is not part of the sequence. -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/utf16.js","/node_modules/iconv-lite/encodings") -},{"buffer":57,"lYpoI2":59,"safer-buffer":110}],85:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; + // Try default character for this sequence + resCode = seqObj[DEF_CHAR]; + if (resCode !== undefined) { + dbcsCode = resCode; // Found. Write it. + nextChar = uCode; // Current character will be written too in the next iteration. -// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 -// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 + } else { + // TODO: What if we have no default? (resCode == undefined) + // Then, we should write first char of the sequence as-is and try the rest recursively. + // Didn't do it for now because no encoding has this situation yet. + // Currently, just skip the sequence and write current char. + } + } + seqObj = undefined; + } + else if (uCode >= 0) { // Regular character + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== undefined) + dbcsCode = subtable[uCode & 0xFF]; + + if (dbcsCode <= SEQ_START) { // Sequence start + seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; + continue; + } -exports.utf7 = Utf7Codec; -exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 -function Utf7Codec(codecOptions, iconv) { - this.iconv = iconv; -}; + if (dbcsCode == UNASSIGNED && this.gb18030) { + // Use GB18030 algorithm to find character(s) to write. + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; + newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; + newBuf[j++] = 0x30 + dbcsCode; + continue; + } + } + } -Utf7Codec.prototype.encoder = Utf7Encoder; -Utf7Codec.prototype.decoder = Utf7Decoder; -Utf7Codec.prototype.bomAware = true; + // 3. Write dbcsCode character. + if (dbcsCode === UNASSIGNED) + dbcsCode = this.defaultCharSingleByte; + + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode; + } + else if (dbcsCode < 0x10000) { + newBuf[j++] = dbcsCode >> 8; // high byte + newBuf[j++] = dbcsCode & 0xFF; // low byte + } + else { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = (dbcsCode >> 8) & 0xFF; + newBuf[j++] = dbcsCode & 0xFF; + } + } + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); +} -// -- Encoding +DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === undefined) + return; // All clean. Most often case. -var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + var newBuf = Buffer.alloc(10), j = 0; -function Utf7Encoder(options, codec) { - this.iconv = codec.iconv; -} + if (this.seqObj) { // We're in the sequence. + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== undefined) { // Write beginning of the sequence. + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode; + } + else { + newBuf[j++] = dbcsCode >> 8; // high byte + newBuf[j++] = dbcsCode & 0xFF; // low byte + } + } else { + // See todo above. + } + this.seqObj = undefined; + } -Utf7Encoder.prototype.write = function(str) { - // Naive implementation. - // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". - return Buffer.from(str.replace(nonDirectChars, function(chunk) { - return "+" + (chunk === '+' ? '' : - this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) - + "-"; - }.bind(this))); + if (this.leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + + return newBuf.slice(0, j); } -Utf7Encoder.prototype.end = function() { -} +// Export for testing +DBCSEncoder.prototype.findIdx = findIdx; -// -- Decoding +// == Decoder ================================================================== -function Utf7Decoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} +function DBCSDecoder(options, codec) { + // Decoder state + this.nodeIdx = 0; + this.prevBuf = Buffer.alloc(0); -var base64Regex = /[A-Za-z0-9\/+]/; -var base64Chars = []; -for (var i = 0; i < 256; i++) - base64Chars[i] = base64Regex.test(String.fromCharCode(i)); + // Static data + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; +} -var plusChar = '+'.charCodeAt(0), - minusChar = '-'.charCodeAt(0), - andChar = '&'.charCodeAt(0); +DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer.alloc(buf.length*2), + nodeIdx = this.nodeIdx, + prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, + seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence. + uCode; -Utf7Decoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; + if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later. + prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]); + + for (var i = 0, j = 0; i < buf.length; i++) { + var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset]; - // The decoder is more involved as we must handle chunks in stream. + // Lookup in current trie node. + var uCode = this.decodeTables[nodeIdx][curByte]; - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '+' - if (buf[i] == plusChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; + if (uCode >= 0) { + // Normal character, just use it. + } + else if (uCode === UNASSIGNED) { // Unknown char. + // TODO: Callback with seq. + //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); + i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle). + uCode = this.defaultCharUnicode.charCodeAt(0); + } + else if (uCode === GB18030_CODE) { + var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); + var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30); + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } + else if (uCode <= NODE_START) { // Go to next trie node. + nodeIdx = NODE_START - uCode; + continue; + } + else if (uCode <= SEQ_START) { // Output a sequence of chars. + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 0xFF; + newBuf[j++] = uCode >> 8; } - } else { // We decode base64. - if (!base64Chars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" - res += "+"; - } else { - var b64str = base64Accum + buf.slice(lastI, i).toString(); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } + uCode = seq[seq.length-1]; + } + else + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); - if (buf[i] != minusChar) // Minus is absorbed after base64. - i--; + // Write the character to buffer, handling higher planes using surrogate pair. + if (uCode > 0xFFFF) { + uCode -= 0x10000; + var uCodeLead = 0xD800 + Math.floor(uCode / 0x400); + newBuf[j++] = uCodeLead & 0xFF; + newBuf[j++] = uCodeLead >> 8; - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } + uCode = 0xDC00 + uCode % 0x400; } + newBuf[j++] = uCode & 0xFF; + newBuf[j++] = uCode >> 8; + + // Reset trie node. + nodeIdx = 0; seqStart = i+1; } - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + buf.slice(lastI).toString(); + this.nodeIdx = nodeIdx; + this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); + return newBuf.slice(0, j).toString('ucs2'); +} - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); +DBCSDecoder.prototype.end = function() { + var ret = ''; - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } + // Try to parse all remaining chars. + while (this.prevBuf.length > 0) { + // Skip 1 character in the buffer. + ret += this.defaultCharUnicode; + var buf = this.prevBuf.slice(1); - this.inBase64 = inBase64; - this.base64Accum = base64Accum; + // Parse remaining as usual. + this.prevBuf = Buffer.alloc(0); + this.nodeIdx = 0; + if (buf.length > 0) + ret += this.write(buf); + } - return res; + this.nodeIdx = 0; + return ret; } -Utf7Decoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); +// Binary search for GB18030. Returns largest i such that table[i] <= val. +function findIdx(table, val) { + if (table[0] > val) + return -1; - this.inBase64 = false; - this.base64Accum = ''; - return res; + var l = 0, r = table.length; + while (l < r-1) { // always table[l] <= val < table[r] + var mid = l + Math.floor((r-l+1)/2); + if (table[mid] <= val) + l = mid; + else + r = mid; + } + return l; } -// UTF-7-IMAP codec. -// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) -// Differences: -// * Base64 part is started by "&" instead of "+" -// * Direct characters are 0x20-0x7E, except "&" (0x26) -// * In Base64, "," is used instead of "/" -// * Base64 must not be used to represent direct characters. -// * No implicit shift back from Base64 (should always end with '-') -// * String must end in non-shifted position. -// * "-&" while in base64 is not allowed. +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/dbcs-codec.js","/node_modules/iconv-lite/encodings") +},{"FWaASH":50,"buffer":52,"safer-buffer":118}],78:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +// Description of supported double byte encodings and aliases. +// Tables are not require()-d until they are needed to speed up library load. +// require()-s are direct to support Browserify. -exports.utf7imap = Utf7IMAPCodec; -function Utf7IMAPCodec(codecOptions, iconv) { - this.iconv = iconv; -}; +module.exports = { + + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) -Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; -Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; -Utf7IMAPCodec.prototype.bomAware = true; + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + + 'shiftjis': { + type: '_dbcs', + table: function() { return require('./tables/shiftjis.json') }, + encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, + encodeSkipVals: [{from: 0xED40, to: 0xF940}], + }, + 'csshiftjis': 'shiftjis', + 'mskanji': 'shiftjis', + 'sjis': 'shiftjis', + 'windows31j': 'shiftjis', + 'ms31j': 'shiftjis', + 'xsjis': 'shiftjis', + 'windows932': 'shiftjis', + 'ms932': 'shiftjis', + '932': 'shiftjis', + 'cp932': 'shiftjis', + 'eucjp': { + type: '_dbcs', + table: function() { return require('./tables/eucjp.json') }, + encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, + }, -// -- Encoding + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. -function Utf7IMAPEncoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = Buffer.alloc(6); - this.base64AccumIdx = 0; -} -Utf7IMAPEncoder.prototype.write = function(str) { - var inBase64 = this.inBase64, - base64Accum = this.base64Accum, - base64AccumIdx = this.base64AccumIdx, - buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + 'gb2312': 'cp936', + 'gb231280': 'cp936', + 'gb23121980': 'cp936', + 'csgb2312': 'cp936', + 'csiso58gb231280': 'cp936', + 'euccn': 'cp936', + + // Microsoft's CP936 is a subset and approximation of GBK. + 'windows936': 'cp936', + 'ms936': 'cp936', + '936': 'cp936', + 'cp936': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json') }, + }, + + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + 'gbk': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, + }, + 'xgbk': 'gbk', + 'isoir58': 'gbk', + + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + 'gb18030': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, + gb18030: function() { return require('./tables/gb18030-ranges.json') }, + encodeSkipVals: [0x80], + encodeAdd: {'€': 0xA2E3}, + }, + + 'chinese': 'gb18030', - for (var i = 0; i < str.length; i++) { - var uChar = str.charCodeAt(i); - if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. - if (inBase64) { - if (base64AccumIdx > 0) { - bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - base64AccumIdx = 0; - } - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - inBase64 = false; - } + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + 'windows949': 'cp949', + 'ms949': 'cp949', + '949': 'cp949', + 'cp949': { + type: '_dbcs', + table: function() { return require('./tables/cp949.json') }, + }, - if (!inBase64) { - buf[bufIdx++] = uChar; // Write direct character + 'cseuckr': 'cp949', + 'csksc56011987': 'cp949', + 'euckr': 'cp949', + 'isoir149': 'cp949', + 'korean': 'cp949', + 'ksc56011987': 'cp949', + 'ksc56011989': 'cp949', + 'ksc5601': 'cp949', - if (uChar === andChar) // Ampersand -> '&-' - buf[bufIdx++] = minusChar; - } - } else { // Non-direct character - if (!inBase64) { - buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. - inBase64 = true; - } - if (inBase64) { - base64Accum[base64AccumIdx++] = uChar >> 8; - base64Accum[base64AccumIdx++] = uChar & 0xFF; + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - if (base64AccumIdx == base64Accum.length) { - bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); - base64AccumIdx = 0; - } - } - } - } + 'windows950': 'cp950', + 'ms950': 'cp950', + '950': 'cp950', + 'cp950': { + type: '_dbcs', + table: function() { return require('./tables/cp950.json') }, + }, - this.inBase64 = inBase64; - this.base64AccumIdx = base64AccumIdx; + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + 'big5': 'big5hkscs', + 'big5hkscs': { + type: '_dbcs', + table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, + encodeSkipVals: [0xa2cc], + }, - return buf.slice(0, bufIdx); -} + 'cnbig5': 'big5hkscs', + 'csbig5': 'big5hkscs', + 'xxbig5': 'big5hkscs', +}; -Utf7IMAPEncoder.prototype.end = function() { - var buf = Buffer.alloc(10), bufIdx = 0; - if (this.inBase64) { - if (this.base64AccumIdx > 0) { - bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - this.base64AccumIdx = 0; - } +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/dbcs-data.js","/node_modules/iconv-lite/encodings") +},{"./tables/big5-added.json":84,"./tables/cp936.json":85,"./tables/cp949.json":86,"./tables/cp950.json":87,"./tables/eucjp.json":88,"./tables/gb18030-ranges.json":89,"./tables/gbk-added.json":90,"./tables/shiftjis.json":91,"FWaASH":50,"buffer":52}],79:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - this.inBase64 = false; - } +// Update this array if you add/rename/remove files in this directory. +// We support Browserify by skipping automatic module discovery and requiring modules directly. +var modules = [ + require("./internal"), + require("./utf16"), + require("./utf7"), + require("./sbcs-codec"), + require("./sbcs-data"), + require("./sbcs-data-generated"), + require("./dbcs-codec"), + require("./dbcs-data"), +]; - return buf.slice(0, bufIdx); +// Put all encoding/alias/codec definitions to single object and export it. +for (var i = 0; i < modules.length; i++) { + var module = modules[i]; + for (var enc in module) + if (Object.prototype.hasOwnProperty.call(module, enc)) + exports[enc] = module[enc]; } +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/index.js","/node_modules/iconv-lite/encodings") +},{"./dbcs-codec":77,"./dbcs-data":78,"./internal":80,"./sbcs-codec":81,"./sbcs-data":83,"./sbcs-data-generated":82,"./utf16":92,"./utf7":93,"FWaASH":50,"buffer":52}],80:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; -// -- Decoding +// Export Node.js internal encodings. -function Utf7IMAPDecoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} +module.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true}, + cesu8: { type: "_internal", bomAware: true}, + unicode11utf8: "utf8", -var base64IMAPChars = base64Chars.slice(); -base64IMAPChars[','.charCodeAt(0)] = true; + ucs2: { type: "_internal", bomAware: true}, + utf16le: "ucs2", -Utf7IMAPDecoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, - // The decoder is more involved as we must handle chunks in stream. - // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). + // Codec. + _internal: InternalCodec, +}; - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '&' - if (buf[i] == andChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64IMAPChars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" - res += "&"; - } else { - var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/'); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } +//------------------------------------------------------------------------------ - if (buf[i] != minusChar) // Minus may be absorbed after base64. - i--; +function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } + if (this.enc === "base64") + this.encoder = InternalEncoderBase64; + else if (this.enc === "cesu8") { + this.enc = "utf8"; // Use utf8 for decoding. + this.encoder = InternalEncoderCesu8; + + // Add decoder for versions of Node not supporting CESU-8 + if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; } } +} - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/'); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); +InternalCodec.prototype.encoder = InternalEncoder; +InternalCodec.prototype.decoder = InternalDecoder; - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } +//------------------------------------------------------------------------------ - this.inBase64 = inBase64; - this.base64Accum = base64Accum; +// We use node.js internal decoder. Its signature is the same as ours. +var StringDecoder = require('string_decoder').StringDecoder; - return res; -} +if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. + StringDecoder.prototype.end = function() {}; -Utf7IMAPDecoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - this.inBase64 = false; - this.base64Accum = ''; - return res; +function InternalDecoder(options, codec) { + StringDecoder.call(this, codec.enc); } +InternalDecoder.prototype = StringDecoder.prototype; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/utf7.js","/node_modules/iconv-lite/encodings") -},{"buffer":57,"lYpoI2":59,"safer-buffer":110}],86:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; - -var BOMChar = '\uFEFF'; +//------------------------------------------------------------------------------ +// Encoder is mostly trivial -exports.PrependBOM = PrependBOMWrapper -function PrependBOMWrapper(encoder, options) { - this.encoder = encoder; - this.addBOM = true; +function InternalEncoder(options, codec) { + this.enc = codec.enc; } -PrependBOMWrapper.prototype.write = function(str) { - if (this.addBOM) { - str = BOMChar + str; - this.addBOM = false; - } - - return this.encoder.write(str); +InternalEncoder.prototype.write = function(str) { + return Buffer.from(str, this.enc); } -PrependBOMWrapper.prototype.end = function() { - return this.encoder.end(); +InternalEncoder.prototype.end = function() { } //------------------------------------------------------------------------------ +// Except base64 encoder, which must keep its state. -exports.StripBOM = StripBOMWrapper; -function StripBOMWrapper(decoder, options) { - this.decoder = decoder; - this.pass = false; - this.options = options || {}; +function InternalEncoderBase64(options, codec) { + this.prevStr = ''; } -StripBOMWrapper.prototype.write = function(buf) { - var res = this.decoder.write(buf); - if (this.pass || !res) - return res; - - if (res[0] === BOMChar) { - res = res.slice(1); - if (typeof this.options.stripBOM === 'function') - this.options.stripBOM(); - } +InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - (str.length % 4); + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); - this.pass = true; - return res; + return Buffer.from(str, "base64"); } -StripBOMWrapper.prototype.end = function() { - return this.decoder.end(); +InternalEncoderBase64.prototype.end = function() { + return Buffer.from(this.prevStr, "base64"); } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/bom-handling.js","/node_modules/iconv-lite/lib") -},{"buffer":57,"lYpoI2":59}],87:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("buffer").Buffer; -// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer - -// == Extend Node primitives to use iconv-lite ================================= - -module.exports = function (iconv) { - var original = undefined; // Place to keep original methods. - - // Node authors rewrote Buffer internals to make it compatible with - // Uint8Array and we cannot patch key functions since then. - // Note: this does use older Buffer API on a purpose - iconv.supportsNodeEncodingsExtension = !(new Buffer(0) instanceof Uint8Array); +//------------------------------------------------------------------------------ +// CESU-8 encoder is also special. - iconv.extendNodeEncodings = function extendNodeEncodings() { - if (original) return; - original = {}; +function InternalEncoderCesu8(options, codec) { +} - if (!iconv.supportsNodeEncodingsExtension) { - console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); - console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); - return; +InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer.alloc(str.length * 3), bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + // Naive implementation, but it works because CESU-8 is especially easy + // to convert from UTF-16 (which all JS strings are encoded in). + if (charCode < 0x80) + buf[bufIdx++] = charCode; + else if (charCode < 0x800) { + buf[bufIdx++] = 0xC0 + (charCode >>> 6); + buf[bufIdx++] = 0x80 + (charCode & 0x3f); } - - var nodeNativeEncodings = { - 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, - 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true, - }; - - Buffer.isNativeEncoding = function(enc) { - return enc && nodeNativeEncodings[enc.toLowerCase()]; + else { // charCode will always be < 0x10000 in javascript. + buf[bufIdx++] = 0xE0 + (charCode >>> 12); + buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); + buf[bufIdx++] = 0x80 + (charCode & 0x3f); } + } + return buf.slice(0, bufIdx); +} - // -- SlowBuffer ----------------------------------------------------------- - var SlowBuffer = require('buffer').SlowBuffer; - - original.SlowBufferToString = SlowBuffer.prototype.toString; - SlowBuffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); +InternalEncoderCesu8.prototype.end = function() { +} - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.SlowBufferToString.call(this, encoding, start, end); +//------------------------------------------------------------------------------ +// CESU-8 decoder is not implemented in Node v4.0+ - // Otherwise, use our decoding method. - if (typeof start == 'undefined') start = 0; - if (typeof end == 'undefined') end = this.length; - return iconv.decode(this.slice(start, end), encoding); - } +function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; +} - original.SlowBufferWrite = SlowBuffer.prototype.write; - SlowBuffer.prototype.write = function(string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; +InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, + res = ''; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 0xC0) !== 0x80) { // Leading byte + if (contBytes > 0) { // Previous code is invalid + res += this.defaultCharUnicode; + contBytes = 0; } - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } + if (curByte < 0x80) { // Single-byte code + res += String.fromCharCode(curByte); + } else if (curByte < 0xE0) { // Two-byte code + acc = curByte & 0x1F; + contBytes = 1; accBytes = 1; + } else if (curByte < 0xF0) { // Three-byte code + acc = curByte & 0x0F; + contBytes = 2; accBytes = 1; + } else { // Four or more are not supported for CESU-8. + res += this.defaultCharUnicode; } - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.SlowBufferWrite.call(this, string, offset, length, encoding); - - if (string.length > 0 && (length < 0 || offset < 0)) - throw new RangeError('attempt to write beyond buffer bounds'); - - // Otherwise, use our encoding method. - var buf = iconv.encode(string, encoding); - if (buf.length < length) length = buf.length; - buf.copy(this, offset, 0, length); - return length; - } - - // -- Buffer --------------------------------------------------------------- - - original.BufferIsEncoding = Buffer.isEncoding; - Buffer.isEncoding = function(encoding) { - return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding); - } - - original.BufferByteLength = Buffer.byteLength; - Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) { - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferByteLength.call(this, str, encoding); - - // Slow, I know, but we don't have a better way yet. - return iconv.encode(str, encoding).length; - } - - original.BufferToString = Buffer.prototype.toString; - Buffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferToString.call(this, encoding, start, end); - - // Otherwise, use our decoding method. - if (typeof start == 'undefined') start = 0; - if (typeof end == 'undefined') end = this.length; - return iconv.decode(this.slice(start, end), encoding); - } - - original.BufferWrite = Buffer.prototype.write; - Buffer.prototype.write = function(string, offset, length, encoding) { - var _offset = offset, _length = length, _encoding = encoding; - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; + } else { // Continuation byte + if (contBytes > 0) { // We're waiting for it. + acc = (acc << 6) | (curByte & 0x3f); + contBytes--; accBytes++; + if (contBytes === 0) { + // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) + if (accBytes === 2 && acc < 0x80 && acc > 0) + res += this.defaultCharUnicode; + else if (accBytes === 3 && acc < 0x800) + res += this.defaultCharUnicode; + else + // Actually add character. + res += String.fromCharCode(acc); } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; + } else { // Unexpected continuation byte + res += this.defaultCharUnicode; } + } + } + this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; + return res; +} - encoding = String(encoding || 'utf8').toLowerCase(); +InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) + res += this.defaultCharUnicode; + return res; +} - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferWrite.call(this, string, _offset, _length, _encoding); +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/internal.js","/node_modules/iconv-lite/encodings") +},{"FWaASH":50,"buffer":52,"safer-buffer":118,"string_decoder":51}],81:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } +// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that +// correspond to encoded bytes (if 128 - then lower half is ASCII). - if (string.length > 0 && (length < 0 || offset < 0)) - throw new RangeError('attempt to write beyond buffer bounds'); +exports._sbcs = SBCSCodec; +function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) + throw new Error("SBCS codec is called without the data.") + + // Prepare char buffer for decoding. + if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) + throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); + + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) + asciiString += String.fromCharCode(i); + codecOptions.chars = asciiString + codecOptions.chars; + } - // Otherwise, use our encoding method. - var buf = iconv.encode(string, encoding); - if (buf.length < length) length = buf.length; - buf.copy(this, offset, 0, length); - return length; + this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2'); + + // Encoding buffer. + var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); - // TODO: Set _charsWritten. - } + for (var i = 0; i < codecOptions.chars.length; i++) + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + this.encodeBuf = encodeBuf; +} - // -- Readable ------------------------------------------------------------- - if (iconv.supportsStreams) { - var Readable = require('stream').Readable; +SBCSCodec.prototype.encoder = SBCSEncoder; +SBCSCodec.prototype.decoder = SBCSDecoder; - original.ReadableSetEncoding = Readable.prototype.setEncoding; - Readable.prototype.setEncoding = function setEncoding(enc, options) { - // Use our own decoder, it has the same interface. - // We cannot use original function as it doesn't handle BOM-s. - this._readableState.decoder = iconv.getDecoder(enc, options); - this._readableState.encoding = enc; - } - Readable.prototype.collect = iconv._collect; - } - } +function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; +} - // Remove iconv-lite Node primitive extensions. - iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { - if (!iconv.supportsNodeEncodingsExtension) - return; - if (!original) - throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.") +SBCSEncoder.prototype.write = function(str) { + var buf = Buffer.alloc(str.length); + for (var i = 0; i < str.length; i++) + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + + return buf; +} - delete Buffer.isNativeEncoding; +SBCSEncoder.prototype.end = function() { +} - var SlowBuffer = require('buffer').SlowBuffer; - SlowBuffer.prototype.toString = original.SlowBufferToString; - SlowBuffer.prototype.write = original.SlowBufferWrite; +function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; +} - Buffer.isEncoding = original.BufferIsEncoding; - Buffer.byteLength = original.BufferByteLength; - Buffer.prototype.toString = original.BufferToString; - Buffer.prototype.write = original.BufferWrite; +SBCSDecoder.prototype.write = function(buf) { + // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. + var decodeBuf = this.decodeBuf; + var newBuf = Buffer.alloc(buf.length*2); + var idx1 = 0, idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i]*2; idx2 = i*2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2+1] = decodeBuf[idx1+1]; + } + return newBuf.toString('ucs2'); +} - if (iconv.supportsStreams) { - var Readable = require('stream').Readable; +SBCSDecoder.prototype.end = function() { +} - Readable.prototype.setEncoding = original.ReadableSetEncoding; - delete Readable.prototype.collect; - } +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-codec.js","/node_modules/iconv-lite/encodings") +},{"FWaASH":50,"buffer":52,"safer-buffer":118}],82:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - original = undefined; - } +// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. +module.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "macgreek": { + "type": "_sbcs", + "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" + }, + "maciceland": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macroman": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macromania": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macthai": { + "type": "_sbcs", + "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" + }, + "macturkish": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macukraine": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "koi8r": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8u": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8t": { + "type": "_sbcs", + "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "armscii8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" + }, + "rk1048": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "georgianps": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "pt154": { + "type": "_sbcs", + "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "viscii": { + "type": "_sbcs", + "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "hproman8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" + }, + "macintosh": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "ascii": { + "type": "_sbcs", + "chars": "��������������������������������������������������������������������������������������������������������������������������������" + }, + "tis620": { + "type": "_sbcs", + "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + } } - -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/extend-node.js","/node_modules/iconv-lite/lib") -},{"buffer":57,"lYpoI2":59,"stream":61}],88:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-data-generated.js","/node_modules/iconv-lite/encodings") +},{"FWaASH":50,"buffer":52}],83:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ "use strict"; -// Some environments don't have global Buffer (e.g. React Native). -// Solution would be installing npm modules "buffer" and "stream" explicitly. -var Buffer = require("safer-buffer").Buffer; - -var bomHandling = require("./bom-handling"), - iconv = module.exports; - -// All codecs and aliases are kept here, keyed by encoding name/alias. -// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. -iconv.encodings = null; - -// Characters emitted in case of error. -iconv.defaultCharUnicode = '�'; -iconv.defaultCharSingleByte = '?'; - -// Public API. -iconv.encode = function encode(str, encoding, options) { - str = "" + (str || ""); // Ensure string. - - var encoder = iconv.getEncoder(encoding, options); - - var res = encoder.write(str); - var trail = encoder.end(); - - return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; -} - -iconv.decode = function decode(buf, encoding, options) { - if (typeof buf === 'string') { - if (!iconv.skipDecodeWarning) { - console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); - iconv.skipDecodeWarning = true; - } - - buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. - } - - var decoder = iconv.getDecoder(encoding, options); - - var res = decoder.write(buf); - var trail = decoder.end(); - - return trail ? (res + trail) : res; -} +// Manually added data to be used by sbcs codec in addition to generated one. -iconv.encodingExists = function encodingExists(enc) { - try { - iconv.getCodec(enc); - return true; - } catch (e) { - return false; - } -} +module.exports = { + // Not supported by iconv, not sure why. + "10029": "maccenteuro", + "maccenteuro": { + "type": "_sbcs", + "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" + }, -// Legacy aliases to convert functions -iconv.toEncoding = iconv.encode; -iconv.fromEncoding = iconv.decode; + "808": "cp808", + "ibm808": "cp808", + "cp808": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " + }, -// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. -iconv._codecDataCache = {}; -iconv.getCodec = function getCodec(encoding) { - if (!iconv.encodings) - iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. - - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - var enc = iconv._canonicalizeEncoding(encoding); + "mik": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, - // Traverse iconv.encodings to find actual codec. - var codecOptions = {}; - while (true) { - var codec = iconv._codecDataCache[enc]; - if (codec) - return codec; + // Aliases of generated encodings. + "ascii8bit": "ascii", + "usascii": "ascii", + "ansix34": "ascii", + "ansix341968": "ascii", + "ansix341986": "ascii", + "csascii": "ascii", + "cp367": "ascii", + "ibm367": "ascii", + "isoir6": "ascii", + "iso646us": "ascii", + "iso646irv": "ascii", + "us": "ascii", - var codecDef = iconv.encodings[enc]; + "latin1": "iso88591", + "latin2": "iso88592", + "latin3": "iso88593", + "latin4": "iso88594", + "latin5": "iso88599", + "latin6": "iso885910", + "latin7": "iso885913", + "latin8": "iso885914", + "latin9": "iso885915", + "latin10": "iso885916", - switch (typeof codecDef) { - case "string": // Direct alias to other encoding. - enc = codecDef; - break; + "csisolatin1": "iso88591", + "csisolatin2": "iso88592", + "csisolatin3": "iso88593", + "csisolatin4": "iso88594", + "csisolatincyrillic": "iso88595", + "csisolatinarabic": "iso88596", + "csisolatingreek" : "iso88597", + "csisolatinhebrew": "iso88598", + "csisolatin5": "iso88599", + "csisolatin6": "iso885910", - case "object": // Alias with options. Can be layered. - for (var key in codecDef) - codecOptions[key] = codecDef[key]; + "l1": "iso88591", + "l2": "iso88592", + "l3": "iso88593", + "l4": "iso88594", + "l5": "iso88599", + "l6": "iso885910", + "l7": "iso885913", + "l8": "iso885914", + "l9": "iso885915", + "l10": "iso885916", - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - enc = codecDef.type; - break; + "isoir14": "iso646jp", + "isoir57": "iso646cn", + "isoir100": "iso88591", + "isoir101": "iso88592", + "isoir109": "iso88593", + "isoir110": "iso88594", + "isoir144": "iso88595", + "isoir127": "iso88596", + "isoir126": "iso88597", + "isoir138": "iso88598", + "isoir148": "iso88599", + "isoir157": "iso885910", + "isoir166": "tis620", + "isoir179": "iso885913", + "isoir199": "iso885914", + "isoir203": "iso885915", + "isoir226": "iso885916", - case "function": // Codec itself. - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; + "cp819": "iso88591", + "ibm819": "iso88591", - // The codec function must load all tables and return object with .encoder and .decoder methods. - // It'll be called only once (for each different options object). - codec = new codecDef(codecOptions, iconv); + "cyrillic": "iso88595", - iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. - return codec; + "arabic": "iso88596", + "arabic8": "iso88596", + "ecma114": "iso88596", + "asmo708": "iso88596", - default: - throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); - } - } -} + "greek" : "iso88597", + "greek8" : "iso88597", + "ecma118" : "iso88597", + "elot928" : "iso88597", -iconv._canonicalizeEncoding = function(encoding) { - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); -} + "hebrew": "iso88598", + "hebrew8": "iso88598", -iconv.getEncoder = function getEncoder(encoding, options) { - var codec = iconv.getCodec(encoding), - encoder = new codec.encoder(options, codec); + "turkish": "iso88599", + "turkish8": "iso88599", - if (codec.bomAware && options && options.addBOM) - encoder = new bomHandling.PrependBOM(encoder, options); + "thai": "iso885911", + "thai8": "iso885911", - return encoder; -} + "celtic": "iso885914", + "celtic8": "iso885914", + "isoceltic": "iso885914", -iconv.getDecoder = function getDecoder(encoding, options) { - var codec = iconv.getCodec(encoding), - decoder = new codec.decoder(options, codec); + "tis6200": "tis620", + "tis62025291": "tis620", + "tis62025330": "tis620", - if (codec.bomAware && !(options && options.stripBOM === false)) - decoder = new bomHandling.StripBOM(decoder, options); + "10000": "macroman", + "10006": "macgreek", + "10007": "maccyrillic", + "10079": "maciceland", + "10081": "macturkish", - return decoder; -} + "cspc8codepage437": "cp437", + "cspc775baltic": "cp775", + "cspc850multilingual": "cp850", + "cspcp852": "cp852", + "cspc862latinhebrew": "cp862", + "cpgr": "cp869", + "msee": "cp1250", + "mscyrl": "cp1251", + "msansi": "cp1252", + "msgreek": "cp1253", + "msturk": "cp1254", + "mshebr": "cp1255", + "msarab": "cp1256", + "winbaltrim": "cp1257", -// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json. -var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node; -if (nodeVer) { + "cp20866": "koi8r", + "20866": "koi8r", + "ibm878": "koi8r", + "cskoi8r": "koi8r", - // Load streaming support in Node v0.10+ - var nodeVerArr = nodeVer.split(".").map(Number); - if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { - require("./streams")(iconv); - } + "cp21866": "koi8u", + "21866": "koi8u", + "ibm1168": "koi8u", - // Load Node primitive extensions. - require("./extend-node")(iconv); -} + "strk10482002": "rk1048", -if ("Ā" != "\u0100") { - console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); -} + "tcvn5712": "tcvn", + "tcvn57121": "tcvn", -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/index.js","/node_modules/iconv-lite/lib") -},{"../encodings":71,"./bom-handling":86,"./extend-node":87,"./streams":89,"buffer":57,"lYpoI2":59,"safer-buffer":110}],89:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; + "gb198880": "iso646cn", + "cn": "iso646cn", -var Buffer = require("buffer").Buffer, - Transform = require("stream").Transform; + "csiso14jisc6220ro": "iso646jp", + "jisc62201969ro": "iso646jp", + "jp": "iso646jp", + "cshproman8": "hproman8", + "r8": "hproman8", + "roman8": "hproman8", + "xroman8": "hproman8", + "ibm1051": "hproman8", -// == Exports ================================================================== -module.exports = function(iconv) { - - // Additional Public API. - iconv.encodeStream = function encodeStream(encoding, options) { - return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); - } + "mac": "macintosh", + "csmacintosh": "macintosh", +}; - iconv.decodeStream = function decodeStream(encoding, options) { - return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); - } - iconv.supportsStreams = true; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-data.js","/node_modules/iconv-lite/encodings") +},{"FWaASH":50,"buffer":52}],84:[function(require,module,exports){ +module.exports=[ +["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], +["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], +["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], +["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], +["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], +["8940","𪎩𡅅"], +["8943","攊"], +["8946","丽滝鵎釟"], +["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], +["89a1","琑糼緍楆竉刧"], +["89ab","醌碸酞肼"], +["89b0","贋胶𠧧"], +["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], +["89c1","溚舾甙"], +["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], +["8a40","𧶄唥"], +["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], +["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], +["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], +["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], +["8aac","䠋𠆩㿺塳𢶍"], +["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], +["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], +["8ac9","𪘁𠸉𢫏𢳉"], +["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], +["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], +["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], +["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], +["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], +["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], +["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], +["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], +["8ca1","𣏹椙橃𣱣泿"], +["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], +["8cc9","顨杫䉶圽"], +["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], +["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], +["8d40","𠮟"], +["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], +["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], +["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], +["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], +["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], +["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], +["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], +["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], +["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], +["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], +["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], +["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], +["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], +["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], +["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], +["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], +["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], +["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], +["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], +["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], +["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], +["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], +["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], +["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], +["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], +["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], +["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], +["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], +["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], +["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], +["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], +["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], +["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], +["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], +["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], +["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], +["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], +["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], +["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], +["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], +["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], +["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], +["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], +["9fae","酙隁酜"], +["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], +["9fc1","𤤙盖鮝个𠳔莾衂"], +["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], +["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], +["9fe7","毺蠘罸"], +["9feb","嘠𪙊蹷齓"], +["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], +["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], +["a055","𡠻𦸅"], +["a058","詾𢔛"], +["a05b","惽癧髗鵄鍮鮏蟵"], +["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], +["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], +["a0a1","嵗𨯂迚𨸹"], +["a0a6","僙𡵆礆匲阸𠼻䁥"], +["a0ae","矾"], +["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], +["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], +["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], +["a3c0","␀",31,"␡"], +["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], +["c740","す",58,"ァアィイ"], +["c7a1","ゥ",81,"А",5,"ЁЖ",4], +["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], +["c8a1","龰冈龱𧘇"], +["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], +["c8f5","ʃɐɛɔɵœøŋʊɪ"], +["f9fe","■"], +["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], +["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], +["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], +["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], +["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], +["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], +["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], +["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], +["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], +["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] +] +},{}],85:[function(require,module,exports){ +module.exports=[ +["0","\u0000",127,"€"], +["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], +["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], +["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], +["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], +["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], +["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], +["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], +["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], +["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], +["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], +["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], +["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], +["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], +["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], +["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], +["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], +["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], +["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], +["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], +["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], +["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], +["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], +["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], +["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], +["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], +["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], +["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], +["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], +["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], +["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], +["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], +["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], +["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], +["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], +["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], +["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], +["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], +["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], +["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], +["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], +["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], +["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], +["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], +["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], +["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], +["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], +["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], +["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], +["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], +["9980","檧檨檪檭",114,"欥欦欨",6], +["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], +["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], +["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], +["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], +["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], +["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], +["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], +["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], +["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], +["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], +["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], +["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], +["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], +["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], +["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], +["a2a1","ⅰ",9], +["a2b1","⒈",19,"⑴",19,"①",9], +["a2e5","㈠",9], +["a2f1","Ⅰ",11], +["a3a1","!"#¥%",88," ̄"], +["a4a1","ぁ",82], +["a5a1","ァ",85], +["a6a1","Α",16,"Σ",6], +["a6c1","α",16,"σ",6], +["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], +["a6ee","︻︼︷︸︱"], +["a6f4","︳︴"], +["a7a1","А",5,"ЁЖ",25], +["a7d1","а",5,"ёж",25], +["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], +["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], +["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], +["a8bd","ńň"], +["a8c0","ɡ"], +["a8c5","ㄅ",36], +["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], +["a959","℡㈱"], +["a95c","‐"], +["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], +["a980","﹢",4,"﹨﹩﹪﹫"], +["a996","〇"], +["a9a4","─",75], +["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], +["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], +["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], +["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], +["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], +["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], +["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], +["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], +["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], +["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], +["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], +["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], +["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], +["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], +["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], +["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], +["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], +["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], +["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], +["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], +["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], +["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], +["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], +["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], +["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], +["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], +["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], +["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], +["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], +["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], +["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], +["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], +["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], +["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], +["bb40","籃",9,"籎",36,"籵",5,"籾",9], +["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], +["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], +["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], +["bd40","紷",54,"絯",7], +["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], +["be40","継",12,"綧",6,"綯",42], +["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], +["bf40","緻",62], +["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], +["c040","繞",35,"纃",23,"纜纝纞"], +["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], +["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], +["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], +["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], +["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], +["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], +["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], +["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], +["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], +["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], +["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], +["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], +["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], +["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], +["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], +["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], +["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], +["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], +["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], +["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], +["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], +["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], +["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], +["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], +["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], +["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], +["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], +["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], +["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], +["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], +["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], +["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], +["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], +["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], +["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], +["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], +["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], +["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], +["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], +["d440","訞",31,"訿",8,"詉",21], +["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], +["d540","誁",7,"誋",7,"誔",46], +["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], +["d640","諤",34,"謈",27], +["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], +["d740","譆",31,"譧",4,"譭",25], +["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], +["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], +["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], +["d940","貮",62], +["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], +["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], +["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], +["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], +["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], +["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], +["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], +["dd40","軥",62], +["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], +["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], +["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], +["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], +["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], +["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], +["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], +["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], +["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], +["e240","釦",62], +["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], +["e340","鉆",45,"鉵",16], +["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], +["e440","銨",5,"銯",24,"鋉",31], +["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], +["e540","錊",51,"錿",10], +["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], +["e640","鍬",34,"鎐",27], +["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], +["e740","鏎",7,"鏗",54], +["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], +["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], +["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], +["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], +["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], +["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], +["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], +["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], +["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], +["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], +["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], +["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], +["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], +["ee40","頏",62], +["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], +["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], +["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], +["f040","餈",4,"餎餏餑",28,"餯",26], +["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], +["f140","馌馎馚",10,"馦馧馩",47], +["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], +["f240","駺",62], +["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], +["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], +["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], +["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], +["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], +["f540","魼",62], +["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], +["f640","鯜",62], +["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], +["f740","鰼",62], +["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], +["f840","鳣",62], +["f880","鴢",32], +["f940","鵃",62], +["f980","鶂",32], +["fa40","鶣",62], +["fa80","鷢",32], +["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], +["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], +["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], +["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], +["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], +["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], +["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] +] - // Not published yet. - iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; - iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; - iconv._collect = IconvLiteDecoderStream.prototype.collect; -}; +},{}],86:[function(require,module,exports){ +module.exports=[ +["0","\u0000",127], +["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], +["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], +["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], +["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], +["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], +["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], +["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], +["8361","긝",18,"긲긳긵긶긹긻긼"], +["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], +["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], +["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], +["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], +["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], +["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], +["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], +["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], +["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], +["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], +["8741","놞",9,"놩",15], +["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], +["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], +["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], +["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], +["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], +["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], +["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], +["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], +["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], +["8a61","둧",4,"둭",18,"뒁뒂"], +["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], +["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], +["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], +["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], +["8c41","똀",15,"똒똓똕똖똗똙",4], +["8c61","똞",6,"똦",5,"똭",6,"똵",5], +["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], +["8d41","뛃",16,"뛕",8], +["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], +["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], +["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], +["8e61","럂",4,"럈럊",19], +["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], +["8f41","뢅",7,"뢎",17], +["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], +["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], +["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], +["9061","륾",5,"릆릈릋릌릏",15], +["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], +["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], +["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], +["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], +["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], +["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], +["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], +["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], +["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], +["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], +["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], +["9461","봞",5,"봥",6,"봭",12], +["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], +["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], +["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], +["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], +["9641","뺸",23,"뻒뻓"], +["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], +["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], +["9741","뾃",16,"뾕",8], +["9761","뾞",17,"뾱",7], +["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], +["9841","쁀",16,"쁒",5,"쁙쁚쁛"], +["9861","쁝쁞쁟쁡",6,"쁪",15], +["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], +["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], +["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], +["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], +["9a41","숤숥숦숧숪숬숮숰숳숵",16], +["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], +["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], +["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], +["9b61","쌳",17,"썆",7], +["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], +["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], +["9c61","쏿",8,"쐉",6,"쐑",9], +["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], +["9d41","쒪",13,"쒹쒺쒻쒽",8], +["9d61","쓆",25], +["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], +["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], +["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], +["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], +["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], +["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], +["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], +["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], +["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], +["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], +["a141","좥좦좧좩",18,"좾좿죀죁"], +["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], +["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], +["a241","줐줒",5,"줙",18], +["a261","줭",6,"줵",18], +["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], +["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], +["a361","즑",6,"즚즜즞",16], +["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], +["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], +["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], +["a481","쨦쨧쨨쨪",28,"ㄱ",93], +["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], +["a561","쩫",17,"쩾",5,"쪅쪆"], +["a581","쪇",16,"쪙",14,"ⅰ",9], +["a5b0","Ⅰ",9], +["a5c1","Α",16,"Σ",6], +["a5e1","α",16,"σ",6], +["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], +["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], +["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], +["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], +["a761","쬪",22,"쭂쭃쭄"], +["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], +["a841","쭭",10,"쭺",14], +["a861","쮉",18,"쮝",6], +["a881","쮤",19,"쮹",11,"ÆÐªĦ"], +["a8a6","IJ"], +["a8a8","ĿŁØŒºÞŦŊ"], +["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], +["a941","쯅",14,"쯕",10], +["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], +["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], +["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], +["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], +["aa81","챳챴챶",29,"ぁ",82], +["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], +["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], +["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], +["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], +["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], +["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], +["acd1","а",5,"ёж",25], +["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], +["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], +["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], +["ae41","췆",5,"췍췎췏췑",16], +["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], +["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], +["af41","츬츭츮츯츲츴츶",19], +["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], +["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], +["b041","캚",5,"캢캦",5,"캮",12], +["b061","캻",5,"컂",19], +["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], +["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], +["b161","켥",6,"켮켲",5,"켹",11], +["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], +["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], +["b261","쾎",18,"쾢",5,"쾩"], +["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], +["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], +["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], +["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], +["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], +["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], +["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], +["b541","킕",14,"킦킧킩킪킫킭",5], +["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], +["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], +["b641","턅",7,"턎",17], +["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], +["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], +["b741","텮",13,"텽",6,"톅톆톇톉톊"], +["b761","톋",20,"톢톣톥톦톧"], +["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], +["b841","퇐",7,"퇙",17], +["b861","퇫",8,"퇵퇶퇷퇹",13], +["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], +["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], +["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], +["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], +["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], +["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], +["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], +["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], +["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], +["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], +["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], +["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], +["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], +["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], +["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], +["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], +["be41","퐸",7,"푁푂푃푅",14], +["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], +["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], +["bf41","풞",10,"풪",14], +["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], +["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], +["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], +["c061","픞",25], +["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], +["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], +["c161","햌햍햎햏햑",19,"햦햧"], +["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], +["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], +["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], +["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], +["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], +["c361","홢",4,"홨홪",5,"홲홳홵",11], +["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], +["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], +["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], +["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], +["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], +["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], +["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], +["c641","힍힎힏힑",6,"힚힜힞",5], +["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], +["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], +["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], +["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], +["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], +["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], +["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], +["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], +["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], +["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], +["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], +["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], +["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], +["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], +["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], +["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], +["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], +["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], +["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], +["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], +["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], +["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], +["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], +["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], +["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], +["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], +["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], +["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], +["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], +["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], +["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], +["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], +["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], +["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], +["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], +["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], +["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], +["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], +["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], +["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], +["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], +["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], +["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], +["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], +["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], +["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], +["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], +["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], +["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], +["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], +["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], +["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], +["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], +["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], +["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] +] +},{}],87:[function(require,module,exports){ +module.exports=[ +["0","\u0000",127], +["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], +["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], +["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], +["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], +["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], +["a3a1","ㄐ",25,"˙ˉˊˇˋ"], +["a3e1","€"], +["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], +["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], +["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], +["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], +["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], +["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], +["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], +["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], +["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], +["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], +["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], +["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], +["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], +["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], +["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], +["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], +["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], +["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], +["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], +["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], +["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], +["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], +["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], +["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], +["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], +["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], +["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], +["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], +["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], +["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], +["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], +["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], +["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], +["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], +["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], +["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], +["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], +["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], +["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], +["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], +["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], +["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], +["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], +["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], +["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], +["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], +["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], +["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], +["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], +["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], +["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], +["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], +["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], +["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], +["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], +["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], +["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], +["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], +["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], +["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], +["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], +["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], +["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], +["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], +["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], +["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], +["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], +["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], +["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], +["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], +["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], +["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], +["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], +["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], +["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], +["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], +["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], +["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], +["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], +["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], +["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], +["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], +["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], +["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], +["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], +["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], +["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], +["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], +["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], +["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], +["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], +["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], +["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], +["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], +["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], +["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], +["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], +["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], +["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], +["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], +["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], +["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], +["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], +["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], +["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], +["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], +["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], +["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], +["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], +["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], +["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], +["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], +["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], +["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], +["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], +["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], +["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], +["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], +["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], +["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], +["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], +["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], +["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], +["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], +["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], +["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], +["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], +["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], +["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], +["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], +["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], +["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], +["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], +["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], +["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], +["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], +["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], +["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], +["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], +["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], +["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], +["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], +["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], +["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], +["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], +["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], +["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], +["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], +["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], +["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], +["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], +["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], +["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], +["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], +["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], +["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], +["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], +["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], +["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], +["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], +["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], +["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], +["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], +["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], +["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], +["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], +["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] +] -// == Encoder stream ======================================================= -function IconvLiteEncoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.decodeStrings = false; // We accept only strings, so we don't need to decode them. - Transform.call(this, options); -} +},{}],88:[function(require,module,exports){ +module.exports=[ +["0","\u0000",127], +["8ea1","。",62], +["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], +["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], +["a2ba","∈∋⊆⊇⊂⊃∪∩"], +["a2ca","∧∨¬⇒⇔∀∃"], +["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], +["a2f2","ʼn♯♭♪†‡¶"], +["a2fe","◯"], +["a3b0","0",9], +["a3c1","A",25], +["a3e1","a",25], +["a4a1","ぁ",82], +["a5a1","ァ",85], +["a6a1","Α",16,"Σ",6], +["a6c1","α",16,"σ",6], +["a7a1","А",5,"ЁЖ",25], +["a7d1","а",5,"ёж",25], +["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], +["ada1","①",19,"Ⅰ",9], +["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], +["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], +["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], +["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], +["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], +["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], +["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], +["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], +["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], +["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], +["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], +["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], +["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], +["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], +["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], +["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], +["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], +["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], +["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], +["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], +["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], +["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], +["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], +["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], +["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], +["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], +["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], +["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], +["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], +["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], +["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], +["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], +["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], +["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], +["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], +["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], +["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], +["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], +["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], +["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], +["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], +["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], +["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], +["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], +["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], +["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], +["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], +["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], +["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], +["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], +["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], +["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], +["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], +["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], +["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], +["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], +["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], +["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], +["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], +["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], +["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], +["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], +["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], +["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], +["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], +["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], +["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], +["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], +["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], +["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], +["f4a1","堯槇遙瑤凜熙"], +["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], +["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], +["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], +["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], +["fcf1","ⅰ",9,"¬¦'""], +["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], +["8fa2c2","¡¦¿"], +["8fa2eb","ºª©®™¤№"], +["8fa6e1","ΆΈΉΊΪ"], +["8fa6e7","Ό"], +["8fa6e9","ΎΫ"], +["8fa6ec","Ώ"], +["8fa6f1","άέήίϊΐόςύϋΰώ"], +["8fa7c2","Ђ",10,"ЎЏ"], +["8fa7f2","ђ",10,"ўџ"], +["8fa9a1","ÆĐ"], +["8fa9a4","Ħ"], +["8fa9a6","IJ"], +["8fa9a8","ŁĿ"], +["8fa9ab","ŊØŒ"], +["8fa9af","ŦÞ"], +["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], +["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], +["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], +["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], +["8fabbd","ġĥíìïîǐ"], +["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], +["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], +["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], +["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], +["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], +["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], +["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], +["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], +["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], +["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], +["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], +["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], +["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], +["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], +["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], +["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], +["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], +["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], +["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], +["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], +["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], +["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], +["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], +["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], +["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], +["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], +["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], +["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], +["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], +["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], +["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], +["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], +["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], +["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], +["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], +["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], +["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], +["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], +["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], +["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], +["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], +["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], +["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], +["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], +["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], +["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], +["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], +["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], +["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], +["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], +["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], +["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], +["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], +["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], +["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], +["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], +["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], +["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], +["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], +["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], +["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], +["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], +["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] +] -IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteEncoderStream } -}); +},{}],89:[function(require,module,exports){ +module.exports={"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} +},{}],90:[function(require,module,exports){ +module.exports=[ +["a140","",62], +["a180","",32], +["a240","",62], +["a280","",32], +["a2ab","",5], +["a2e3","€"], +["a2ef",""], +["a2fd",""], +["a340","",62], +["a380","",31," "], +["a440","",62], +["a480","",32], +["a4f4","",10], +["a540","",62], +["a580","",32], +["a5f7","",7], +["a640","",62], +["a680","",32], +["a6b9","",7], +["a6d9","",6], +["a6ec",""], +["a6f3",""], +["a6f6","",8], +["a740","",62], +["a780","",32], +["a7c2","",14], +["a7f2","",12], +["a896","",10], +["a8bc",""], +["a8bf","ǹ"], +["a8c1",""], +["a8ea","",20], +["a958",""], +["a95b",""], +["a95d",""], +["a989","〾⿰",11], +["a997","",12], +["a9f0","",14], +["aaa1","",93], +["aba1","",93], +["aca1","",93], +["ada1","",93], +["aea1","",93], +["afa1","",93], +["d7fa","",4], +["f8a1","",93], +["f9a1","",93], +["faa1","",93], +["fba1","",93], +["fca1","",93], +["fda1","",93], +["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], +["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93] +] -IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { - if (typeof chunk != 'string') - return done(new Error("Iconv encoding stream needs strings as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } -} +},{}],91:[function(require,module,exports){ +module.exports=[ +["0","\u0000",128], +["a1","。",62], +["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], +["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], +["81b8","∈∋⊆⊇⊂⊃∪∩"], +["81c8","∧∨¬⇒⇔∀∃"], +["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], +["81f0","ʼn♯♭♪†‡¶"], +["81fc","◯"], +["824f","0",9], +["8260","A",25], +["8281","a",25], +["829f","ぁ",82], +["8340","ァ",62], +["8380","ム",22], +["839f","Α",16,"Σ",6], +["83bf","α",16,"σ",6], +["8440","А",5,"ЁЖ",25], +["8470","а",5,"ёж",7], +["8480","о",17], +["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], +["8740","①",19,"Ⅰ",9], +["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], +["877e","㍻"], +["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], +["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], +["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], +["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], +["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], +["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], +["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], +["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], +["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], +["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], +["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], +["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], +["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], +["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], +["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], +["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], +["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], +["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], +["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], +["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], +["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], +["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], +["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], +["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], +["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], +["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], +["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], +["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], +["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], +["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], +["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], +["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], +["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], +["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], +["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], +["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], +["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], +["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], +["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], +["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], +["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], +["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], +["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], +["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], +["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], +["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], +["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], +["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], +["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], +["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], +["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], +["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], +["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], +["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], +["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], +["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], +["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], +["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], +["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], +["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], +["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], +["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], +["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], +["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], +["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], +["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], +["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], +["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], +["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], +["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], +["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], +["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], +["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], +["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], +["eeef","ⅰ",9,"¬¦'""], +["f040","",62], +["f080","",124], +["f140","",62], +["f180","",124], +["f240","",62], +["f280","",124], +["f340","",62], +["f380","",124], +["f440","",62], +["f480","",124], +["f540","",62], +["f580","",124], +["f640","",62], +["f680","",124], +["f740","",62], +["f780","",124], +["f840","",62], +["f880","",124], +["f940",""], +["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], +["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], +["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], +["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], +["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] +] -IconvLiteEncoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } -} +},{}],92:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; -IconvLiteEncoderStream.prototype.collect = function(cb) { - var chunks = []; - this.on('error', cb); - this.on('data', function(chunk) { chunks.push(chunk); }); - this.on('end', function() { - cb(null, Buffer.concat(chunks)); - }); - return this; -} +// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js +// == UTF16-BE codec. ========================================================== -// == Decoder stream ======================================================= -function IconvLiteDecoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.encoding = this.encoding = 'utf8'; // We output strings. - Transform.call(this, options); +exports.utf16be = Utf16BECodec; +function Utf16BECodec() { } -IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteDecoderStream } -}); +Utf16BECodec.prototype.encoder = Utf16BEEncoder; +Utf16BECodec.prototype.decoder = Utf16BEDecoder; +Utf16BECodec.prototype.bomAware = true; -IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { - if (!Buffer.isBuffer(chunk)) - return done(new Error("Iconv decoding stream needs buffers as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } + +// -- Encoding + +function Utf16BEEncoder() { } -IconvLiteDecoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); +Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer.from(str, 'ucs2'); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; } + return buf; } -IconvLiteDecoderStream.prototype.collect = function(cb) { - var res = ''; - this.on('error', cb); - this.on('data', function(chunk) { res += chunk; }); - this.on('end', function() { - cb(null, res); - }); - return this; +Utf16BEEncoder.prototype.end = function() { } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/streams.js","/node_modules/iconv-lite/lib") -},{"buffer":57,"lYpoI2":59,"stream":61}],90:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] - - i += d - - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} +// -- Decoding - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +function Utf16BEDecoder() { + this.overflowByte = -1; } -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 +Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) + return ''; - value = Math.abs(value) + var buf2 = Buffer.alloc(buf.length + 1), + i = 0, j = 0; - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; j = 2; } - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 + for (; i < buf.length-1; i += 2, j+= 2) { + buf2[j] = buf[i+1]; + buf2[j+1] = buf[i]; } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; - buffer[offset + i - d] |= s * 128 + return buf2.slice(0, j).toString('ucs2'); } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ieee754/index.js","/node_modules/ieee754") -},{"buffer":57,"lYpoI2":59}],91:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } +Utf16BEDecoder.prototype.end = function() { } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/inherits/inherits_browser.js","/node_modules/inherits") -},{"buffer":57,"lYpoI2":59}],92:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -'use strict'; - -var traverse = module.exports = function (schema, opts, cb) { - // Legacy support for v0.3.1 and earlier. - if (typeof opts == 'function') { - cb = opts; - opts = {}; - } - - cb = opts.cb || cb; - var pre = (typeof cb == 'function') ? cb : cb.pre || function() {}; - var post = cb.post || function() {}; - - _traverse(opts, pre, post, schema, '', schema); -}; +// == UTF-16 codec ============================================================= +// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. +// Defaults to UTF-16LE, as it's prevalent and default in Node. +// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le +// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); -traverse.keywords = { - additionalItems: true, - items: true, - contains: true, - additionalProperties: true, - propertyNames: true, - not: true -}; +// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). -traverse.arrayKeywords = { - items: true, - allOf: true, - anyOf: true, - oneOf: true -}; +exports.utf16 = Utf16Codec; +function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; +} -traverse.propsKeywords = { - definitions: true, - properties: true, - patternProperties: true, - dependencies: true -}; +Utf16Codec.prototype.encoder = Utf16Encoder; +Utf16Codec.prototype.decoder = Utf16Decoder; -traverse.skipKeywords = { - default: true, - enum: true, - const: true, - required: true, - maximum: true, - minimum: true, - exclusiveMaximum: true, - exclusiveMinimum: true, - multipleOf: true, - maxLength: true, - minLength: true, - pattern: true, - format: true, - maxItems: true, - minItems: true, - uniqueItems: true, - maxProperties: true, - minProperties: true -}; +// -- Encoding (pass-through) -function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { - if (schema && typeof schema == 'object' && !Array.isArray(schema)) { - pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); - for (var key in schema) { - var sch = schema[key]; - if (Array.isArray(sch)) { - if (key in traverse.arrayKeywords) { - for (var i=0; i - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint bitwise:true plusplus:true */ -/*global esprima:true, define:true, exports:true, window: true, -throwErrorTolerant: true, -throwError: true, generateStatement: true, peek: true, -parseAssignmentExpression: true, parseBlock: true, parseExpression: true, -parseFunctionDeclaration: true, parseFunctionExpression: true, -parseFunctionSourceElements: true, parseVariableIdentifier: true, -parseLeftHandSideExpression: true, -parseUnaryExpression: true, -parseStatement: true, parseSourceElement: true */ - -(function (root, factory) { - 'use strict'; - - // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, - // Rhino, and plain browser loading. - - /* istanbul ignore next */ - if (typeof define === 'function' && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { - factory((root.esprima = {})); - } -}(this, function (exports) { - 'use strict'; - - var Token, - TokenName, - FnExprTokens, - Syntax, - PropertyKind, - Messages, - Regex, - SyntaxTreeDelegate, - source, - strict, - index, - lineNumber, - lineStart, - length, - delegate, - lookahead, - state, - extra; - - Token = { - BooleanLiteral: 1, - EOF: 2, - Identifier: 3, - Keyword: 4, - NullLiteral: 5, - NumericLiteral: 6, - Punctuator: 7, - StringLiteral: 8, - RegularExpression: 9 - }; - - TokenName = {}; - TokenName[Token.BooleanLiteral] = 'Boolean'; - TokenName[Token.EOF] = ''; - TokenName[Token.Identifier] = 'Identifier'; - TokenName[Token.Keyword] = 'Keyword'; - TokenName[Token.NullLiteral] = 'Null'; - TokenName[Token.NumericLiteral] = 'Numeric'; - TokenName[Token.Punctuator] = 'Punctuator'; - TokenName[Token.StringLiteral] = 'String'; - TokenName[Token.RegularExpression] = 'RegularExpression'; - - // A function following one of those tokens is an expression. - FnExprTokens = ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new', - 'return', 'case', 'delete', 'throw', 'void', - // assignment operators - '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '>>>=', - '&=', '|=', '^=', ',', - // binary/unary operators - '+', '-', '*', '/', '%', '++', '--', '<<', '>>', '>>>', '&', - '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=', - '<=', '<', '>', '!=', '!==']; - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - }; - - PropertyKind = { - Data: 1, - Get: 2, - Set: 4 - }; - - // Error messages should be identical to V8. - Messages = { - UnexpectedToken: 'Unexpected token %0', - UnexpectedNumber: 'Unexpected number', - UnexpectedString: 'Unexpected string', - UnexpectedIdentifier: 'Unexpected identifier', - UnexpectedReserved: 'Unexpected reserved word', - UnexpectedEOS: 'Unexpected end of input', - NewlineAfterThrow: 'Illegal newline after throw', - InvalidRegExp: 'Invalid regular expression', - UnterminatedRegExp: 'Invalid regular expression: missing /', - InvalidLHSInAssignment: 'Invalid left-hand side in assignment', - InvalidLHSInForIn: 'Invalid left-hand side in for-in', - MultipleDefaultsInSwitch: 'More than one default clause in switch statement', - NoCatchOrFinally: 'Missing catch or finally after try', - UnknownLabel: 'Undefined label \'%0\'', - Redeclaration: '%0 \'%1\' has already been declared', - IllegalContinue: 'Illegal continue statement', - IllegalBreak: 'Illegal break statement', - IllegalReturn: 'Illegal return statement', - StrictModeWith: 'Strict mode code may not include a with statement', - StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', - StrictVarName: 'Variable name may not be eval or arguments in strict mode', - StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', - StrictParamDupe: 'Strict mode function may not have duplicate parameter names', - StrictFunctionName: 'Function name may not be eval or arguments in strict mode', - StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', - StrictDelete: 'Delete of an unqualified identifier in strict mode.', - StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', - AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', - AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', - StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', - StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', - StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', - StrictReservedWord: 'Use of future reserved word in strict mode' - }; - - // See also tools/generate-unicode-regex.py. - Regex = { - NonAsciiIdentifierStart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'), - NonAsciiIdentifierPart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]') - }; - - // Ensure the condition is true, otherwise throw an error. - // This is only to have a better contract semantic, i.e. another safety net - // to catch a logic error. The condition shall be fulfilled in normal case. - // Do NOT use this to enforce a certain condition on any user input. - - function assert(condition, message) { - /* istanbul ignore if */ - if (!condition) { - throw new Error('ASSERT: ' + message); - } - } +Utf16Encoder.prototype.end = function() { + return this.encoder.end(); +} - function isDecimalDigit(ch) { - return (ch >= 48 && ch <= 57); // 0..9 - } - function isHexDigit(ch) { - return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; - } +// -- Decoding - function isOctalDigit(ch) { - return '01234567'.indexOf(ch) >= 0; - } +function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBytes = []; + this.initialBytesLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; +} - // 7.2 White Space +Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + // Codec is not chosen yet. Accumulate initial bytes. + this.initialBytes.push(buf); + this.initialBytesLen += buf.length; + + if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below) + return ''; - function isWhiteSpace(ch) { - return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) || - (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0); + // We have enough bytes -> detect endianness. + var buf = Buffer.concat(this.initialBytes), + encoding = detectEncoding(buf, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + this.initialBytes.length = this.initialBytesLen = 0; } - // 7.3 Line Terminators + return this.decoder.write(buf); +} - function isLineTerminator(ch) { - return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029); - } +Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var buf = Buffer.concat(this.initialBytes), + encoding = detectEncoding(buf, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); - // 7.6 Identifier Names and Identifiers + var res = this.decoder.write(buf), + trail = this.decoder.end(); - function isIdentifierStart(ch) { - return (ch == 0x40) || (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) - (ch >= 0x41 && ch <= 0x5A) || // A..Z - (ch >= 0x61 && ch <= 0x7A) || // a..z - (ch === 0x5C) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); + return trail ? (res + trail) : res; } + return this.decoder.end(); +} - function isIdentifierPart(ch) { - return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) - (ch >= 0x41 && ch <= 0x5A) || // A..Z - (ch >= 0x61 && ch <= 0x7A) || // a..z - (ch >= 0x30 && ch <= 0x39) || // 0..9 - (ch === 0x5C) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); - } +function detectEncoding(buf, defaultEncoding) { + var enc = defaultEncoding || 'utf-16le'; - // 7.6.1.2 Future Reserved Words + if (buf.length >= 2) { + // Check BOM. + if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM + enc = 'utf-16be'; + else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM + enc = 'utf-16le'; + else { + // No BOM found. Try to deduce encoding from initial content. + // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. + // So, we count ASCII as if it was LE or BE, and decide from that. + var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions + _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even. - function isFutureReservedWord(id) { - switch (id) { - case 'class': - case 'enum': - case 'export': - case 'extends': - case 'import': - case 'super': - return true; - default: - return false; - } - } + for (var i = 0; i < _len; i += 2) { + if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++; + if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++; + } - function isStrictModeReservedWord(id) { - switch (id) { - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'yield': - case 'let': - return true; - default: - return false; + if (asciiCharsBE > asciiCharsLE) + enc = 'utf-16be'; + else if (asciiCharsBE < asciiCharsLE) + enc = 'utf-16le'; } } - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } + return enc; +} - // 7.6.1.1 Keywords - function isKeyword(id) { - if (strict && isStrictModeReservedWord(id)) { - return true; - } - // 'const' is specialized as Keyword in V8. - // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next. - // Some others are from future reserved words. +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/utf16.js","/node_modules/iconv-lite/encodings") +},{"FWaASH":50,"buffer":52,"safer-buffer":118}],93:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; - switch (id.length) { - case 2: - return (id === 'if') || (id === 'in') || (id === 'do'); - case 3: - return (id === 'var') || (id === 'for') || (id === 'new') || - (id === 'try') || (id === 'let'); - case 4: - return (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum'); - case 5: - return (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || - (id === 'class') || (id === 'super'); - case 6: - return (id === 'return') || (id === 'typeof') || (id === 'delete') || - (id === 'switch') || (id === 'export') || (id === 'import'); - case 7: - return (id === 'default') || (id === 'finally') || (id === 'extends'); - case 8: - return (id === 'function') || (id === 'continue') || (id === 'debugger'); - case 10: - return (id === 'instanceof'); - default: - return false; - } - } +// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 +// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 - // 7.4 Comments +exports.utf7 = Utf7Codec; +exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 +function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; +}; - function addComment(type, value, start, end, loc) { - var comment, attacher; +Utf7Codec.prototype.encoder = Utf7Encoder; +Utf7Codec.prototype.decoder = Utf7Decoder; +Utf7Codec.prototype.bomAware = true; - assert(typeof start === 'number', 'Comment must have valid position'); - // Because the way the actual token is scanned, often the comments - // (if any) are skipped twice during the lexical analysis. - // Thus, we need to skip adding a comment if the comment array already - // handled it. - if (state.lastCommentStart >= start) { - return; - } - state.lastCommentStart = start; +// -- Encoding - comment = { - type: type, - value: value - }; - if (extra.range) { - comment.range = [start, end]; - } - if (extra.loc) { - comment.loc = loc; - } - extra.comments.push(comment); - if (extra.attachComment) { - extra.leadingComments.push(comment); - extra.trailingComments.push(comment); - } - } +var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; - function skipSingleLineComment(offset) { - var start, loc, ch, comment; +function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; +} - start = index - offset; - loc = { - start: { - line: lineNumber, - column: index - lineStart - offset - } - }; +Utf7Encoder.prototype.write = function(str) { + // Naive implementation. + // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". + return Buffer.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === '+' ? '' : + this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) + + "-"; + }.bind(this))); +} - while (index < length) { - ch = source.charCodeAt(index); - ++index; - if (isLineTerminator(ch)) { - if (extra.comments) { - comment = source.slice(start + offset, index - 1); - loc.end = { - line: lineNumber, - column: index - lineStart - 1 - }; - addComment('Line', comment, start, index - 1, loc); - } - if (ch === 13 && source.charCodeAt(index) === 10) { - ++index; - } - ++lineNumber; - lineStart = index; - return; - } - } +Utf7Encoder.prototype.end = function() { +} - if (extra.comments) { - comment = source.slice(start + offset, index); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Line', comment, start, index, loc); - } - } - function skipMultiLineComment() { - var start, loc, ch, comment; +// -- Decoding - if (extra.comments) { - start = index - 2; - loc = { - start: { - line: lineNumber, - column: index - lineStart - 2 - } - }; - } +function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ''; +} - while (index < length) { - ch = source.charCodeAt(index); - if (isLineTerminator(ch)) { - if (ch === 0x0D && source.charCodeAt(index + 1) === 0x0A) { - ++index; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else if (ch === 0x2A) { - // Block comment ends with '*/'. - if (source.charCodeAt(index + 1) === 0x2F) { - ++index; - ++index; - if (extra.comments) { - comment = source.slice(start + 2, index - 2); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Block', comment, start, index, loc); - } - return; - } - ++index; - } else { - ++index; - } - } +var base64Regex = /[A-Za-z0-9\/+]/; +var base64Chars = []; +for (var i = 0; i < 256; i++) + base64Chars[i] = base64Regex.test(String.fromCharCode(i)); - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } +var plusChar = '+'.charCodeAt(0), + minusChar = '-'.charCodeAt(0), + andChar = '&'.charCodeAt(0); - function skipComment() { - var ch, start; +Utf7Decoder.prototype.write = function(buf) { + var res = "", lastI = 0, + inBase64 = this.inBase64, + base64Accum = this.base64Accum; - start = (index === 0); - while (index < length) { - ch = source.charCodeAt(index); + // The decoder is more involved as we must handle chunks in stream. - if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === 0x0D && source.charCodeAt(index) === 0x0A) { - ++index; - } - ++lineNumber; - lineStart = index; - start = true; - } else if (ch === 0x2F) { // U+002F is '/' - ch = source.charCodeAt(index + 1); - if (ch === 0x2F) { - ++index; - ++index; - skipSingleLineComment(2); - start = true; - } else if (ch === 0x2A) { // U+002A is '*' - ++index; - ++index; - skipMultiLineComment(); - } else { - break; - } - } else if (start && ch === 0x2D) { // U+002D is '-' - // U+003E is '>' - if ((source.charCodeAt(index + 1) === 0x2D) && (source.charCodeAt(index + 2) === 0x3E)) { - // '-->' is a single-line comment - index += 3; - skipSingleLineComment(3); - } else { - break; - } - } else if (ch === 0x3C) { // U+003C is '<' - if (source.slice(index + 1, index + 4) === '!--') { - ++index; // `<` - ++index; // `!` - ++index; // `-` - ++index; // `-` - skipSingleLineComment(4); + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '+' + if (buf[i] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. + lastI = i+1; + inBase64 = true; + } + } else { // We decode base64. + if (!base64Chars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" + res += "+"; } else { - break; + var b64str = base64Accum + buf.slice(lastI, i).toString(); + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); } - } else { - break; - } - } - } - function scanHexEscape(prefix) { - var i, len, ch, code = 0; + if (buf[i] != minusChar) // Minus is absorbed after base64. + i--; - len = (prefix === 'u') ? 4 : 2; - for (i = 0; i < len; ++i) { - if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); - } else { - return ''; + lastI = i+1; + inBase64 = false; + base64Accum = ''; } } - return String.fromCharCode(code); } - function getEscapedIdentifier() { - var ch, id; - - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); - - // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - ++index; - ch = scanHexEscape('u'); - if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - id = ch; - } - - while (index < length) { - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) { - break; - } - ++index; - id += String.fromCharCode(ch); + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. + } else { + var b64str = base64Accum + buf.slice(lastI).toString(); - // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - ++index; - ch = scanHexEscape('u'); - if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - id += ch; - } - } + var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded); - return id; + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); } - function getIdentifier() { - var start, ch; + this.inBase64 = inBase64; + this.base64Accum = base64Accum; - start = index++; - while (index < length) { - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); - } - if (isIdentifierPart(ch)) { - ++index; - } else { - break; - } - } + return res; +} - return source.slice(start, index); - } +Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - function scanIdentifier() { - var start, id, type; + this.inBase64 = false; + this.base64Accum = ''; + return res; +} - start = index; - // Backslash (U+005C) starts an escaped character. - id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier(); +// UTF-7-IMAP codec. +// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) +// Differences: +// * Base64 part is started by "&" instead of "+" +// * Direct characters are 0x20-0x7E, except "&" (0x26) +// * In Base64, "," is used instead of "/" +// * Base64 must not be used to represent direct characters. +// * No implicit shift back from Base64 (should always end with '-') +// * String must end in non-shifted position. +// * "-&" while in base64 is not allowed. - // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) { - type = Token.Identifier; - } else if (isKeyword(id)) { - type = Token.Keyword; - } else if (id === 'null') { - type = Token.NullLiteral; - } else if (id === 'true' || id === 'false') { - type = Token.BooleanLiteral; - } else { - type = Token.Identifier; - } - return { - type: type, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } +exports.utf7imap = Utf7IMAPCodec; +function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; +}; +Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; +Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; +Utf7IMAPCodec.prototype.bomAware = true; - // 7.7 Punctuators - function scanPunctuator() { - var start = index, - code = source.charCodeAt(index), - code2, - ch1 = source[index], - ch2, - ch3, - ch4; +// -- Encoding - switch (code) { +function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer.alloc(6); + this.base64AccumIdx = 0; +} - // Check for most common single-character punctuators. - case 0x2E: // . dot - case 0x28: // ( open bracket - case 0x29: // ) close bracket - case 0x3B: // ; semicolon - case 0x2C: // , comma - case 0x7B: // { open curly brace - case 0x7D: // } close curly brace - case 0x5B: // [ - case 0x5D: // ] - case 0x3A: // : - case 0x3F: // ? - case 0x7E: // ~ - ++index; - if (extra.tokenize) { - if (code === 0x28) { - extra.openParenToken = extra.tokens.length; - } else if (code === 0x7B) { - extra.openCurlyToken = extra.tokens.length; +Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64, + base64Accum = this.base64Accum, + base64AccumIdx = this.base64AccumIdx, + buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; + + for (var i = 0; i < str.length; i++) { + var uChar = str.charCodeAt(i); + if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); + base64AccumIdx = 0; } + + buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. + inBase64 = false; } - return { - type: Token.Punctuator, - value: String.fromCharCode(code), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - default: - code2 = source.charCodeAt(index + 1); + if (!inBase64) { + buf[bufIdx++] = uChar; // Write direct character - // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) { - switch (code) { - case 0x2B: // + - case 0x2D: // - - case 0x2F: // / - case 0x3C: // < - case 0x3E: // > - case 0x5E: // ^ - case 0x7C: // | - case 0x25: // % - case 0x26: // & - case 0x2A: // * - index += 2; - return { - type: Token.Punctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + if (uChar === andChar) // Ampersand -> '&-' + buf[bufIdx++] = minusChar; + } - case 0x21: // ! - case 0x3D: // = - index += 2; + } else { // Non-direct character + if (!inBase64) { + buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 0xFF; - // !== and === - if (source.charCodeAt(index) === 0x3D) { - ++index; - } - return { - type: Token.Punctuator, - value: source.slice(start, index), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); + base64AccumIdx = 0; } } } + } - // 4-character punctuator: >>>= + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; - ch4 = source.substr(index, 4); + return buf.slice(0, bufIdx); +} - if (ch4 === '>>>=') { - index += 4; - return { - type: Token.Punctuator, - value: ch4, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; +Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer.alloc(10), bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); + this.base64AccumIdx = 0; } - // 3-character punctuators: === !== >>> <<= >>= + buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. + this.inBase64 = false; + } - ch3 = ch4.substr(0, 3); + return buf.slice(0, bufIdx); +} - if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') { - index += 3; - return { - type: Token.Punctuator, - value: ch3, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } - // Other 2-character punctuators: ++ -- << >> && || - ch2 = ch3.substr(0, 2); +// -- Decoding - if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') { - index += 2; - return { - type: Token.Punctuator, - value: ch2, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } +function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ''; +} - // 1-character punctuators: < > = ! + - * % & | ^ / - if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } +var base64IMAPChars = base64Chars.slice(); +base64IMAPChars[','.charCodeAt(0)] = true; - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } +Utf7IMAPDecoder.prototype.write = function(buf) { + var res = "", lastI = 0, + inBase64 = this.inBase64, + base64Accum = this.base64Accum; - // 7.8.3 Numeric Literals + // The decoder is more involved as we must handle chunks in stream. + // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). - function scanHexLiteral(start) { - var number = ''; + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '&' + if (buf[i] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. + lastI = i+1; + inBase64 = true; + } + } else { // We decode base64. + if (!base64IMAPChars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" + res += "&"; + } else { + var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/'); + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } - while (index < length) { - if (!isHexDigit(source[index])) { - break; + if (buf[i] != minusChar) // Minus may be absorbed after base64. + i--; + + lastI = i+1; + inBase64 = false; + base64Accum = ''; } - number += source[index++]; } + } - if (number.length === 0) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. + } else { + var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/'); - if (isIdentifierStart(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } + var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded); - return { - type: Token.NumericLiteral, - value: parseInt('0x' + number, 16), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); } - function scanOctalLiteral(start) { - var number = '0' + source[index++]; - while (index < length) { - if (!isOctalDigit(source[index])) { - break; - } - number += source[index++]; - } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } + return res; +} - return { - type: Token.NumericLiteral, - value: parseInt(number, 8), - octal: true, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } +Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); - function scanNumericLiteral() { - var number, start, ch; + this.inBase64 = false; + this.base64Accum = ''; + return res; +} - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), - 'Numeric literal must start with a decimal digit or a decimal point'); - start = index; - number = ''; - if (ch !== '.') { - number = source[index++]; - ch = source[index]; - // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === '0') { - if (ch === 'x' || ch === 'X') { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) { - return scanOctalLiteral(start); - } +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/utf7.js","/node_modules/iconv-lite/encodings") +},{"FWaASH":50,"buffer":52,"safer-buffer":118}],94:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } +var BOMChar = '\uFEFF'; - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - ch = source[index]; - } +exports.PrependBOM = PrependBOMWrapper +function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; +} - if (ch === '.') { - number += source[index++]; - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - ch = source[index]; - } +PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } - if (ch === 'e' || ch === 'E') { - number += source[index++]; + return this.encoder.write(str); +} - ch = source[index]; - if (ch === '+' || ch === '-') { - number += source[index++]; - } - if (isDecimalDigit(source.charCodeAt(index))) { - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - } else { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } +PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); +} - if (isIdentifierStart(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - return { - type: Token.NumericLiteral, - value: parseFloat(number), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; +//------------------------------------------------------------------------------ + +exports.StripBOM = StripBOMWrapper; +function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; +} + +StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) + return res; + + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === 'function') + this.options.stripBOM(); } - // 7.8.4 String Literals + this.pass = true; + return res; +} - function scanStringLiteral() { - var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart; - startLineNumber = lineNumber; - startLineStart = lineStart; +StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); +} - quote = source[index]; - assert((quote === '\'' || quote === '"'), - 'String literal must starts with a quote'); - start = index; - ++index; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/bom-handling.js","/node_modules/iconv-lite/lib") +},{"FWaASH":50,"buffer":52}],95:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("buffer").Buffer; +// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer - while (index < length) { - ch = source[index++]; +// == Extend Node primitives to use iconv-lite ================================= - if (ch === quote) { - quote = ''; - break; - } else if (ch === '\\') { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) { - switch (ch) { - case 'u': - case 'x': - restore = index; - unescaped = scanHexEscape(ch); - if (unescaped) { - str += unescaped; - } else { - index = restore; - str += ch; - } - break; - case 'n': - str += '\n'; - break; - case 'r': - str += '\r'; - break; - case 't': - str += '\t'; - break; - case 'b': - str += '\b'; - break; - case 'f': - str += '\f'; - break; - case 'v': - str += '\x0B'; - break; +module.exports = function (iconv) { + var original = undefined; // Place to keep original methods. - default: - if (isOctalDigit(ch)) { - code = '01234567'.indexOf(ch); + // Node authors rewrote Buffer internals to make it compatible with + // Uint8Array and we cannot patch key functions since then. + // Note: this does use older Buffer API on a purpose + iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array); - // \0 is not octal escape sequence - if (code !== 0) { - octal = true; - } + iconv.extendNodeEncodings = function extendNodeEncodings() { + if (original) return; + original = {}; - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + '01234567'.indexOf(source[index++]); + if (!iconv.supportsNodeEncodingsExtension) { + console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); + console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); + return; + } - // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ('0123'.indexOf(ch) >= 0 && - index < length && - isOctalDigit(source[index])) { - code = code * 8 + '01234567'.indexOf(source[index++]); - } - } - str += String.fromCharCode(code); - } else { - str += ch; - } - break; - } - } else { - ++lineNumber; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - lineStart = index; + var nodeNativeEncodings = { + 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, + 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true, + }; + + Buffer.isNativeEncoding = function(enc) { + return enc && nodeNativeEncodings[enc.toLowerCase()]; + } + + // -- SlowBuffer ----------------------------------------------------------- + var SlowBuffer = require('buffer').SlowBuffer; + + original.SlowBufferToString = SlowBuffer.prototype.toString; + SlowBuffer.prototype.toString = function(encoding, start, end) { + encoding = String(encoding || 'utf8').toLowerCase(); + + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.SlowBufferToString.call(this, encoding, start, end); + + // Otherwise, use our decoding method. + if (typeof start == 'undefined') start = 0; + if (typeof end == 'undefined') end = this.length; + return iconv.decode(this.slice(start, end), encoding); + } + + original.SlowBufferWrite = SlowBuffer.prototype.write; + SlowBuffer.prototype.write = function(string, offset, length, encoding) { + // Support both (string, offset, length, encoding) + // and the legacy (string, encoding, offset, length) + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length; + length = undefined; } - } else if (isLineTerminator(ch.charCodeAt(0))) { - break; + } else { // legacy + var swap = encoding; + encoding = offset; + offset = length; + length = swap; + } + + offset = +offset || 0; + var remaining = this.length - offset; + if (!length) { + length = remaining; } else { - str += ch; + length = +length; + if (length > remaining) { + length = remaining; + } } + encoding = String(encoding || 'utf8').toLowerCase(); + + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.SlowBufferWrite.call(this, string, offset, length, encoding); + + if (string.length > 0 && (length < 0 || offset < 0)) + throw new RangeError('attempt to write beyond buffer bounds'); + + // Otherwise, use our encoding method. + var buf = iconv.encode(string, encoding); + if (buf.length < length) length = buf.length; + buf.copy(this, offset, 0, length); + return length; } - if (quote !== '') { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + // -- Buffer --------------------------------------------------------------- + + original.BufferIsEncoding = Buffer.isEncoding; + Buffer.isEncoding = function(encoding) { + return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding); } - return { - type: Token.StringLiteral, - value: str, - octal: octal, - startLineNumber: startLineNumber, - startLineStart: startLineStart, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } + original.BufferByteLength = Buffer.byteLength; + Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) { + encoding = String(encoding || 'utf8').toLowerCase(); - function testRegExp(pattern, flags) { - var value; - try { - value = new RegExp(pattern, flags); - } catch (e) { - throwError({}, Messages.InvalidRegExp); + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.BufferByteLength.call(this, str, encoding); + + // Slow, I know, but we don't have a better way yet. + return iconv.encode(str, encoding).length; } - return value; - } - function scanRegExpBody() { - var ch, str, classMarker, terminated, body; + original.BufferToString = Buffer.prototype.toString; + Buffer.prototype.toString = function(encoding, start, end) { + encoding = String(encoding || 'utf8').toLowerCase(); - ch = source[index]; - assert(ch === '/', 'Regular expression literal must start with a slash'); - str = source[index++]; + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.BufferToString.call(this, encoding, start, end); - classMarker = false; - terminated = false; - while (index < length) { - ch = source[index++]; - str += ch; - if (ch === '\\') { - ch = source[index++]; - // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) { - throwError({}, Messages.UnterminatedRegExp); - } - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) { - throwError({}, Messages.UnterminatedRegExp); - } else if (classMarker) { - if (ch === ']') { - classMarker = false; + // Otherwise, use our decoding method. + if (typeof start == 'undefined') start = 0; + if (typeof end == 'undefined') end = this.length; + return iconv.decode(this.slice(start, end), encoding); + } + + original.BufferWrite = Buffer.prototype.write; + Buffer.prototype.write = function(string, offset, length, encoding) { + var _offset = offset, _length = length, _encoding = encoding; + // Support both (string, offset, length, encoding) + // and the legacy (string, encoding, offset, length) + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length; + length = undefined; } + } else { // legacy + var swap = encoding; + encoding = offset; + offset = length; + length = swap; + } + + encoding = String(encoding || 'utf8').toLowerCase(); + + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.BufferWrite.call(this, string, _offset, _length, _encoding); + + offset = +offset || 0; + var remaining = this.length - offset; + if (!length) { + length = remaining; } else { - if (ch === '/') { - terminated = true; - break; - } else if (ch === '[') { - classMarker = true; + length = +length; + if (length > remaining) { + length = remaining; } } - } - if (!terminated) { - throwError({}, Messages.UnterminatedRegExp); + if (string.length > 0 && (length < 0 || offset < 0)) + throw new RangeError('attempt to write beyond buffer bounds'); + + // Otherwise, use our encoding method. + var buf = iconv.encode(string, encoding); + if (buf.length < length) length = buf.length; + buf.copy(this, offset, 0, length); + return length; + + // TODO: Set _charsWritten. } - // Exclude leading and trailing slash. - body = str.substr(1, str.length - 2); - return { - value: body, - literal: str - }; - } - function scanRegExpFlags() { - var ch, str, flags, restore; + // -- Readable ------------------------------------------------------------- + if (iconv.supportsStreams) { + var Readable = require('stream').Readable; - str = ''; - flags = ''; - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) { - break; + original.ReadableSetEncoding = Readable.prototype.setEncoding; + Readable.prototype.setEncoding = function setEncoding(enc, options) { + // Use our own decoder, it has the same interface. + // We cannot use original function as it doesn't handle BOM-s. + this._readableState.decoder = iconv.getDecoder(enc, options); + this._readableState.encoding = enc; } - ++index; - if (ch === '\\' && index < length) { - ch = source[index]; - if (ch === 'u') { - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - flags += ch; - for (str += '\\u'; restore < index; ++restore) { - str += source[restore]; - } - } else { - index = restore; - flags += 'u'; - str += '\\u'; - } - throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); - } else { - str += '\\'; - throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - flags += ch; - str += ch; - } + Readable.prototype.collect = iconv._collect; } - - return { - value: flags, - literal: str - }; } - function scanRegExp() { - var start, body, flags, pattern, value; + // Remove iconv-lite Node primitive extensions. + iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { + if (!iconv.supportsNodeEncodingsExtension) + return; + if (!original) + throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.") - lookahead = null; - skipComment(); - start = index; + delete Buffer.isNativeEncoding; - body = scanRegExpBody(); - flags = scanRegExpFlags(); - value = testRegExp(body.value, flags.value); + var SlowBuffer = require('buffer').SlowBuffer; - if (extra.tokenize) { - return { - type: Token.RegularExpression, - value: value, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + SlowBuffer.prototype.toString = original.SlowBufferToString; + SlowBuffer.prototype.write = original.SlowBufferWrite; + + Buffer.isEncoding = original.BufferIsEncoding; + Buffer.byteLength = original.BufferByteLength; + Buffer.prototype.toString = original.BufferToString; + Buffer.prototype.write = original.BufferWrite; + + if (iconv.supportsStreams) { + var Readable = require('stream').Readable; + + Readable.prototype.setEncoding = original.ReadableSetEncoding; + delete Readable.prototype.collect; } - return { - literal: body.literal + flags.literal, - value: value, - start: start, - end: index - }; + original = undefined; } +} - function collectRegex() { - var pos, loc, regex, token; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/extend-node.js","/node_modules/iconv-lite/lib") +},{"FWaASH":50,"buffer":52,"stream":121}],96:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - skipComment(); +// Some environments don't have global Buffer (e.g. React Native). +// Solution would be installing npm modules "buffer" and "stream" explicitly. +var Buffer = require("safer-buffer").Buffer; - pos = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; +var bomHandling = require("./bom-handling"), + iconv = module.exports; - regex = scanRegExp(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; +// All codecs and aliases are kept here, keyed by encoding name/alias. +// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. +iconv.encodings = null; - /* istanbul ignore next */ - if (!extra.tokenize) { - // Pop the previous token, which is likely '/' or '/=' - if (extra.tokens.length > 0) { - token = extra.tokens[extra.tokens.length - 1]; - if (token.range[0] === pos && token.type === 'Punctuator') { - if (token.value === '/' || token.value === '/=') { - extra.tokens.pop(); - } - } - } +// Characters emitted in case of error. +iconv.defaultCharUnicode = '�'; +iconv.defaultCharSingleByte = '?'; - extra.tokens.push({ - type: 'RegularExpression', - value: regex.literal, - range: [pos, index], - loc: loc - }); +// Public API. +iconv.encode = function encode(str, encoding, options) { + str = "" + (str || ""); // Ensure string. + + var encoder = iconv.getEncoder(encoding, options); + + var res = encoder.write(str); + var trail = encoder.end(); + + return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; +} + +iconv.decode = function decode(buf, encoding, options) { + if (typeof buf === 'string') { + if (!iconv.skipDecodeWarning) { + console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); + iconv.skipDecodeWarning = true; } - return regex; + buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. } - function isIdentifierName(token) { - return token.type === Token.Identifier || - token.type === Token.Keyword || - token.type === Token.BooleanLiteral || - token.type === Token.NullLiteral; - } + var decoder = iconv.getDecoder(encoding, options); - function advanceSlash() { - var prevToken, - checkToken; - // Using the following algorithm: - // https://github.com/mozilla/sweet.js/wiki/design - prevToken = extra.tokens[extra.tokens.length - 1]; - if (!prevToken) { - // Nothing before that: it cannot be a division. - return collectRegex(); - } - if (prevToken.type === 'Punctuator') { - if (prevToken.value === ']') { - return scanPunctuator(); - } - if (prevToken.value === ')') { - checkToken = extra.tokens[extra.openParenToken - 1]; - if (checkToken && - checkToken.type === 'Keyword' && - (checkToken.value === 'if' || - checkToken.value === 'while' || - checkToken.value === 'for' || - checkToken.value === 'with')) { - return collectRegex(); - } - return scanPunctuator(); - } - if (prevToken.value === '}') { - // Dividing a function by anything makes little sense, - // but we have to check for that. - if (extra.tokens[extra.openCurlyToken - 3] && - extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') { - // Anonymous function. - checkToken = extra.tokens[extra.openCurlyToken - 4]; - if (!checkToken) { - return scanPunctuator(); - } - } else if (extra.tokens[extra.openCurlyToken - 4] && - extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') { - // Named function. - checkToken = extra.tokens[extra.openCurlyToken - 5]; - if (!checkToken) { - return collectRegex(); - } - } else { - return scanPunctuator(); - } - // checkToken determines whether the function is - // a declaration or an expression. - if (FnExprTokens.indexOf(checkToken.value) >= 0) { - // It is an expression. - return scanPunctuator(); - } - // It is a declaration. - return collectRegex(); - } - return collectRegex(); - } - if (prevToken.type === 'Keyword') { - return collectRegex(); - } - return scanPunctuator(); + var res = decoder.write(buf); + var trail = decoder.end(); + + return trail ? (res + trail) : res; +} + +iconv.encodingExists = function encodingExists(enc) { + try { + iconv.getCodec(enc); + return true; + } catch (e) { + return false; } +} - function advance() { - var ch; +// Legacy aliases to convert functions +iconv.toEncoding = iconv.encode; +iconv.fromEncoding = iconv.decode; - skipComment(); +// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. +iconv._codecDataCache = {}; +iconv.getCodec = function getCodec(encoding) { + if (!iconv.encodings) + iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. + + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + var enc = iconv._canonicalizeEncoding(encoding); - if (index >= length) { - return { - type: Token.EOF, - lineNumber: lineNumber, - lineStart: lineStart, - start: index, - end: index - }; - } + // Traverse iconv.encodings to find actual codec. + var codecOptions = {}; + while (true) { + var codec = iconv._codecDataCache[enc]; + if (codec) + return codec; - ch = source.charCodeAt(index); + var codecDef = iconv.encodings[enc]; - if (isIdentifierStart(ch)) { - return scanIdentifier(); - } + switch (typeof codecDef) { + case "string": // Direct alias to other encoding. + enc = codecDef; + break; - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3B) { - return scanPunctuator(); - } + case "object": // Alias with options. Can be layered. + for (var key in codecDef) + codecOptions[key] = codecDef[key]; - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) { - return scanStringLiteral(); - } + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + + enc = codecDef.type; + break; + case "function": // Codec itself. + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) { - return scanNumericLiteral(); - } - return scanPunctuator(); - } + // The codec function must load all tables and return object with .encoder and .decoder methods. + // It'll be called only once (for each different options object). + codec = new codecDef(codecOptions, iconv); - if (isDecimalDigit(ch)) { - return scanNumericLiteral(); - } + iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. + return codec; - // Slash (/) U+002F can also start a regex. - if (extra.tokenize && ch === 0x2F) { - return advanceSlash(); + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); } - - return scanPunctuator(); } +} - function collectToken() { - var loc, token, range, value; +iconv._canonicalizeEncoding = function(encoding) { + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); +} - skipComment(); - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; +iconv.getEncoder = function getEncoder(encoding, options) { + var codec = iconv.getCodec(encoding), + encoder = new codec.encoder(options, codec); + + if (codec.bomAware && options && options.addBOM) + encoder = new bomHandling.PrependBOM(encoder, options); + + return encoder; +} + +iconv.getDecoder = function getDecoder(encoding, options) { + var codec = iconv.getCodec(encoding), + decoder = new codec.decoder(options, codec); + + if (codec.bomAware && !(options && options.stripBOM === false)) + decoder = new bomHandling.StripBOM(decoder, options); - token = advance(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; + return decoder; +} - if (token.type !== Token.EOF) { - value = source.slice(token.start, token.end); - extra.tokens.push({ - type: TokenName[token.type], - value: value, - range: [token.start, token.end], - loc: loc - }); - } - return token; - } +// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json. +var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node; +if (nodeVer) { - function lex() { - var token; + // Load streaming support in Node v0.10+ + var nodeVerArr = nodeVer.split(".").map(Number); + if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { + require("./streams")(iconv); + } - token = lookahead; - index = token.end; - lineNumber = token.lineNumber; - lineStart = token.lineStart; + // Load Node primitive extensions. + require("./extend-node")(iconv); +} - lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); +if ("Ā" != "\u0100") { + console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); +} - index = token.end; - lineNumber = token.lineNumber; - lineStart = token.lineStart; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/index.js","/node_modules/iconv-lite/lib") +},{"../encodings":79,"./bom-handling":94,"./extend-node":95,"./streams":97,"FWaASH":50,"buffer":52,"safer-buffer":118}],97:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - return token; - } +var Buffer = require("buffer").Buffer, + Transform = require("stream").Transform; - function peek() { - var pos, line, start; - pos = index; - line = lineNumber; - start = lineStart; - lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); - index = pos; - lineNumber = line; - lineStart = start; +// == Exports ================================================================== +module.exports = function(iconv) { + + // Additional Public API. + iconv.encodeStream = function encodeStream(encoding, options) { + return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); } - function Position(line, column) { - this.line = line; - this.column = column; + iconv.decodeStream = function decodeStream(encoding, options) { + return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); } - function SourceLocation(startLine, startColumn, line, column) { - this.start = new Position(startLine, startColumn); - this.end = new Position(line, column); - } + iconv.supportsStreams = true; - SyntaxTreeDelegate = { - name: 'SyntaxTree', + // Not published yet. + iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; + iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; + iconv._collect = IconvLiteDecoderStream.prototype.collect; +}; - processComment: function (node) { - var lastChild, trailingComments; - if (node.type === Syntax.Program) { - if (node.body.length > 0) { - return; - } - } +// == Encoder stream ======================================================= +function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; // We accept only strings, so we don't need to decode them. + Transform.call(this, options); +} - if (extra.trailingComments.length > 0) { - if (extra.trailingComments[0].range[0] >= node.range[1]) { - trailingComments = extra.trailingComments; - extra.trailingComments = []; - } else { - extra.trailingComments.length = 0; - } - } else { - if (extra.bottomRightStack.length > 0 && - extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments && - extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments[0].range[0] >= node.range[1]) { - trailingComments = extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; - delete extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; - } - } +IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } +}); - // Eating the stack. - while (extra.bottomRightStack.length > 0 && extra.bottomRightStack[extra.bottomRightStack.length - 1].range[0] >= node.range[0]) { - lastChild = extra.bottomRightStack.pop(); - } +IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk != 'string') + return done(new Error("Iconv encoding stream needs strings as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } +} - if (lastChild) { - if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) { - node.leadingComments = lastChild.leadingComments; - delete lastChild.leadingComments; - } - } else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) { - node.leadingComments = extra.leadingComments; - extra.leadingComments = []; - } +IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } +} +IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on('error', cb); + this.on('data', function(chunk) { chunks.push(chunk); }); + this.on('end', function() { + cb(null, Buffer.concat(chunks)); + }); + return this; +} - if (trailingComments) { - node.trailingComments = trailingComments; - } - extra.bottomRightStack.push(node); - }, +// == Decoder stream ======================================================= +function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = 'utf8'; // We output strings. + Transform.call(this, options); +} - markEnd: function (node, startToken) { - if (extra.range) { - node.range = [startToken.start, index]; - } - if (extra.loc) { - node.loc = new SourceLocation( - startToken.startLineNumber === undefined ? startToken.lineNumber : startToken.startLineNumber, - startToken.start - (startToken.startLineStart === undefined ? startToken.lineStart : startToken.startLineStart), - lineNumber, - index - lineStart - ); - this.postProcess(node); - } +IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } +}); - if (extra.attachComment) { - this.processComment(node); - } - return node; - }, +IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer.isBuffer(chunk)) + return done(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } +} - postProcess: function (node) { - if (extra.source) { - node.loc.source = extra.source; - } - return node; - }, +IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } +} - createArrayExpression: function (elements) { - return { - type: Syntax.ArrayExpression, - elements: elements - }; - }, +IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ''; + this.on('error', cb); + this.on('data', function(chunk) { res += chunk; }); + this.on('end', function() { + cb(null, res); + }); + return this; +} - createAssignmentExpression: function (operator, left, right) { - return { - type: Syntax.AssignmentExpression, - operator: operator, - left: left, - right: right - }; - }, - createBinaryExpression: function (operator, left, right) { - var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : - Syntax.BinaryExpression; - return { - type: type, - operator: operator, - left: left, - right: right - }; - }, +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/streams.js","/node_modules/iconv-lite/lib") +},{"FWaASH":50,"buffer":52,"stream":121}],98:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] - createBlockStatement: function (body) { - return { - type: Syntax.BlockStatement, - body: body - }; - }, + i += d - createBreakStatement: function (label) { - return { - type: Syntax.BreakStatement, - label: label - }; - }, + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} - createCallExpression: function (callee, args) { - return { - type: Syntax.CallExpression, - callee: callee, - 'arguments': args - }; - }, + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} - createCatchClause: function (param, body) { - return { - type: Syntax.CatchClause, - param: param, - body: body - }; - }, + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} - createConditionalExpression: function (test, consequent, alternate) { - return { - type: Syntax.ConditionalExpression, - test: test, - consequent: consequent, - alternate: alternate - }; - }, +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - createContinueStatement: function (label) { - return { - type: Syntax.ContinueStatement, - label: label - }; - }, + value = Math.abs(value) - createDebuggerStatement: function () { - return { - type: Syntax.DebuggerStatement - }; - }, + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } - createDoWhileStatement: function (body, test) { - return { - type: Syntax.DoWhileStatement, - body: body, - test: test - }; - }, + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } - createEmptyStatement: function () { - return { - type: Syntax.EmptyStatement - }; - }, + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - createExpressionStatement: function (expression) { - return { - type: Syntax.ExpressionStatement, - expression: expression - }; - }, + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - createForStatement: function (init, test, update, body) { - return { - type: Syntax.ForStatement, - init: init, - test: test, - update: update, - body: body - }; - }, + buffer[offset + i - d] |= s * 128 +} - createForInStatement: function (left, right, body) { - return { - type: Syntax.ForInStatement, - left: left, - right: right, - body: body, - each: false - }; - }, +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ieee754/index.js","/node_modules/ieee754") +},{"FWaASH":50,"buffer":52}],99:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} - createFunctionDeclaration: function (id, params, defaults, body) { - return { - type: Syntax.FunctionDeclaration, - id: id, - params: params, - defaults: defaults, - body: body, - rest: null, - generator: false, - expression: false - }; - }, +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/inherits/inherits_browser.js","/node_modules/inherits") +},{"FWaASH":50,"buffer":52}],100:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +module.exports = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; +}; - createFunctionExpression: function (id, params, defaults, body) { - return { - type: Syntax.FunctionExpression, - id: id, - params: params, - defaults: defaults, - body: body, - rest: null, - generator: false, - expression: false - }; - }, +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/isarray/index.js","/node_modules/isarray") +},{"FWaASH":50,"buffer":52}],101:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +'use strict'; - createIdentifier: function (name) { - return { - type: Syntax.Identifier, - name: name - }; - }, +var traverse = module.exports = function (schema, opts, cb) { + // Legacy support for v0.3.1 and earlier. + if (typeof opts == 'function') { + cb = opts; + opts = {}; + } - createIfStatement: function (test, consequent, alternate) { - return { - type: Syntax.IfStatement, - test: test, - consequent: consequent, - alternate: alternate - }; - }, + cb = opts.cb || cb; + var pre = (typeof cb == 'function') ? cb : cb.pre || function() {}; + var post = cb.post || function() {}; - createLabeledStatement: function (label, body) { - return { - type: Syntax.LabeledStatement, - label: label, - body: body - }; - }, + _traverse(opts, pre, post, schema, '', schema); +}; - createLiteral: function (token) { - return { - type: Syntax.Literal, - value: token.value, - raw: source.slice(token.start, token.end) - }; - }, - createMemberExpression: function (accessor, object, property) { - return { - type: Syntax.MemberExpression, - computed: accessor === '[', - object: object, - property: property - }; - }, +traverse.keywords = { + additionalItems: true, + items: true, + contains: true, + additionalProperties: true, + propertyNames: true, + not: true +}; - createNewExpression: function (callee, args) { - return { - type: Syntax.NewExpression, - callee: callee, - 'arguments': args - }; - }, +traverse.arrayKeywords = { + items: true, + allOf: true, + anyOf: true, + oneOf: true +}; - createObjectExpression: function (properties) { - return { - type: Syntax.ObjectExpression, - properties: properties - }; - }, +traverse.propsKeywords = { + definitions: true, + properties: true, + patternProperties: true, + dependencies: true +}; - createPostfixExpression: function (operator, argument) { - return { - type: Syntax.UpdateExpression, - operator: operator, - argument: argument, - prefix: false - }; - }, +traverse.skipKeywords = { + default: true, + enum: true, + const: true, + required: true, + maximum: true, + minimum: true, + exclusiveMaximum: true, + exclusiveMinimum: true, + multipleOf: true, + maxLength: true, + minLength: true, + pattern: true, + format: true, + maxItems: true, + minItems: true, + uniqueItems: true, + maxProperties: true, + minProperties: true +}; - createProgram: function (body) { - return { - type: Syntax.Program, - body: body - }; - }, - createProperty: function (kind, key, value) { - return { - type: Syntax.Property, - key: key, - value: value, - kind: kind - }; - }, +function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { + if (schema && typeof schema == 'object' && !Array.isArray(schema)) { + pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); + for (var key in schema) { + var sch = schema[key]; + if (Array.isArray(sch)) { + if (key in traverse.arrayKeywords) { + for (var i=0; i + Copyright (C) 2013 Thaddee Tyl + Copyright (C) 2013 Mathias Bynens + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2012 Mathias Bynens + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Kris Kowal + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Arpad Borsos + Copyright (C) 2011 Ariya Hidayat - createSwitchStatement: function (discriminant, cases) { - return { - type: Syntax.SwitchStatement, - discriminant: discriminant, - cases: cases - }; - }, + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: - createThisExpression: function () { - return { - type: Syntax.ThisExpression - }; - }, + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. - createThrowStatement: function (argument) { - return { - type: Syntax.ThrowStatement, - argument: argument - }; - }, + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ - createTryStatement: function (block, guardedHandlers, handlers, finalizer) { - return { - type: Syntax.TryStatement, - block: block, - guardedHandlers: guardedHandlers, - handlers: handlers, - finalizer: finalizer - }; - }, +/*jslint bitwise:true plusplus:true */ +/*global esprima:true, define:true, exports:true, window: true, +throwErrorTolerant: true, +throwError: true, generateStatement: true, peek: true, +parseAssignmentExpression: true, parseBlock: true, parseExpression: true, +parseFunctionDeclaration: true, parseFunctionExpression: true, +parseFunctionSourceElements: true, parseVariableIdentifier: true, +parseLeftHandSideExpression: true, +parseUnaryExpression: true, +parseStatement: true, parseSourceElement: true */ - createUnaryExpression: function (operator, argument) { - if (operator === '++' || operator === '--') { - return { - type: Syntax.UpdateExpression, - operator: operator, - argument: argument, - prefix: true - }; - } - return { - type: Syntax.UnaryExpression, - operator: operator, - argument: argument, - prefix: true - }; - }, +(function (root, factory) { + 'use strict'; - createVariableDeclaration: function (declarations, kind) { - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: kind - }; - }, + // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, + // Rhino, and plain browser loading. - createVariableDeclarator: function (id, init) { - return { - type: Syntax.VariableDeclarator, - id: id, - init: init - }; - }, + /* istanbul ignore next */ + if (typeof define === 'function' && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== 'undefined') { + factory(exports); + } else { + factory((root.esprima = {})); + } +}(this, function (exports) { + 'use strict'; - createWhileStatement: function (test, body) { - return { - type: Syntax.WhileStatement, - test: test, - body: body - }; - }, + var Token, + TokenName, + FnExprTokens, + Syntax, + PropertyKind, + Messages, + Regex, + SyntaxTreeDelegate, + source, + strict, + index, + lineNumber, + lineStart, + length, + delegate, + lookahead, + state, + extra; - createWithStatement: function (object, body) { - return { - type: Syntax.WithStatement, - object: object, - body: body - }; - } + Token = { + BooleanLiteral: 1, + EOF: 2, + Identifier: 3, + Keyword: 4, + NullLiteral: 5, + NumericLiteral: 6, + Punctuator: 7, + StringLiteral: 8, + RegularExpression: 9 }; - // Return true if there is a line terminator before the next token. + TokenName = {}; + TokenName[Token.BooleanLiteral] = 'Boolean'; + TokenName[Token.EOF] = ''; + TokenName[Token.Identifier] = 'Identifier'; + TokenName[Token.Keyword] = 'Keyword'; + TokenName[Token.NullLiteral] = 'Null'; + TokenName[Token.NumericLiteral] = 'Numeric'; + TokenName[Token.Punctuator] = 'Punctuator'; + TokenName[Token.StringLiteral] = 'String'; + TokenName[Token.RegularExpression] = 'RegularExpression'; - function peekLineTerminator() { - var pos, line, start, found; + // A function following one of those tokens is an expression. + FnExprTokens = ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new', + 'return', 'case', 'delete', 'throw', 'void', + // assignment operators + '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '>>>=', + '&=', '|=', '^=', ',', + // binary/unary operators + '+', '-', '*', '/', '%', '++', '--', '<<', '>>', '>>>', '&', + '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=', + '<=', '<', '>', '!=', '!==']; - pos = index; - line = lineNumber; - start = lineStart; - skipComment(); - found = lineNumber !== line; - index = pos; - lineNumber = line; - lineStart = start; + Syntax = { + AssignmentExpression: 'AssignmentExpression', + ArrayExpression: 'ArrayExpression', + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DoWhileStatement: 'DoWhileStatement', + DebuggerStatement: 'DebuggerStatement', + EmptyStatement: 'EmptyStatement', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForInStatement: 'ForInStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + Program: 'Program', + Property: 'Property', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SwitchStatement: 'SwitchStatement', + SwitchCase: 'SwitchCase', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement' + }; - return found; - } + PropertyKind = { + Data: 1, + Get: 2, + Set: 4 + }; - // Throw an exception + // Error messages should be identical to V8. + Messages = { + UnexpectedToken: 'Unexpected token %0', + UnexpectedNumber: 'Unexpected number', + UnexpectedString: 'Unexpected string', + UnexpectedIdentifier: 'Unexpected identifier', + UnexpectedReserved: 'Unexpected reserved word', + UnexpectedEOS: 'Unexpected end of input', + NewlineAfterThrow: 'Illegal newline after throw', + InvalidRegExp: 'Invalid regular expression', + UnterminatedRegExp: 'Invalid regular expression: missing /', + InvalidLHSInAssignment: 'Invalid left-hand side in assignment', + InvalidLHSInForIn: 'Invalid left-hand side in for-in', + MultipleDefaultsInSwitch: 'More than one default clause in switch statement', + NoCatchOrFinally: 'Missing catch or finally after try', + UnknownLabel: 'Undefined label \'%0\'', + Redeclaration: '%0 \'%1\' has already been declared', + IllegalContinue: 'Illegal continue statement', + IllegalBreak: 'Illegal break statement', + IllegalReturn: 'Illegal return statement', + StrictModeWith: 'Strict mode code may not include a with statement', + StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', + StrictVarName: 'Variable name may not be eval or arguments in strict mode', + StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', + StrictParamDupe: 'Strict mode function may not have duplicate parameter names', + StrictFunctionName: 'Function name may not be eval or arguments in strict mode', + StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', + StrictDelete: 'Delete of an unqualified identifier in strict mode.', + StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', + AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', + AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', + StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', + StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', + StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', + StrictReservedWord: 'Use of future reserved word in strict mode' + }; - function throwError(token, messageFormat) { - var error, - args = Array.prototype.slice.call(arguments, 2), - msg = messageFormat.replace( - /%(\d)/g, - function (whole, index) { - assert(index < args.length, 'Message reference must be in range'); - return args[index]; - } - ); + // See also tools/generate-unicode-regex.py. + Regex = { + NonAsciiIdentifierStart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'), + NonAsciiIdentifierPart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]') + }; - if (typeof token.lineNumber === 'number') { - error = new Error('Line ' + token.lineNumber + ': ' + msg); - error.index = token.start; - error.lineNumber = token.lineNumber; - error.column = token.start - lineStart + 1; - } else { - error = new Error('Line ' + lineNumber + ': ' + msg); - error.index = index; - error.lineNumber = lineNumber; - error.column = index - lineStart + 1; + // Ensure the condition is true, otherwise throw an error. + // This is only to have a better contract semantic, i.e. another safety net + // to catch a logic error. The condition shall be fulfilled in normal case. + // Do NOT use this to enforce a certain condition on any user input. + + function assert(condition, message) { + /* istanbul ignore if */ + if (!condition) { + throw new Error('ASSERT: ' + message); } + } - error.description = msg; - throw error; + function isDecimalDigit(ch) { + return (ch >= 48 && ch <= 57); // 0..9 } - function throwErrorTolerant() { - try { - throwError.apply(null, arguments); - } catch (e) { - if (extra.errors) { - extra.errors.push(e); - } else { - throw e; - } - } + function isHexDigit(ch) { + return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; } + function isOctalDigit(ch) { + return '01234567'.indexOf(ch) >= 0; + } - // Throw an exception because of the token. - function throwUnexpected(token) { - if (token.type === Token.EOF) { - throwError(token, Messages.UnexpectedEOS); - } + // 7.2 White Space - if (token.type === Token.NumericLiteral) { - throwError(token, Messages.UnexpectedNumber); - } + function isWhiteSpace(ch) { + return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) || + (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0); + } - if (token.type === Token.StringLiteral) { - throwError(token, Messages.UnexpectedString); - } + // 7.3 Line Terminators - if (token.type === Token.Identifier) { - throwError(token, Messages.UnexpectedIdentifier); - } + function isLineTerminator(ch) { + return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029); + } - if (token.type === Token.Keyword) { - if (isFutureReservedWord(token.value)) { - throwError(token, Messages.UnexpectedReserved); - } else if (strict && isStrictModeReservedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictReservedWord); - return; - } - throwError(token, Messages.UnexpectedToken, token.value); - } + // 7.6 Identifier Names and Identifiers - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, Messages.UnexpectedToken, token.value); + function isIdentifierStart(ch) { + return (ch == 0x40) || (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) + (ch >= 0x41 && ch <= 0x5A) || // A..Z + (ch >= 0x61 && ch <= 0x7A) || // a..z + (ch === 0x5C) || // \ (backslash) + ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); } - // Expect the next token to match the specified punctuator. - // If not, an exception will be thrown. + function isIdentifierPart(ch) { + return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) + (ch >= 0x41 && ch <= 0x5A) || // A..Z + (ch >= 0x61 && ch <= 0x7A) || // a..z + (ch >= 0x30 && ch <= 0x39) || // 0..9 + (ch === 0x5C) || // \ (backslash) + ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); + } - function expect(value) { - var token = lex(); - if (token.type !== Token.Punctuator || token.value !== value) { - throwUnexpected(token); + // 7.6.1.2 Future Reserved Words + + function isFutureReservedWord(id) { + switch (id) { + case 'class': + case 'enum': + case 'export': + case 'extends': + case 'import': + case 'super': + return true; + default: + return false; } } - // Expect the next token to match the specified keyword. - // If not, an exception will be thrown. - - function expectKeyword(keyword) { - var token = lex(); - if (token.type !== Token.Keyword || token.value !== keyword) { - throwUnexpected(token); + function isStrictModeReservedWord(id) { + switch (id) { + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'yield': + case 'let': + return true; + default: + return false; } } - // Return true if the next token matches the specified punctuator. - - function match(value) { - return lookahead.type === Token.Punctuator && lookahead.value === value; + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; } - // Return true if the next token matches the specified keyword - - function matchKeyword(keyword) { - return lookahead.type === Token.Keyword && lookahead.value === keyword; - } + // 7.6.1.1 Keywords - // Return true if the next token is an assignment operator + function isKeyword(id) { + if (strict && isStrictModeReservedWord(id)) { + return true; + } - function matchAssign() { - var op; + // 'const' is specialized as Keyword in V8. + // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next. + // Some others are from future reserved words. - if (lookahead.type !== Token.Punctuator) { + switch (id.length) { + case 2: + return (id === 'if') || (id === 'in') || (id === 'do'); + case 3: + return (id === 'var') || (id === 'for') || (id === 'new') || + (id === 'try') || (id === 'let'); + case 4: + return (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum'); + case 5: + return (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || (id === 'yield') || + (id === 'class') || (id === 'super'); + case 6: + return (id === 'return') || (id === 'typeof') || (id === 'delete') || + (id === 'switch') || (id === 'export') || (id === 'import'); + case 7: + return (id === 'default') || (id === 'finally') || (id === 'extends'); + case 8: + return (id === 'function') || (id === 'continue') || (id === 'debugger'); + case 10: + return (id === 'instanceof'); + default: return false; } - op = lookahead.value; - return op === '=' || - op === '*=' || - op === '/=' || - op === '%=' || - op === '+=' || - op === '-=' || - op === '<<=' || - op === '>>=' || - op === '>>>=' || - op === '&=' || - op === '^=' || - op === '|='; } - function consumeSemicolon() { - var line; + // 7.4 Comments - // Catch the very common case first: immediately a semicolon (U+003B). - if (source.charCodeAt(index) === 0x3B || match(';')) { - lex(); - return; - } + function addComment(type, value, start, end, loc) { + var comment, attacher; - line = lineNumber; - skipComment(); - if (lineNumber !== line) { + assert(typeof start === 'number', 'Comment must have valid position'); + + // Because the way the actual token is scanned, often the comments + // (if any) are skipped twice during the lexical analysis. + // Thus, we need to skip adding a comment if the comment array already + // handled it. + if (state.lastCommentStart >= start) { return; } + state.lastCommentStart = start; - if (lookahead.type !== Token.EOF && !match('}')) { - throwUnexpected(lookahead); + comment = { + type: type, + value: value + }; + if (extra.range) { + comment.range = [start, end]; + } + if (extra.loc) { + comment.loc = loc; + } + extra.comments.push(comment); + if (extra.attachComment) { + extra.leadingComments.push(comment); + extra.trailingComments.push(comment); } } - // Return true if provided expression is LeftHandSideExpression - - function isLeftHandSide(expr) { - return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; - } - - // 11.1.4 Array Initialiser - - function parseArrayInitialiser() { - var elements = [], startToken; - - startToken = lookahead; - expect('['); + function skipSingleLineComment(offset) { + var start, loc, ch, comment; - while (!match(']')) { - if (match(',')) { - lex(); - elements.push(null); - } else { - elements.push(parseAssignmentExpression()); + start = index - offset; + loc = { + start: { + line: lineNumber, + column: index - lineStart - offset + } + }; - if (!match(']')) { - expect(','); + while (index < length) { + ch = source.charCodeAt(index); + ++index; + if (isLineTerminator(ch)) { + if (extra.comments) { + comment = source.slice(start + offset, index - 1); + loc.end = { + line: lineNumber, + column: index - lineStart - 1 + }; + addComment('Line', comment, start, index - 1, loc); + } + if (ch === 13 && source.charCodeAt(index) === 10) { + ++index; } + ++lineNumber; + lineStart = index; + return; } } - lex(); - - return delegate.markEnd(delegate.createArrayExpression(elements), startToken); - } - - // 11.1.5 Object Initialiser - - function parsePropertyFunction(param, first) { - var previousStrict, body, startToken; - - previousStrict = strict; - startToken = lookahead; - body = parseFunctionSourceElements(); - if (first && strict && isRestrictedWord(param[0].name)) { - throwErrorTolerant(first, Messages.StrictParamName); + if (extra.comments) { + comment = source.slice(start + offset, index); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Line', comment, start, index, loc); } - strict = previousStrict; - return delegate.markEnd(delegate.createFunctionExpression(null, param, [], body), startToken); } - function parseObjectPropertyKey() { - var token, startToken; - - startToken = lookahead; - token = lex(); + function skipMultiLineComment() { + var start, loc, ch, comment; - // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. + if (extra.comments) { + start = index - 2; + loc = { + start: { + line: lineNumber, + column: index - lineStart - 2 + } + }; + } - if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); + while (index < length) { + ch = source.charCodeAt(index); + if (isLineTerminator(ch)) { + if (ch === 0x0D && source.charCodeAt(index + 1) === 0x0A) { + ++index; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else if (ch === 0x2A) { + // Block comment ends with '*/'. + if (source.charCodeAt(index + 1) === 0x2F) { + ++index; + ++index; + if (extra.comments) { + comment = source.slice(start + 2, index - 2); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Block', comment, start, index, loc); + } + return; + } + ++index; + } else { + ++index; } - return delegate.markEnd(delegate.createLiteral(token), startToken); } - return delegate.markEnd(delegate.createIdentifier(token.value), startToken); + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } - function parseObjectProperty() { - var token, key, id, value, param, startToken; - - token = lookahead; - startToken = lookahead; - - if (token.type === Token.Identifier) { - - id = parseObjectPropertyKey(); + function skipComment() { + var ch, start; - // Property Assignment: Getter and Setter. + start = (index === 0); + while (index < length) { + ch = source.charCodeAt(index); - if (token.value === 'get' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - expect(')'); - value = parsePropertyFunction([]); - return delegate.markEnd(delegate.createProperty('get', key, value), startToken); - } - if (token.value === 'set' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - token = lookahead; - if (token.type !== Token.Identifier) { - expect(')'); - throwErrorTolerant(token, Messages.UnexpectedToken, token.value); - value = parsePropertyFunction([]); + if (isWhiteSpace(ch)) { + ++index; + } else if (isLineTerminator(ch)) { + ++index; + if (ch === 0x0D && source.charCodeAt(index) === 0x0A) { + ++index; + } + ++lineNumber; + lineStart = index; + start = true; + } else if (ch === 0x2F) { // U+002F is '/' + ch = source.charCodeAt(index + 1); + if (ch === 0x2F) { + ++index; + ++index; + skipSingleLineComment(2); + start = true; + } else if (ch === 0x2A) { // U+002A is '*' + ++index; + ++index; + skipMultiLineComment(); } else { - param = [ parseVariableIdentifier() ]; - expect(')'); - value = parsePropertyFunction(param, token); + break; } - return delegate.markEnd(delegate.createProperty('set', key, value), startToken); + } else if (start && ch === 0x2D) { // U+002D is '-' + // U+003E is '>' + if ((source.charCodeAt(index + 1) === 0x2D) && (source.charCodeAt(index + 2) === 0x3E)) { + // '-->' is a single-line comment + index += 3; + skipSingleLineComment(3); + } else { + break; + } + } else if (ch === 0x3C) { // U+003C is '<' + if (source.slice(index + 1, index + 4) === '!--') { + ++index; // `<` + ++index; // `!` + ++index; // `-` + ++index; // `-` + skipSingleLineComment(4); + } else { + break; + } + } else { + break; } - expect(':'); - value = parseAssignmentExpression(); - return delegate.markEnd(delegate.createProperty('init', id, value), startToken); - } - if (token.type === Token.EOF || token.type === Token.Punctuator) { - throwUnexpected(token); - } else { - key = parseObjectPropertyKey(); - expect(':'); - value = parseAssignmentExpression(); - return delegate.markEnd(delegate.createProperty('init', key, value), startToken); } } - function parseObjectInitialiser() { - var properties = [], property, name, key, kind, map = {}, toString = String, startToken; + function scanHexEscape(prefix) { + var i, len, ch, code = 0; - startToken = lookahead; + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && isHexDigit(source[index])) { + ch = source[index++]; + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); + } - expect('{'); + function getEscapedIdentifier() { + var ch, id; - while (!match('}')) { - property = parseObjectProperty(); + ch = source.charCodeAt(index++); + id = String.fromCharCode(ch); - if (property.key.type === Syntax.Identifier) { - name = property.key.name; - } else { - name = toString(property.key.value); + // '\u' (U+005C, U+0075) denotes an escaped character. + if (ch === 0x5C) { + if (source.charCodeAt(index) !== 0x75) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } - kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; - - key = '$' + name; - if (Object.prototype.hasOwnProperty.call(map, key)) { - if (map[key] === PropertyKind.Data) { - if (strict && kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.StrictDuplicateProperty); - } else if (kind !== PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } - } else { - if (kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } else if (map[key] & kind) { - throwErrorTolerant({}, Messages.AccessorGetSet); - } - } - map[key] |= kind; - } else { - map[key] = kind; + ++index; + ch = scanHexEscape('u'); + if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } + id = ch; + } - properties.push(property); + while (index < length) { + ch = source.charCodeAt(index); + if (!isIdentifierPart(ch)) { + break; + } + ++index; + id += String.fromCharCode(ch); - if (!match('}')) { - expect(','); + // '\u' (U+005C, U+0075) denotes an escaped character. + if (ch === 0x5C) { + id = id.substr(0, id.length - 1); + if (source.charCodeAt(index) !== 0x75) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + ++index; + ch = scanHexEscape('u'); + if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + id += ch; } } - expect('}'); - - return delegate.markEnd(delegate.createObjectExpression(properties), startToken); + return id; } - // 11.1.6 The Grouping Operator - - function parseGroupExpression() { - var expr; - - expect('('); - - expr = parseExpression(); + function getIdentifier() { + var start, ch; - expect(')'); + start = index++; + while (index < length) { + ch = source.charCodeAt(index); + if (ch === 0x5C) { + // Blackslash (U+005C) marks Unicode escape sequence. + index = start; + return getEscapedIdentifier(); + } + if (isIdentifierPart(ch)) { + ++index; + } else { + break; + } + } - return expr; + return source.slice(start, index); } + function scanIdentifier() { + var start, id, type; - // 11.1 Primary Expressions - - function parsePrimaryExpression() { - var type, token, expr, startToken; - - if (match('(')) { - return parseGroupExpression(); - } - - if (match('[')) { - return parseArrayInitialiser(); - } - - if (match('{')) { - return parseObjectInitialiser(); - } + start = index; - type = lookahead.type; - startToken = lookahead; + // Backslash (U+005C) starts an escaped character. + id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier(); - if (type === Token.Identifier) { - expr = delegate.createIdentifier(lex().value); - } else if (type === Token.StringLiteral || type === Token.NumericLiteral) { - if (strict && lookahead.octal) { - throwErrorTolerant(lookahead, Messages.StrictOctalLiteral); - } - expr = delegate.createLiteral(lex()); - } else if (type === Token.Keyword) { - if (matchKeyword('function')) { - return parseFunctionExpression(); - } - if (matchKeyword('this')) { - lex(); - expr = delegate.createThisExpression(); - } else { - throwUnexpected(lex()); - } - } else if (type === Token.BooleanLiteral) { - token = lex(); - token.value = (token.value === 'true'); - expr = delegate.createLiteral(token); - } else if (type === Token.NullLiteral) { - token = lex(); - token.value = null; - expr = delegate.createLiteral(token); - } else if (match('/') || match('/=')) { - if (typeof extra.tokens !== 'undefined') { - expr = delegate.createLiteral(collectRegex()); - } else { - expr = delegate.createLiteral(scanRegExp()); - } - peek(); + // There is no keyword or literal with only one character. + // Thus, it must be an identifier. + if (id.length === 1) { + type = Token.Identifier; + } else if (isKeyword(id)) { + type = Token.Keyword; + } else if (id === 'null') { + type = Token.NullLiteral; + } else if (id === 'true' || id === 'false') { + type = Token.BooleanLiteral; } else { - throwUnexpected(lex()); + type = Token.Identifier; } - return delegate.markEnd(expr, startToken); + return { + type: type, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; } - // 11.2 Left-Hand-Side Expressions - function parseArguments() { - var args = []; + // 7.7 Punctuators + + function scanPunctuator() { + var start = index, + code = source.charCodeAt(index), + code2, + ch1 = source[index], + ch2, + ch3, + ch4; - expect('('); + switch (code) { - if (!match(')')) { - while (index < length) { - args.push(parseAssignmentExpression()); - if (match(')')) { - break; + // Check for most common single-character punctuators. + case 0x2E: // . dot + case 0x28: // ( open bracket + case 0x29: // ) close bracket + case 0x3B: // ; semicolon + case 0x2C: // , comma + case 0x7B: // { open curly brace + case 0x7D: // } close curly brace + case 0x5B: // [ + case 0x5D: // ] + case 0x3A: // : + case 0x3F: // ? + case 0x7E: // ~ + ++index; + if (extra.tokenize) { + if (code === 0x28) { + extra.openParenToken = extra.tokens.length; + } else if (code === 0x7B) { + extra.openCurlyToken = extra.tokens.length; } - expect(','); } - } - - expect(')'); + return { + type: Token.Punctuator, + value: String.fromCharCode(code), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; - return args; - } + default: + code2 = source.charCodeAt(index + 1); - function parseNonComputedProperty() { - var token, startToken; + // '=' (U+003D) marks an assignment or comparison operator. + if (code2 === 0x3D) { + switch (code) { + case 0x2B: // + + case 0x2D: // - + case 0x2F: // / + case 0x3C: // < + case 0x3E: // > + case 0x5E: // ^ + case 0x7C: // | + case 0x25: // % + case 0x26: // & + case 0x2A: // * + index += 2; + return { + type: Token.Punctuator, + value: String.fromCharCode(code) + String.fromCharCode(code2), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; - startToken = lookahead; - token = lex(); + case 0x21: // ! + case 0x3D: // = + index += 2; - if (!isIdentifierName(token)) { - throwUnexpected(token); + // !== and === + if (source.charCodeAt(index) === 0x3D) { + ++index; + } + return { + type: Token.Punctuator, + value: source.slice(start, index), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + } } - return delegate.markEnd(delegate.createIdentifier(token.value), startToken); - } - - function parseNonComputedMember() { - expect('.'); + // 4-character punctuator: >>>= - return parseNonComputedProperty(); - } + ch4 = source.substr(index, 4); - function parseComputedMember() { - var expr; + if (ch4 === '>>>=') { + index += 4; + return { + type: Token.Punctuator, + value: ch4, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - expect('['); + // 3-character punctuators: === !== >>> <<= >>= - expr = parseExpression(); + ch3 = ch4.substr(0, 3); - expect(']'); + if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') { + index += 3; + return { + type: Token.Punctuator, + value: ch3, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - return expr; - } + // Other 2-character punctuators: ++ -- << >> && || + ch2 = ch3.substr(0, 2); - function parseNewExpression() { - var callee, args, startToken; + if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') { + index += 2; + return { + type: Token.Punctuator, + value: ch2, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - startToken = lookahead; - expectKeyword('new'); - callee = parseLeftHandSideExpression(); - args = match('(') ? parseArguments() : []; + // 1-character punctuators: < > = ! + - * % & | ^ / + if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - return delegate.markEnd(delegate.createNewExpression(callee, args), startToken); + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } - function parseLeftHandSideExpressionAllowCall() { - var previousAllowIn, expr, args, property, startToken; - - startToken = lookahead; + // 7.8.3 Numeric Literals - previousAllowIn = state.allowIn; - state.allowIn = true; - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - state.allowIn = previousAllowIn; + function scanHexLiteral(start) { + var number = ''; - for (;;) { - if (match('.')) { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); - } else if (match('(')) { - args = parseArguments(); - expr = delegate.createCallExpression(expr, args); - } else if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - } else { + while (index < length) { + if (!isHexDigit(source[index])) { break; } - delegate.markEnd(expr, startToken); + number += source[index++]; } - return expr; - } - - function parseLeftHandSideExpression() { - var previousAllowIn, expr, property, startToken; + if (number.length === 0) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } - startToken = lookahead; + if (isIdentifierStart(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } - previousAllowIn = state.allowIn; - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - state.allowIn = previousAllowIn; + return { + type: Token.NumericLiteral, + value: parseInt('0x' + number, 16), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - while (match('.') || match('[')) { - if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - } else { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); + function scanOctalLiteral(start) { + var number = '0' + source[index++]; + while (index < length) { + if (!isOctalDigit(source[index])) { + break; } - delegate.markEnd(expr, startToken); + number += source[index++]; } - return expr; + if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.NumericLiteral, + value: parseInt(number, 8), + octal: true, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; } - // 11.3 Postfix Expressions + function scanNumericLiteral() { + var number, start, ch; - function parsePostfixExpression() { - var expr, token, startToken = lookahead; + ch = source[index]; + assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), + 'Numeric literal must start with a decimal digit or a decimal point'); - expr = parseLeftHandSideExpressionAllowCall(); + start = index; + number = ''; + if (ch !== '.') { + number = source[index++]; + ch = source[index]; - if (lookahead.type === Token.Punctuator) { - if ((match('++') || match('--')) && !peekLineTerminator()) { - // 11.3.1, 11.3.2 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPostfix); + // Hex number starts with '0x'. + // Octal number starts with '0'. + if (number === '0') { + if (ch === 'x' || ch === 'X') { + ++index; + return scanHexLiteral(start); + } + if (isOctalDigit(ch)) { + return scanOctalLiteral(start); } - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); + // decimal number starts with '0' such as '09' is illegal. + if (ch && isDecimalDigit(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } + } - token = lex(); - expr = delegate.markEnd(delegate.createPostfixExpression(token.value, expr), startToken); + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; } + ch = source[index]; } - return expr; - } - - // 11.4 Unary Operators - - function parseUnaryExpression() { - var token, expr, startToken; - - if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { - expr = parsePostfixExpression(); - } else if (match('++') || match('--')) { - startToken = lookahead; - token = lex(); - expr = parseUnaryExpression(); - // 11.4.4, 11.4.5 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPrefix); + if (ch === '.') { + number += source[index++]; + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; } + ch = source[index]; + } - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } + if (ch === 'e' || ch === 'E') { + number += source[index++]; - expr = delegate.createUnaryExpression(token.value, expr); - expr = delegate.markEnd(expr, startToken); - } else if (match('+') || match('-') || match('~') || match('!')) { - startToken = lookahead; - token = lex(); - expr = parseUnaryExpression(); - expr = delegate.createUnaryExpression(token.value, expr); - expr = delegate.markEnd(expr, startToken); - } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { - startToken = lookahead; - token = lex(); - expr = parseUnaryExpression(); - expr = delegate.createUnaryExpression(token.value, expr); - expr = delegate.markEnd(expr, startToken); - if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { - throwErrorTolerant({}, Messages.StrictDelete); + ch = source[index]; + if (ch === '+' || ch === '-') { + number += source[index++]; + } + if (isDecimalDigit(source.charCodeAt(index))) { + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; + } + } else { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } - } else { - expr = parsePostfixExpression(); } - return expr; - } - - function binaryPrecedence(token, allowIn) { - var prec = 0; - - if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { - return 0; + if (isIdentifierStart(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } - switch (token.value) { - case '||': - prec = 1; - break; - - case '&&': - prec = 2; - break; - - case '|': - prec = 3; - break; - - case '^': - prec = 4; - break; - - case '&': - prec = 5; - break; - - case '==': - case '!=': - case '===': - case '!==': - prec = 6; - break; - - case '<': - case '>': - case '<=': - case '>=': - case 'instanceof': - prec = 7; - break; - - case 'in': - prec = allowIn ? 7 : 0; - break; - - case '<<': - case '>>': - case '>>>': - prec = 8; - break; - - case '+': - case '-': - prec = 9; - break; - - case '*': - case '/': - case '%': - prec = 11; - break; + return { + type: Token.NumericLiteral, + value: parseFloat(number), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - default: - break; - } + // 7.8.4 String Literals - return prec; - } + function scanStringLiteral() { + var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart; + startLineNumber = lineNumber; + startLineStart = lineStart; - // 11.5 Multiplicative Operators - // 11.6 Additive Operators - // 11.7 Bitwise Shift Operators - // 11.8 Relational Operators - // 11.9 Equality Operators - // 11.10 Binary Bitwise Operators - // 11.11 Binary Logical Operators + quote = source[index]; + assert((quote === '\'' || quote === '"'), + 'String literal must starts with a quote'); - function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; + start = index; + ++index; - marker = lookahead; - left = parseUnaryExpression(); + while (index < length) { + ch = source[index++]; - token = lookahead; - prec = binaryPrecedence(token, state.allowIn); - if (prec === 0) { - return left; - } - token.prec = prec; - lex(); + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = source[index++]; + if (!ch || !isLineTerminator(ch.charCodeAt(0))) { + switch (ch) { + case 'u': + case 'x': + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + break; + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\x0B'; + break; - markers = [marker, lookahead]; - right = parseUnaryExpression(); + default: + if (isOctalDigit(ch)) { + code = '01234567'.indexOf(ch); - stack = [left, token, right]; + // \0 is not octal escape sequence + if (code !== 0) { + octal = true; + } - while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) { + if (index < length && isOctalDigit(source[index])) { + octal = true; + code = code * 8 + '01234567'.indexOf(source[index++]); - // Reduce: make a binary expression from the three topmost entries. - while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - expr = delegate.createBinaryExpression(operator, left, right); - markers.pop(); - marker = markers[markers.length - 1]; - delegate.markEnd(expr, marker); - stack.push(expr); + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + isOctalDigit(source[index])) { + code = code * 8 + '01234567'.indexOf(source[index++]); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } + } else { + ++lineNumber; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + lineStart = index; + } + } else if (isLineTerminator(ch.charCodeAt(0))) { + break; + } else { + str += ch; } - - // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(lookahead); - expr = parseUnaryExpression(); - stack.push(expr); } - // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while (i > 1) { - expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - marker = markers.pop(); - delegate.markEnd(expr, marker); + if (quote !== '') { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } - return expr; + return { + type: Token.StringLiteral, + value: str, + octal: octal, + startLineNumber: startLineNumber, + startLineStart: startLineStart, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; } + function testRegExp(pattern, flags) { + var value; + try { + value = new RegExp(pattern, flags); + } catch (e) { + throwError({}, Messages.InvalidRegExp); + } + return value; + } - // 11.12 Conditional Operator - - function parseConditionalExpression() { - var expr, previousAllowIn, consequent, alternate, startToken; - - startToken = lookahead; + function scanRegExpBody() { + var ch, str, classMarker, terminated, body; - expr = parseBinaryExpression(); + ch = source[index]; + assert(ch === '/', 'Regular expression literal must start with a slash'); + str = source[index++]; - if (match('?')) { - lex(); - previousAllowIn = state.allowIn; - state.allowIn = true; - consequent = parseAssignmentExpression(); - state.allowIn = previousAllowIn; - expect(':'); - alternate = parseAssignmentExpression(); + classMarker = false; + terminated = false; + while (index < length) { + ch = source[index++]; + str += ch; + if (ch === '\\') { + ch = source[index++]; + // ECMA-262 7.8.5 + if (isLineTerminator(ch.charCodeAt(0))) { + throwError({}, Messages.UnterminatedRegExp); + } + str += ch; + } else if (isLineTerminator(ch.charCodeAt(0))) { + throwError({}, Messages.UnterminatedRegExp); + } else if (classMarker) { + if (ch === ']') { + classMarker = false; + } + } else { + if (ch === '/') { + terminated = true; + break; + } else if (ch === '[') { + classMarker = true; + } + } + } - expr = delegate.createConditionalExpression(expr, consequent, alternate); - delegate.markEnd(expr, startToken); + if (!terminated) { + throwError({}, Messages.UnterminatedRegExp); } - return expr; + // Exclude leading and trailing slash. + body = str.substr(1, str.length - 2); + return { + value: body, + literal: str + }; } - // 11.13 Assignment Operators + function scanRegExpFlags() { + var ch, str, flags, restore; - function parseAssignmentExpression() { - var token, left, right, node, startToken; + str = ''; + flags = ''; + while (index < length) { + ch = source[index]; + if (!isIdentifierPart(ch.charCodeAt(0))) { + break; + } - token = lookahead; - startToken = lookahead; + ++index; + if (ch === '\\' && index < length) { + ch = source[index]; + if (ch === 'u') { + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + flags += ch; + for (str += '\\u'; restore < index; ++restore) { + str += source[restore]; + } + } else { + index = restore; + flags += 'u'; + str += '\\u'; + } + throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); + } else { + str += '\\'; + throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + flags += ch; + str += ch; + } + } - node = left = parseConditionalExpression(); + return { + value: flags, + literal: str + }; + } - if (matchAssign()) { - // LeftHandSideExpression - if (!isLeftHandSide(left)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } + function scanRegExp() { + var start, body, flags, pattern, value; - // 11.13.1 - if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) { - throwErrorTolerant(token, Messages.StrictLHSAssignment); - } + lookahead = null; + skipComment(); + start = index; - token = lex(); - right = parseAssignmentExpression(); - node = delegate.markEnd(delegate.createAssignmentExpression(token.value, left, right), startToken); + body = scanRegExpBody(); + flags = scanRegExpFlags(); + value = testRegExp(body.value, flags.value); + + if (extra.tokenize) { + return { + type: Token.RegularExpression, + value: value, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; } - return node; + return { + literal: body.literal + flags.literal, + value: value, + start: start, + end: index + }; } - // 11.14 Comma Operator + function collectRegex() { + var pos, loc, regex, token; - function parseExpression() { - var expr, startToken = lookahead; + skipComment(); - expr = parseAssignmentExpression(); + pos = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; - if (match(',')) { - expr = delegate.createSequenceExpression([ expr ]); + regex = scanRegExp(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; - while (index < length) { - if (!match(',')) { - break; + /* istanbul ignore next */ + if (!extra.tokenize) { + // Pop the previous token, which is likely '/' or '/=' + if (extra.tokens.length > 0) { + token = extra.tokens[extra.tokens.length - 1]; + if (token.range[0] === pos && token.type === 'Punctuator') { + if (token.value === '/' || token.value === '/=') { + extra.tokens.pop(); + } } - lex(); - expr.expressions.push(parseAssignmentExpression()); } - delegate.markEnd(expr, startToken); + extra.tokens.push({ + type: 'RegularExpression', + value: regex.literal, + range: [pos, index], + loc: loc + }); } - return expr; + return regex; } - // 12.1 Block - - function parseStatementList() { - var list = [], - statement; + function isIdentifierName(token) { + return token.type === Token.Identifier || + token.type === Token.Keyword || + token.type === Token.BooleanLiteral || + token.type === Token.NullLiteral; + } - while (index < length) { - if (match('}')) { - break; + function advanceSlash() { + var prevToken, + checkToken; + // Using the following algorithm: + // https://github.com/mozilla/sweet.js/wiki/design + prevToken = extra.tokens[extra.tokens.length - 1]; + if (!prevToken) { + // Nothing before that: it cannot be a division. + return collectRegex(); + } + if (prevToken.type === 'Punctuator') { + if (prevToken.value === ']') { + return scanPunctuator(); } - statement = parseSourceElement(); - if (typeof statement === 'undefined') { - break; + if (prevToken.value === ')') { + checkToken = extra.tokens[extra.openParenToken - 1]; + if (checkToken && + checkToken.type === 'Keyword' && + (checkToken.value === 'if' || + checkToken.value === 'while' || + checkToken.value === 'for' || + checkToken.value === 'with')) { + return collectRegex(); + } + return scanPunctuator(); } - list.push(statement); + if (prevToken.value === '}') { + // Dividing a function by anything makes little sense, + // but we have to check for that. + if (extra.tokens[extra.openCurlyToken - 3] && + extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') { + // Anonymous function. + checkToken = extra.tokens[extra.openCurlyToken - 4]; + if (!checkToken) { + return scanPunctuator(); + } + } else if (extra.tokens[extra.openCurlyToken - 4] && + extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') { + // Named function. + checkToken = extra.tokens[extra.openCurlyToken - 5]; + if (!checkToken) { + return collectRegex(); + } + } else { + return scanPunctuator(); + } + // checkToken determines whether the function is + // a declaration or an expression. + if (FnExprTokens.indexOf(checkToken.value) >= 0) { + // It is an expression. + return scanPunctuator(); + } + // It is a declaration. + return collectRegex(); + } + return collectRegex(); } - - return list; + if (prevToken.type === 'Keyword') { + return collectRegex(); + } + return scanPunctuator(); } - function parseBlock() { - var block, startToken; - - startToken = lookahead; - expect('{'); - - block = parseStatementList(); - - expect('}'); + function advance() { + var ch; - return delegate.markEnd(delegate.createBlockStatement(block), startToken); - } + skipComment(); - // 12.2 Variable Statement + if (index >= length) { + return { + type: Token.EOF, + lineNumber: lineNumber, + lineStart: lineStart, + start: index, + end: index + }; + } - function parseVariableIdentifier() { - var token, startToken; + ch = source.charCodeAt(index); - startToken = lookahead; - token = lex(); + if (isIdentifierStart(ch)) { + return scanIdentifier(); + } - if (token.type !== Token.Identifier) { - throwUnexpected(token); + // Very common: ( and ) and ; + if (ch === 0x28 || ch === 0x29 || ch === 0x3B) { + return scanPunctuator(); } - return delegate.markEnd(delegate.createIdentifier(token.value), startToken); - } + // String literal starts with single quote (U+0027) or double quote (U+0022). + if (ch === 0x27 || ch === 0x22) { + return scanStringLiteral(); + } - function parseVariableDeclaration(kind) { - var init = null, id, startToken; - startToken = lookahead; - id = parseVariableIdentifier(); + // Dot (.) U+002E can also start a floating-point number, hence the need + // to check the next character. + if (ch === 0x2E) { + if (isDecimalDigit(source.charCodeAt(index + 1))) { + return scanNumericLiteral(); + } + return scanPunctuator(); + } - // 12.2.1 - if (strict && isRestrictedWord(id.name)) { - throwErrorTolerant({}, Messages.StrictVarName); + if (isDecimalDigit(ch)) { + return scanNumericLiteral(); } - if (kind === 'const') { - expect('='); - init = parseAssignmentExpression(); - } else if (match('=')) { - lex(); - init = parseAssignmentExpression(); + // Slash (/) U+002F can also start a regex. + if (extra.tokenize && ch === 0x2F) { + return advanceSlash(); } - return delegate.markEnd(delegate.createVariableDeclarator(id, init), startToken); + return scanPunctuator(); } - function parseVariableDeclarationList(kind) { - var list = []; + function collectToken() { + var loc, token, range, value; - do { - list.push(parseVariableDeclaration(kind)); - if (!match(',')) { - break; + skipComment(); + loc = { + start: { + line: lineNumber, + column: index - lineStart } - lex(); - } while (index < length); - - return list; - } - - function parseVariableStatement() { - var declarations; - - expectKeyword('var'); + }; - declarations = parseVariableDeclarationList(); + token = advance(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; - consumeSemicolon(); + if (token.type !== Token.EOF) { + value = source.slice(token.start, token.end); + extra.tokens.push({ + type: TokenName[token.type], + value: value, + range: [token.start, token.end], + loc: loc + }); + } - return delegate.createVariableDeclaration(declarations, 'var'); + return token; } - // kind may be `const` or `let` - // Both are experimental and not in the specification yet. - // see http://wiki.ecmascript.org/doku.php?id=harmony:const - // and http://wiki.ecmascript.org/doku.php?id=harmony:let - function parseConstLetDeclaration(kind) { - var declarations, startToken; - - startToken = lookahead; + function lex() { + var token; - expectKeyword(kind); + token = lookahead; + index = token.end; + lineNumber = token.lineNumber; + lineStart = token.lineStart; - declarations = parseVariableDeclarationList(kind); + lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); - consumeSemicolon(); + index = token.end; + lineNumber = token.lineNumber; + lineStart = token.lineStart; - return delegate.markEnd(delegate.createVariableDeclaration(declarations, kind), startToken); + return token; } - // 12.3 Empty Statement + function peek() { + var pos, line, start; - function parseEmptyStatement() { - expect(';'); - return delegate.createEmptyStatement(); + pos = index; + line = lineNumber; + start = lineStart; + lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); + index = pos; + lineNumber = line; + lineStart = start; } - // 12.4 Expression Statement - - function parseExpressionStatement() { - var expr = parseExpression(); - consumeSemicolon(); - return delegate.createExpressionStatement(expr); + function Position(line, column) { + this.line = line; + this.column = column; } - // 12.5 If statement - - function parseIfStatement() { - var test, consequent, alternate; - - expectKeyword('if'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - consequent = parseStatement(); - - if (matchKeyword('else')) { - lex(); - alternate = parseStatement(); - } else { - alternate = null; - } - - return delegate.createIfStatement(test, consequent, alternate); + function SourceLocation(startLine, startColumn, line, column) { + this.start = new Position(startLine, startColumn); + this.end = new Position(line, column); } - // 12.6 Iteration Statements - - function parseDoWhileStatement() { - var body, test, oldInIteration; - - expectKeyword('do'); - - oldInIteration = state.inIteration; - state.inIteration = true; + SyntaxTreeDelegate = { - body = parseStatement(); + name: 'SyntaxTree', - state.inIteration = oldInIteration; + processComment: function (node) { + var lastChild, trailingComments; - expectKeyword('while'); + if (node.type === Syntax.Program) { + if (node.body.length > 0) { + return; + } + } - expect('('); + if (extra.trailingComments.length > 0) { + if (extra.trailingComments[0].range[0] >= node.range[1]) { + trailingComments = extra.trailingComments; + extra.trailingComments = []; + } else { + extra.trailingComments.length = 0; + } + } else { + if (extra.bottomRightStack.length > 0 && + extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments && + extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments[0].range[0] >= node.range[1]) { + trailingComments = extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; + delete extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; + } + } - test = parseExpression(); + // Eating the stack. + while (extra.bottomRightStack.length > 0 && extra.bottomRightStack[extra.bottomRightStack.length - 1].range[0] >= node.range[0]) { + lastChild = extra.bottomRightStack.pop(); + } - expect(')'); + if (lastChild) { + if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) { + node.leadingComments = lastChild.leadingComments; + delete lastChild.leadingComments; + } + } else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) { + node.leadingComments = extra.leadingComments; + extra.leadingComments = []; + } - if (match(';')) { - lex(); - } - return delegate.createDoWhileStatement(body, test); - } + if (trailingComments) { + node.trailingComments = trailingComments; + } - function parseWhileStatement() { - var test, body, oldInIteration; + extra.bottomRightStack.push(node); + }, - expectKeyword('while'); + markEnd: function (node, startToken) { + if (extra.range) { + node.range = [startToken.start, index]; + } + if (extra.loc) { + node.loc = new SourceLocation( + startToken.startLineNumber === undefined ? startToken.lineNumber : startToken.startLineNumber, + startToken.start - (startToken.startLineStart === undefined ? startToken.lineStart : startToken.startLineStart), + lineNumber, + index - lineStart + ); + this.postProcess(node); + } - expect('('); + if (extra.attachComment) { + this.processComment(node); + } + return node; + }, - test = parseExpression(); + postProcess: function (node) { + if (extra.source) { + node.loc.source = extra.source; + } + return node; + }, - expect(')'); + createArrayExpression: function (elements) { + return { + type: Syntax.ArrayExpression, + elements: elements + }; + }, - oldInIteration = state.inIteration; - state.inIteration = true; + createAssignmentExpression: function (operator, left, right) { + return { + type: Syntax.AssignmentExpression, + operator: operator, + left: left, + right: right + }; + }, - body = parseStatement(); + createBinaryExpression: function (operator, left, right) { + var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : + Syntax.BinaryExpression; + return { + type: type, + operator: operator, + left: left, + right: right + }; + }, - state.inIteration = oldInIteration; + createBlockStatement: function (body) { + return { + type: Syntax.BlockStatement, + body: body + }; + }, - return delegate.createWhileStatement(test, body); - } + createBreakStatement: function (label) { + return { + type: Syntax.BreakStatement, + label: label + }; + }, - function parseForVariableDeclaration() { - var token, declarations, startToken; + createCallExpression: function (callee, args) { + return { + type: Syntax.CallExpression, + callee: callee, + 'arguments': args + }; + }, - startToken = lookahead; - token = lex(); - declarations = parseVariableDeclarationList(); + createCatchClause: function (param, body) { + return { + type: Syntax.CatchClause, + param: param, + body: body + }; + }, - return delegate.markEnd(delegate.createVariableDeclaration(declarations, token.value), startToken); - } + createConditionalExpression: function (test, consequent, alternate) { + return { + type: Syntax.ConditionalExpression, + test: test, + consequent: consequent, + alternate: alternate + }; + }, - function parseForStatement() { - var init, test, update, left, right, body, oldInIteration; + createContinueStatement: function (label) { + return { + type: Syntax.ContinueStatement, + label: label + }; + }, - init = test = update = null; + createDebuggerStatement: function () { + return { + type: Syntax.DebuggerStatement + }; + }, - expectKeyword('for'); + createDoWhileStatement: function (body, test) { + return { + type: Syntax.DoWhileStatement, + body: body, + test: test + }; + }, - expect('('); + createEmptyStatement: function () { + return { + type: Syntax.EmptyStatement + }; + }, - if (match(';')) { - lex(); - } else { - if (matchKeyword('var') || matchKeyword('let')) { - state.allowIn = false; - init = parseForVariableDeclaration(); - state.allowIn = true; + createExpressionStatement: function (expression) { + return { + type: Syntax.ExpressionStatement, + expression: expression + }; + }, - if (init.declarations.length === 1 && matchKeyword('in')) { - lex(); - left = init; - right = parseExpression(); - init = null; - } - } else { - state.allowIn = false; - init = parseExpression(); - state.allowIn = true; + createForStatement: function (init, test, update, body) { + return { + type: Syntax.ForStatement, + init: init, + test: test, + update: update, + body: body + }; + }, - if (matchKeyword('in')) { - // LeftHandSideExpression - if (!isLeftHandSide(init)) { - throwErrorTolerant({}, Messages.InvalidLHSInForIn); - } + createForInStatement: function (left, right, body) { + return { + type: Syntax.ForInStatement, + left: left, + right: right, + body: body, + each: false + }; + }, - lex(); - left = init; - right = parseExpression(); - init = null; - } - } + createFunctionDeclaration: function (id, params, defaults, body) { + return { + type: Syntax.FunctionDeclaration, + id: id, + params: params, + defaults: defaults, + body: body, + rest: null, + generator: false, + expression: false + }; + }, - if (typeof left === 'undefined') { - expect(';'); - } - } + createFunctionExpression: function (id, params, defaults, body) { + return { + type: Syntax.FunctionExpression, + id: id, + params: params, + defaults: defaults, + body: body, + rest: null, + generator: false, + expression: false + }; + }, - if (typeof left === 'undefined') { + createIdentifier: function (name) { + return { + type: Syntax.Identifier, + name: name + }; + }, - if (!match(';')) { - test = parseExpression(); - } - expect(';'); + createIfStatement: function (test, consequent, alternate) { + return { + type: Syntax.IfStatement, + test: test, + consequent: consequent, + alternate: alternate + }; + }, - if (!match(')')) { - update = parseExpression(); - } - } + createLabeledStatement: function (label, body) { + return { + type: Syntax.LabeledStatement, + label: label, + body: body + }; + }, - expect(')'); + createLiteral: function (token) { + return { + type: Syntax.Literal, + value: token.value, + raw: source.slice(token.start, token.end) + }; + }, - oldInIteration = state.inIteration; - state.inIteration = true; + createMemberExpression: function (accessor, object, property) { + return { + type: Syntax.MemberExpression, + computed: accessor === '[', + object: object, + property: property + }; + }, - body = parseStatement(); + createNewExpression: function (callee, args) { + return { + type: Syntax.NewExpression, + callee: callee, + 'arguments': args + }; + }, - state.inIteration = oldInIteration; + createObjectExpression: function (properties) { + return { + type: Syntax.ObjectExpression, + properties: properties + }; + }, - return (typeof left === 'undefined') ? - delegate.createForStatement(init, test, update, body) : - delegate.createForInStatement(left, right, body); - } + createPostfixExpression: function (operator, argument) { + return { + type: Syntax.UpdateExpression, + operator: operator, + argument: argument, + prefix: false + }; + }, - // 12.7 The continue statement + createProgram: function (body) { + return { + type: Syntax.Program, + body: body + }; + }, - function parseContinueStatement() { - var label = null, key; + createProperty: function (kind, key, value) { + return { + type: Syntax.Property, + key: key, + value: value, + kind: kind + }; + }, - expectKeyword('continue'); + createReturnStatement: function (argument) { + return { + type: Syntax.ReturnStatement, + argument: argument + }; + }, - // Optimize the most common form: 'continue;'. - if (source.charCodeAt(index) === 0x3B) { - lex(); + createSequenceExpression: function (expressions) { + return { + type: Syntax.SequenceExpression, + expressions: expressions + }; + }, - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } + createSwitchCase: function (test, consequent) { + return { + type: Syntax.SwitchCase, + test: test, + consequent: consequent + }; + }, - return delegate.createContinueStatement(null); - } + createSwitchStatement: function (discriminant, cases) { + return { + type: Syntax.SwitchStatement, + discriminant: discriminant, + cases: cases + }; + }, - if (peekLineTerminator()) { - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } + createThisExpression: function () { + return { + type: Syntax.ThisExpression + }; + }, - return delegate.createContinueStatement(null); - } + createThrowStatement: function (argument) { + return { + type: Syntax.ThrowStatement, + argument: argument + }; + }, - if (lookahead.type === Token.Identifier) { - label = parseVariableIdentifier(); + createTryStatement: function (block, guardedHandlers, handlers, finalizer) { + return { + type: Syntax.TryStatement, + block: block, + guardedHandlers: guardedHandlers, + handlers: handlers, + finalizer: finalizer + }; + }, - key = '$' + label.name; - if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.UnknownLabel, label.name); + createUnaryExpression: function (operator, argument) { + if (operator === '++' || operator === '--') { + return { + type: Syntax.UpdateExpression, + operator: operator, + argument: argument, + prefix: true + }; } - } + return { + type: Syntax.UnaryExpression, + operator: operator, + argument: argument, + prefix: true + }; + }, - consumeSemicolon(); + createVariableDeclaration: function (declarations, kind) { + return { + type: Syntax.VariableDeclaration, + declarations: declarations, + kind: kind + }; + }, - if (label === null && !state.inIteration) { - throwError({}, Messages.IllegalContinue); - } + createVariableDeclarator: function (id, init) { + return { + type: Syntax.VariableDeclarator, + id: id, + init: init + }; + }, - return delegate.createContinueStatement(label); - } + createWhileStatement: function (test, body) { + return { + type: Syntax.WhileStatement, + test: test, + body: body + }; + }, - // 12.8 The break statement + createWithStatement: function (object, body) { + return { + type: Syntax.WithStatement, + object: object, + body: body + }; + } + }; - function parseBreakStatement() { - var label = null, key; + // Return true if there is a line terminator before the next token. - expectKeyword('break'); + function peekLineTerminator() { + var pos, line, start, found; - // Catch the very common case first: immediately a semicolon (U+003B). - if (source.charCodeAt(index) === 0x3B) { - lex(); + pos = index; + line = lineNumber; + start = lineStart; + skipComment(); + found = lineNumber !== line; + index = pos; + lineNumber = line; + lineStart = start; - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } + return found; + } - return delegate.createBreakStatement(null); - } + // Throw an exception - if (peekLineTerminator()) { - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } + function throwError(token, messageFormat) { + var error, + args = Array.prototype.slice.call(arguments, 2), + msg = messageFormat.replace( + /%(\d)/g, + function (whole, index) { + assert(index < args.length, 'Message reference must be in range'); + return args[index]; + } + ); - return delegate.createBreakStatement(null); + if (typeof token.lineNumber === 'number') { + error = new Error('Line ' + token.lineNumber + ': ' + msg); + error.index = token.start; + error.lineNumber = token.lineNumber; + error.column = token.start - lineStart + 1; + } else { + error = new Error('Line ' + lineNumber + ': ' + msg); + error.index = index; + error.lineNumber = lineNumber; + error.column = index - lineStart + 1; } - if (lookahead.type === Token.Identifier) { - label = parseVariableIdentifier(); + error.description = msg; + throw error; + } - key = '$' + label.name; - if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.UnknownLabel, label.name); + function throwErrorTolerant() { + try { + throwError.apply(null, arguments); + } catch (e) { + if (extra.errors) { + extra.errors.push(e); + } else { + throw e; } } - - consumeSemicolon(); - - if (label === null && !(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return delegate.createBreakStatement(label); } - // 12.9 The return statement - function parseReturnStatement() { - var argument = null; + // Throw an exception because of the token. - expectKeyword('return'); + function throwUnexpected(token) { + if (token.type === Token.EOF) { + throwError(token, Messages.UnexpectedEOS); + } - if (!state.inFunctionBody) { - throwErrorTolerant({}, Messages.IllegalReturn); + if (token.type === Token.NumericLiteral) { + throwError(token, Messages.UnexpectedNumber); } - // 'return' followed by a space and an identifier is very common. - if (source.charCodeAt(index) === 0x20) { - if (isIdentifierStart(source.charCodeAt(index + 1))) { - argument = parseExpression(); - consumeSemicolon(); - return delegate.createReturnStatement(argument); - } + if (token.type === Token.StringLiteral) { + throwError(token, Messages.UnexpectedString); } - if (peekLineTerminator()) { - return delegate.createReturnStatement(null); + if (token.type === Token.Identifier) { + throwError(token, Messages.UnexpectedIdentifier); } - if (!match(';')) { - if (!match('}') && lookahead.type !== Token.EOF) { - argument = parseExpression(); + if (token.type === Token.Keyword) { + if (isFutureReservedWord(token.value)) { + throwError(token, Messages.UnexpectedReserved); + } else if (strict && isStrictModeReservedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictReservedWord); + return; } + throwError(token, Messages.UnexpectedToken, token.value); } - consumeSemicolon(); - - return delegate.createReturnStatement(argument); + // BooleanLiteral, NullLiteral, or Punctuator. + throwError(token, Messages.UnexpectedToken, token.value); } - // 12.10 The with statement - - function parseWithStatement() { - var object, body; + // Expect the next token to match the specified punctuator. + // If not, an exception will be thrown. - if (strict) { - // TODO(ikarienator): Should we update the test cases instead? - skipComment(); - throwErrorTolerant({}, Messages.StrictModeWith); + function expect(value) { + var token = lex(); + if (token.type !== Token.Punctuator || token.value !== value) { + throwUnexpected(token); } + } - expectKeyword('with'); + // Expect the next token to match the specified keyword. + // If not, an exception will be thrown. - expect('('); + function expectKeyword(keyword) { + var token = lex(); + if (token.type !== Token.Keyword || token.value !== keyword) { + throwUnexpected(token); + } + } - object = parseExpression(); + // Return true if the next token matches the specified punctuator. - expect(')'); + function match(value) { + return lookahead.type === Token.Punctuator && lookahead.value === value; + } - body = parseStatement(); + // Return true if the next token matches the specified keyword - return delegate.createWithStatement(object, body); + function matchKeyword(keyword) { + return lookahead.type === Token.Keyword && lookahead.value === keyword; } - // 12.10 The swith statement + // Return true if the next token is an assignment operator - function parseSwitchCase() { - var test, consequent = [], statement, startToken; + function matchAssign() { + var op; - startToken = lookahead; - if (matchKeyword('default')) { + if (lookahead.type !== Token.Punctuator) { + return false; + } + op = lookahead.value; + return op === '=' || + op === '*=' || + op === '/=' || + op === '%=' || + op === '+=' || + op === '-=' || + op === '<<=' || + op === '>>=' || + op === '>>>=' || + op === '&=' || + op === '^=' || + op === '|='; + } + + function consumeSemicolon() { + var line; + + // Catch the very common case first: immediately a semicolon (U+003B). + if (source.charCodeAt(index) === 0x3B || match(';')) { lex(); - test = null; - } else { - expectKeyword('case'); - test = parseExpression(); + return; } - expect(':'); - while (index < length) { - if (match('}') || matchKeyword('default') || matchKeyword('case')) { - break; - } - statement = parseStatement(); - consequent.push(statement); + line = lineNumber; + skipComment(); + if (lineNumber !== line) { + return; } - return delegate.markEnd(delegate.createSwitchCase(test, consequent), startToken); + if (lookahead.type !== Token.EOF && !match('}')) { + throwUnexpected(lookahead); + } } - function parseSwitchStatement() { - var discriminant, cases, clause, oldInSwitch, defaultFound; - - expectKeyword('switch'); - - expect('('); - - discriminant = parseExpression(); + // Return true if provided expression is LeftHandSideExpression - expect(')'); + function isLeftHandSide(expr) { + return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; + } - expect('{'); + // 11.1.4 Array Initialiser - cases = []; + function parseArrayInitialiser() { + var elements = [], startToken; - if (match('}')) { - lex(); - return delegate.createSwitchStatement(discriminant, cases); - } + startToken = lookahead; + expect('['); - oldInSwitch = state.inSwitch; - state.inSwitch = true; - defaultFound = false; + while (!match(']')) { + if (match(',')) { + lex(); + elements.push(null); + } else { + elements.push(parseAssignmentExpression()); - while (index < length) { - if (match('}')) { - break; - } - clause = parseSwitchCase(); - if (clause.test === null) { - if (defaultFound) { - throwError({}, Messages.MultipleDefaultsInSwitch); + if (!match(']')) { + expect(','); } - defaultFound = true; } - cases.push(clause); } - state.inSwitch = oldInSwitch; - - expect('}'); + lex(); - return delegate.createSwitchStatement(discriminant, cases); + return delegate.markEnd(delegate.createArrayExpression(elements), startToken); } - // 12.13 The throw statement - - function parseThrowStatement() { - var argument; + // 11.1.5 Object Initialiser - expectKeyword('throw'); + function parsePropertyFunction(param, first) { + var previousStrict, body, startToken; - if (peekLineTerminator()) { - throwError({}, Messages.NewlineAfterThrow); + previousStrict = strict; + startToken = lookahead; + body = parseFunctionSourceElements(); + if (first && strict && isRestrictedWord(param[0].name)) { + throwErrorTolerant(first, Messages.StrictParamName); } - - argument = parseExpression(); - - consumeSemicolon(); - - return delegate.createThrowStatement(argument); + strict = previousStrict; + return delegate.markEnd(delegate.createFunctionExpression(null, param, [], body), startToken); } - // 12.14 The try statement - - function parseCatchClause() { - var param, body, startToken; + function parseObjectPropertyKey() { + var token, startToken; startToken = lookahead; - expectKeyword('catch'); + token = lex(); - expect('('); - if (match(')')) { - throwUnexpected(lookahead); - } + // Note: This function is called only from parseObjectProperty(), where + // EOF and Punctuator tokens are already filtered out. - param = parseVariableIdentifier(); - // 12.14.1 - if (strict && isRestrictedWord(param.name)) { - throwErrorTolerant({}, Messages.StrictCatchVariable); + if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { + if (strict && token.octal) { + throwErrorTolerant(token, Messages.StrictOctalLiteral); + } + return delegate.markEnd(delegate.createLiteral(token), startToken); } - expect(')'); - body = parseBlock(); - return delegate.markEnd(delegate.createCatchClause(param, body), startToken); + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); } - function parseTryStatement() { - var block, handlers = [], finalizer = null; + function parseObjectProperty() { + var token, key, id, value, param, startToken; - expectKeyword('try'); + token = lookahead; + startToken = lookahead; - block = parseBlock(); + if (token.type === Token.Identifier) { - if (matchKeyword('catch')) { - handlers.push(parseCatchClause()); - } + id = parseObjectPropertyKey(); - if (matchKeyword('finally')) { - lex(); - finalizer = parseBlock(); - } + // Property Assignment: Getter and Setter. - if (handlers.length === 0 && !finalizer) { - throwError({}, Messages.NoCatchOrFinally); + if (token.value === 'get' && !match(':')) { + key = parseObjectPropertyKey(); + expect('('); + expect(')'); + value = parsePropertyFunction([]); + return delegate.markEnd(delegate.createProperty('get', key, value), startToken); + } + if (token.value === 'set' && !match(':')) { + key = parseObjectPropertyKey(); + expect('('); + token = lookahead; + if (token.type !== Token.Identifier) { + expect(')'); + throwErrorTolerant(token, Messages.UnexpectedToken, token.value); + value = parsePropertyFunction([]); + } else { + param = [ parseVariableIdentifier() ]; + expect(')'); + value = parsePropertyFunction(param, token); + } + return delegate.markEnd(delegate.createProperty('set', key, value), startToken); + } + expect(':'); + value = parseAssignmentExpression(); + return delegate.markEnd(delegate.createProperty('init', id, value), startToken); + } + if (token.type === Token.EOF || token.type === Token.Punctuator) { + throwUnexpected(token); + } else { + key = parseObjectPropertyKey(); + expect(':'); + value = parseAssignmentExpression(); + return delegate.markEnd(delegate.createProperty('init', key, value), startToken); } - - return delegate.createTryStatement(block, [], handlers, finalizer); } - // 12.15 The debugger statement - - function parseDebuggerStatement() { - expectKeyword('debugger'); - - consumeSemicolon(); + function parseObjectInitialiser() { + var properties = [], property, name, key, kind, map = {}, toString = String, startToken; - return delegate.createDebuggerStatement(); - } + startToken = lookahead; - // 12 Statements + expect('{'); - function parseStatement() { - var type = lookahead.type, - expr, - labeledBody, - key, - startToken; + while (!match('}')) { + property = parseObjectProperty(); - if (type === Token.EOF) { - throwUnexpected(lookahead); - } + if (property.key.type === Syntax.Identifier) { + name = property.key.name; + } else { + name = toString(property.key.value); + } + kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; - if (type === Token.Punctuator && lookahead.value === '{') { - return parseBlock(); - } + key = '$' + name; + if (Object.prototype.hasOwnProperty.call(map, key)) { + if (map[key] === PropertyKind.Data) { + if (strict && kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.StrictDuplicateProperty); + } else if (kind !== PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } + } else { + if (kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } else if (map[key] & kind) { + throwErrorTolerant({}, Messages.AccessorGetSet); + } + } + map[key] |= kind; + } else { + map[key] = kind; + } - startToken = lookahead; + properties.push(property); - if (type === Token.Punctuator) { - switch (lookahead.value) { - case ';': - return delegate.markEnd(parseEmptyStatement(), startToken); - case '(': - return delegate.markEnd(parseExpressionStatement(), startToken); - default: - break; + if (!match('}')) { + expect(','); } } - if (type === Token.Keyword) { - switch (lookahead.value) { - case 'break': - return delegate.markEnd(parseBreakStatement(), startToken); - case 'continue': - return delegate.markEnd(parseContinueStatement(), startToken); - case 'debugger': - return delegate.markEnd(parseDebuggerStatement(), startToken); - case 'do': - return delegate.markEnd(parseDoWhileStatement(), startToken); - case 'for': - return delegate.markEnd(parseForStatement(), startToken); - case 'function': - return delegate.markEnd(parseFunctionDeclaration(), startToken); - case 'if': - return delegate.markEnd(parseIfStatement(), startToken); - case 'return': - return delegate.markEnd(parseReturnStatement(), startToken); - case 'switch': - return delegate.markEnd(parseSwitchStatement(), startToken); - case 'throw': - return delegate.markEnd(parseThrowStatement(), startToken); - case 'try': - return delegate.markEnd(parseTryStatement(), startToken); - case 'var': - return delegate.markEnd(parseVariableStatement(), startToken); - case 'while': - return delegate.markEnd(parseWhileStatement(), startToken); - case 'with': - return delegate.markEnd(parseWithStatement(), startToken); - default: - break; - } - } + expect('}'); - expr = parseExpression(); + return delegate.markEnd(delegate.createObjectExpression(properties), startToken); + } - // 12.12 Labelled Statements - if ((expr.type === Syntax.Identifier) && match(':')) { - lex(); + // 11.1.6 The Grouping Operator - key = '$' + expr.name; - if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.Redeclaration, 'Label', expr.name); - } + function parseGroupExpression() { + var expr; - state.labelSet[key] = true; - labeledBody = parseStatement(); - delete state.labelSet[key]; - return delegate.markEnd(delegate.createLabeledStatement(expr, labeledBody), startToken); - } + expect('('); - consumeSemicolon(); + expr = parseExpression(); - return delegate.markEnd(delegate.createExpressionStatement(expr), startToken); + expect(')'); + + return expr; } - // 13 Function Definition - function parseFunctionSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted, - oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, startToken; + // 11.1 Primary Expressions - startToken = lookahead; - expect('{'); + function parsePrimaryExpression() { + var type, token, expr, startToken; - while (index < length) { - if (lookahead.type !== Token.StringLiteral) { - break; - } - token = lookahead; + if (match('(')) { + return parseGroupExpression(); + } - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = source.slice(token.start + 1, token.end - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } + if (match('[')) { + return parseArrayInitialiser(); } - oldLabelSet = state.labelSet; - oldInIteration = state.inIteration; - oldInSwitch = state.inSwitch; - oldInFunctionBody = state.inFunctionBody; + if (match('{')) { + return parseObjectInitialiser(); + } - state.labelSet = {}; - state.inIteration = false; - state.inSwitch = false; - state.inFunctionBody = true; + type = lookahead.type; + startToken = lookahead; - while (index < length) { - if (match('}')) { - break; + if (type === Token.Identifier) { + expr = delegate.createIdentifier(lex().value); + } else if (type === Token.StringLiteral || type === Token.NumericLiteral) { + if (strict && lookahead.octal) { + throwErrorTolerant(lookahead, Messages.StrictOctalLiteral); + } + expr = delegate.createLiteral(lex()); + } else if (type === Token.Keyword) { + if (matchKeyword('function')) { + return parseFunctionExpression(); + } + if (matchKeyword('this')) { + lex(); + expr = delegate.createThisExpression(); + } else { + throwUnexpected(lex()); } - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; + } else if (type === Token.BooleanLiteral) { + token = lex(); + token.value = (token.value === 'true'); + expr = delegate.createLiteral(token); + } else if (type === Token.NullLiteral) { + token = lex(); + token.value = null; + expr = delegate.createLiteral(token); + } else if (match('/') || match('/=')) { + if (typeof extra.tokens !== 'undefined') { + expr = delegate.createLiteral(collectRegex()); + } else { + expr = delegate.createLiteral(scanRegExp()); } - sourceElements.push(sourceElement); + peek(); + } else { + throwUnexpected(lex()); } - expect('}'); + return delegate.markEnd(expr, startToken); + } - state.labelSet = oldLabelSet; - state.inIteration = oldInIteration; - state.inSwitch = oldInSwitch; - state.inFunctionBody = oldInFunctionBody; + // 11.2 Left-Hand-Side Expressions - return delegate.markEnd(delegate.createBlockStatement(sourceElements), startToken); - } + function parseArguments() { + var args = []; - function parseParams(firstRestricted) { - var param, params = [], token, stricted, paramSet, key, message; expect('('); if (!match(')')) { - paramSet = {}; while (index < length) { - token = lookahead; - param = parseVariableIdentifier(); - key = '$' + token.value; - if (strict) { - if (isRestrictedWord(token.value)) { - stricted = token; - message = Messages.StrictParamName; - } - if (Object.prototype.hasOwnProperty.call(paramSet, key)) { - stricted = token; - message = Messages.StrictParamDupe; - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[key] = true; + args.push(parseAssignmentExpression()); if (match(')')) { break; } @@ -18687,3255 +22373,2989 @@ parseStatement: true, parseSourceElement: true */ expect(')'); - return { - params: params, - stricted: stricted, - firstRestricted: firstRestricted, - message: message - }; + return args; } - function parseFunctionDeclaration() { - var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict, startToken; + function parseNonComputedProperty() { + var token, startToken; startToken = lookahead; + token = lex(); - expectKeyword('function'); - token = lookahead; - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } + if (!isIdentifierName(token)) { + throwUnexpected(token); } - tmp = parseParams(firstRestricted); - params = tmp.params; - stricted = tmp.stricted; - firstRestricted = tmp.firstRestricted; - if (tmp.message) { - message = tmp.message; - } + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); + } - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; + function parseNonComputedMember() { + expect('.'); - return delegate.markEnd(delegate.createFunctionDeclaration(id, params, [], body), startToken); + return parseNonComputedProperty(); } - function parseFunctionExpression() { - var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict, startToken; + function parseComputedMember() { + var expr; + + expect('['); + + expr = parseExpression(); + + expect(']'); + + return expr; + } + + function parseNewExpression() { + var callee, args, startToken; startToken = lookahead; - expectKeyword('function'); + expectKeyword('new'); + callee = parseLeftHandSideExpression(); + args = match('(') ? parseArguments() : []; - if (!match('(')) { - token = lookahead; - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } + return delegate.markEnd(delegate.createNewExpression(callee, args), startToken); + } + + function parseLeftHandSideExpressionAllowCall() { + var previousAllowIn, expr, args, property, startToken; + + startToken = lookahead; + + previousAllowIn = state.allowIn; + state.allowIn = true; + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + state.allowIn = previousAllowIn; + + for (;;) { + if (match('.')) { + property = parseNonComputedMember(); + expr = delegate.createMemberExpression('.', expr, property); + } else if (match('(')) { + args = parseArguments(); + expr = delegate.createCallExpression(expr, args); + } else if (match('[')) { + property = parseComputedMember(); + expr = delegate.createMemberExpression('[', expr, property); } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } + break; } + delegate.markEnd(expr, startToken); } - tmp = parseParams(firstRestricted); - params = tmp.params; - stricted = tmp.stricted; - firstRestricted = tmp.firstRestricted; - if (tmp.message) { - message = tmp.message; - } + return expr; + } - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; + function parseLeftHandSideExpression() { + var previousAllowIn, expr, property, startToken; - return delegate.markEnd(delegate.createFunctionExpression(id, params, [], body), startToken); - } + startToken = lookahead; - // 14 Program + previousAllowIn = state.allowIn; + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + state.allowIn = previousAllowIn; - function parseSourceElement() { - if (lookahead.type === Token.Keyword) { - switch (lookahead.value) { - case 'const': - case 'let': - return parseConstLetDeclaration(lookahead.value); - case 'function': - return parseFunctionDeclaration(); - default: - return parseStatement(); + while (match('.') || match('[')) { + if (match('[')) { + property = parseComputedMember(); + expr = delegate.createMemberExpression('[', expr, property); + } else { + property = parseNonComputedMember(); + expr = delegate.createMemberExpression('.', expr, property); } + delegate.markEnd(expr, startToken); } - if (lookahead.type !== Token.EOF) { - return parseStatement(); - } + return expr; } - function parseSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted; + // 11.3 Postfix Expressions - while (index < length) { - token = lookahead; - if (token.type !== Token.StringLiteral) { - break; - } + function parsePostfixExpression() { + var expr, token, startToken = lookahead; - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = source.slice(token.start + 1, token.end - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + expr = parseLeftHandSideExpressionAllowCall(); + + if (lookahead.type === Token.Punctuator) { + if ((match('++') || match('--')) && !peekLineTerminator()) { + // 11.3.1, 11.3.2 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPostfix); } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; + + if (!isLeftHandSide(expr)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); } + + token = lex(); + expr = delegate.markEnd(delegate.createPostfixExpression(token.value, expr), startToken); } } - while (index < length) { - sourceElement = parseSourceElement(); - /* istanbul ignore if */ - if (typeof sourceElement === 'undefined') { - break; + return expr; + } + + // 11.4 Unary Operators + + function parseUnaryExpression() { + var token, expr, startToken; + + if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { + expr = parsePostfixExpression(); + } else if (match('++') || match('--')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + // 11.4.4, 11.4.5 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPrefix); } - sourceElements.push(sourceElement); + + if (!isLeftHandSide(expr)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); + } + + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + } else if (match('+') || match('-') || match('~') || match('!')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { + throwErrorTolerant({}, Messages.StrictDelete); + } + } else { + expr = parsePostfixExpression(); } - return sourceElements; + + return expr; } - function parseProgram() { - var body, startToken; + function binaryPrecedence(token, allowIn) { + var prec = 0; - skipComment(); - peek(); - startToken = lookahead; - strict = false; + if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { + return 0; + } - body = parseSourceElements(); - return delegate.markEnd(delegate.createProgram(body), startToken); + switch (token.value) { + case '||': + prec = 1; + break; + + case '&&': + prec = 2; + break; + + case '|': + prec = 3; + break; + + case '^': + prec = 4; + break; + + case '&': + prec = 5; + break; + + case '==': + case '!=': + case '===': + case '!==': + prec = 6; + break; + + case '<': + case '>': + case '<=': + case '>=': + case 'instanceof': + prec = 7; + break; + + case 'in': + prec = allowIn ? 7 : 0; + break; + + case '<<': + case '>>': + case '>>>': + prec = 8; + break; + + case '+': + case '-': + prec = 9; + break; + + case '*': + case '/': + case '%': + prec = 11; + break; + + default: + break; + } + + return prec; } - function filterTokenLocation() { - var i, entry, token, tokens = []; + // 11.5 Multiplicative Operators + // 11.6 Additive Operators + // 11.7 Bitwise Shift Operators + // 11.8 Relational Operators + // 11.9 Equality Operators + // 11.10 Binary Bitwise Operators + // 11.11 Binary Logical Operators - for (i = 0; i < extra.tokens.length; ++i) { - entry = extra.tokens[i]; - token = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - token.range = entry.range; - } - if (extra.loc) { - token.loc = entry.loc; + function parseBinaryExpression() { + var marker, markers, expr, token, prec, stack, right, operator, left, i; + + marker = lookahead; + left = parseUnaryExpression(); + + token = lookahead; + prec = binaryPrecedence(token, state.allowIn); + if (prec === 0) { + return left; + } + token.prec = prec; + lex(); + + markers = [marker, lookahead]; + right = parseUnaryExpression(); + + stack = [left, token, right]; + + while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) { + + // Reduce: make a binary expression from the three topmost entries. + while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { + right = stack.pop(); + operator = stack.pop().value; + left = stack.pop(); + expr = delegate.createBinaryExpression(operator, left, right); + markers.pop(); + marker = markers[markers.length - 1]; + delegate.markEnd(expr, marker); + stack.push(expr); } - tokens.push(token); + + // Shift. + token = lex(); + token.prec = prec; + stack.push(token); + markers.push(lookahead); + expr = parseUnaryExpression(); + stack.push(expr); } - extra.tokens = tokens; + // Final reduce to clean-up the stack. + i = stack.length - 1; + expr = stack[i]; + markers.pop(); + while (i > 1) { + expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr); + i -= 2; + marker = markers.pop(); + delegate.markEnd(expr, marker); + } + + return expr; } - function tokenize(code, options) { - var toString, - token, - tokens; - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } + // 11.12 Conditional Operator - delegate = SyntaxTreeDelegate; - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - lookahead = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false, - lastCommentStart: -1 - }; + function parseConditionalExpression() { + var expr, previousAllowIn, consequent, alternate, startToken; - extra = {}; + startToken = lookahead; - // Options matching. - options = options || {}; + expr = parseBinaryExpression(); - // Of course we collect tokens here. - options.tokens = true; - extra.tokens = []; - extra.tokenize = true; - // The following two fields are necessary to compute the Regex tokens. - extra.openParenToken = -1; - extra.openCurlyToken = -1; + if (match('?')) { + lex(); + previousAllowIn = state.allowIn; + state.allowIn = true; + consequent = parseAssignmentExpression(); + state.allowIn = previousAllowIn; + expect(':'); + alternate = parseAssignmentExpression(); + + expr = delegate.createConditionalExpression(expr, consequent, alternate); + delegate.markEnd(expr, startToken); + } + + return expr; + } + + // 11.13 Assignment Operators + + function parseAssignmentExpression() { + var token, left, right, node, startToken; - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; + token = lookahead; + startToken = lookahead; - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } + node = left = parseConditionalExpression(); - try { - peek(); - if (lookahead.type === Token.EOF) { - return extra.tokens; + if (matchAssign()) { + // LeftHandSideExpression + if (!isLeftHandSide(left)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); } - token = lex(); - while (lookahead.type !== Token.EOF) { - try { - token = lex(); - } catch (lexError) { - token = lookahead; - if (extra.errors) { - extra.errors.push(lexError); - // We have to break on the first error - // to avoid infinite loops. - break; - } else { - throw lexError; - } - } + // 11.13.1 + if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) { + throwErrorTolerant(token, Messages.StrictLHSAssignment); } - filterTokenLocation(); - tokens = extra.tokens; - if (typeof extra.comments !== 'undefined') { - tokens.comments = extra.comments; - } - if (typeof extra.errors !== 'undefined') { - tokens.errors = extra.errors; - } - } catch (e) { - throw e; - } finally { - extra = {}; + token = lex(); + right = parseAssignmentExpression(); + node = delegate.markEnd(delegate.createAssignmentExpression(token.value, left, right), startToken); } - return tokens; + + return node; } - function parse(code, options) { - var program, toString; + // 11.14 Comma Operator - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } + function parseExpression() { + var expr, startToken = lookahead; - delegate = SyntaxTreeDelegate; - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - lookahead = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false, - lastCommentStart: -1 - }; + expr = parseAssignmentExpression(); - extra = {}; - if (typeof options !== 'undefined') { - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; - extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment; + if (match(',')) { + expr = delegate.createSequenceExpression([ expr ]); - if (extra.loc && options.source !== null && options.source !== undefined) { - extra.source = toString(options.source); + while (index < length) { + if (!match(',')) { + break; + } + lex(); + expr.expressions.push(parseAssignmentExpression()); } - if (typeof options.tokens === 'boolean' && options.tokens) { - extra.tokens = []; - } - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } - if (extra.attachComment) { - extra.range = true; - extra.comments = []; - extra.bottomRightStack = []; - extra.trailingComments = []; - extra.leadingComments = []; - } + delegate.markEnd(expr, startToken); } - try { - program = parseProgram(); - if (typeof extra.comments !== 'undefined') { - program.comments = extra.comments; - } - if (typeof extra.tokens !== 'undefined') { - filterTokenLocation(); - program.tokens = extra.tokens; + return expr; + } + + // 12.1 Block + + function parseStatementList() { + var list = [], + statement; + + while (index < length) { + if (match('}')) { + break; } - if (typeof extra.errors !== 'undefined') { - program.errors = extra.errors; + statement = parseSourceElement(); + if (typeof statement === 'undefined') { + break; } - } catch (e) { - throw e; - } finally { - extra = {}; + list.push(statement); } - return program; + return list; } - // Sync with *.json manifests. - exports.version = '1.2.2'; + function parseBlock() { + var block, startToken; - exports.tokenize = tokenize; + startToken = lookahead; + expect('{'); - exports.parse = parse; + block = parseStatementList(); - // Deep copy. - /* istanbul ignore next */ - exports.Syntax = (function () { - var name, types = {}; + expect('}'); - if (typeof Object.create === 'function') { - types = Object.create(null); - } + return delegate.markEnd(delegate.createBlockStatement(block), startToken); + } - for (name in Syntax) { - if (Syntax.hasOwnProperty(name)) { - types[name] = Syntax[name]; - } - } + // 12.2 Variable Statement - if (typeof Object.freeze === 'function') { - Object.freeze(types); + function parseVariableIdentifier() { + var token, startToken; + + startToken = lookahead; + token = lex(); + + if (token.type !== Token.Identifier) { + throwUnexpected(token); } - return types; - }()); + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); + } -})); -/* vim: set sw=4 ts=4 et tw=80 : */ + function parseVariableDeclaration(kind) { + var init = null, id, startToken; + startToken = lookahead; + id = parseVariableIdentifier(); -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/generated/aesprim-browser.js","/node_modules/jsonpath/generated") -},{"buffer":57,"lYpoI2":59}],94:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* parser generated by jison 0.4.13 */ -/* - Returns a Parser object of the following structure: + // 12.2.1 + if (strict && isRestrictedWord(id.name)) { + throwErrorTolerant({}, Messages.StrictVarName); + } - Parser: { - yy: {} - } + if (kind === 'const') { + expect('='); + init = parseAssignmentExpression(); + } else if (match('=')) { + lex(); + init = parseAssignmentExpression(); + } - Parser.prototype: { - yy: {}, - trace: function(), - symbols_: {associative list: name ==> number}, - terminals_: {associative list: number ==> name}, - productions_: [...], - performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), - table: [...], - defaultActions: {...}, - parseError: function(str, hash), - parse: function(input), + return delegate.markEnd(delegate.createVariableDeclarator(id, init), startToken); + } - lexer: { - EOF: 1, - parseError: function(str, hash), - setInput: function(input), - input: function(), - unput: function(str), - more: function(), - less: function(n), - pastInput: function(), - upcomingInput: function(), - showPosition: function(), - test_match: function(regex_match_array, rule_index), - next: function(), - lex: function(), - begin: function(condition), - popState: function(), - _currentRules: function(), - topState: function(), - pushState: function(condition), + function parseVariableDeclarationList(kind) { + var list = []; - options: { - ranges: boolean (optional: true ==> token location info will include a .range[] member) - flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) - backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) - }, + do { + list.push(parseVariableDeclaration(kind)); + if (!match(',')) { + break; + } + lex(); + } while (index < length); - performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), - rules: [...], - conditions: {associative list: name ==> set}, + return list; } - } + function parseVariableStatement() { + var declarations; - token location info (@$, _$, etc.): { - first_line: n, - last_line: n, - first_column: n, - last_column: n, - range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) - } + expectKeyword('var'); + declarations = parseVariableDeclarationList(); - the parseError function receives a 'hash' object with these members for lexer and parser errors: { - text: (matched text) - token: (the produced terminal token, if any) - line: (yylineno) - } - while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { - loc: (yylloc) - expected: (string describing the set of expected tokens) - recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) - } -*/ -var parser = (function(){ -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"JSON_PATH":3,"DOLLAR":4,"PATH_COMPONENTS":5,"LEADING_CHILD_MEMBER_EXPRESSION":6,"PATH_COMPONENT":7,"MEMBER_COMPONENT":8,"SUBSCRIPT_COMPONENT":9,"CHILD_MEMBER_COMPONENT":10,"DESCENDANT_MEMBER_COMPONENT":11,"DOT":12,"MEMBER_EXPRESSION":13,"DOT_DOT":14,"STAR":15,"IDENTIFIER":16,"SCRIPT_EXPRESSION":17,"INTEGER":18,"END":19,"CHILD_SUBSCRIPT_COMPONENT":20,"DESCENDANT_SUBSCRIPT_COMPONENT":21,"[":22,"SUBSCRIPT":23,"]":24,"SUBSCRIPT_EXPRESSION":25,"SUBSCRIPT_EXPRESSION_LIST":26,"SUBSCRIPT_EXPRESSION_LISTABLE":27,",":28,"STRING_LITERAL":29,"ARRAY_SLICE":30,"FILTER_EXPRESSION":31,"QQ_STRING":32,"Q_STRING":33,"$accept":0,"$end":1}, -terminals_: {2:"error",4:"DOLLAR",12:"DOT",14:"DOT_DOT",15:"STAR",16:"IDENTIFIER",17:"SCRIPT_EXPRESSION",18:"INTEGER",19:"END",22:"[",24:"]",28:",",30:"ARRAY_SLICE",31:"FILTER_EXPRESSION",32:"QQ_STRING",33:"Q_STRING"}, -productions_: [0,[3,1],[3,2],[3,1],[3,2],[5,1],[5,2],[7,1],[7,1],[8,1],[8,1],[10,2],[6,1],[11,2],[13,1],[13,1],[13,1],[13,1],[13,1],[9,1],[9,1],[20,3],[21,4],[23,1],[23,1],[26,1],[26,3],[27,1],[27,1],[27,1],[25,1],[25,1],[25,1],[29,1],[29,1]], -performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */ -/**/) { -/* this == yyval */ -if (!yy.ast) { - yy.ast = _ast; - _ast.initialize(); -} + consumeSemicolon(); -var $0 = $$.length - 1; -switch (yystate) { -case 1:yy.ast.set({ expression: { type: "root", value: $$[$0] } }); yy.ast.unshift(); return yy.ast.yield() -break; -case 2:yy.ast.set({ expression: { type: "root", value: $$[$0-1] } }); yy.ast.unshift(); return yy.ast.yield() -break; -case 3:yy.ast.unshift(); return yy.ast.yield() -break; -case 4:yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $$[$0-1] }}); yy.ast.unshift(); return yy.ast.yield() -break; -case 5: -break; -case 6: -break; -case 7:yy.ast.set({ operation: "member" }); yy.ast.push() -break; -case 8:yy.ast.set({ operation: "subscript" }); yy.ast.push() -break; -case 9:yy.ast.set({ scope: "child" }) -break; -case 10:yy.ast.set({ scope: "descendant" }) -break; -case 11: -break; -case 12:yy.ast.set({ scope: "child", operation: "member" }) -break; -case 13: -break; -case 14:yy.ast.set({ expression: { type: "wildcard", value: $$[$0] } }) -break; -case 15:yy.ast.set({ expression: { type: "identifier", value: $$[$0] } }) -break; -case 16:yy.ast.set({ expression: { type: "script_expression", value: $$[$0] } }) -break; -case 17:yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($$[$0]) } }) -break; -case 18: -break; -case 19:yy.ast.set({ scope: "child" }) -break; -case 20:yy.ast.set({ scope: "descendant" }) -break; -case 21: -break; -case 22: -break; -case 23: -break; -case 24:$$[$0].length > 1? yy.ast.set({ expression: { type: "union", value: $$[$0] } }) : this.$ = $$[$0] -break; -case 25:this.$ = [$$[$0]] -break; -case 26:this.$ = $$[$0-2].concat($$[$0]) -break; -case 27:this.$ = { expression: { type: "numeric_literal", value: parseInt($$[$0]) } }; yy.ast.set(this.$) -break; -case 28:this.$ = { expression: { type: "string_literal", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 29:this.$ = { expression: { type: "slice", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 30:this.$ = { expression: { type: "wildcard", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 31:this.$ = { expression: { type: "script_expression", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 32:this.$ = { expression: { type: "filter_expression", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 33:this.$ = $$[$0] -break; -case 34:this.$ = $$[$0] -break; -} -}, -table: [{3:1,4:[1,2],6:3,13:4,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{1:[3]},{1:[2,1],5:10,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,3],5:21,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,12],12:[2,12],14:[2,12],22:[2,12]},{1:[2,14],12:[2,14],14:[2,14],22:[2,14]},{1:[2,15],12:[2,15],14:[2,15],22:[2,15]},{1:[2,16],12:[2,16],14:[2,16],22:[2,16]},{1:[2,17],12:[2,17],14:[2,17],22:[2,17]},{1:[2,18],12:[2,18],14:[2,18],22:[2,18]},{1:[2,2],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,5],12:[2,5],14:[2,5],22:[2,5]},{1:[2,7],12:[2,7],14:[2,7],22:[2,7]},{1:[2,8],12:[2,8],14:[2,8],22:[2,8]},{1:[2,9],12:[2,9],14:[2,9],22:[2,9]},{1:[2,10],12:[2,10],14:[2,10],22:[2,10]},{1:[2,19],12:[2,19],14:[2,19],22:[2,19]},{1:[2,20],12:[2,20],14:[2,20],22:[2,20]},{13:23,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{13:24,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9],22:[1,25]},{15:[1,29],17:[1,30],18:[1,33],23:26,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{1:[2,4],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,6],12:[2,6],14:[2,6],22:[2,6]},{1:[2,11],12:[2,11],14:[2,11],22:[2,11]},{1:[2,13],12:[2,13],14:[2,13],22:[2,13]},{15:[1,29],17:[1,30],18:[1,33],23:38,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{24:[1,39]},{24:[2,23]},{24:[2,24],28:[1,40]},{24:[2,30]},{24:[2,31]},{24:[2,32]},{24:[2,25],28:[2,25]},{24:[2,27],28:[2,27]},{24:[2,28],28:[2,28]},{24:[2,29],28:[2,29]},{24:[2,33],28:[2,33]},{24:[2,34],28:[2,34]},{24:[1,41]},{1:[2,21],12:[2,21],14:[2,21],22:[2,21]},{18:[1,33],27:42,29:34,30:[1,35],32:[1,36],33:[1,37]},{1:[2,22],12:[2,22],14:[2,22],22:[2,22]},{24:[2,26],28:[2,26]}], -defaultActions: {27:[2,23],29:[2,30],30:[2,31],31:[2,32]}, -parseError: function parseError(str, hash) { - if (hash.recoverable) { - this.trace(str); - } else { - throw new Error(str); - } -}, -parse: function parse(input) { - var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; - var args = lstack.slice.call(arguments, 1); - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - this.yy.parser = this; - if (typeof this.lexer.yylloc == 'undefined') { - this.lexer.yylloc = {}; - } - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - var ranges = this.lexer.options && this.lexer.options.ranges; - if (typeof this.yy.parseError === 'function') { - this.parseError = this.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n) { - stack.length = stack.length - 2 * n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - function lex() { - var token; - token = self.lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; + return delegate.createVariableDeclaration(declarations, 'var'); } - var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == 'undefined') { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === 'undefined' || !action.length || !action[0]) { - var errStr = ''; - expected = []; - for (p in table[state]) { - if (this.terminals_[p] && p > TERROR) { - expected.push('\'' + this.terminals_[p] + '\''); - } - } - if (this.lexer.showPosition) { - errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + this.lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; - } else { - errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); - } - this.parseError(errStr, { - text: this.lexer.match, - token: this.terminals_[symbol] || symbol, - line: this.lexer.yylineno, - loc: yyloc, - expected: expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - this.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r !== 'undefined') { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } + + // kind may be `const` or `let` + // Both are experimental and not in the specification yet. + // see http://wiki.ecmascript.org/doku.php?id=harmony:const + // and http://wiki.ecmascript.org/doku.php?id=harmony:let + function parseConstLetDeclaration(kind) { + var declarations, startToken; + + startToken = lookahead; + + expectKeyword(kind); + + declarations = parseVariableDeclarationList(kind); + + consumeSemicolon(); + + return delegate.markEnd(delegate.createVariableDeclaration(declarations, kind), startToken); } - return true; -}}; -var _ast = { - initialize: function() { - this._nodes = []; - this._node = {}; - this._stash = []; - }, + // 12.3 Empty Statement - set: function(props) { - for (var k in props) this._node[k] = props[k]; - return this._node; - }, + function parseEmptyStatement() { + expect(';'); + return delegate.createEmptyStatement(); + } - node: function(obj) { - if (arguments.length) this._node = obj; - return this._node; - }, + // 12.4 Expression Statement - push: function() { - this._nodes.push(this._node); - this._node = {}; - }, + function parseExpressionStatement() { + var expr = parseExpression(); + consumeSemicolon(); + return delegate.createExpressionStatement(expr); + } - unshift: function() { - this._nodes.unshift(this._node); - this._node = {}; - }, + // 12.5 If statement - yield: function() { - var _nodes = this._nodes; - this.initialize(); - return _nodes; - } -}; -/* generated by jison-lex 0.2.1 */ -var lexer = (function(){ -var lexer = { + function parseIfStatement() { + var test, consequent, alternate; -EOF:1, + expectKeyword('if'); -parseError:function parseError(str, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str, hash); - } else { - throw new Error(str); - } - }, + expect('('); -// resets the lexer, sets new input -setInput:function (input) { - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0,0]; - } - this.offset = 0; - return this; - }, + test = parseExpression(); -// consumes and returns one char from the input -input:function () { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; + expect(')'); + + consequent = parseStatement(); + + if (matchKeyword('else')) { + lex(); + alternate = parseStatement(); } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; + alternate = null; } - this._input = this._input.slice(1); - return ch; - }, + return delegate.createIfStatement(test, consequent, alternate); + } -// unshifts one char (or a string) into the input -unput:function (ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); + // 12.6 Iteration Statements - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); - //this.yyleng -= len; - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); + function parseDoWhileStatement() { + var body, test, oldInIteration; - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r = this.yylloc.range; + expectKeyword('do'); - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? - (lines.length === oldLines.length ? this.yylloc.first_column : 0) - + oldLines[oldLines.length - lines.length].length - lines[0].length : - this.yylloc.first_column - len - }; + oldInIteration = state.inIteration; + state.inIteration = true; - if (this.options.ranges) { - this.yylloc.range = [r[0], r[0] + this.yyleng - len]; + body = parseStatement(); + + state.inIteration = oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + if (match(';')) { + lex(); } - this.yyleng = this.yytext.length; - return this; - }, -// When called from action, caches matched text and appends it on next action -more:function () { - this._more = true; - return this; - }, + return delegate.createDoWhileStatement(body, test); + } -// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. -reject:function () { - if (this.options.backtrack_lexer) { - this._backtrack = true; + function parseWhileStatement() { + var test, body, oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + return delegate.createWhileStatement(test, body); + } + + function parseForVariableDeclaration() { + var token, declarations, startToken; + + startToken = lookahead; + token = lex(); + declarations = parseVariableDeclarationList(); + + return delegate.markEnd(delegate.createVariableDeclaration(declarations, token.value), startToken); + } + + function parseForStatement() { + var init, test, update, left, right, body, oldInIteration; + + init = test = update = null; + + expectKeyword('for'); + + expect('('); + + if (match(';')) { + lex(); } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); + if (matchKeyword('var') || matchKeyword('let')) { + state.allowIn = false; + init = parseForVariableDeclaration(); + state.allowIn = true; + + if (init.declarations.length === 1 && matchKeyword('in')) { + lex(); + left = init; + right = parseExpression(); + init = null; + } + } else { + state.allowIn = false; + init = parseExpression(); + state.allowIn = true; + + if (matchKeyword('in')) { + // LeftHandSideExpression + if (!isLeftHandSide(init)) { + throwErrorTolerant({}, Messages.InvalidLHSInForIn); + } + + lex(); + left = init; + right = parseExpression(); + init = null; + } + } + if (typeof left === 'undefined') { + expect(';'); + } } - return this; - }, -// retain first n characters of the match -less:function (n) { - this.unput(this.match.slice(n)); - }, + if (typeof left === 'undefined') { -// displays already matched input, i.e. for error messages -pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, + if (!match(';')) { + test = parseExpression(); + } + expect(';'); -// displays upcoming input, i.e. for error messages -upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); + if (!match(')')) { + update = parseExpression(); + } } - return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); - }, -// displays the character position where the lexing error occurred, i.e. for error messages -showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c + "^"; - }, + expect(')'); -// test the lexed token: return FALSE when not a match, otherwise return token -test_match:function (match, indexed_rule) { - var token, - lines, - backup; + oldInIteration = state.inIteration; + state.inIteration = true; - if (this.options.backtrack_lexer) { - // save context - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); + body = parseStatement(); + + state.inIteration = oldInIteration; + + return (typeof left === 'undefined') ? + delegate.createForStatement(init, test, update, body) : + delegate.createForInStatement(left, right, body); + } + + // 12.7 The continue statement + + function parseContinueStatement() { + var label = null, key; + + expectKeyword('continue'); + + // Optimize the most common form: 'continue;'. + if (source.charCodeAt(index) === 0x3B) { + lex(); + + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); } + + return delegate.createContinueStatement(null); } - lines = match[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; + if (peekLineTerminator()) { + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return delegate.createContinueStatement(null); } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? - lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : - this.yylloc.last_column + match[0].length - }; - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; + + if (lookahead.type === Token.Identifier) { + label = parseVariableIdentifier(); + + key = '$' + label.name; + if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.UnknownLabel, label.name); + } } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; + + consumeSemicolon(); + + if (label === null && !state.inIteration) { + throwError({}, Messages.IllegalContinue); } - if (token) { - return token; - } else if (this._backtrack) { - // recover context - for (var k in backup) { - this[k] = backup[k]; + + return delegate.createContinueStatement(label); + } + + // 12.8 The break statement + + function parseBreakStatement() { + var label = null, key; + + expectKeyword('break'); + + // Catch the very common case first: immediately a semicolon (U+003B). + if (source.charCodeAt(index) === 0x3B) { + lex(); + + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); } - return false; // rule action called reject() implying the next rule should be tested instead. + + return delegate.createBreakStatement(null); } - return false; - }, -// return next match in input -next:function () { - if (this.done) { - return this.EOF; + if (peekLineTerminator()) { + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return delegate.createBreakStatement(null); } - if (!this._input) { - this.done = true; + + if (lookahead.type === Token.Identifier) { + label = parseVariableIdentifier(); + + key = '$' + label.name; + if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.UnknownLabel, label.name); + } } - var token, - match, - tempMatch, - index; - if (!this._more) { - this.yytext = ''; - this.match = ''; + consumeSemicolon(); + + if (label === null && !(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); } - var rules = this._currentRules(); - for (var i = 0; i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (this.options.backtrack_lexer) { - token = this.test_match(tempMatch, rules[i]); - if (token !== false) { - return token; - } else if (this._backtrack) { - match = false; - continue; // rule action called reject() implying a rule MISmatch. - } else { - // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) - return false; - } - } else if (!this.options.flex) { - break; - } - } + + return delegate.createBreakStatement(label); + } + + // 12.9 The return statement + + function parseReturnStatement() { + var argument = null; + + expectKeyword('return'); + + if (!state.inFunctionBody) { + throwErrorTolerant({}, Messages.IllegalReturn); } - if (match) { - token = this.test_match(match, rules[index]); - if (token !== false) { - return token; + + // 'return' followed by a space and an identifier is very common. + if (source.charCodeAt(index) === 0x20) { + if (isIdentifierStart(source.charCodeAt(index + 1))) { + argument = parseExpression(); + consumeSemicolon(); + return delegate.createReturnStatement(argument); } - // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) - return false; } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); + + if (peekLineTerminator()) { + return delegate.createReturnStatement(null); } - }, -// return next match that has a token -lex:function lex() { - var r = this.next(); - if (r) { - return r; - } else { - return this.lex(); + if (!match(';')) { + if (!match('}') && lookahead.type !== Token.EOF) { + argument = parseExpression(); + } } - }, -// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) -begin:function begin(condition) { - this.conditionStack.push(condition); - }, + consumeSemicolon(); -// pop the previously active lexer condition state off the condition stack -popState:function popState() { - var n = this.conditionStack.length - 1; - if (n > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, + return delegate.createReturnStatement(argument); + } -// produce the lexer rule set which is active for the currently active lexer condition state -_currentRules:function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, + // 12.10 The with statement -// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available -topState:function topState(n) { - n = this.conditionStack.length - 1 - Math.abs(n || 0); - if (n >= 0) { - return this.conditionStack[n]; - } else { - return "INITIAL"; + function parseWithStatement() { + var object, body; + + if (strict) { + // TODO(ikarienator): Should we update the test cases instead? + skipComment(); + throwErrorTolerant({}, Messages.StrictModeWith); } - }, -// alias for begin(condition) -pushState:function pushState(condition) { - this.begin(condition); - }, + expectKeyword('with'); -// return the number of states currently on the stack -stateStackSize:function stateStackSize() { - return this.conditionStack.length; - }, -options: {}, -performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START -/**/) { + expect('('); -var YYSTATE=YY_START; -switch($avoiding_name_collisions) { -case 0:return 4 -break; -case 1:return 14 -break; -case 2:return 12 -break; -case 3:return 15 -break; -case 4:return 16 -break; -case 5:return 22 -break; -case 6:return 24 -break; -case 7:return 28 -break; -case 8:return 30 -break; -case 9:return 18 -break; -case 10:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 32; -break; -case 11:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 33; -break; -case 12:return 17 -break; -case 13:return 31 -break; -} -}, -rules: [/^(?:\$)/,/^(?:\.\.)/,/^(?:\.)/,/^(?:\*)/,/^(?:[a-zA-Z_]+[a-zA-Z0-9_]*)/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?:((-?(?:0|[1-9][0-9]*)))?\:((-?(?:0|[1-9][0-9]*)))?(\:((-?(?:0|[1-9][0-9]*)))?)?)/,/^(?:(-?(?:0|[1-9][0-9]*)))/,/^(?:"(?:\\["bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^"\\])*")/,/^(?:'(?:\\['bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^'\\])*')/,/^(?:\(.+?\)(?=\]))/,/^(?:\?\(.+?\)(?=\]))/], -conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}} -}; -return lexer; -})(); -parser.lexer = lexer; -function Parser () { - this.yy = {}; -} -Parser.prototype = parser;parser.Parser = Parser; -return new Parser; -})(); + object = parseExpression(); + expect(')'); -if (typeof require !== 'undefined' && typeof exports !== 'undefined') { -exports.parser = parser; -exports.Parser = parser.Parser; -exports.parse = function () { return parser.parse.apply(parser, arguments); }; -exports.main = function commonjsMain(args) { - if (!args[1]) { - console.log('Usage: '+args[0]+' FILE'); - process.exit(1); + body = parseStatement(); + + return delegate.createWithStatement(object, body); } - var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); - return exports.parser.parse(source); -}; -if (typeof module !== 'undefined' && require.main === module) { - exports.main(process.argv.slice(1)); -} -} -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/generated/parser.js","/node_modules/jsonpath/generated") -},{"buffer":57,"fs":56,"lYpoI2":59,"path":106}],95:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = require('./lib/index'); + // 12.10 The swith statement -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/index.js","/node_modules/jsonpath") -},{"./lib/index":99,"buffer":57,"lYpoI2":59}],96:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = { - identifier: "[a-zA-Z_]+[a-zA-Z0-9_]*", - integer: "-?(?:0|[1-9][0-9]*)", - qq_string: "\"(?:\\\\[\"bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\"\\\\])*\"", - q_string: "'(?:\\\\[\'bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\'\\\\])*'" -}; + function parseSwitchCase() { + var test, consequent = [], statement, startToken; -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/dict.js","/node_modules/jsonpath/lib") -},{"buffer":57,"lYpoI2":59}],97:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var dict = require('./dict'); -var fs = require('fs'); -var grammar = { + startToken = lookahead; + if (matchKeyword('default')) { + lex(); + test = null; + } else { + expectKeyword('case'); + test = parseExpression(); + } + expect(':'); - lex: { + while (index < length) { + if (match('}') || matchKeyword('default') || matchKeyword('case')) { + break; + } + statement = parseStatement(); + consequent.push(statement); + } - macros: { - esc: "\\\\", - int: dict.integer - }, + return delegate.markEnd(delegate.createSwitchCase(test, consequent), startToken); + } - rules: [ - ["\\$", "return 'DOLLAR'"], - ["\\.\\.", "return 'DOT_DOT'"], - ["\\.", "return 'DOT'"], - ["\\*", "return 'STAR'"], - [dict.identifier, "return 'IDENTIFIER'"], - ["\\[", "return '['"], - ["\\]", "return ']'"], - [",", "return ','"], - ["({int})?\\:({int})?(\\:({int})?)?", "return 'ARRAY_SLICE'"], - ["{int}", "return 'INTEGER'"], - [dict.qq_string, "yytext = yytext.substr(1,yyleng-2); return 'QQ_STRING';"], - [dict.q_string, "yytext = yytext.substr(1,yyleng-2); return 'Q_STRING';"], - ["\\(.+?\\)(?=\\])", "return 'SCRIPT_EXPRESSION'"], - ["\\?\\(.+?\\)(?=\\])", "return 'FILTER_EXPRESSION'"] - ] - }, + function parseSwitchStatement() { + var discriminant, cases, clause, oldInSwitch, defaultFound; - start: "JSON_PATH", + expectKeyword('switch'); - bnf: { + expect('('); - JSON_PATH: [ - [ 'DOLLAR', 'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()' ], - [ 'DOLLAR PATH_COMPONENTS', 'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()' ], - [ 'LEADING_CHILD_MEMBER_EXPRESSION', 'yy.ast.unshift(); return yy.ast.yield()' ], - [ 'LEADING_CHILD_MEMBER_EXPRESSION PATH_COMPONENTS', 'yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $1 }}); yy.ast.unshift(); return yy.ast.yield()' ] ], + discriminant = parseExpression(); - PATH_COMPONENTS: [ - [ 'PATH_COMPONENT', '' ], - [ 'PATH_COMPONENTS PATH_COMPONENT', '' ] ], + expect(')'); - PATH_COMPONENT: [ - [ 'MEMBER_COMPONENT', 'yy.ast.set({ operation: "member" }); yy.ast.push()' ], - [ 'SUBSCRIPT_COMPONENT', 'yy.ast.set({ operation: "subscript" }); yy.ast.push() ' ] ], + expect('{'); - MEMBER_COMPONENT: [ - [ 'CHILD_MEMBER_COMPONENT', 'yy.ast.set({ scope: "child" })' ], - [ 'DESCENDANT_MEMBER_COMPONENT', 'yy.ast.set({ scope: "descendant" })' ] ], + cases = []; - CHILD_MEMBER_COMPONENT: [ - [ 'DOT MEMBER_EXPRESSION', '' ] ], + if (match('}')) { + lex(); + return delegate.createSwitchStatement(discriminant, cases); + } - LEADING_CHILD_MEMBER_EXPRESSION: [ - [ 'MEMBER_EXPRESSION', 'yy.ast.set({ scope: "child", operation: "member" })' ] ], + oldInSwitch = state.inSwitch; + state.inSwitch = true; + defaultFound = false; - DESCENDANT_MEMBER_COMPONENT: [ - [ 'DOT_DOT MEMBER_EXPRESSION', '' ] ], + while (index < length) { + if (match('}')) { + break; + } + clause = parseSwitchCase(); + if (clause.test === null) { + if (defaultFound) { + throwError({}, Messages.MultipleDefaultsInSwitch); + } + defaultFound = true; + } + cases.push(clause); + } - MEMBER_EXPRESSION: [ - [ 'STAR', 'yy.ast.set({ expression: { type: "wildcard", value: $1 } })' ], - [ 'IDENTIFIER', 'yy.ast.set({ expression: { type: "identifier", value: $1 } })' ], - [ 'SCRIPT_EXPRESSION', 'yy.ast.set({ expression: { type: "script_expression", value: $1 } })' ], - [ 'INTEGER', 'yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($1) } })' ], - [ 'END', '' ] ], + state.inSwitch = oldInSwitch; - SUBSCRIPT_COMPONENT: [ - [ 'CHILD_SUBSCRIPT_COMPONENT', 'yy.ast.set({ scope: "child" })' ], - [ 'DESCENDANT_SUBSCRIPT_COMPONENT', 'yy.ast.set({ scope: "descendant" })' ] ], + expect('}'); - CHILD_SUBSCRIPT_COMPONENT: [ - [ '[ SUBSCRIPT ]', '' ] ], + return delegate.createSwitchStatement(discriminant, cases); + } - DESCENDANT_SUBSCRIPT_COMPONENT: [ - [ 'DOT_DOT [ SUBSCRIPT ]', '' ] ], + // 12.13 The throw statement - SUBSCRIPT: [ - [ 'SUBSCRIPT_EXPRESSION', '' ], - [ 'SUBSCRIPT_EXPRESSION_LIST', '$1.length > 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1' ] ], + function parseThrowStatement() { + var argument; - SUBSCRIPT_EXPRESSION_LIST: [ - [ 'SUBSCRIPT_EXPRESSION_LISTABLE', '$$ = [$1]'], - [ 'SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE', '$$ = $1.concat($3)' ] ], + expectKeyword('throw'); - SUBSCRIPT_EXPRESSION_LISTABLE: [ - [ 'INTEGER', '$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)' ], - [ 'STRING_LITERAL', '$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)' ], - [ 'ARRAY_SLICE', '$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)' ] ], + if (peekLineTerminator()) { + throwError({}, Messages.NewlineAfterThrow); + } - SUBSCRIPT_EXPRESSION: [ - [ 'STAR', '$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)' ], - [ 'SCRIPT_EXPRESSION', '$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)' ], - [ 'FILTER_EXPRESSION', '$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)' ] ], + argument = parseExpression(); - STRING_LITERAL: [ - [ 'QQ_STRING', "$$ = $1" ], - [ 'Q_STRING', "$$ = $1" ] ] + consumeSemicolon(); + + return delegate.createThrowStatement(argument); } -}; -if (fs.readFileSync) { - grammar.moduleInclude = fs.readFileSync(require.resolve("../include/module.js")); - grammar.actionInclude = fs.readFileSync(require.resolve("../include/action.js")); -} -module.exports = grammar; + // 12.14 The try statement -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/grammar.js","/node_modules/jsonpath/lib") -},{"./dict":96,"buffer":57,"fs":56,"lYpoI2":59}],98:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var aesprim = require('./aesprim'); -var slice = require('./slice'); -var _evaluate = require('static-eval'); -var _uniq = require('underscore').uniq; + function parseCatchClause() { + var param, body, startToken; -var Handlers = function() { - return this.initialize.apply(this, arguments); -} + startToken = lookahead; + expectKeyword('catch'); -Handlers.prototype.initialize = function() { - this.traverse = traverser(true); - this.descend = traverser(); -} + expect('('); + if (match(')')) { + throwUnexpected(lookahead); + } -Handlers.prototype.keys = Object.keys; + param = parseVariableIdentifier(); + // 12.14.1 + if (strict && isRestrictedWord(param.name)) { + throwErrorTolerant({}, Messages.StrictCatchVariable); + } -Handlers.prototype.resolve = function(component) { + expect(')'); + body = parseBlock(); + return delegate.markEnd(delegate.createCatchClause(param, body), startToken); + } - var key = [ component.operation, component.scope, component.expression.type ].join('-'); - var method = this._fns[key]; + function parseTryStatement() { + var block, handlers = [], finalizer = null; - if (!method) throw new Error("couldn't resolve key: " + key); - return method.bind(this); -}; + expectKeyword('try'); -Handlers.prototype.register = function(key, handler) { + block = parseBlock(); - if (!handler instanceof Function) { - throw new Error("handler must be a function"); - } + if (matchKeyword('catch')) { + handlers.push(parseCatchClause()); + } - this._fns[key] = handler; -}; + if (matchKeyword('finally')) { + lex(); + finalizer = parseBlock(); + } -Handlers.prototype._fns = { + if (handlers.length === 0 && !finalizer) { + throwError({}, Messages.NoCatchOrFinally); + } - 'member-child-identifier': function(component, partial) { - var key = component.expression.value; - var value = partial.value; - if (value instanceof Object && key in value) { - return [ { value: value[key], path: partial.path.concat(key) } ] + return delegate.createTryStatement(block, [], handlers, finalizer); } - }, - 'member-descendant-identifier': - _traverse(function(key, value, ref) { return key == ref }), + // 12.15 The debugger statement - 'subscript-child-numeric_literal': - _descend(function(key, value, ref) { return key === ref }), + function parseDebuggerStatement() { + expectKeyword('debugger'); - 'member-child-numeric_literal': - _descend(function(key, value, ref) { return String(key) === String(ref) }), + consumeSemicolon(); - 'subscript-descendant-numeric_literal': - _traverse(function(key, value, ref) { return key === ref }), + return delegate.createDebuggerStatement(); + } - 'member-child-wildcard': - _descend(function() { return true }), + // 12 Statements - 'member-descendant-wildcard': - _traverse(function() { return true }), + function parseStatement() { + var type = lookahead.type, + expr, + labeledBody, + key, + startToken; - 'subscript-descendant-wildcard': - _traverse(function() { return true }), + if (type === Token.EOF) { + throwUnexpected(lookahead); + } - 'subscript-child-wildcard': - _descend(function() { return true }), + if (type === Token.Punctuator && lookahead.value === '{') { + return parseBlock(); + } - 'subscript-child-slice': function(component, partial) { - if (is_array(partial.value)) { - var args = component.expression.value.split(':').map(_parse_nullable_int); - var values = partial.value.map(function(v, i) { return { value: v, path: partial.path.concat(i) } }); - return slice.apply(null, [values].concat(args)); + startToken = lookahead; + + if (type === Token.Punctuator) { + switch (lookahead.value) { + case ';': + return delegate.markEnd(parseEmptyStatement(), startToken); + case '(': + return delegate.markEnd(parseExpressionStatement(), startToken); + default: + break; + } + } + + if (type === Token.Keyword) { + switch (lookahead.value) { + case 'break': + return delegate.markEnd(parseBreakStatement(), startToken); + case 'continue': + return delegate.markEnd(parseContinueStatement(), startToken); + case 'debugger': + return delegate.markEnd(parseDebuggerStatement(), startToken); + case 'do': + return delegate.markEnd(parseDoWhileStatement(), startToken); + case 'for': + return delegate.markEnd(parseForStatement(), startToken); + case 'function': + return delegate.markEnd(parseFunctionDeclaration(), startToken); + case 'if': + return delegate.markEnd(parseIfStatement(), startToken); + case 'return': + return delegate.markEnd(parseReturnStatement(), startToken); + case 'switch': + return delegate.markEnd(parseSwitchStatement(), startToken); + case 'throw': + return delegate.markEnd(parseThrowStatement(), startToken); + case 'try': + return delegate.markEnd(parseTryStatement(), startToken); + case 'var': + return delegate.markEnd(parseVariableStatement(), startToken); + case 'while': + return delegate.markEnd(parseWhileStatement(), startToken); + case 'with': + return delegate.markEnd(parseWithStatement(), startToken); + default: + break; + } + } + + expr = parseExpression(); + + // 12.12 Labelled Statements + if ((expr.type === Syntax.Identifier) && match(':')) { + lex(); + + key = '$' + expr.name; + if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.Redeclaration, 'Label', expr.name); + } + + state.labelSet[key] = true; + labeledBody = parseStatement(); + delete state.labelSet[key]; + return delegate.markEnd(delegate.createLabeledStatement(expr, labeledBody), startToken); + } + + consumeSemicolon(); + + return delegate.markEnd(delegate.createExpressionStatement(expr), startToken); } - }, - 'subscript-child-union': function(component, partial) { - var results = []; - component.expression.value.forEach(function(component) { - var _component = { operation: 'subscript', scope: 'child', expression: component.expression }; - var handler = this.resolve(_component); - var _results = handler(_component, partial); - if (_results) { - results = results.concat(_results); - } - }, this); + // 13 Function Definition - return unique(results); - }, + function parseFunctionSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted, + oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, startToken; - 'subscript-descendant-union': function(component, partial, count) { + startToken = lookahead; + expect('{'); - var jp = require('..'); - var self = this; + while (index < length) { + if (lookahead.type !== Token.StringLiteral) { + break; + } + token = lookahead; - var results = []; - var nodes = jp.nodes(partial, '$..*').slice(1); + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = source.slice(token.start + 1, token.end - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } - nodes.forEach(function(node) { - if (results.length >= count) return; - component.expression.value.forEach(function(component) { - var _component = { operation: 'subscript', scope: 'child', expression: component.expression }; - var handler = self.resolve(_component); - var _results = handler(_component, node); - results = results.concat(_results); - }); - }); + oldLabelSet = state.labelSet; + oldInIteration = state.inIteration; + oldInSwitch = state.inSwitch; + oldInFunctionBody = state.inFunctionBody; + + state.labelSet = {}; + state.inIteration = false; + state.inSwitch = false; + state.inFunctionBody = true; - return unique(results); - }, + while (index < length) { + if (match('}')) { + break; + } + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } - 'subscript-child-filter_expression': function(component, partial, count) { + expect('}'); - // slice out the expression from ?(expression) - var src = component.expression.value.slice(2, -1); - var ast = aesprim.parse(src).body[0].expression; + state.labelSet = oldLabelSet; + state.inIteration = oldInIteration; + state.inSwitch = oldInSwitch; + state.inFunctionBody = oldInFunctionBody; - var passable = function(key, value) { - return evaluate(ast, { '@': value }); + return delegate.markEnd(delegate.createBlockStatement(sourceElements), startToken); } - return this.descend(partial, null, passable, count); - - }, + function parseParams(firstRestricted) { + var param, params = [], token, stricted, paramSet, key, message; + expect('('); - 'subscript-descendant-filter_expression': function(component, partial, count) { + if (!match(')')) { + paramSet = {}; + while (index < length) { + token = lookahead; + param = parseVariableIdentifier(); + key = '$' + token.value; + if (strict) { + if (isRestrictedWord(token.value)) { + stricted = token; + message = Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(paramSet, key)) { + stricted = token; + message = Messages.StrictParamDupe; + } + } else if (!firstRestricted) { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictParamName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) { + firstRestricted = token; + message = Messages.StrictParamDupe; + } + } + params.push(param); + paramSet[key] = true; + if (match(')')) { + break; + } + expect(','); + } + } - // slice out the expression from ?(expression) - var src = component.expression.value.slice(2, -1); - var ast = aesprim.parse(src).body[0].expression; + expect(')'); - var passable = function(key, value) { - return evaluate(ast, { '@': value }); + return { + params: params, + stricted: stricted, + firstRestricted: firstRestricted, + message: message + }; } - return this.traverse(partial, null, passable, count); - }, + function parseFunctionDeclaration() { + var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict, startToken; - 'subscript-child-script_expression': function(component, partial) { - var exp = component.expression.value.slice(1, -1); - return eval_recurse(partial, exp, '$[{{value}}]'); - }, + startToken = lookahead; - 'member-child-script_expression': function(component, partial) { - var exp = component.expression.value.slice(1, -1); - return eval_recurse(partial, exp, '$.{{value}}'); - }, + expectKeyword('function'); + token = lookahead; + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } - 'member-descendant-script_expression': function(component, partial) { - var exp = component.expression.value.slice(1, -1); - return eval_recurse(partial, exp, '$..value'); - } -}; + tmp = parseParams(firstRestricted); + params = tmp.params; + stricted = tmp.stricted; + firstRestricted = tmp.firstRestricted; + if (tmp.message) { + message = tmp.message; + } -Handlers.prototype._fns['subscript-child-string_literal'] = - Handlers.prototype._fns['member-child-identifier']; + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); + } + strict = previousStrict; -Handlers.prototype._fns['member-descendant-numeric_literal'] = - Handlers.prototype._fns['subscript-descendant-string_literal'] = - Handlers.prototype._fns['member-descendant-identifier']; + return delegate.markEnd(delegate.createFunctionDeclaration(id, params, [], body), startToken); + } -function eval_recurse(partial, src, template) { + function parseFunctionExpression() { + var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict, startToken; - var jp = require('./index'); - var ast = aesprim.parse(src).body[0].expression; - var value = evaluate(ast, { '@': partial.value }); - var path = template.replace(/\{\{\s*value\s*\}\}/g, value); + startToken = lookahead; + expectKeyword('function'); - var results = jp.nodes(partial.value, path); - results.forEach(function(r) { - r.path = partial.path.concat(r.path.slice(1)); - }); + if (!match('(')) { + token = lookahead; + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + } - return results; -} + tmp = parseParams(firstRestricted); + params = tmp.params; + stricted = tmp.stricted; + firstRestricted = tmp.firstRestricted; + if (tmp.message) { + message = tmp.message; + } -function is_array(val) { - return Array.isArray(val); -} + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); + } + strict = previousStrict; -function is_object(val) { - // is this a non-array, non-null object? - return val && !(val instanceof Array) && val instanceof Object; -} + return delegate.markEnd(delegate.createFunctionExpression(id, params, [], body), startToken); + } -function traverser(recurse) { + // 14 Program - return function(partial, ref, passable, count) { + function parseSourceElement() { + if (lookahead.type === Token.Keyword) { + switch (lookahead.value) { + case 'const': + case 'let': + return parseConstLetDeclaration(lookahead.value); + case 'function': + return parseFunctionDeclaration(); + default: + return parseStatement(); + } + } - var value = partial.value; - var path = partial.path; + if (lookahead.type !== Token.EOF) { + return parseStatement(); + } + } - var results = []; + function parseSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted; - var descend = function(value, path) { + while (index < length) { + token = lookahead; + if (token.type !== Token.StringLiteral) { + break; + } - if (is_array(value)) { - value.forEach(function(element, index) { - if (results.length >= count) { return } - if (passable(index, element, ref)) { - results.push({ path: path.concat(index), value: element }); - } - }); - value.forEach(function(element, index) { - if (results.length >= count) { return } - if (recurse) { - descend(element, path.concat(index)); - } - }); - } else if (is_object(value)) { - this.keys(value).forEach(function(k) { - if (results.length >= count) { return } - if (passable(k, value[k], ref)) { - results.push({ path: path.concat(k), value: value[k] }); - } - }) - this.keys(value).forEach(function(k) { - if (results.length >= count) { return } - if (recurse) { - descend(value[k], path.concat(k)); - } - }); - } - }.bind(this); - descend(value, path); - return results; - } -} + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = source.slice(token.start + 1, token.end - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } -function _descend(passable) { - return function(component, partial, count) { - return this.descend(partial, component.expression.value, passable, count); - } -} + while (index < length) { + sourceElement = parseSourceElement(); + /* istanbul ignore if */ + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + return sourceElements; + } -function _traverse(passable) { - return function(component, partial, count) { - return this.traverse(partial, component.expression.value, passable, count); - } -} + function parseProgram() { + var body, startToken; -function evaluate() { - try { return _evaluate.apply(this, arguments) } - catch (e) { } -} + skipComment(); + peek(); + startToken = lookahead; + strict = false; -function unique(results) { - results = results.filter(function(d) { return d }) - return _uniq( - results, - function(r) { return r.path.map(function(c) { return String(c).replace('-', '--') }).join('-') } - ); -} + body = parseSourceElements(); + return delegate.markEnd(delegate.createProgram(body), startToken); + } -function _parse_nullable_int(val) { - var sval = String(val); - return sval.match(/^-?[0-9]+$/) ? parseInt(sval) : null; -} + function filterTokenLocation() { + var i, entry, token, tokens = []; -module.exports = Handlers; + for (i = 0; i < extra.tokens.length; ++i) { + entry = extra.tokens[i]; + token = { + type: entry.type, + value: entry.value + }; + if (extra.range) { + token.range = entry.range; + } + if (extra.loc) { + token.loc = entry.loc; + } + tokens.push(token); + } -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/handlers.js","/node_modules/jsonpath/lib") -},{"..":99,"./aesprim":93,"./index":99,"./slice":101,"buffer":57,"lYpoI2":59,"static-eval":111,"underscore":102}],99:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var assert = require('assert'); -var dict = require('./dict'); -var Parser = require('./parser'); -var Handlers = require('./handlers'); + extra.tokens = tokens; + } -var JSONPath = function() { - this.initialize.apply(this, arguments); -}; + function tokenize(code, options) { + var toString, + token, + tokens; -JSONPath.prototype.initialize = function() { - this.parser = new Parser(); - this.handlers = new Handlers(); -}; + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); + } -JSONPath.prototype.parse = function(string) { - assert.ok(_is_string(string), "we need a path"); - return this.parser.parse(string); -}; + delegate = SyntaxTreeDelegate; + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + lookahead = null; + state = { + allowIn: true, + labelSet: {}, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + lastCommentStart: -1 + }; -JSONPath.prototype.parent = function(obj, string) { + extra = {}; - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); + // Options matching. + options = options || {}; - var node = this.nodes(obj, string)[0]; - var key = node.path.pop(); /* jshint unused:false */ - return this.value(obj, node.path); -} + // Of course we collect tokens here. + options.tokens = true; + extra.tokens = []; + extra.tokenize = true; + // The following two fields are necessary to compute the Regex tokens. + extra.openParenToken = -1; + extra.openCurlyToken = -1; -JSONPath.prototype.apply = function(obj, string, fn) { + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); - assert.equal(typeof fn, "function", "fn needs to be function") + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } - var nodes = this.nodes(obj, string).sort(function(a, b) { - // sort nodes so we apply from the bottom up - return b.path.length - a.path.length; - }); + try { + peek(); + if (lookahead.type === Token.EOF) { + return extra.tokens; + } - nodes.forEach(function(node) { - var key = node.path.pop(); - var parent = this.value(obj, this.stringify(node.path)); - var val = node.value = fn.call(obj, parent[key]); - parent[key] = val; - }, this); + token = lex(); + while (lookahead.type !== Token.EOF) { + try { + token = lex(); + } catch (lexError) { + token = lookahead; + if (extra.errors) { + extra.errors.push(lexError); + // We have to break on the first error + // to avoid infinite loops. + break; + } else { + throw lexError; + } + } + } - return nodes; -} + filterTokenLocation(); + tokens = extra.tokens; + if (typeof extra.comments !== 'undefined') { + tokens.comments = extra.comments; + } + if (typeof extra.errors !== 'undefined') { + tokens.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + extra = {}; + } + return tokens; + } -JSONPath.prototype.value = function(obj, path, value) { + function parse(code, options) { + var program, toString; - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(path, "we need a path"); + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); + } - if (arguments.length >= 3) { - var node = this.nodes(obj, path).shift(); - if (!node) return this._vivify(obj, path, value); - var key = node.path.slice(-1).shift(); - var parent = this.parent(obj, this.stringify(node.path)); - parent[key] = value; - } - return this.query(obj, this.stringify(path), 1).shift(); -} + delegate = SyntaxTreeDelegate; + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + lookahead = null; + state = { + allowIn: true, + labelSet: {}, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + lastCommentStart: -1 + }; + + extra = {}; + if (typeof options !== 'undefined') { + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; + extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment; + + if (extra.loc && options.source !== null && options.source !== undefined) { + extra.source = toString(options.source); + } + + if (typeof options.tokens === 'boolean' && options.tokens) { + extra.tokens = []; + } + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } + if (extra.attachComment) { + extra.range = true; + extra.comments = []; + extra.bottomRightStack = []; + extra.trailingComments = []; + extra.leadingComments = []; + } + } -JSONPath.prototype._vivify = function(obj, string, value) { + try { + program = parseProgram(); + if (typeof extra.comments !== 'undefined') { + program.comments = extra.comments; + } + if (typeof extra.tokens !== 'undefined') { + filterTokenLocation(); + program.tokens = extra.tokens; + } + if (typeof extra.errors !== 'undefined') { + program.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + extra = {}; + } - var self = this; + return program; + } - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); + // Sync with *.json manifests. + exports.version = '1.2.2'; - var path = this.parser.parse(string) - .map(function(component) { return component.expression.value }); + exports.tokenize = tokenize; - var setValue = function(path, value) { - var key = path.pop(); - var node = self.value(obj, path); - if (!node) { - setValue(path.concat(), typeof key === 'string' ? {} : []); - node = self.value(obj, path); - } - node[key] = value; - } - setValue(path, value); - return this.query(obj, string)[0]; -} + exports.parse = parse; -JSONPath.prototype.query = function(obj, string, count) { + // Deep copy. + /* istanbul ignore next */ + exports.Syntax = (function () { + var name, types = {}; - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(_is_string(string), "we need a path"); + if (typeof Object.create === 'function') { + types = Object.create(null); + } - var results = this.nodes(obj, string, count) - .map(function(r) { return r.value }); + for (name in Syntax) { + if (Syntax.hasOwnProperty(name)) { + types[name] = Syntax[name]; + } + } - return results; -}; + if (typeof Object.freeze === 'function') { + Object.freeze(types); + } -JSONPath.prototype.paths = function(obj, string, count) { + return types; + }()); - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); +})); +/* vim: set sw=4 ts=4 et tw=80 : */ - var results = this.nodes(obj, string, count) - .map(function(r) { return r.path }); - return results; -}; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/generated/aesprim-browser.js","/node_modules/jsonpath/generated") +},{"FWaASH":50,"buffer":52}],103:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* parser generated by jison 0.4.13 */ +/* + Returns a Parser object of the following structure: -JSONPath.prototype.nodes = function(obj, string, count) { + Parser: { + yy: {} + } - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); + Parser.prototype: { + yy: {}, + trace: function(), + symbols_: {associative list: name ==> number}, + terminals_: {associative list: number ==> name}, + productions_: [...], + performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), + table: [...], + defaultActions: {...}, + parseError: function(str, hash), + parse: function(input), - if (count === 0) return []; + lexer: { + EOF: 1, + parseError: function(str, hash), + setInput: function(input), + input: function(), + unput: function(str), + more: function(), + less: function(n), + pastInput: function(), + upcomingInput: function(), + showPosition: function(), + test_match: function(regex_match_array, rule_index), + next: function(), + lex: function(), + begin: function(condition), + popState: function(), + _currentRules: function(), + topState: function(), + pushState: function(condition), - var path = this.parser.parse(string); - var handlers = this.handlers; + options: { + ranges: boolean (optional: true ==> token location info will include a .range[] member) + flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) + backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) + }, - var partials = [ { path: ['$'], value: obj } ]; - var matches = []; + performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), + rules: [...], + conditions: {associative list: name ==> set}, + } + } - if (path.length && path[0].expression.type == 'root') path.shift(); - if (!path.length) return partials; + token location info (@$, _$, etc.): { + first_line: n, + last_line: n, + first_column: n, + last_column: n, + range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) + } - path.forEach(function(component, index) { - if (matches.length >= count) return; - var handler = handlers.resolve(component); - var _partials = []; + the parseError function receives a 'hash' object with these members for lexer and parser errors: { + text: (matched text) + token: (the produced terminal token, if any) + line: (yylineno) + } + while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { + loc: (yylloc) + expected: (string describing the set of expected tokens) + recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) + } +*/ +var parser = (function(){ +var parser = {trace: function trace() { }, +yy: {}, +symbols_: {"error":2,"JSON_PATH":3,"DOLLAR":4,"PATH_COMPONENTS":5,"LEADING_CHILD_MEMBER_EXPRESSION":6,"PATH_COMPONENT":7,"MEMBER_COMPONENT":8,"SUBSCRIPT_COMPONENT":9,"CHILD_MEMBER_COMPONENT":10,"DESCENDANT_MEMBER_COMPONENT":11,"DOT":12,"MEMBER_EXPRESSION":13,"DOT_DOT":14,"STAR":15,"IDENTIFIER":16,"SCRIPT_EXPRESSION":17,"INTEGER":18,"END":19,"CHILD_SUBSCRIPT_COMPONENT":20,"DESCENDANT_SUBSCRIPT_COMPONENT":21,"[":22,"SUBSCRIPT":23,"]":24,"SUBSCRIPT_EXPRESSION":25,"SUBSCRIPT_EXPRESSION_LIST":26,"SUBSCRIPT_EXPRESSION_LISTABLE":27,",":28,"STRING_LITERAL":29,"ARRAY_SLICE":30,"FILTER_EXPRESSION":31,"QQ_STRING":32,"Q_STRING":33,"$accept":0,"$end":1}, +terminals_: {2:"error",4:"DOLLAR",12:"DOT",14:"DOT_DOT",15:"STAR",16:"IDENTIFIER",17:"SCRIPT_EXPRESSION",18:"INTEGER",19:"END",22:"[",24:"]",28:",",30:"ARRAY_SLICE",31:"FILTER_EXPRESSION",32:"QQ_STRING",33:"Q_STRING"}, +productions_: [0,[3,1],[3,2],[3,1],[3,2],[5,1],[5,2],[7,1],[7,1],[8,1],[8,1],[10,2],[6,1],[11,2],[13,1],[13,1],[13,1],[13,1],[13,1],[9,1],[9,1],[20,3],[21,4],[23,1],[23,1],[26,1],[26,3],[27,1],[27,1],[27,1],[25,1],[25,1],[25,1],[29,1],[29,1]], +performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */ +/**/) { +/* this == yyval */ +if (!yy.ast) { + yy.ast = _ast; + _ast.initialize(); +} - partials.forEach(function(p) { +var $0 = $$.length - 1; +switch (yystate) { +case 1:yy.ast.set({ expression: { type: "root", value: $$[$0] } }); yy.ast.unshift(); return yy.ast.yield() +break; +case 2:yy.ast.set({ expression: { type: "root", value: $$[$0-1] } }); yy.ast.unshift(); return yy.ast.yield() +break; +case 3:yy.ast.unshift(); return yy.ast.yield() +break; +case 4:yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $$[$0-1] }}); yy.ast.unshift(); return yy.ast.yield() +break; +case 5: +break; +case 6: +break; +case 7:yy.ast.set({ operation: "member" }); yy.ast.push() +break; +case 8:yy.ast.set({ operation: "subscript" }); yy.ast.push() +break; +case 9:yy.ast.set({ scope: "child" }) +break; +case 10:yy.ast.set({ scope: "descendant" }) +break; +case 11: +break; +case 12:yy.ast.set({ scope: "child", operation: "member" }) +break; +case 13: +break; +case 14:yy.ast.set({ expression: { type: "wildcard", value: $$[$0] } }) +break; +case 15:yy.ast.set({ expression: { type: "identifier", value: $$[$0] } }) +break; +case 16:yy.ast.set({ expression: { type: "script_expression", value: $$[$0] } }) +break; +case 17:yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($$[$0]) } }) +break; +case 18: +break; +case 19:yy.ast.set({ scope: "child" }) +break; +case 20:yy.ast.set({ scope: "descendant" }) +break; +case 21: +break; +case 22: +break; +case 23: +break; +case 24:$$[$0].length > 1? yy.ast.set({ expression: { type: "union", value: $$[$0] } }) : this.$ = $$[$0] +break; +case 25:this.$ = [$$[$0]] +break; +case 26:this.$ = $$[$0-2].concat($$[$0]) +break; +case 27:this.$ = { expression: { type: "numeric_literal", value: parseInt($$[$0]) } }; yy.ast.set(this.$) +break; +case 28:this.$ = { expression: { type: "string_literal", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 29:this.$ = { expression: { type: "slice", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 30:this.$ = { expression: { type: "wildcard", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 31:this.$ = { expression: { type: "script_expression", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 32:this.$ = { expression: { type: "filter_expression", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 33:this.$ = $$[$0] +break; +case 34:this.$ = $$[$0] +break; +} +}, +table: [{3:1,4:[1,2],6:3,13:4,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{1:[3]},{1:[2,1],5:10,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,3],5:21,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,12],12:[2,12],14:[2,12],22:[2,12]},{1:[2,14],12:[2,14],14:[2,14],22:[2,14]},{1:[2,15],12:[2,15],14:[2,15],22:[2,15]},{1:[2,16],12:[2,16],14:[2,16],22:[2,16]},{1:[2,17],12:[2,17],14:[2,17],22:[2,17]},{1:[2,18],12:[2,18],14:[2,18],22:[2,18]},{1:[2,2],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,5],12:[2,5],14:[2,5],22:[2,5]},{1:[2,7],12:[2,7],14:[2,7],22:[2,7]},{1:[2,8],12:[2,8],14:[2,8],22:[2,8]},{1:[2,9],12:[2,9],14:[2,9],22:[2,9]},{1:[2,10],12:[2,10],14:[2,10],22:[2,10]},{1:[2,19],12:[2,19],14:[2,19],22:[2,19]},{1:[2,20],12:[2,20],14:[2,20],22:[2,20]},{13:23,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{13:24,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9],22:[1,25]},{15:[1,29],17:[1,30],18:[1,33],23:26,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{1:[2,4],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,6],12:[2,6],14:[2,6],22:[2,6]},{1:[2,11],12:[2,11],14:[2,11],22:[2,11]},{1:[2,13],12:[2,13],14:[2,13],22:[2,13]},{15:[1,29],17:[1,30],18:[1,33],23:38,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{24:[1,39]},{24:[2,23]},{24:[2,24],28:[1,40]},{24:[2,30]},{24:[2,31]},{24:[2,32]},{24:[2,25],28:[2,25]},{24:[2,27],28:[2,27]},{24:[2,28],28:[2,28]},{24:[2,29],28:[2,29]},{24:[2,33],28:[2,33]},{24:[2,34],28:[2,34]},{24:[1,41]},{1:[2,21],12:[2,21],14:[2,21],22:[2,21]},{18:[1,33],27:42,29:34,30:[1,35],32:[1,36],33:[1,37]},{1:[2,22],12:[2,22],14:[2,22],22:[2,22]},{24:[2,26],28:[2,26]}], +defaultActions: {27:[2,23],29:[2,30],30:[2,31],31:[2,32]}, +parseError: function parseError(str, hash) { + if (hash.recoverable) { + this.trace(str); + } else { + throw new Error(str); + } +}, +parse: function parse(input) { + var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; + var args = lstack.slice.call(arguments, 1); + this.lexer.setInput(input); + this.lexer.yy = this.yy; + this.yy.lexer = this.lexer; + this.yy.parser = this; + if (typeof this.lexer.yylloc == 'undefined') { + this.lexer.yylloc = {}; + } + var yyloc = this.lexer.yylloc; + lstack.push(yyloc); + var ranges = this.lexer.options && this.lexer.options.ranges; + if (typeof this.yy.parseError === 'function') { + this.parseError = this.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n) { + stack.length = stack.length - 2 * n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; + } + function lex() { + var token; + token = self.lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + } + var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; + while (true) { + state = stack[stack.length - 1]; + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol === null || typeof symbol == 'undefined') { + symbol = lex(); + } + action = table[state] && table[state][symbol]; + } + if (typeof action === 'undefined' || !action.length || !action[0]) { + var errStr = ''; + expected = []; + for (p in table[state]) { + if (this.terminals_[p] && p > TERROR) { + expected.push('\'' + this.terminals_[p] + '\''); + } + } + if (this.lexer.showPosition) { + errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + this.lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; + } else { + errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); + } + this.parseError(errStr, { + text: this.lexer.match, + token: this.terminals_[symbol] || symbol, + line: this.lexer.yylineno, + loc: yyloc, + expected: expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(this.lexer.yytext); + lstack.push(this.lexer.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + this.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r !== 'undefined') { + return r; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; + } + } + return true; +}}; +var _ast = { - if (matches.length >= count) return; - var results = handler(component, p, count); + initialize: function() { + this._nodes = []; + this._node = {}; + this._stash = []; + }, - if (index == path.length - 1) { - // if we're through the components we're done - matches = matches.concat(results || []); - } else { - // otherwise accumulate and carry on through - _partials = _partials.concat(results || []); - } - }); + set: function(props) { + for (var k in props) this._node[k] = props[k]; + return this._node; + }, - partials = _partials; + node: function(obj) { + if (arguments.length) this._node = obj; + return this._node; + }, - }); + push: function() { + this._nodes.push(this._node); + this._node = {}; + }, - return count ? matches.slice(0, count) : matches; + unshift: function() { + this._nodes.unshift(this._node); + this._node = {}; + }, + + yield: function() { + var _nodes = this._nodes; + this.initialize(); + return _nodes; + } }; +/* generated by jison-lex 0.2.1 */ +var lexer = (function(){ +var lexer = { -JSONPath.prototype.stringify = function(path) { +EOF:1, - assert.ok(path, "we need a path"); +parseError:function parseError(str, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); + } else { + throw new Error(str); + } + }, - var string = '$'; +// resets the lexer, sets new input +setInput:function (input) { + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0,0]; + } + this.offset = 0; + return this; + }, - var templates = { - 'descendant-member': '..{{value}}', - 'child-member': '.{{value}}', - 'descendant-subscript': '..[{{value}}]', - 'child-subscript': '[{{value}}]' - }; +// consumes and returns one char from the input +input:function () { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } - path = this._normalize(path); + this._input = this._input.slice(1); + return ch; + }, - path.forEach(function(component) { +// unshifts one char (or a string) into the input +unput:function (ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); - if (component.expression.type == 'root') return; + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); + //this.yyleng -= len; + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); - var key = [component.scope, component.operation].join('-'); - var template = templates[key]; - var value; + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r = this.yylloc.range; + + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? + (lines.length === oldLines.length ? this.yylloc.first_column : 0) + + oldLines[oldLines.length - lines.length].length - lines[0].length : + this.yylloc.first_column - len + }; - if (component.expression.type == 'string_literal') { - value = JSON.stringify(component.expression.value) - } else { - value = component.expression.value; - } + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, - if (!template) throw new Error("couldn't find template " + key); +// When called from action, caches matched text and appends it on next action +more:function () { + this._more = true; + return this; + }, - string += template.replace(/{{value}}/, value); - }); +// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. +reject:function () { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); - return string; -} + } + return this; + }, -JSONPath.prototype._normalize = function(path) { +// retain first n characters of the match +less:function (n) { + this.unput(this.match.slice(n)); + }, - assert.ok(path, "we need a path"); +// displays already matched input, i.e. for error messages +pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, - if (typeof path == "string") { +// displays upcoming input, i.e. for error messages +upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); + } + return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); + }, - return this.parser.parse(path); +// displays the character position where the lexing error occurred, i.e. for error messages +showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c + "^"; + }, - } else if (Array.isArray(path) && typeof path[0] == "string") { +// test the lexed token: return FALSE when not a match, otherwise return token +test_match:function (match, indexed_rule) { + var token, + lines, + backup; - var _path = [ { expression: { type: "root", value: "$" } } ]; + if (this.options.backtrack_lexer) { + // save context + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } - path.forEach(function(component, index) { + lines = match[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? + lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : + this.yylloc.last_column + match[0].length + }; + this.yytext += match[0]; + this.match += match[0]; + this.matches = match; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token) { + return token; + } else if (this._backtrack) { + // recover context + for (var k in backup) { + this[k] = backup[k]; + } + return false; // rule action called reject() implying the next rule should be tested instead. + } + return false; + }, - if (component == '$' && index === 0) return; +// return next match in input +next:function () { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } - if (typeof component == "string" && component.match("^" + dict.identifier + "$")) { + var token, + match, + tempMatch, + index; + if (!this._more) { + this.yytext = ''; + this.match = ''; + } + var rules = this._currentRules(); + for (var i = 0; i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (this.options.backtrack_lexer) { + token = this.test_match(tempMatch, rules[i]); + if (token !== false) { + return token; + } else if (this._backtrack) { + match = false; + continue; // rule action called reject() implying a rule MISmatch. + } else { + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match) { + token = this.test_match(match, rules[index]); + if (token !== false) { + return token; + } + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, - _path.push({ - operation: 'member', - scope: 'child', - expression: { value: component, type: 'identifier' } - }); +// return next match that has a token +lex:function lex() { + var r = this.next(); + if (r) { + return r; + } else { + return this.lex(); + } + }, - } else { +// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) +begin:function begin(condition) { + this.conditionStack.push(condition); + }, - var type = typeof component == "number" ? - 'numeric_literal' : 'string_literal'; +// pop the previously active lexer condition state off the condition stack +popState:function popState() { + var n = this.conditionStack.length - 1; + if (n > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, - _path.push({ - operation: 'subscript', - scope: 'child', - expression: { value: component, type: type } - }); - } - }); +// produce the lexer rule set which is active for the currently active lexer condition state +_currentRules:function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, - return _path; +// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available +topState:function topState(n) { + n = this.conditionStack.length - 1 - Math.abs(n || 0); + if (n >= 0) { + return this.conditionStack[n]; + } else { + return "INITIAL"; + } + }, - } else if (Array.isArray(path) && typeof path[0] == "object") { +// alias for begin(condition) +pushState:function pushState(condition) { + this.begin(condition); + }, - return path - } +// return the number of states currently on the stack +stateStackSize:function stateStackSize() { + return this.conditionStack.length; + }, +options: {}, +performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START +/**/) { - throw new Error("couldn't understand path " + path); +var YYSTATE=YY_START; +switch($avoiding_name_collisions) { +case 0:return 4 +break; +case 1:return 14 +break; +case 2:return 12 +break; +case 3:return 15 +break; +case 4:return 16 +break; +case 5:return 22 +break; +case 6:return 24 +break; +case 7:return 28 +break; +case 8:return 30 +break; +case 9:return 18 +break; +case 10:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 32; +break; +case 11:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 33; +break; +case 12:return 17 +break; +case 13:return 31 +break; } - -function _is_string(obj) { - return Object.prototype.toString.call(obj) == '[object String]'; +}, +rules: [/^(?:\$)/,/^(?:\.\.)/,/^(?:\.)/,/^(?:\*)/,/^(?:[a-zA-Z_]+[a-zA-Z0-9_]*)/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?:((-?(?:0|[1-9][0-9]*)))?\:((-?(?:0|[1-9][0-9]*)))?(\:((-?(?:0|[1-9][0-9]*)))?)?)/,/^(?:(-?(?:0|[1-9][0-9]*)))/,/^(?:"(?:\\["bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^"\\])*")/,/^(?:'(?:\\['bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^'\\])*')/,/^(?:\(.+?\)(?=\]))/,/^(?:\?\(.+?\)(?=\]))/], +conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}} +}; +return lexer; +})(); +parser.lexer = lexer; +function Parser () { + this.yy = {}; } +Parser.prototype = parser;parser.Parser = Parser; +return new Parser; +})(); -JSONPath.Handlers = Handlers; -JSONPath.Parser = Parser; -var instance = new JSONPath; -instance.JSONPath = JSONPath; +if (typeof require !== 'undefined' && typeof exports !== 'undefined') { +exports.parser = parser; +exports.Parser = parser.Parser; +exports.parse = function () { return parser.parse.apply(parser, arguments); }; +exports.main = function commonjsMain(args) { + if (!args[1]) { + console.log('Usage: '+args[0]+' FILE'); + process.exit(1); + } + var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); + return exports.parser.parse(source); +}; +if (typeof module !== 'undefined' && require.main === module) { + exports.main(process.argv.slice(1)); +} +} -module.exports = instance; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/generated/parser.js","/node_modules/jsonpath/generated") +},{"FWaASH":50,"buffer":52,"fs":49,"path":114}],104:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +module.exports = require('./lib/index'); -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/index.js","/node_modules/jsonpath/lib") -},{"./dict":96,"./handlers":98,"./parser":100,"assert":51,"buffer":57,"lYpoI2":59}],100:[function(require,module,exports){ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/index.js","/node_modules/jsonpath") +},{"./lib/index":108,"FWaASH":50,"buffer":52}],105:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var grammar = require('./grammar'); -var gparser = require('../generated/parser'); +module.exports = { + identifier: "[a-zA-Z_]+[a-zA-Z0-9_]*", + integer: "-?(?:0|[1-9][0-9]*)", + qq_string: "\"(?:\\\\[\"bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\"\\\\])*\"", + q_string: "'(?:\\\\[\'bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\'\\\\])*'" +}; -var Parser = function() { +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/dict.js","/node_modules/jsonpath/lib") +},{"FWaASH":50,"buffer":52}],106:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var dict = require('./dict'); +var fs = require('fs'); +var grammar = { - var parser = new gparser.Parser(); + lex: { - var _parseError = parser.parseError; - parser.yy.parseError = function() { - if (parser.yy.ast) { - parser.yy.ast.initialize(); - } - _parseError.apply(parser, arguments); - } + macros: { + esc: "\\\\", + int: dict.integer + }, - return parser; + rules: [ + ["\\$", "return 'DOLLAR'"], + ["\\.\\.", "return 'DOT_DOT'"], + ["\\.", "return 'DOT'"], + ["\\*", "return 'STAR'"], + [dict.identifier, "return 'IDENTIFIER'"], + ["\\[", "return '['"], + ["\\]", "return ']'"], + [",", "return ','"], + ["({int})?\\:({int})?(\\:({int})?)?", "return 'ARRAY_SLICE'"], + ["{int}", "return 'INTEGER'"], + [dict.qq_string, "yytext = yytext.substr(1,yyleng-2); return 'QQ_STRING';"], + [dict.q_string, "yytext = yytext.substr(1,yyleng-2); return 'Q_STRING';"], + ["\\(.+?\\)(?=\\])", "return 'SCRIPT_EXPRESSION'"], + ["\\?\\(.+?\\)(?=\\])", "return 'FILTER_EXPRESSION'"] + ] + }, -}; + start: "JSON_PATH", -Parser.grammar = grammar; -module.exports = Parser; + bnf: { -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/parser.js","/node_modules/jsonpath/lib") -},{"../generated/parser":94,"./grammar":97,"buffer":57,"lYpoI2":59}],101:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = function(arr, start, end, step) { + JSON_PATH: [ + [ 'DOLLAR', 'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()' ], + [ 'DOLLAR PATH_COMPONENTS', 'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()' ], + [ 'LEADING_CHILD_MEMBER_EXPRESSION', 'yy.ast.unshift(); return yy.ast.yield()' ], + [ 'LEADING_CHILD_MEMBER_EXPRESSION PATH_COMPONENTS', 'yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $1 }}); yy.ast.unshift(); return yy.ast.yield()' ] ], - if (typeof start == 'string') throw new Error("start cannot be a string"); - if (typeof end == 'string') throw new Error("end cannot be a string"); - if (typeof step == 'string') throw new Error("step cannot be a string"); + PATH_COMPONENTS: [ + [ 'PATH_COMPONENT', '' ], + [ 'PATH_COMPONENTS PATH_COMPONENT', '' ] ], - var len = arr.length; + PATH_COMPONENT: [ + [ 'MEMBER_COMPONENT', 'yy.ast.set({ operation: "member" }); yy.ast.push()' ], + [ 'SUBSCRIPT_COMPONENT', 'yy.ast.set({ operation: "subscript" }); yy.ast.push() ' ] ], - if (step === 0) throw new Error("step cannot be zero"); - step = step ? integer(step) : 1; + MEMBER_COMPONENT: [ + [ 'CHILD_MEMBER_COMPONENT', 'yy.ast.set({ scope: "child" })' ], + [ 'DESCENDANT_MEMBER_COMPONENT', 'yy.ast.set({ scope: "descendant" })' ] ], - // normalize negative values - start = start < 0 ? len + start : start; - end = end < 0 ? len + end : end; + CHILD_MEMBER_COMPONENT: [ + [ 'DOT MEMBER_EXPRESSION', '' ] ], - // default extents to extents - start = integer(start === 0 ? 0 : !start ? (step > 0 ? 0 : len - 1) : start); - end = integer(end === 0 ? 0 : !end ? (step > 0 ? len : -1) : end); + LEADING_CHILD_MEMBER_EXPRESSION: [ + [ 'MEMBER_EXPRESSION', 'yy.ast.set({ scope: "child", operation: "member" })' ] ], - // clamp extents - start = step > 0 ? Math.max(0, start) : Math.min(len, start); - end = step > 0 ? Math.min(end, len) : Math.max(-1, end); + DESCENDANT_MEMBER_COMPONENT: [ + [ 'DOT_DOT MEMBER_EXPRESSION', '' ] ], - // return empty if extents are backwards - if (step > 0 && end <= start) return []; - if (step < 0 && start <= end) return []; + MEMBER_EXPRESSION: [ + [ 'STAR', 'yy.ast.set({ expression: { type: "wildcard", value: $1 } })' ], + [ 'IDENTIFIER', 'yy.ast.set({ expression: { type: "identifier", value: $1 } })' ], + [ 'SCRIPT_EXPRESSION', 'yy.ast.set({ expression: { type: "script_expression", value: $1 } })' ], + [ 'INTEGER', 'yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($1) } })' ], + [ 'END', '' ] ], - var result = []; + SUBSCRIPT_COMPONENT: [ + [ 'CHILD_SUBSCRIPT_COMPONENT', 'yy.ast.set({ scope: "child" })' ], + [ 'DESCENDANT_SUBSCRIPT_COMPONENT', 'yy.ast.set({ scope: "descendant" })' ] ], - for (var i = start; i != end; i += step) { - if ((step < 0 && i <= end) || (step > 0 && i >= end)) break; - result.push(arr[i]); - } + CHILD_SUBSCRIPT_COMPONENT: [ + [ '[ SUBSCRIPT ]', '' ] ], - return result; -} + DESCENDANT_SUBSCRIPT_COMPONENT: [ + [ 'DOT_DOT [ SUBSCRIPT ]', '' ] ], -function integer(val) { - return String(val).match(/^[0-9]+$/) ? parseInt(val) : - Number.isFinite(val) ? parseInt(val, 10) : 0; -} + SUBSCRIPT: [ + [ 'SUBSCRIPT_EXPRESSION', '' ], + [ 'SUBSCRIPT_EXPRESSION_LIST', '$1.length > 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1' ] ], -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/slice.js","/node_modules/jsonpath/lib") -},{"buffer":57,"lYpoI2":59}],102:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Underscore.js 1.7.0 -// http://underscorejs.org -// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. + SUBSCRIPT_EXPRESSION_LIST: [ + [ 'SUBSCRIPT_EXPRESSION_LISTABLE', '$$ = [$1]'], + [ 'SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE', '$$ = $1.concat($3)' ] ], -(function() { + SUBSCRIPT_EXPRESSION_LISTABLE: [ + [ 'INTEGER', '$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)' ], + [ 'STRING_LITERAL', '$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)' ], + [ 'ARRAY_SLICE', '$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)' ] ], - // Baseline setup - // -------------- + SUBSCRIPT_EXPRESSION: [ + [ 'STAR', '$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)' ], + [ 'SCRIPT_EXPRESSION', '$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)' ], + [ 'FILTER_EXPRESSION', '$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)' ] ], - // Establish the root object, `window` in the browser, or `exports` on the server. - var root = this; + STRING_LITERAL: [ + [ 'QQ_STRING', "$$ = $1" ], + [ 'Q_STRING', "$$ = $1" ] ] + } +}; +if (fs.readFileSync) { + grammar.moduleInclude = fs.readFileSync(require.resolve("../include/module.js")); + grammar.actionInclude = fs.readFileSync(require.resolve("../include/action.js")); +} - // Save the previous value of the `_` variable. - var previousUnderscore = root._; +module.exports = grammar; - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/grammar.js","/node_modules/jsonpath/lib") +},{"./dict":105,"FWaASH":50,"buffer":52,"fs":49}],107:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var aesprim = require('./aesprim'); +var slice = require('./slice'); +var _evaluate = require('static-eval'); +var _uniq = require('underscore').uniq; - // Create quick reference variables for speed access to core prototypes. - var - push = ArrayProto.push, - slice = ArrayProto.slice, - concat = ArrayProto.concat, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var - nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeBind = FuncProto.bind; - - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; +var Handlers = function() { + return this.initialize.apply(this, arguments); +} - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for the old `require()` API. If we're in - // the browser, add `_` as a global object. - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } +Handlers.prototype.initialize = function() { + this.traverse = traverser(true); + this.descend = traverser(); +} - // Current version. - _.VERSION = '1.7.0'; +Handlers.prototype.keys = Object.keys; - // Internal function that returns an efficient (for current engines) version - // of the passed-in callback, to be repeatedly applied in other Underscore - // functions. - var createCallback = function(func, context, argCount) { - if (context === void 0) return func; - switch (argCount == null ? 3 : argCount) { - case 1: return function(value) { - return func.call(context, value); - }; - case 2: return function(value, other) { - return func.call(context, value, other); - }; - case 3: return function(value, index, collection) { - return func.call(context, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(context, accumulator, value, index, collection); - }; - } - return function() { - return func.apply(context, arguments); - }; - }; +Handlers.prototype.resolve = function(component) { + + var key = [ component.operation, component.scope, component.expression.type ].join('-'); + var method = this._fns[key]; - // A mostly-internal function to generate callbacks that can be applied - // to each element in a collection, returning the desired result — either - // identity, an arbitrary callback, a property matcher, or a property accessor. - _.iteratee = function(value, context, argCount) { - if (value == null) return _.identity; - if (_.isFunction(value)) return createCallback(value, context, argCount); - if (_.isObject(value)) return _.matches(value); - return _.property(value); - }; + if (!method) throw new Error("couldn't resolve key: " + key); + return method.bind(this); +}; - // Collection Functions - // -------------------- +Handlers.prototype.register = function(key, handler) { - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles raw objects in addition to array-likes. Treats all - // sparse array-likes as if they were dense. - _.each = _.forEach = function(obj, iteratee, context) { - if (obj == null) return obj; - iteratee = createCallback(iteratee, context); - var i, length = obj.length; - if (length === +length) { - for (i = 0; i < length; i++) { - iteratee(obj[i], i, obj); - } - } else { - var keys = _.keys(obj); - for (i = 0, length = keys.length; i < length; i++) { - iteratee(obj[keys[i]], keys[i], obj); - } - } - return obj; - }; + if (!handler instanceof Function) { + throw new Error("handler must be a function"); + } - // Return the results of applying the iteratee to each element. - _.map = _.collect = function(obj, iteratee, context) { - if (obj == null) return []; - iteratee = _.iteratee(iteratee, context); - var keys = obj.length !== +obj.length && _.keys(obj), - length = (keys || obj).length, - results = Array(length), - currentKey; - for (var index = 0; index < length; index++) { - currentKey = keys ? keys[index] : index; - results[index] = iteratee(obj[currentKey], currentKey, obj); + this._fns[key] = handler; +}; + +Handlers.prototype._fns = { + + 'member-child-identifier': function(component, partial) { + var key = component.expression.value; + var value = partial.value; + if (value instanceof Object && key in value) { + return [ { value: value[key], path: partial.path.concat(key) } ] } - return results; - }; + }, - var reduceError = 'Reduce of empty array with no initial value'; + 'member-descendant-identifier': + _traverse(function(key, value, ref) { return key == ref }), - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. - _.reduce = _.foldl = _.inject = function(obj, iteratee, memo, context) { - if (obj == null) obj = []; - iteratee = createCallback(iteratee, context, 4); - var keys = obj.length !== +obj.length && _.keys(obj), - length = (keys || obj).length, - index = 0, currentKey; - if (arguments.length < 3) { - if (!length) throw new TypeError(reduceError); - memo = obj[keys ? keys[index++] : index++]; - } - for (; index < length; index++) { - currentKey = keys ? keys[index] : index; - memo = iteratee(memo, obj[currentKey], currentKey, obj); - } - return memo; - }; + 'subscript-child-numeric_literal': + _descend(function(key, value, ref) { return key === ref }), - // The right-associative version of reduce, also known as `foldr`. - _.reduceRight = _.foldr = function(obj, iteratee, memo, context) { - if (obj == null) obj = []; - iteratee = createCallback(iteratee, context, 4); - var keys = obj.length !== + obj.length && _.keys(obj), - index = (keys || obj).length, - currentKey; - if (arguments.length < 3) { - if (!index) throw new TypeError(reduceError); - memo = obj[keys ? keys[--index] : --index]; - } - while (index--) { - currentKey = keys ? keys[index] : index; - memo = iteratee(memo, obj[currentKey], currentKey, obj); - } - return memo; - }; + 'member-child-numeric_literal': + _descend(function(key, value, ref) { return String(key) === String(ref) }), - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, predicate, context) { - var result; - predicate = _.iteratee(predicate, context); - _.some(obj, function(value, index, list) { - if (predicate(value, index, list)) { - result = value; - return true; - } - }); - return result; - }; + 'subscript-descendant-numeric_literal': + _traverse(function(key, value, ref) { return key === ref }), - // Return all the elements that pass a truth test. - // Aliased as `select`. - _.filter = _.select = function(obj, predicate, context) { - var results = []; - if (obj == null) return results; - predicate = _.iteratee(predicate, context); - _.each(obj, function(value, index, list) { - if (predicate(value, index, list)) results.push(value); - }); - return results; - }; + 'member-child-wildcard': + _descend(function() { return true }), - // Return all the elements for which a truth test fails. - _.reject = function(obj, predicate, context) { - return _.filter(obj, _.negate(_.iteratee(predicate)), context); - }; + 'member-descendant-wildcard': + _traverse(function() { return true }), - // Determine whether all of the elements match a truth test. - // Aliased as `all`. - _.every = _.all = function(obj, predicate, context) { - if (obj == null) return true; - predicate = _.iteratee(predicate, context); - var keys = obj.length !== +obj.length && _.keys(obj), - length = (keys || obj).length, - index, currentKey; - for (index = 0; index < length; index++) { - currentKey = keys ? keys[index] : index; - if (!predicate(obj[currentKey], currentKey, obj)) return false; - } - return true; - }; + 'subscript-descendant-wildcard': + _traverse(function() { return true }), - // Determine if at least one element in the object matches a truth test. - // Aliased as `any`. - _.some = _.any = function(obj, predicate, context) { - if (obj == null) return false; - predicate = _.iteratee(predicate, context); - var keys = obj.length !== +obj.length && _.keys(obj), - length = (keys || obj).length, - index, currentKey; - for (index = 0; index < length; index++) { - currentKey = keys ? keys[index] : index; - if (predicate(obj[currentKey], currentKey, obj)) return true; + 'subscript-child-wildcard': + _descend(function() { return true }), + + 'subscript-child-slice': function(component, partial) { + if (is_array(partial.value)) { + var args = component.expression.value.split(':').map(_parse_nullable_int); + var values = partial.value.map(function(v, i) { return { value: v, path: partial.path.concat(i) } }); + return slice.apply(null, [values].concat(args)); } - return false; - }; + }, - // Determine if the array or object contains a given value (using `===`). - // Aliased as `include`. - _.contains = _.include = function(obj, target) { - if (obj == null) return false; - if (obj.length !== +obj.length) obj = _.values(obj); - return _.indexOf(obj, target) >= 0; - }; + 'subscript-child-union': function(component, partial) { + var results = []; + component.expression.value.forEach(function(component) { + var _component = { operation: 'subscript', scope: 'child', expression: component.expression }; + var handler = this.resolve(_component); + var _results = handler(_component, partial); + if (_results) { + results = results.concat(_results); + } + }, this); - // Invoke a method (with arguments) on every item in a collection. - _.invoke = function(obj, method) { - var args = slice.call(arguments, 2); - var isFunc = _.isFunction(method); - return _.map(obj, function(value) { - return (isFunc ? method : value[method]).apply(value, args); - }); - }; + return unique(results); + }, - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, _.property(key)); - }; + 'subscript-descendant-union': function(component, partial, count) { - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs) { - return _.filter(obj, _.matches(attrs)); - }; + var jp = require('..'); + var self = this; - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.find(obj, _.matches(attrs)); - }; + var results = []; + var nodes = jp.nodes(partial, '$..*').slice(1); - // Return the maximum element (or element-based computation). - _.max = function(obj, iteratee, context) { - var result = -Infinity, lastComputed = -Infinity, - value, computed; - if (iteratee == null && obj != null) { - obj = obj.length === +obj.length ? obj : _.values(obj); - for (var i = 0, length = obj.length; i < length; i++) { - value = obj[i]; - if (value > result) { - result = value; - } - } - } else { - iteratee = _.iteratee(iteratee, context); - _.each(obj, function(value, index, list) { - computed = iteratee(value, index, list); - if (computed > lastComputed || computed === -Infinity && result === -Infinity) { - result = value; - lastComputed = computed; - } + nodes.forEach(function(node) { + if (results.length >= count) return; + component.expression.value.forEach(function(component) { + var _component = { operation: 'subscript', scope: 'child', expression: component.expression }; + var handler = self.resolve(_component); + var _results = handler(_component, node); + results = results.concat(_results); }); - } - return result; - }; + }); - // Return the minimum element (or element-based computation). - _.min = function(obj, iteratee, context) { - var result = Infinity, lastComputed = Infinity, - value, computed; - if (iteratee == null && obj != null) { - obj = obj.length === +obj.length ? obj : _.values(obj); - for (var i = 0, length = obj.length; i < length; i++) { - value = obj[i]; - if (value < result) { - result = value; - } - } - } else { - iteratee = _.iteratee(iteratee, context); - _.each(obj, function(value, index, list) { - computed = iteratee(value, index, list); - if (computed < lastComputed || computed === Infinity && result === Infinity) { - result = value; - lastComputed = computed; - } - }); - } - return result; - }; + return unique(results); + }, - // Shuffle a collection, using the modern version of the - // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). - _.shuffle = function(obj) { - var set = obj && obj.length === +obj.length ? obj : _.values(obj); - var length = set.length; - var shuffled = Array(length); - for (var index = 0, rand; index < length; index++) { - rand = _.random(0, index); - if (rand !== index) shuffled[index] = shuffled[rand]; - shuffled[rand] = set[index]; - } - return shuffled; - }; + 'subscript-child-filter_expression': function(component, partial, count) { - // Sample **n** random values from a collection. - // If **n** is not specified, returns a single random element. - // The internal `guard` argument allows it to work with `map`. - _.sample = function(obj, n, guard) { - if (n == null || guard) { - if (obj.length !== +obj.length) obj = _.values(obj); - return obj[_.random(obj.length - 1)]; - } - return _.shuffle(obj).slice(0, Math.max(0, n)); - }; + // slice out the expression from ?(expression) + var src = component.expression.value.slice(2, -1); + var ast = aesprim.parse(src).body[0].expression; - // Sort the object's values by a criterion produced by an iteratee. - _.sortBy = function(obj, iteratee, context) { - iteratee = _.iteratee(iteratee, context); - return _.pluck(_.map(obj, function(value, index, list) { - return { - value: value, - index: index, - criteria: iteratee(value, index, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index - right.index; - }), 'value'); - }; + var passable = function(key, value) { + return evaluate(ast, { '@': value }); + } - // An internal function used for aggregate "group by" operations. - var group = function(behavior) { - return function(obj, iteratee, context) { - var result = {}; - iteratee = _.iteratee(iteratee, context); - _.each(obj, function(value, index) { - var key = iteratee(value, index, obj); - behavior(result, value, key); - }); - return result; - }; - }; + return this.descend(partial, null, passable, count); - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = group(function(result, value, key) { - if (_.has(result, key)) result[key].push(value); else result[key] = [value]; - }); + }, - // Indexes the object's values by a criterion, similar to `groupBy`, but for - // when you know that your index values will be unique. - _.indexBy = group(function(result, value, key) { - result[key] = value; - }); + 'subscript-descendant-filter_expression': function(component, partial, count) { - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = group(function(result, value, key) { - if (_.has(result, key)) result[key]++; else result[key] = 1; - }); + // slice out the expression from ?(expression) + var src = component.expression.value.slice(2, -1); + var ast = aesprim.parse(src).body[0].expression; - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iteratee, context) { - iteratee = _.iteratee(iteratee, context, 1); - var value = iteratee(obj); - var low = 0, high = array.length; - while (low < high) { - var mid = low + high >>> 1; - if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + var passable = function(key, value) { + return evaluate(ast, { '@': value }); } - return low; - }; - // Safely create a real, live array from anything iterable. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (obj.length === +obj.length) return _.map(obj, _.identity); - return _.values(obj); - }; + return this.traverse(partial, null, passable, count); + }, - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return obj.length === +obj.length ? obj.length : _.keys(obj).length; - }; + 'subscript-child-script_expression': function(component, partial) { + var exp = component.expression.value.slice(1, -1); + return eval_recurse(partial, exp, '$[{{value}}]'); + }, - // Split a collection into two arrays: one whose elements all satisfy the given - // predicate, and one whose elements all do not satisfy the predicate. - _.partition = function(obj, predicate, context) { - predicate = _.iteratee(predicate, context); - var pass = [], fail = []; - _.each(obj, function(value, key, obj) { - (predicate(value, key, obj) ? pass : fail).push(value); - }); - return [pass, fail]; - }; + 'member-child-script_expression': function(component, partial) { + var exp = component.expression.value.slice(1, -1); + return eval_recurse(partial, exp, '$.{{value}}'); + }, - // Array Functions - // --------------- + 'member-descendant-script_expression': function(component, partial) { + var exp = component.expression.value.slice(1, -1); + return eval_recurse(partial, exp, '$..value'); + } +}; - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null) return void 0; - if (n == null || guard) return array[0]; - if (n < 0) return []; - return slice.call(array, 0, n); - }; +Handlers.prototype._fns['subscript-child-string_literal'] = + Handlers.prototype._fns['member-child-identifier']; - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. The **guard** check allows it to work with - // `_.map`. - _.initial = function(array, n, guard) { - return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); - }; +Handlers.prototype._fns['member-descendant-numeric_literal'] = + Handlers.prototype._fns['subscript-descendant-string_literal'] = + Handlers.prototype._fns['member-descendant-identifier']; - // Get the last element of an array. Passing **n** will return the last N - // values in the array. The **guard** check allows it to work with `_.map`. - _.last = function(array, n, guard) { - if (array == null) return void 0; - if (n == null || guard) return array[array.length - 1]; - return slice.call(array, Math.max(array.length - n, 0)); - }; +function eval_recurse(partial, src, template) { - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. The **guard** - // check allows it to work with `_.map`. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); - }; + var jp = require('./index'); + var ast = aesprim.parse(src).body[0].expression; + var value = evaluate(ast, { '@': partial.value }); + var path = template.replace(/\{\{\s*value\s*\}\}/g, value); - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, _.identity); - }; + var results = jp.nodes(partial.value, path); + results.forEach(function(r) { + r.path = partial.path.concat(r.path.slice(1)); + }); - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, strict, output) { - if (shallow && _.every(input, _.isArray)) { - return concat.apply(output, input); - } - for (var i = 0, length = input.length; i < length; i++) { - var value = input[i]; - if (!_.isArray(value) && !_.isArguments(value)) { - if (!strict) output.push(value); - } else if (shallow) { - push.apply(output, value); - } else { - flatten(value, shallow, strict, output); - } - } - return output; - }; + return results; +} - // Flatten out an array, either recursively (by default), or just one level. - _.flatten = function(array, shallow) { - return flatten(array, shallow, false, []); - }; +function is_array(val) { + return Array.isArray(val); +} - // Return a version of the array that does not contain the specified value(s). - _.without = function(array) { - return _.difference(array, slice.call(arguments, 1)); - }; +function is_object(val) { + // is this a non-array, non-null object? + return val && !(val instanceof Array) && val instanceof Object; +} - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iteratee, context) { - if (array == null) return []; - if (!_.isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = _.iteratee(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = array.length; i < length; i++) { - var value = array[i]; - if (isSorted) { - if (!i || seen !== value) result.push(value); - seen = value; - } else if (iteratee) { - var computed = iteratee(value, i, array); - if (_.indexOf(seen, computed) < 0) { - seen.push(computed); - result.push(value); - } - } else if (_.indexOf(result, value) < 0) { - result.push(value); - } - } - return result; - }; +function traverser(recurse) { - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = function() { - return _.uniq(flatten(arguments, true, true, [])); - }; + return function(partial, ref, passable, count) { - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - if (array == null) return []; - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = array.length; i < length; i++) { - var item = array[i]; - if (_.contains(result, item)) continue; - for (var j = 1; j < argsLength; j++) { - if (!_.contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; - }; + var value = partial.value; + var path = partial.path; - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = function(array) { - var rest = flatten(slice.call(arguments, 1), true, true, []); - return _.filter(array, function(value){ - return !_.contains(rest, value); - }); - }; + var results = []; - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = function(array) { - if (array == null) return []; - var length = _.max(arguments, 'length').length; - var results = Array(length); - for (var i = 0; i < length; i++) { - results[i] = _.pluck(arguments, i); - } - return results; - }; + var descend = function(value, path) { - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. - _.object = function(list, values) { - if (list == null) return {}; - var result = {}; - for (var i = 0, length = list.length; i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + if (is_array(value)) { + value.forEach(function(element, index) { + if (results.length >= count) { return } + if (passable(index, element, ref)) { + results.push({ path: path.concat(index), value: element }); + } + }); + value.forEach(function(element, index) { + if (results.length >= count) { return } + if (recurse) { + descend(element, path.concat(index)); + } + }); + } else if (is_object(value)) { + this.keys(value).forEach(function(k) { + if (results.length >= count) { return } + if (passable(k, value[k], ref)) { + results.push({ path: path.concat(k), value: value[k] }); + } + }) + this.keys(value).forEach(function(k) { + if (results.length >= count) { return } + if (recurse) { + descend(value[k], path.concat(k)); + } + }); } - } - return result; - }; + }.bind(this); + descend(value, path); + return results; + } +} - // Return the position of the first occurrence of an item in an array, - // or -1 if the item is not included in the array. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = function(array, item, isSorted) { - if (array == null) return -1; - var i = 0, length = array.length; - if (isSorted) { - if (typeof isSorted == 'number') { - i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted; - } else { - i = _.sortedIndex(array, item); - return array[i] === item ? i : -1; - } - } - for (; i < length; i++) if (array[i] === item) return i; - return -1; - }; +function _descend(passable) { + return function(component, partial, count) { + return this.descend(partial, component.expression.value, passable, count); + } +} - _.lastIndexOf = function(array, item, from) { - if (array == null) return -1; - var idx = array.length; - if (typeof from == 'number') { - idx = from < 0 ? idx + from + 1 : Math.min(idx, from + 1); - } - while (--idx >= 0) if (array[idx] === item) return idx; - return -1; - }; +function _traverse(passable) { + return function(component, partial, count) { + return this.traverse(partial, component.expression.value, passable, count); + } +} - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (arguments.length <= 1) { - stop = start || 0; - start = 0; - } - step = step || 1; +function evaluate() { + try { return _evaluate.apply(this, arguments) } + catch (e) { } +} - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); +function unique(results) { + results = results.filter(function(d) { return d }) + return _uniq( + results, + function(r) { return r.path.map(function(c) { return String(c).replace('-', '--') }).join('-') } + ); +} - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; - } +function _parse_nullable_int(val) { + var sval = String(val); + return sval.match(/^-?[0-9]+$/) ? parseInt(sval) : null; +} - return range; - }; +module.exports = Handlers; - // Function (ahem) Functions - // ------------------ +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/handlers.js","/node_modules/jsonpath/lib") +},{"..":108,"./aesprim":102,"./index":108,"./slice":110,"FWaASH":50,"buffer":52,"static-eval":119,"underscore":133}],108:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var assert = require('assert'); +var dict = require('./dict'); +var Parser = require('./parser'); +var Handlers = require('./handlers'); - // Reusable constructor function for prototype setting. - var Ctor = function(){}; +var JSONPath = function() { + this.initialize.apply(this, arguments); +}; - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = function(func, context) { - var args, bound; - if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); - if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); - args = slice.call(arguments, 2); - bound = function() { - if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); - Ctor.prototype = func.prototype; - var self = new Ctor; - Ctor.prototype = null; - var result = func.apply(self, args.concat(slice.call(arguments))); - if (_.isObject(result)) return result; - return self; - }; - return bound; - }; +JSONPath.prototype.initialize = function() { + this.parser = new Parser(); + this.handlers = new Handlers(); +}; - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. _ acts - // as a placeholder, allowing any combination of arguments to be pre-filled. - _.partial = function(func) { - var boundArgs = slice.call(arguments, 1); - return function() { - var position = 0; - var args = boundArgs.slice(); - for (var i = 0, length = args.length; i < length; i++) { - if (args[i] === _) args[i] = arguments[position++]; - } - while (position < arguments.length) args.push(arguments[position++]); - return func.apply(this, args); - }; - }; +JSONPath.prototype.parse = function(string) { + assert.ok(_is_string(string), "we need a path"); + return this.parser.parse(string); +}; - // Bind a number of an object's methods to that object. Remaining arguments - // are the method names to be bound. Useful for ensuring that all callbacks - // defined on an object belong to it. - _.bindAll = function(obj) { - var i, length = arguments.length, key; - if (length <= 1) throw new Error('bindAll must be passed function names'); - for (i = 1; i < length; i++) { - key = arguments[i]; - obj[key] = _.bind(obj[key], obj); - } - return obj; - }; +JSONPath.prototype.parent = function(obj, string) { - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memoize = function(key) { - var cache = memoize.cache; - var address = hasher ? hasher.apply(this, arguments) : key; - if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); - return cache[address]; - }; - memoize.cache = {}; - return memoize; - }; + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = function(func, wait) { - var args = slice.call(arguments, 2); - return setTimeout(function(){ - return func.apply(null, args); - }, wait); - }; + var node = this.nodes(obj, string)[0]; + var key = node.path.pop(); /* jshint unused:false */ + return this.value(obj, node.path); +} - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = function(func) { - return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); - }; +JSONPath.prototype.apply = function(obj, string, fn) { - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. Normally, the throttled function will run - // as much as it can, without ever going more than once per `wait` duration; - // but if you'd like to disable the execution on the leading edge, pass - // `{leading: false}`. To disable execution on the trailing edge, ditto. - _.throttle = function(func, wait, options) { - var context, args, result; - var timeout = null; - var previous = 0; - if (!options) options = {}; - var later = function() { - previous = options.leading === false ? 0 : _.now(); - timeout = null; - result = func.apply(context, args); - if (!timeout) context = args = null; - }; - return function() { - var now = _.now(); - if (!previous && options.leading === false) previous = now; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0 || remaining > wait) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - if (!timeout) context = args = null; - } else if (!timeout && options.trailing !== false) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); + assert.equal(typeof fn, "function", "fn needs to be function") + + var nodes = this.nodes(obj, string).sort(function(a, b) { + // sort nodes so we apply from the bottom up + return b.path.length - a.path.length; + }); - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, args, context, timestamp, result; + nodes.forEach(function(node) { + var key = node.path.pop(); + var parent = this.value(obj, this.stringify(node.path)); + var val = node.value = fn.call(obj, parent[key]); + parent[key] = val; + }, this); - var later = function() { - var last = _.now() - timestamp; + return nodes; +} - if (last < wait && last > 0) { - timeout = setTimeout(later, wait - last); - } else { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - if (!timeout) context = args = null; - } - } - }; +JSONPath.prototype.value = function(obj, path, value) { - return function() { - context = this; - args = arguments; - timestamp = _.now(); - var callNow = immediate && !timeout; - if (!timeout) timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - context = args = null; - } + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(path, "we need a path"); - return result; - }; - }; + if (arguments.length >= 3) { + var node = this.nodes(obj, path).shift(); + if (!node) return this._vivify(obj, path, value); + var key = node.path.slice(-1).shift(); + var parent = this.parent(obj, this.stringify(node.path)); + parent[key] = value; + } + return this.query(obj, this.stringify(path), 1).shift(); +} - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return _.partial(wrapper, func); - }; +JSONPath.prototype._vivify = function(obj, string, value) { - // Returns a negated version of the passed-in predicate. - _.negate = function(predicate) { - return function() { - return !predicate.apply(this, arguments); - }; - }; + var self = this; - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var args = arguments; - var start = args.length - 1; - return function() { - var i = start; - var result = args[start].apply(this, arguments); - while (i--) result = args[i].call(this, result); - return result; - }; - }; + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); - // Returns a function that will only be executed after being called N times. - _.after = function(times, func) { - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; + var path = this.parser.parse(string) + .map(function(component) { return component.expression.value }); - // Returns a function that will only be executed before being called N times. - _.before = function(times, func) { - var memo; - return function() { - if (--times > 0) { - memo = func.apply(this, arguments); - } else { - func = null; - } - return memo; - }; - }; + var setValue = function(path, value) { + var key = path.pop(); + var node = self.value(obj, path); + if (!node) { + setValue(path.concat(), typeof key === 'string' ? {} : []); + node = self.value(obj, path); + } + node[key] = value; + } + setValue(path, value); + return this.query(obj, string)[0]; +} - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = _.partial(_.before, 2); +JSONPath.prototype.query = function(obj, string, count) { - // Object Functions - // ---------------- + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(_is_string(string), "we need a path"); - // Retrieve the names of an object's properties. - // Delegates to **ECMAScript 5**'s native `Object.keys` - _.keys = function(obj) { - if (!_.isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (_.has(obj, key)) keys.push(key); - return keys; - }; + var results = this.nodes(obj, string, count) + .map(function(r) { return r.value }); - // Retrieve the values of an object's properties. - _.values = function(obj) { - var keys = _.keys(obj); - var length = keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[keys[i]]; - } - return values; - }; + return results; +}; - // Convert an object into a list of `[key, value]` pairs. - _.pairs = function(obj) { - var keys = _.keys(obj); - var length = keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [keys[i], obj[keys[i]]]; - } - return pairs; - }; +JSONPath.prototype.paths = function(obj, string, count) { - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - var keys = _.keys(obj); - for (var i = 0, length = keys.length; i < length; i++) { - result[obj[keys[i]]] = keys[i]; - } - return result; - }; + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); - // Return a sorted list of the function names available on the object. - // Aliased as `methods` - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); - } - return names.sort(); - }; + var results = this.nodes(obj, string, count) + .map(function(r) { return r.path }); - // Extend a given object with all the properties in passed-in object(s). - _.extend = function(obj) { - if (!_.isObject(obj)) return obj; - var source, prop; - for (var i = 1, length = arguments.length; i < length; i++) { - source = arguments[i]; - for (prop in source) { - if (hasOwnProperty.call(source, prop)) { - obj[prop] = source[prop]; - } - } - } - return obj; - }; + return results; +}; - // Return a copy of the object only containing the whitelisted properties. - _.pick = function(obj, iteratee, context) { - var result = {}, key; - if (obj == null) return result; - if (_.isFunction(iteratee)) { - iteratee = createCallback(iteratee, context); - for (key in obj) { - var value = obj[key]; - if (iteratee(value, key, obj)) result[key] = value; - } - } else { - var keys = concat.apply([], slice.call(arguments, 1)); - obj = new Object(obj); - for (var i = 0, length = keys.length; i < length; i++) { - key = keys[i]; - if (key in obj) result[key] = obj[key]; - } - } - return result; - }; +JSONPath.prototype.nodes = function(obj, string, count) { - // Return a copy of the object without the blacklisted properties. - _.omit = function(obj, iteratee, context) { - if (_.isFunction(iteratee)) { - iteratee = _.negate(iteratee); - } else { - var keys = _.map(concat.apply([], slice.call(arguments, 1)), String); - iteratee = function(value, key) { - return !_.contains(keys, key); - }; - } - return _.pick(obj, iteratee, context); - }; + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); - // Fill in a given object with default properties. - _.defaults = function(obj) { - if (!_.isObject(obj)) return obj; - for (var i = 1, length = arguments.length; i < length; i++) { - var source = arguments[i]; - for (var prop in source) { - if (obj[prop] === void 0) obj[prop] = source[prop]; - } - } - return obj; - }; + if (count === 0) return []; - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; + var path = this.parser.parse(string); + var handlers = this.handlers; - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; + var partials = [ { path: ['$'], value: obj } ]; + var matches = []; - // Internal recursive comparison function for `isEqual`. - var eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // A strict comparison is necessary because `null == undefined`. - if (a == null || b == null) return a === b; - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - switch (className) { - // Strings, numbers, regular expressions, dates, and booleans are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - } - if (typeof a != 'object' || typeof b != 'object') return false; - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - // Objects with different constructors are not equivalent, but `Object`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if ( - aCtor !== bCtor && - // Handle Object.create(x) cases - 'constructor' in a && 'constructor' in b && - !(_.isFunction(aCtor) && aCtor instanceof aCtor && - _.isFunction(bCtor) && bCtor instanceof bCtor) - ) { - return false; - } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - var size, result; - // Recursively compare objects and arrays. - if (className === '[object Array]') { - // Compare array lengths to determine if a deep comparison is necessary. - size = a.length; - result = size === b.length; - if (result) { - // Deep compare the contents, ignoring non-numeric properties. - while (size--) { - if (!(result = eq(a[size], b[size], aStack, bStack))) break; - } - } - } else { - // Deep compare objects. - var keys = _.keys(a), key; - size = keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - result = _.keys(b).length === size; - if (result) { - while (size--) { - // Deep compare each member - key = keys[size]; - if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; - } - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return result; - }; + if (path.length && path[0].expression.type == 'root') path.shift(); - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b, [], []); - }; + if (!path.length) return partials; - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (_.isArray(obj) || _.isString(obj) || _.isArguments(obj)) return obj.length === 0; - for (var key in obj) if (_.has(obj, key)) return false; - return true; - }; + path.forEach(function(component, index) { - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); - }; + if (matches.length >= count) return; + var handler = handlers.resolve(component); + var _partials = []; - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) === '[object Array]'; - }; + partials.forEach(function(p) { - // Is a given variable an object? - _.isObject = function(obj) { - var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; - }; + if (matches.length >= count) return; + var results = handler(component, p, count); + + if (index == path.length - 1) { + // if we're through the components we're done + matches = matches.concat(results || []); + } else { + // otherwise accumulate and carry on through + _partials = _partials.concat(results || []); + } + }); + + partials = _partials; - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. - _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) === '[object ' + name + ']'; - }; }); - // Define a fallback version of the method in browsers (ahem, IE), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return _.has(obj, 'callee'); - }; - } + return count ? matches.slice(0, count) : matches; +}; - // Optimize `isFunction` if appropriate. Work around an IE 11 bug. - if (typeof /./ !== 'function') { - _.isFunction = function(obj) { - return typeof obj == 'function' || false; - }; - } +JSONPath.prototype.stringify = function(path) { - // Is a given object a finite number? - _.isFinite = function(obj) { - return isFinite(obj) && !isNaN(parseFloat(obj)); - }; + assert.ok(path, "we need a path"); - // Is the given value `NaN`? (NaN is the only number which does not equal itself). - _.isNaN = function(obj) { - return _.isNumber(obj) && obj !== +obj; - }; + var string = '$'; - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + var templates = { + 'descendant-member': '..{{value}}', + 'child-member': '.{{value}}', + 'descendant-subscript': '..[{{value}}]', + 'child-subscript': '[{{value}}]' }; - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; + path = this._normalize(path); - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; + path.forEach(function(component) { - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); - }; + if (component.expression.type == 'root') return; - // Utility Functions - // ----------------- + var key = [component.scope, component.operation].join('-'); + var template = templates[key]; + var value; - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; + if (component.expression.type == 'string_literal') { + value = JSON.stringify(component.expression.value) + } else { + value = component.expression.value; + } - // Keep the identity function around for default iteratees. - _.identity = function(value) { - return value; - }; + if (!template) throw new Error("couldn't find template " + key); - _.constant = function(value) { - return function() { - return value; - }; - }; + string += template.replace(/{{value}}/, value); + }); - _.noop = function(){}; + return string; +} - _.property = function(key) { - return function(obj) { - return obj[key]; - }; - }; +JSONPath.prototype._normalize = function(path) { - // Returns a predicate for checking whether an object has a given set of `key:value` pairs. - _.matches = function(attrs) { - var pairs = _.pairs(attrs), length = pairs.length; - return function(obj) { - if (obj == null) return !length; - obj = new Object(obj); - for (var i = 0; i < length; i++) { - var pair = pairs[i], key = pair[0]; - if (pair[1] !== obj[key] || !(key in obj)) return false; - } - return true; - }; - }; + assert.ok(path, "we need a path"); - // Run a function **n** times. - _.times = function(n, iteratee, context) { - var accum = Array(Math.max(0, n)); - iteratee = createCallback(iteratee, context, 1); - for (var i = 0; i < n; i++) accum[i] = iteratee(i); - return accum; - }; + if (typeof path == "string") { - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; + return this.parser.parse(path); - // A (possibly faster) way to get the current timestamp as an integer. - _.now = Date.now || function() { - return new Date().getTime(); - }; + } else if (Array.isArray(path) && typeof path[0] == "string") { - // List of HTML entities for escaping. - var escapeMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' - }; - var unescapeMap = _.invert(escapeMap); + var _path = [ { expression: { type: "root", value: "$" } } ]; - // Functions for escaping and unescaping strings to/from HTML interpolation. - var createEscaper = function(map) { - var escaper = function(match) { - return map[match]; - }; - // Regexes for identifying a key that needs to be escaped - var source = '(?:' + _.keys(map).join('|') + ')'; - var testRegexp = RegExp(source); - var replaceRegexp = RegExp(source, 'g'); - return function(string) { - string = string == null ? '' : '' + string; - return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; - }; - }; - _.escape = createEscaper(escapeMap); - _.unescape = createEscaper(unescapeMap); - - // If the value of the named `property` is a function then invoke it with the - // `object` as context; otherwise, return it. - _.result = function(object, property) { - if (object == null) return void 0; - var value = object[property]; - return _.isFunction(value) ? object[property]() : value; - }; + path.forEach(function(component, index) { - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; + if (component == '$' && index === 0) return; - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate : /<%([\s\S]+?)%>/g, - interpolate : /<%=([\s\S]+?)%>/g, - escape : /<%-([\s\S]+?)%>/g - }; + if (typeof component == "string" && component.match("^" + dict.identifier + "$")) { - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; + _path.push({ + operation: 'member', + scope: 'child', + expression: { value: component, type: 'identifier' } + }); - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; + } else { - var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + var type = typeof component == "number" ? + 'numeric_literal' : 'string_literal'; - var escapeChar = function(match) { - return '\\' + escapes[match]; - }; + _path.push({ + operation: 'subscript', + scope: 'child', + expression: { value: component, type: type } + }); + } + }); - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - // NB: `oldSettings` only exists for backwards compatibility. - _.template = function(text, settings, oldSettings) { - if (!settings && oldSettings) settings = oldSettings; - settings = _.defaults({}, settings, _.templateSettings); + return _path; - // Combine delimiters into one regular expression via alternation. - var matcher = RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); + } else if (Array.isArray(path) && typeof path[0] == "object") { - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset).replace(escaper, escapeChar); - index = offset + match.length; + return path + } - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } else if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } else if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } + throw new Error("couldn't understand path " + path); +} - // Adobe VMs need the match returned to produce the correct offest. - return match; - }); - source += "';\n"; +function _is_string(obj) { + return Object.prototype.toString.call(obj) == '[object String]'; +} - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; +JSONPath.Handlers = Handlers; +JSONPath.Parser = Parser; - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + 'return __p;\n'; +var instance = new JSONPath; +instance.JSONPath = JSONPath; - try { - var render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; +module.exports = instance; + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/index.js","/node_modules/jsonpath/lib") +},{"./dict":105,"./handlers":107,"./parser":109,"FWaASH":50,"assert":44,"buffer":52}],109:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var grammar = require('./grammar'); +var gparser = require('../generated/parser'); + +var Parser = function() { + + var parser = new gparser.Parser(); + + var _parseError = parser.parseError; + parser.yy.parseError = function() { + if (parser.yy.ast) { + parser.yy.ast.initialize(); } + _parseError.apply(parser, arguments); + } - var template = function(data) { - return render.call(this, data, _); - }; + return parser; - // Provide the compiled source as a convenience for precompilation. - var argument = settings.variable || 'obj'; - template.source = 'function(' + argument + '){\n' + source + '}'; +}; - return template; - }; +Parser.grammar = grammar; +module.exports = Parser; - // Add a "chain" function. Start chaining a wrapped Underscore object. - _.chain = function(obj) { - var instance = _(obj); - instance._chain = true; - return instance; - }; +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/parser.js","/node_modules/jsonpath/lib") +},{"../generated/parser":103,"./grammar":106,"FWaASH":50,"buffer":52}],110:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +module.exports = function(arr, start, end, step) { + + if (typeof start == 'string') throw new Error("start cannot be a string"); + if (typeof end == 'string') throw new Error("end cannot be a string"); + if (typeof step == 'string') throw new Error("step cannot be a string"); - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. + var len = arr.length; - // Helper function to continue chaining intermediate results. - var result = function(obj) { - return this._chain ? _(obj).chain() : obj; - }; + if (step === 0) throw new Error("step cannot be zero"); + step = step ? integer(step) : 1; - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - _.each(_.functions(obj), function(name) { - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return result.call(this, func.apply(_, args)); - }; - }); - }; + // normalize negative values + start = start < 0 ? len + start : start; + end = end < 0 ? len + end : end; - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); + // default extents to extents + start = integer(start === 0 ? 0 : !start ? (step > 0 ? 0 : len - 1) : start); + end = integer(end === 0 ? 0 : !end ? (step > 0 ? len : -1) : end); - // Add all mutator Array functions to the wrapper. - _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; - return result.call(this, obj); - }; - }); + // clamp extents + start = step > 0 ? Math.max(0, start) : Math.min(len, start); + end = step > 0 ? Math.min(end, len) : Math.max(-1, end); - // Add all accessor Array functions to the wrapper. - _.each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return result.call(this, method.apply(this._wrapped, arguments)); - }; - }); + // return empty if extents are backwards + if (step > 0 && end <= start) return []; + if (step < 0 && start <= end) return []; - // Extracts the result from a wrapped and chained object. - _.prototype.value = function() { - return this._wrapped; - }; + var result = []; - // AMD registration happens at the end for compatibility with AMD loaders - // that may not enforce next-turn semantics on modules. Even though general - // practice for AMD registration is to be anonymous, underscore registers - // as a named module because, like jQuery, it is a base library that is - // popular enough to be bundled in a third party lib, but not be part of - // an AMD load request. Those cases could generate an error when an - // anonymous define() is called outside of a loader request. - if (typeof define === 'function' && define.amd) { - define('underscore', [], function() { - return _; - }); + for (var i = start; i != end; i += step) { + if ((step < 0 && i <= end) || (step > 0 && i >= end)) break; + result.push(arr[i]); } -}.call(this)); -}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/node_modules/underscore/underscore.js","/node_modules/jsonpath/node_modules/underscore") -},{"buffer":57,"lYpoI2":59}],103:[function(require,module,exports){ + return result; +} + +function integer(val) { + return String(val).match(/^[0-9]+$/) ? parseInt(val) : + Number.isFinite(val) ? parseInt(val, 10) : 0; +} + +}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/slice.js","/node_modules/jsonpath/lib") +},{"FWaASH":50,"buffer":52}],111:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ /** * @license - * lodash 3.10.1 (Custom Build) - * Build: `lodash modern -d -o ./index.js` - * Copyright 2012-2015 The Dojo Foundation + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */ ;(function() { @@ -21943,56 +25363,109 @@ function integer(val) { var undefined; /** Used as the semantic version number. */ - var VERSION = '3.10.1'; - - /** Used to compose bitmasks for wrapper metadata. */ - var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - CURRY_BOUND_FLAG = 4, - CURRY_FLAG = 8, - CURRY_RIGHT_FLAG = 16, - PARTIAL_FLAG = 32, - PARTIAL_RIGHT_FLAG = 64, - ARY_FLAG = 128, - REARG_FLAG = 256; - - /** Used as default options for `_.trunc`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; - - /** Used to detect when a function becomes hot. */ - var HOT_COUNT = 150, - HOT_SPAN = 16; + var VERSION = '4.17.21'; /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; - /** Used to indicate the type of lazy iteratees. */ - var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2; + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function', + INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT = 'Expected a function'; + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; /** Used as the internal argument placeholder. */ var PLACEHOLDER = '__lodash_placeholder__'; + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', boolTag = '[object Boolean]', dateTag = '[object Date]', + domExcTag = '[object DOMException]', errorTag = '[object Error]', funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', mapTag = '[object Map]', numberTag = '[object Number]', + nullTag = '[object Null]', objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', @@ -22009,8 +25482,8 @@ function integer(val) { reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g, - reUnescapedHtml = /[&<>"'`]/g, + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); @@ -22020,40 +25493,72 @@ function integer(val) { reInterpolate = /<%=([\s\S]+?)%>/g; /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/, + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g; + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; /** - * Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns) - * and those outlined by [`EscapeRegExpPattern`](http://ecma-international.org/ecma-262/6.0/#sec-escaperegexppattern). + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). */ - var reRegExpChars = /^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g, - reHasRegExpChars = RegExp(reRegExpChars.source); + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + + /** Used to match leading whitespace. */ + var reTrimStart = /^\s+/; + + /** Used to match a single whitespace character. */ + var reWhitespace = /\s/; - /** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */ - var reComboMark = /[\u0300-\u036f\ufe20-\ufe23]/g; + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** + * Used to validate the `validate` option in `_.template` variable. + * + * Forbids characters which could potentially change the meaning of the function argument definition: + * - "()," (modification of function parameters) + * - "=" (default value) + * - "[]{}" (destructuring of function parameters) + * - "/" (beginning of a comment) + * - whitespace + */ + var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; /** Used to match backslashes in property paths. */ var reEscapeChar = /\\(\\)?/g; - /** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */ + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; /** Used to match `RegExp` flags from their coerced string values. */ var reFlags = /\w*$/; - /** Used to detect hexadecimal string values. */ - var reHasHexPrefix = /^0[xX]/; + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; - /** Used to detect host constructors (Safari > 5). */ + /** Used to detect host constructors (Safari). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + /** Used to detect unsigned integer values. */ - var reIsUint = /^\d+$/; + var reIsUint = /^(?:0|[1-9]\d*)$/; - /** Used to match latin-1 supplementary letters (excluding mathematical operators). */ - var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g; + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; /** Used to ensure capturing order of template delimiters. */ var reNoMatch = /($^)/; @@ -22061,21 +25566,90 @@ function integer(val) { /** Used to match unescaped characters in compiled string literals. */ var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - /** Used to match words to create compound words. */ - var reWords = (function() { - var upper = '[A-Z\\xc0-\\xd6\\xd8-\\xde]', - lower = '[a-z\\xdf-\\xf6\\xf8-\\xff]+'; + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); - return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g'); - }()); + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; /** Used to assign default `context` object properties. */ var contextProps = [ - 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number', - 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'isFinite', - 'parseFloat', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap' + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' ]; /** Used to make template sourceURLs easier to identify. */ @@ -22090,37 +25664,40 @@ function integer(val) { typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dateTag] = typedArrayTags[errorTag] = - typedArrayTags[funcTag] = typedArrayTags[mapTag] = - typedArrayTags[numberTag] = typedArrayTags[objectTag] = - typedArrayTags[regexpTag] = typedArrayTags[setTag] = - typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; /** Used to identify `toStringTag` values supported by `_.clone`. */ var cloneableTags = {}; cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = - cloneableTags[dateTag] = cloneableTags[float32Tag] = - cloneableTags[float64Tag] = cloneableTags[int8Tag] = - cloneableTags[int16Tag] = cloneableTags[int32Tag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[stringTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[mapTag] = cloneableTags[setTag] = cloneableTags[weakMapTag] = false; - /** Used to map latin-1 supplementary letters to basic latin letters. */ + /** Used to map Latin Unicode letters to basic Latin letters. */ var deburredLetters = { + // Latin-1 Supplement block. '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', '\xc7': 'C', '\xe7': 'c', '\xd0': 'D', '\xf0': 'd', '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcC': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xeC': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', '\xd1': 'N', '\xf1': 'n', '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', @@ -22129,7 +25706,43 @@ function integer(val) { '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', '\xc6': 'Ae', '\xe6': 'ae', '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss' + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' }; /** Used to map characters to HTML entities. */ @@ -22138,8 +25751,7 @@ function integer(val) { '<': '<', '>': '>', '"': '"', - "'": ''', - '`': '`' + "'": ''' }; /** Used to map HTML entities to characters. */ @@ -22148,23 +25760,7 @@ function integer(val) { '<': '<', '>': '>', '"': '"', - ''': "'", - '`': '`' - }; - - /** Used to determine if values are of the language type `Object`. */ - var objectTypes = { - 'function': true, - 'object': true - }; - - /** Used to escape characters for inclusion in compiled regexes. */ - var regexpEscapes = { - '0': 'x30', '1': 'x31', '2': 'x32', '3': 'x33', '4': 'x34', - '5': 'x35', '6': 'x36', '7': 'x37', '8': 'x38', '9': 'x39', - 'A': 'x41', 'B': 'x42', 'C': 'x43', 'D': 'x44', 'E': 'x45', 'F': 'x46', - 'a': 'x61', 'b': 'x62', 'c': 'x63', 'd': 'x64', 'e': 'x65', 'f': 'x66', - 'n': 'x6e', 'r': 'x72', 't': 'x74', 'u': 'x75', 'v': 'x76', 'x': 'x78' + ''': "'" }; /** Used to escape characters for inclusion in compiled string literals. */ @@ -22177,3806 +25773,2829 @@ function integer(val) { '\u2029': 'u2029' }; - /** Detect free variable `exports`. */ - var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; /** Detect free variable `global` from Node.js. */ - var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global; + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; /** Detect free variable `self`. */ - var freeSelf = objectTypes[typeof self] && self && self.Object && self; - - /** Detect free variable `window`. */ - var freeWindow = objectTypes[typeof window] && window && window.Object && window; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; - - /** - * Used as a reference to the global object. - * - * The `this` value is used if it's the global object to avoid Greasemonkey's - * restricted `window` object, otherwise the `window` object is used. - */ - var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this; - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `compareAscending` which compares values and - * sorts them in ascending order without guaranteeing a stable sort. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function baseCompareAscending(value, other) { - if (value !== other) { - var valIsNull = value === null, - valIsUndef = value === undefined, - valIsReflexive = value === value; - - var othIsNull = other === null, - othIsUndef = other === undefined, - othIsReflexive = other === other; - - if ((value > other && !othIsNull) || !valIsReflexive || - (valIsNull && !othIsUndef && othIsReflexive) || - (valIsUndef && othIsReflexive)) { - return 1; - } - if ((value < other && !valIsNull) || !othIsReflexive || - (othIsNull && !valIsUndef && valIsReflexive) || - (othIsUndef && valIsReflexive)) { - return -1; - } - } - return 0; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for callback shorthands and `this` binding. - * - * @private - * @param {Array} array The array to search. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.indexOf` without support for binary searches. - * - * @private - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - if (value !== value) { - return indexOfNaN(array, fromIndex); - } - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isFunction` without support for environments - * with incorrect `typeof` results. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - */ - function baseIsFunction(value) { - // Avoid a Chakra JIT bug in compatibility modes of IE 11. - // See https://github.com/jashkenas/underscore/issues/1621 for more details. - return typeof value == 'function' || false; - } - - /** - * Converts `value` to a string if it's not one. An empty string is returned - * for `null` or `undefined` values. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - return value == null ? '' : (value + ''); - } - - /** - * Used by `_.trim` and `_.trimLeft` to get the index of the first character - * of `string` that is not found in `chars`. - * - * @private - * @param {string} string The string to inspect. - * @param {string} chars The characters to find. - * @returns {number} Returns the index of the first character not found in `chars`. - */ - function charsLeftIndex(string, chars) { - var index = -1, - length = string.length; - - while (++index < length && chars.indexOf(string.charAt(index)) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimRight` to get the index of the last character - * of `string` that is not found in `chars`. - * - * @private - * @param {string} string The string to inspect. - * @param {string} chars The characters to find. - * @returns {number} Returns the index of the last character not found in `chars`. - */ - function charsRightIndex(string, chars) { - var index = string.length; - - while (index-- && chars.indexOf(string.charAt(index)) > -1) {} - return index; - } - - /** - * Used by `_.sortBy` to compare transformed elements of a collection and stable - * sort them in ascending order. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareAscending(object, other) { - return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index); - } - - /** - * Used by `_.sortByOrder` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all valuess are sorted in ascending order. Otherwise, - * a value is sorted in ascending order if its corresponding order is "asc", and - * descending if "desc". - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = baseCompareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * ((order === 'asc' || order === true) ? 1 : -1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://code.google.com/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; - } - - /** - * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - function deburrLetter(letter) { - return deburredLetters[letter]; - } - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeHtmlChar(chr) { - return htmlEscapes[chr]; - } - - /** - * Used by `_.escapeRegExp` to escape characters for inclusion in compiled regexes. - * - * @private - * @param {string} chr The matched character to escape. - * @param {string} leadingChar The capture group for a leading character. - * @param {string} whitespaceChar The capture group for a whitespace character. - * @returns {string} Returns the escaped character. - */ - function escapeRegExpChar(chr, leadingChar, whitespaceChar) { - if (leadingChar) { - chr = regexpEscapes[chr]; - } else if (whitespaceChar) { - chr = stringEscapes[chr]; - } - return '\\' + chr; - } - - /** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } - - /** - * Gets the index at which the first occurrence of `NaN` is found in `array`. - * - * @private - * @param {Array} array The array to search. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched `NaN`, else `-1`. - */ - function indexOfNaN(array, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 0 : -1); - - while ((fromRight ? index-- : ++index < length)) { - var other = array[index]; - if (other !== other) { - return index; - } - } - return -1; - } - - /** - * Checks if `value` is object-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - */ - function isObjectLike(value) { - return !!value && typeof value == 'object'; - } - - /** - * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a - * character code is whitespace. - * - * @private - * @param {number} charCode The character code to inspect. - * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`. - */ - function isSpace(charCode) { - return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 || - (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279))); - } - - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = -1, - result = []; - - while (++index < length) { - if (array[index] === placeholder) { - array[index] = PLACEHOLDER; - result[++resIndex] = index; - } - } - return result; - } + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - /** - * An implementation of `_.uniq` optimized for sorted arrays without support - * for callback shorthands and `this` binding. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The function invoked per iteration. - * @returns {Array} Returns the new duplicate-value-free array. - */ - function sortedUniq(array, iteratee) { - var seen, - index = -1, - length = array.length, - resIndex = -1, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value, index, array) : value; - - if (!index || seen !== computed) { - seen = computed; - result[++resIndex] = value; - } - } - return result; - } - - /** - * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace - * character of `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the index of the first non-whitespace character. - */ - function trimmedLeftIndex(string) { - var index = -1, - length = string.length; - - while (++index < length && isSpace(string.charCodeAt(index))) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace - * character of `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the index of the last non-whitespace character. - */ - function trimmedRightIndex(string) { - var index = string.length; - - while (index-- && isSpace(string.charCodeAt(index))) {} - return index; - } - - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - function unescapeHtmlChar(chr) { - return htmlUnescapes[chr]; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new pristine `lodash` function using the given `context` object. - * - * @static - * @memberOf _ - * @category Utility - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'foo': _.constant('foo') }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'bar': lodash.constant('bar') }); - * - * _.isFunction(_.foo); - * // => true - * _.isFunction(_.bar); - * // => false - * - * lodash.isFunction(lodash.foo); - * // => false - * lodash.isFunction(lodash.bar); - * // => true - * - * // using `context` to mock `Date#getTime` use in `_.now` - * var mock = _.runInContext({ - * 'Date': function() { - * return { 'getTime': getTimeMock }; - * } - * }); - * - * // or creating a suped-up `defer` in Node.js - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - function runInContext(context) { - // Avoid issues with some ES3 environments that attempt to use values, named - // after built-in constructors like `Object`, for the creation of literals. - // ES5 clears this up by stating that literals must use built-in constructors. - // See https://es5.github.io/#x11.1.5 for more details. - context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; - - /** Native constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Number = context.Number, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** Used for native method references. */ - var arrayProto = Array.prototype, - objectProto = Object.prototype, - stringProto = String.prototype; - - /** Used to resolve the decompiled source of functions. */ - var fnToString = Function.prototype.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ - var objToString = objectProto.toString; - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Native method references. */ - var ArrayBuffer = context.ArrayBuffer, - clearTimeout = context.clearTimeout, - parseFloat = context.parseFloat, - pow = Math.pow, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - Set = getNative(context, 'Set'), - setTimeout = context.setTimeout, - splice = arrayProto.splice, - Uint8Array = context.Uint8Array, - WeakMap = getNative(context, 'WeakMap'); - - /* Native method references for those with the same name as other `lodash` methods. */ - var nativeCeil = Math.ceil, - nativeCreate = getNative(Object, 'create'), - nativeFloor = Math.floor, - nativeIsArray = getNative(Array, 'isArray'), - nativeIsFinite = context.isFinite, - nativeKeys = getNative(Object, 'keys'), - nativeMax = Math.max, - nativeMin = Math.min, - nativeNow = getNative(Date, 'now'), - nativeParseInt = context.parseInt, - nativeRandom = Math.random; - - /** Used as references for `-Infinity` and `Infinity`. */ - var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY, - POSITIVE_INFINITY = Number.POSITIVE_INFINITY; - - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - - /** - * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) - * of an array-like value. - */ - var MAX_SAFE_INTEGER = 9007199254740991; - - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); - /** Used to lookup unminified function names. */ - var realNames = {}; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit chaining. - * Methods that operate on and return arrays, collections, and functions can - * be chained together. Methods that retrieve a single value or may return a - * primitive value will automatically end the chain returning the unwrapped - * value. Explicit chaining may be enabled using `_.chain`. The execution of - * chained methods is lazy, that is, execution is deferred until `_#value` - * is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. Shortcut - * fusion is an optimization strategy which merge iteratee calls; this can help - * to avoid the creation of intermediate data structures and greatly reduce the - * number of iteratee executions. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, - * `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, - * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, - * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, - * and `where` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, - * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, - * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`, - * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`, - * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, - * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, - * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, - * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, - * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`, - * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`, - * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, - * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`, - * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, - * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`, - * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, - * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`, - * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`, - * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, - * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, - * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, - * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, - * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`, - * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`, - * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`, - * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`, - * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`, - * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`, - * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, - * `unescape`, `uniqueId`, `value`, and `words` - * - * The wrapper method `sample` will return a wrapped value when `n` is provided, - * otherwise an unwrapped value is returned. - * - * @name _ - * @constructor - * @category Chain - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var wrapped = _([1, 2, 3]); - * - * // returns an unwrapped value - * wrapped.reduce(function(total, n) { - * return total + n; - * }); - * // => 6 - * - * // returns a wrapped value - * var squares = wrapped.map(function(n) { - * return n * n; - * }); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - - /** - * The function whose prototype all chaining wrappers inherit from. - * - * @private - */ - function baseLodash() { - // No operation performed. - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable chaining for all wrapper methods. - * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value. - */ - function LodashWrapper(value, chainAll, actions) { - this.__wrapped__ = value; - this.__actions__ = actions || []; - this.__chain__ = !!chainAll; - } - - /** - * An object environment feature flags. - * - * @static - * @memberOf _ - * @type Object - */ - var support = lodash.support = {}; - - /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB). Change the following template settings to use - * alternative delimiters. - * - * @static - * @memberOf _ - * @type Object - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'escape': reEscape, + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'evaluate': reEvaluate, + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'interpolate': reInterpolate, + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type string - */ - 'variable': '', + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type Object - */ - 'imports': { + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type Function - */ - '_': lodash + if (types) { + return types; } - }; - /*------------------------------------------------------------------------*/ + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); - /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @param {*} value The value to wrap. - */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = POSITIVE_INFINITY; - this.__views__ = []; + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /*--------------------------------------------------------------------------*/ + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); } + return func.apply(thisArg, args); + } - /** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ - function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = arrayCopy(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = arrayCopy(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = arrayCopy(this.__views__); - return result; + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); } + return accumulator; + } - /** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; } - return result; } + return array; + } - /** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ - function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; - if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) { - return baseWrapperValue((isRight && isArr) ? array.reverse() : array, this.__actions__); + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; } - var result = []; + } + return array; + } - outer: - while (length-- && resIndex < takeCount) { - index += dir; + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; - var iterIndex = -1, - value = array[index]; + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { result[resIndex++] = value; } - return result; } + return result; + } - /*------------------------------------------------------------------------*/ + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } - /** - * Creates a cache object to store key/value pairs. - * - * @private - * @static - * @name Cache - * @memberOf _.memoize - */ - function MapCache() { - this.__data__ = {}; - } + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; - /** - * Removes `key` and its value from the cache. - * - * @private - * @name delete - * @memberOf _.memoize.Cache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`. - */ - function mapDelete(key) { - return this.has(key) && delete this.__data__[key]; + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } } + return false; + } - /** - * Gets the cached value for `key`. - * - * @private - * @name get - * @memberOf _.memoize.Cache - * @param {string} key The key of the value to get. - * @returns {*} Returns the cached value. - */ - function mapGet(key) { - return key == '__proto__' ? undefined : this.__data__[key]; - } + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); - /** - * Checks if a cached value for `key` exists. - * - * @private - * @name has - * @memberOf _.memoize.Cache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapHas(key) { - return key != '__proto__' && hasOwnProperty.call(this.__data__, key); + while (++index < length) { + result[index] = iteratee(array[index], index, array); } + return result; + } - /** - * Sets `value` to `key` of the cache. - * - * @private - * @name set - * @memberOf _.memoize.Cache - * @param {string} key The key of the value to cache. - * @param {*} value The value to cache. - * @returns {Object} Returns the cache object. - */ - function mapSet(key, value) { - if (key != '__proto__') { - this.__data__[key] = value; - } - return this; - } + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; - /*------------------------------------------------------------------------*/ + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } - /** - * - * Creates a cache object to store unique values. - * - * @private - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var length = values ? values.length : 0; + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; - this.data = { 'hash': nativeCreate(null), 'set': new Set }; - while (length--) { - this.push(values[length]); - } + if (initAccum && length) { + accumulator = array[++index]; } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } - /** - * Checks if `value` is in `cache` mimicking the return signature of - * `_.indexOf` by returning `0` if the value is found, else `-1`. - * - * @private - * @param {Object} cache The cache to search. - * @param {*} value The value to search for. - * @returns {number} Returns `0` if `value` is found, else `-1`. - */ - function cacheIndexOf(cache, value) { - var data = cache.data, - result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value]; - - return result ? 0 : -1; + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); } + return accumulator; + } - /** - * Adds `value` to the cache. - * - * @private - * @name push - * @memberOf SetCache - * @param {*} value The value to cache. - */ - function cachePush(value) { - var data = this.data; - if (typeof value == 'string' || isObject(value)) { - data.set.add(value); - } else { - data.hash[value] = true; + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; } } + return false; + } - /*------------------------------------------------------------------------*/ + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); - /** - * Creates a new array joining `array` with `other`. - * - * @private - * @param {Array} array The array to join. - * @param {Array} other The other array to join. - * @returns {Array} Returns the new concatenated array. - */ - function arrayConcat(array, other) { - var index = -1, - length = array.length, - othIndex = -1, - othLength = other.length, - result = Array(length + othLength); + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } - while (++index < length) { - result[index] = array[index]; + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; } - while (++othIndex < othLength) { - result[index++] = other[othIndex]; + }); + return result; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; } - return result; } + return -1; + } - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function arrayCopy(source, array) { - var index = -1, - length = source.length; + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; } - return array; } + return -1; + } - /** - * A specialized version of `_.forEach` for arrays without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array.length; + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; } + return array; + } - /** - * A specialized version of `_.forEachRight` for arrays without support for - * callback shorthands and `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array.length; + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); } - return array; } + return result; + } - /** - * A specialized version of `_.every` for arrays without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array.length; + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; + while (++index < n) { + result[index] = iteratee(index); } + return result; + } - /** - * A specialized version of `baseExtremum` for arrays which invokes `iteratee` - * with one argument: (value). - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} comparator The function used to compare values. - * @param {*} exValue The initial extremum value. - * @returns {*} Returns the extremum value. - */ - function arrayExtremum(array, iteratee, comparator, exValue) { - var index = -1, - length = array.length, - computed = exValue, - result = computed; + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } - while (++index < length) { - var value = array[index], - current = +iteratee(value); + /** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ + function baseTrim(string) { + return string + ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; + } - if (comparator(current, computed)) { - computed = current; - result = value; - } - } - return result; - } + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } - /** - * A specialized version of `_.filter` for arrays without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array.length, - resIndex = -1, - result = []; + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[++resIndex] = value; - } - } - return result; - } + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } - /** - * A specialized version of `_.map` for arrays without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array.length, - result = Array(length); + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; - while (++index < length) { - array[offset + index] = values[index]; + while (length--) { + if (array[length] === placeholder) { + ++result; } - return array; } + return result; + } - /** - * A specialized version of `_.reduce` for arrays without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initFromArray] Specify using the first element of `array` - * as the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initFromArray) { - var index = -1, - length = array.length; + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); - if (initFromArray && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); - /** - * A specialized version of `_.reduceRight` for arrays without support for - * callback shorthands and `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initFromArray] Specify using the last element of `array` - * as the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initFromArray) { - var length = array.length; - if (initFromArray && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } - /** - * A specialized version of `_.some` for arrays without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array.length; + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } - /** - * A specialized version of `_.sum` for arrays without support for callback - * shorthands and `this` binding.. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ - function arraySum(array, iteratee) { - var length = array.length, - result = 0; + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } - while (length--) { - result += +iteratee(array[length]) || 0; - } - return result; - } + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; - /** - * Used by `_.defaults` to customize its `_.assign` use. - * - * @private - * @param {*} objectValue The destination object property value. - * @param {*} sourceValue The source object property value. - * @returns {*} Returns the value to assign to the destination object. - */ - function assignDefaults(objectValue, sourceValue) { - return objectValue === undefined ? sourceValue : objectValue; + while (!(data = iterator.next()).done) { + result.push(data.value); } + return result; + } - /** - * Used by `_.template` to customize its `_.assign` use. - * - * **Note:** This function is like `assignDefaults` except that it ignores - * inherited property values when checking if a property is `undefined`. - * - * @private - * @param {*} objectValue The destination object property value. - * @param {*} sourceValue The source object property value. - * @param {string} key The key associated with the object and source values. - * @param {Object} object The destination object. - * @returns {*} Returns the value to assign to the destination object. - */ - function assignOwnDefaults(objectValue, sourceValue, key, object) { - return (objectValue === undefined || !hasOwnProperty.call(object, key)) - ? sourceValue - : objectValue; - } + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); - /** - * A specialized version of `_.assign` for customizing assigned values without - * support for argument juggling, multiple sources, and `this` binding `customizer` - * functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - */ - function assignWith(object, source, customizer) { - var index = -1, - props = keys(source), - length = props.length; + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } - while (++index < length) { - var key = props[index], - value = object[key], - result = customizer(value, source[key], key, object, source); + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } - if ((result === result ? (result !== value) : (value === value)) || - (value === undefined && !(key in object))) { - object[key] = result; - } + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; } - return object; } + return result; + } - /** - * The base implementation of `_.assign` without support for argument juggling, - * multiple sources, and `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssign(object, source) { - return source == null - ? object - : baseCopy(source, keys(source), object); - } + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); - /** - * The base implementation of `_.at` without support for string collections - * and individual key arguments. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {number[]|string[]} props The property names or indexes of elements to pick. - * @returns {Array} Returns the new array of picked elements. - */ - function baseAt(collection, props) { - var index = -1, - isNil = collection == null, - isArr = !isNil && isArrayLike(collection), - length = isArr ? collection.length : 0, - propsLength = props.length, - result = Array(propsLength); + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } - while(++index < propsLength) { - var key = props[index]; - if (isArr) { - result[index] = isIndex(key, length) ? collection[key] : undefined; - } else { - result[index] = isNil ? undefined : collection[key]; - } - } - return result; - } + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property names to copy. - * @param {Object} [object={}] The object to copy properties to. - * @returns {Object} Returns `object`. - */ - function baseCopy(source, props, object) { - object || (object = {}); + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } - var index = -1, - length = props.length; + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; - while (++index < length) { - var key = props[index]; - object[key] = source[key]; + while (++index < length) { + if (array[index] === value) { + return index; } - return object; } + return -1; + } - /** - * The base implementation of `_.callback` which supports specifying the - * number of arguments to provide to `func`. - * - * @private - * @param {*} [func=_.identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [argCount] The number of arguments to provide to `func`. - * @returns {Function} Returns the callback. - */ - function baseCallback(func, thisArg, argCount) { - var type = typeof func; - if (type == 'function') { - return thisArg === undefined - ? func - : bindCallback(func, thisArg, argCount); - } - if (func == null) { - return identity; - } - if (type == 'object') { - return baseMatches(func); + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; } - return thisArg === undefined - ? property(func) - : baseMatchesProperty(func, thisArg); } + return index; + } - /** - * The base implementation of `_.clone` without support for argument juggling - * and `this` binding `customizer` functions. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @param {Function} [customizer] The function to customize cloning values. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The object `value` belongs to. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates clones with source counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, isDeep, customizer, key, object, stackA, stackB) { - var result; - if (customizer) { - result = object ? customizer(value, key, object) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return arrayCopy(value, result); - } - } else { - var tag = objToString.call(value), - isFunc = tag == funcTag; + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = initCloneObject(isFunc ? {} : value); - if (!isDeep) { - return baseAssign(result, value); - } - } else { - return cloneableTags[tag] - ? initCloneByTag(value, tag, isDeep) - : (object ? value : {}); - } - } - // Check for circular references and return its corresponding clone. - stackA || (stackA = []); - stackB || (stackB = []); + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } - var length = stackA.length; - while (length--) { - if (stackA[length] == value) { - return stackB[length]; - } - } - // Add the source value to the stack of traversed objects and associate it with its clone. - stackA.push(value); - stackB.push(result); + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedEndIndex(string) { + var index = string.length; - // Recursively populate clone (susceptible to call stack limits). - (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { - result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB); - }); - return result; - } + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; + } - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function object() {} - return function(prototype) { - if (isObject(prototype)) { - object.prototype = prototype; - var result = new object; - object.prototype = undefined; - } - return result || {}; - }; - }()); + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - /** - * The base implementation of `_.delay` and `_.defer` which accepts an index - * of where to slice the arguments to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Object} args The arguments provide to `func`. - * @returns {number} Returns the timer id. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; } + return result; + } - /** - * The base implementation of `_.difference` which accepts a single array - * of values to exclude. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @returns {Array} Returns the new array of filtered values. - */ - function baseDifference(array, values) { - var length = array ? array.length : 0, - result = []; + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } - if (!length) { - return result; - } - var index = -1, - indexOf = getIndexOf(), - isCommon = indexOf == baseIndexOf, - cache = (isCommon && values.length >= LARGE_ARRAY_SIZE) ? createCache(values) : null, - valuesLength = values.length; + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } - if (cache) { - indexOf = cacheIndexOf; - isCommon = false; - values = cache; - } - outer: - while (++index < length) { - var value = array[index]; + /*--------------------------------------------------------------------------*/ - if (isCommon && value === value) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === value) { - continue outer; - } - } - result.push(value); - } - else if (indexOf(values, value, 0) < 0) { - result.push(value); - } - } - return result; - } + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); - /** - * The base implementation of `_.forEach` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object|string} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; - /** - * The base implementation of `_.forEachRight` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object|string} Returns `collection`. - */ - var baseEachRight = createBaseEach(baseForOwnRight, true); + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; - /** - * The base implementation of `_.every` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; - /** - * Gets the extremum value of `collection` invoking `iteratee` for each value - * in `collection` to generate the criterion by which the value is ranked. - * The `iteratee` is invoked with three arguments: (value, index|key, collection). - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} comparator The function used to compare values. - * @param {*} exValue The initial extremum value. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(collection, iteratee, comparator, exValue) { - var computed = exValue, - result = computed; + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; - baseEach(collection, function(value, index, collection) { - var current = +iteratee(value, index, collection); - if (comparator(current, computed) || (current === exValue && current === result)) { - computed = current; - result = value; - } - }); - return result; - } + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); /** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. */ - function baseFill(array, value, start, end) { - var length = array.length; + var nativeObjectToString = objectProto.toString; - start = start == null ? 0 : (+start || 0); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : (+end || 0); - if (end < 0) { - end += length; - } - length = start > end ? 0 : (end >>> 0); - start >>>= 0; + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); - while (start < length) { - array[start++] = value; - } - return array; - } + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; - /** - * The base implementation of `_.filter` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); - /** - * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`, - * without support for callback shorthands and `this` binding, which iterates - * over `collection` using the provided `eachFunc`. - * - * @private - * @param {Array|Object|string} collection The collection to search. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @param {boolean} [retKey] Specify returning the key of the found element - * instead of the element itself. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFind(collection, predicate, eachFunc, retKey) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = retKey ? key : value; - return false; - } - }); - return result; - } + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, + symIterator = Symbol ? Symbol.iterator : undefined, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; - /** - * The base implementation of `_.flatten` with added support for restricting - * flattening and specifying the start index. - * - * @private - * @param {Array} array The array to flatten. - * @param {boolean} [isDeep] Specify a deep flatten. - * @param {boolean} [isStrict] Restrict flattening to arrays-like objects. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, isDeep, isStrict, result) { - result || (result = []); + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); - var index = -1, - length = array.length; + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - while (++index < length) { - var value = array[index]; - if (isObjectLike(value) && isArrayLike(value) && - (isStrict || isArray(value) || isArguments(value))) { - if (isDeep) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, isDeep, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; - /** - * The base implementation of `baseForIn` and `baseForOwn` which iterates - * over `object` properties returned by `keysFunc` invoking `iteratee` for - * each property. Iteratee functions may exit iteration early by explicitly - * returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); - /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseForRight = createBaseFor(true); + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; - /** - * The base implementation of `_.forIn` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForIn(object, iteratee) { - return baseFor(object, iteratee, keysIn); - } + /** Used to lookup unminified function names. */ + var realNames = {}; - /** - * The base implementation of `_.forOwn` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return baseFor(object, iteratee, keys); - } + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /*------------------------------------------------------------------------*/ /** - * The base implementation of `_.forOwnRight` without support for callback - * shorthands and `this` binding. + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true */ - function baseForOwnRight(object, iteratee) { - return baseForRight(object, iteratee, keys); + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); } /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from those provided. + * The base implementation of `_.create` without support for assigning + * properties to the created object. * * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the new array of filtered property names. + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. */ - function baseFunctions(object, props) { - var index = -1, - length = props.length, - resIndex = -1, - result = []; - - while (++index < length) { - var key = props[index]; - if (isFunction(object[key])) { - result[++resIndex] = key; + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; } - } - return result; - } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); /** - * The base implementation of `get` without support for string paths - * and default values. + * The function whose prototype chain sequence wrappers inherit from. * * @private - * @param {Object} object The object to query. - * @param {Array} path The path of the property to get. - * @param {string} [pathKey] The key representation of path. - * @returns {*} Returns the resolved value. */ - function baseGet(object, path, pathKey) { - if (object == null) { - return; - } - if (pathKey !== undefined && pathKey in toObject(object)) { - path = [pathKey]; - } - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[path[index++]]; - } - return (index && index == length) ? object : undefined; + function baseLodash() { + // No operation performed. } /** - * The base implementation of `_.isEqual` without support for `this` binding - * `customizer` functions. + * The base constructor for creating `lodash` wrapper objects. * * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparing values. - * @param {boolean} [isLoose] Specify performing partial comparisons. - * @param {Array} [stackA] Tracks traversed `value` objects. - * @param {Array} [stackB] Tracks traversed `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. */ - function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; } /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparing objects. - * @param {boolean} [isLoose] Specify performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `value` objects. - * @param {Array} [stackB=[]] Tracks traversed `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + * @static + * @memberOf _ + * @type {Object} */ - function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = arrayTag, - othTag = arrayTag; + lodash.templateSettings = { - if (!objIsArr) { - objTag = objToString.call(object); - if (objTag == argsTag) { - objTag = objectTag; - } else if (objTag != objectTag) { - objIsArr = isTypedArray(object); - } - } - if (!othIsArr) { - othTag = objToString.call(other); - if (othTag == argsTag) { - othTag = objectTag; - } else if (othTag != objectTag) { - othIsArr = isTypedArray(other); - } - } - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, - if (isSameTag && !(objIsArr || objIsObj)) { - return equalByTag(object, other, objTag); - } - if (!isLoose) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, - if (objIsWrapped || othIsWrapped) { - return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB); - } - } - if (!isSameTag) { - return false; - } - // Assume cyclic values are equal. - // For more information on detecting circular references see https://es5.github.io/#JO. - stackA || (stackA = []); - stackB || (stackB = []); + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, - var length = stackA.length; - while (length--) { - if (stackA[length] == object) { - return stackB[length] == other; - } + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash } - // Add `object` and `other` to the stack of traversed objects. - stackA.push(object); - stackB.push(other); + }; - var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB); + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; - stackA.pop(); - stackB.pop(); + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; - return result; - } + /*------------------------------------------------------------------------*/ /** - * The base implementation of `_.isMatch` without support for callback - * shorthands and `this` binding. + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. * * @private - * @param {Object} object The object to inspect. - * @param {Array} matchData The propery names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparing objects. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @constructor + * @param {*} value The value to wrap. */ - function baseIsMatch(object, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = toObject(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var result = customizer ? customizer(objValue, srcValue, key) : undefined; - if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) { - return false; - } - } - } - return true; + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; } /** - * The base implementation of `_.map` without support for callback shorthands - * and `this` binding. + * Creates a clone of the lazy wrapper object. * * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); return result; } /** - * The base implementation of `_.matches` which does not clone `source`. + * Reverses the direction of lazy iteration. * * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new function. + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - var key = matchData[0][0], - value = matchData[0][1]; - - return function(object) { - if (object == null) { - return false; - } - return object[key] === value && (value !== undefined || (key in toObject(object))); - }; + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; } - return function(object) { - return baseIsMatch(object, matchData); - }; + return result; } /** - * The base implementation of `_.matchesProperty` which does not clone `srcValue`. + * Extracts the unwrapped value from its lazy wrapper. * * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to compare. - * @returns {Function} Returns the new function. + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. */ - function baseMatchesProperty(path, srcValue) { - var isArr = isArray(path), - isCommon = isKey(path) && isStrictComparable(srcValue), - pathKey = (path + ''); - - path = toPath(path); - return function(object) { - if (object == null) { - return false; - } - var key = pathKey; - object = toObject(object); - if ((isArr || !isCommon) && !(key in object)) { - object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); - if (object == null) { - return false; - } - key = last(path); - object = toObject(object); - } - return object[key] === srcValue - ? (srcValue !== undefined || (key in object)) - : baseIsEqual(srcValue, object[key], undefined, true); - }; - } + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); - /** - * The base implementation of `_.merge` without support for argument juggling, - * multiple sources, and `this` binding `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} [customizer] The function to customize merged values. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates values with source counterparts. - * @returns {Object} Returns `object`. - */ - function baseMerge(object, source, customizer, stackA, stackB) { - if (!isObject(object)) { - return object; + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); } - var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)), - props = isSrcArr ? undefined : keys(source); + var result = []; - arrayEach(props || source, function(srcValue, key) { - if (props) { - key = srcValue; - srcValue = source[key]; - } - if (isObjectLike(srcValue)) { - stackA || (stackA = []); - stackB || (stackB = []); - baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB); - } - else { - var value = object[key], - result = customizer ? customizer(value, srcValue, key, object, source) : undefined, - isCommon = result === undefined; + outer: + while (length-- && resIndex < takeCount) { + index += dir; - if (isCommon) { - result = srcValue; - } - if ((result !== undefined || (isSrcArr && !(key in object))) && - (isCommon || (result === result ? (result !== value) : (value === value)))) { - object[key] = result; + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } } } - }); - return object; + result[resIndex++] = value; + } + return result; } + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + /*------------------------------------------------------------------------*/ + /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. + * Creates a hash object. * * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize merged values. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates values with source counterparts. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ - function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) { - var length = stackA.length, - srcValue = source[key]; - - while (length--) { - if (stackA[length] == srcValue) { - object[key] = stackB[length]; - return; - } - } - var value = object[key], - result = customizer ? customizer(value, srcValue, key, object, source) : undefined, - isCommon = result === undefined; - - if (isCommon) { - result = srcValue; - if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) { - result = isArray(value) - ? value - : (isArrayLike(value) ? arrayCopy(value) : []); - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - result = isArguments(value) - ? toPlainObject(value) - : (isPlainObject(value) ? value : {}); - } - else { - isCommon = false; - } - } - // Add the source value to the stack of traversed objects and associate - // it with its merged value. - stackA.push(srcValue); - stackB.push(result); - - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); - } else if (result === result ? (result !== value) : (value === value)) { - object[key] = result; + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); } } /** - * The base implementation of `_.property` without support for deep paths. + * Removes all key-value entries from the hash. * * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new function. + * @name clear + * @memberOf Hash */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; } /** - * A specialized version of `baseProperty` which supports deep paths. + * Removes `key` and its value from the hash. * * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new function. + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ - function basePropertyDeep(path) { - var pathKey = (path + ''); - path = toPath(path); - return function(object) { - return baseGet(object, path, pathKey); - }; + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; } /** - * The base implementation of `_.pullAt` without support for individual - * index arguments and capturing the removed elements. + * Gets the hash value for `key`. * * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0; - while (length--) { - var index = indexes[length]; - if (index != previous && isIndex(index)) { - var previous = index; - splice.call(array, index, 1); - } + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; } - return array; + return hasOwnProperty.call(data, key) ? data[key] : undefined; } /** - * The base implementation of `_.random` without support for argument juggling - * and returning floating-point numbers. + * Checks if a hash value for `key` exists. * * @private - * @param {number} min The minimum possible value. - * @param {number} max The maximum possible value. - * @returns {number} Returns the random number. + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ - function baseRandom(min, max) { - return min + nativeFloor(nativeRandom() * (max - min + 1)); + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); } /** - * The base implementation of `_.reduce` and `_.reduceRight` without support - * for callback shorthands and `this` binding, which iterates over `collection` - * using the provided `eachFunc`. + * Sets the hash `key` to `value`. * * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initFromCollection Specify using the first or last element - * of `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. */ - function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initFromCollection - ? (initFromCollection = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; } - /** - * The base implementation of `setData` without support for hot loop detection. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /*------------------------------------------------------------------------*/ /** - * The base implementation of `_.slice` without an iteratee call guard. + * Creates an list cache object. * * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ - function baseSlice(array, start, end) { + function ListCache(entries) { var index = -1, - length = array.length; - - start = start == null ? 0 : (+start || 0); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : (+end || 0); - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; + length = entries == null ? 0 : entries.length; - var result = Array(length); + this.clear(); while (++index < length) { - result[index] = array[index + start]; + var entry = entries[index]; + this.set(entry[0], entry[1]); } - return result; } /** - * The base implementation of `_.some` without support for callback shorthands - * and `this` binding. + * Removes all key-value entries from the list cache. * * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. + * @name clear + * @memberOf ListCache */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; + function listCacheClear() { + this.__data__ = []; + this.size = 0; } /** - * The base implementation of `_.sortBy` which uses `comparer` to define - * the sort order of `array` and replaces criteria objects with their - * corresponding values. + * Removes `key` and its value from the list cache. * * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ - function baseSortBy(array, comparer) { - var length = array.length; + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - array.sort(comparer); - while (length--) { - array[length] = array[length].value; + if (index < 0) { + return false; } - return array; + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; } /** - * The base implementation of `_.sortByOrder` without param guards. + * Gets the list cache value for `key`. * * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {boolean[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ - function baseSortByOrder(collection, iteratees, orders) { - var callback = getCallback(), - index = -1; - - iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); }); - - var result = baseMap(collection, function(value) { - var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); + return index < 0 ? undefined : data[index][1]; } /** - * The base implementation of `_.sum` without support for callback shorthands - * and `this` binding. + * Checks if a list cache value for `key` exists. * * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ - function baseSum(collection, iteratee) { - var result = 0; - baseEach(collection, function(value, index, collection) { - result += +iteratee(value, index, collection) || 0; - }); - return result; + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; } /** - * The base implementation of `_.uniq` without support for callback shorthands - * and `this` binding. + * Sets the list cache `key` to `value`. * * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The function invoked per iteration. - * @returns {Array} Returns the new duplicate-value-free array. + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. */ - function baseUniq(array, iteratee) { - var index = -1, - indexOf = getIndexOf(), - length = array.length, - isCommon = indexOf == baseIndexOf, - isLarge = isCommon && length >= LARGE_ARRAY_SIZE, - seen = isLarge ? createCache() : null, - result = []; + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); - if (seen) { - indexOf = cacheIndexOf; - isCommon = false; + if (index < 0) { + ++this.size; + data.push([key, value]); } else { - isLarge = false; - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value, index, array) : value; - - if (isCommon && value === value) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (indexOf(seen, computed, 0) < 0) { - if (iteratee || isLarge) { - seen.push(computed); - } - result.push(value); - } + data[index][1] = value; } - return result; + return this; } + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /*------------------------------------------------------------------------*/ + /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. + * Creates a map cache object to store key-value pairs. * * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ - function baseValues(object, props) { + function MapCache(entries) { var index = -1, - length = props.length, - result = Array(length); + length = entries == null ? 0 : entries.length; + this.clear(); while (++index < length) { - result[index] = object[props[index]]; + var entry = entries[index]; + this.set(entry[0], entry[1]); } - return result; } /** - * The base implementation of `_.dropRightWhile`, `_.dropWhile`, `_.takeRightWhile`, - * and `_.takeWhile` without support for callback shorthands and `this` binding. + * Removes all key-value entries from the map. * * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {} - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; } /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. + * Removes `key` and its value from the map. * * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to peform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - var index = -1, - length = actions.length; - - while (++index < length) { - var action = actions[index]; - result = action.func.apply(action.thisArg, arrayPush([result], action.args)); - } + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; return result; } /** - * Performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function binaryIndex(array, value, retHighest) { - var low = 0, - high = array ? array.length : low; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return binaryIndexBy(array, value, identity, retHighest); - } - - /** - * This function is like `binaryIndex` except that it invokes `iteratee` for - * `value` and each element of `array` to compute their sort ranking. The - * iteratee is invoked with one argument; (value). + * Gets the map value for `key`. * * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The function invoked per iteration. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ - function binaryIndexBy(array, value, iteratee, retHighest) { - value = iteratee(value); - - var low = 0, - high = array ? array.length : 0, - valIsNaN = value !== value, - valIsNull = value === null, - valIsUndef = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - isDef = computed !== undefined, - isReflexive = computed === computed; - - if (valIsNaN) { - var setLow = isReflexive || retHighest; - } else if (valIsNull) { - setLow = isReflexive && isDef && (retHighest || computed != null); - } else if (valIsUndef) { - setLow = isReflexive && (retHighest || isDef); - } else if (computed == null) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); + function mapCacheGet(key) { + return getMapData(this, key).get(key); } /** - * A specialized version of `baseCallback` which only supports `this` binding - * and specifying the number of arguments to provide to `func`. + * Checks if a map value for `key` exists. * * @private - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {number} [argCount] The number of arguments to provide to `func`. - * @returns {Function} Returns the callback. + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ - function bindCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - if (thisArg === undefined) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; - case 5: return function(value, other, key, object, source) { - return func.call(thisArg, value, other, key, object, source); - }; - } - return function() { - return func.apply(thisArg, arguments); - }; + function mapCacheHas(key) { + return getMapData(this, key).has(key); } /** - * Creates a clone of the given array buffer. + * Sets the map `key` to `value`. * * @private - * @param {ArrayBuffer} buffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. */ - function bufferClone(buffer) { - var result = new ArrayBuffer(buffer.byteLength), - view = new Uint8Array(result); + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; - view.set(new Uint8Array(buffer)); - return result; + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; } - /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array|Object} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgs(args, partials, holders) { - var holdersLength = holders.length, - argsIndex = -1, - argsLength = nativeMax(args.length - holdersLength, 0), - leftIndex = -1, - leftLength = partials.length, - result = Array(leftLength + argsLength); + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - while (argsLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; - } + /*------------------------------------------------------------------------*/ /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. + * + * Creates an array cache object to store unique values. * * @private - * @param {Array|Object} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @returns {Array} Returns the new array of composed arguments. + * @constructor + * @param {Array} [values] The values to cache. */ - function composeArgsRight(args, partials, holders) { - var holdersIndex = -1, - holdersLength = holders.length, - argsIndex = -1, - argsLength = nativeMax(args.length - holdersLength, 0), - rightIndex = -1, - rightLength = partials.length, - result = Array(argsLength + rightLength); + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; - while (++argsIndex < argsLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); } - return result; } /** - * Creates a `_.countBy`, `_.groupBy`, `_.indexBy`, or `_.partition` function. + * Adds `value` to the array cache. * * @private - * @param {Function} setter The function to set keys and values of the accumulator object. - * @param {Function} [initializer] The function to initialize the accumulator object. - * @returns {Function} Returns the new aggregator function. + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. */ - function createAggregator(setter, initializer) { - return function(collection, iteratee, thisArg) { - var result = initializer ? initializer() : {}; - iteratee = getCallback(iteratee, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - setter(result, value, iteratee(value, index, collection), collection); - } - } else { - baseEach(collection, function(value, key, collection) { - setter(result, value, iteratee(value, key, collection), collection); - }); - } - return result; - }; + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; } /** - * Creates a `_.assign`, `_.defaults`, or `_.merge` function. + * Checks if `value` is in the array cache. * * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. */ - function createAssigner(assigner) { - return restParam(function(object, sources) { - var index = -1, - length = object == null ? 0 : sources.length, - customizer = length > 2 ? sources[length - 2] : undefined, - guard = length > 2 ? sources[2] : undefined, - thisArg = length > 1 ? sources[length - 1] : undefined; - - if (typeof customizer == 'function') { - customizer = bindCallback(customizer, thisArg, 5); - length -= 2; - } else { - customizer = typeof thisArg == 'function' ? thisArg : undefined; - length -= (customizer ? 1 : 0); - } - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, customizer); - } - } - return object; - }); + function setCacheHas(value) { + return this.__data__.has(value); } - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - var length = collection ? getLength(collection) : 0; - if (!isLength(length)) { - return eachFunc(collection, iteratee); - } - var index = fromRight ? length : -1, - iterable = toObject(collection); + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } + /*------------------------------------------------------------------------*/ /** - * Creates a base function for `_.forIn` or `_.forInRight`. + * Creates a stack cache object to store key-value pairs. * * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var iterable = toObject(object), - props = keysFunc(object), - length = props.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length)) { - var key = props[index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; } /** - * Creates a function that wraps `func` and invokes it with the `this` - * binding of `thisArg`. + * Removes all key-value entries from the stack. * * @private - * @param {Function} func The function to bind. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new bound function. + * @name clear + * @memberOf Stack */ - function createBindWrapper(func, thisArg) { - var Ctor = createCtorWrapper(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(thisArg, arguments); - } - return wrapper; + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; } /** - * Creates a `Set` cache object to optimize linear searches of large arrays. + * Removes `key` and its value from the stack. * * @private - * @param {Array} [values] The values to cache. - * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`. + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ - function createCache(values) { - return (nativeCreate && Set) ? new SetCache(values) : null; + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; } /** - * Creates a function that produces compound words out of the words in a - * given string. + * Gets the stack value for `key`. * * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ - function createCompounder(callback) { - return function(string) { - var index = -1, - array = words(deburr(string)), - length = array.length, - result = ''; - - while (++index < length) { - result = callback(result, array[index], index); - } - return result; - }; + function stackGet(key) { + return this.__data__.get(key); } /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * Checks if a stack value for `key` exists. * * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ - function createCtorWrapper(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. - // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; + function stackHas(key) { + return this.__data__.has(key); } /** - * Creates a `_.curry` or `_.curryRight` function. + * Sets the stack `key` to `value`. * * @private - * @param {boolean} flag The curry bit flag. - * @returns {Function} Returns the new curry function. - */ - function createCurry(flag) { - function curryFunc(func, arity, guard) { - if (guard && isIterateeCall(func, arity, guard)) { - arity = undefined; - } - var result = createWrapper(func, flag, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryFunc.placeholder; - return result; + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); } - return curryFunc; + data.set(key, value); + this.size = data.size; + return this; } - /** - * Creates a `_.defaults` or `_.defaultsDeep` function. - * - * @private - * @param {Function} assigner The function to assign values. - * @param {Function} customizer The function to customize assigned values. - * @returns {Function} Returns the new defaults function. - */ - function createDefaults(assigner, customizer) { - return restParam(function(args) { - var object = args[0]; - if (object == null) { - return object; - } - args.push(customizer); - return assigner.apply(undefined, args); - }); - } + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; - /** - * Creates a `_.max` or `_.min` function. - * - * @private - * @param {Function} comparator The function used to compare values. - * @param {*} exValue The initial extremum value. - * @returns {Function} Returns the new extremum function. - */ - function createExtremum(comparator, exValue) { - return function(collection, iteratee, thisArg) { - if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { - iteratee = undefined; - } - iteratee = getCallback(iteratee, thisArg, 3); - if (iteratee.length == 1) { - collection = isArray(collection) ? collection : toIterable(collection); - var result = arrayExtremum(collection, iteratee, comparator, exValue); - if (!(collection.length && result === exValue)) { - return result; - } - } - return baseExtremum(collection, iteratee, comparator, exValue); - }; - } + /*------------------------------------------------------------------------*/ /** - * Creates a `_.find` or `_.findLast` function. + * Creates an array of the enumerable property names of the array-like `value`. * * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new find function. + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. */ - function createFind(eachFunc, fromRight) { - return function(collection, predicate, thisArg) { - predicate = getCallback(predicate, thisArg, 3); - if (isArray(collection)) { - var index = baseFindIndex(collection, predicate, fromRight); - return index > -1 ? collection[index] : undefined; + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); } - return baseFind(collection, predicate, eachFunc); - }; + } + return result; } /** - * Creates a `_.findIndex` or `_.findLastIndex` function. + * A specialized version of `_.sample` for arrays. * * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new find function. + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. */ - function createFindIndex(fromRight) { - return function(array, predicate, thisArg) { - if (!(array && array.length)) { - return -1; - } - predicate = getCallback(predicate, thisArg, 3); - return baseFindIndex(array, predicate, fromRight); - }; + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; } /** - * Creates a `_.findKey` or `_.findLastKey` function. + * A specialized version of `_.sampleSize` for arrays. * * @private - * @param {Function} objectFunc The function to iterate over an object. - * @returns {Function} Returns the new find function. + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. */ - function createFindKey(objectFunc) { - return function(object, predicate, thisArg) { - predicate = getCallback(predicate, thisArg, 3); - return baseFind(object, predicate, objectFunc, true); - }; + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); } /** - * Creates a `_.flow` or `_.flowRight` function. + * A specialized version of `_.shuffle` for arrays. * * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. */ - function createFlow(fromRight) { - return function() { - var wrapper, - length = arguments.length, - index = fromRight ? length : -1, - leftIndex = 0, - funcs = Array(length); - - while ((fromRight ? index-- : ++index < length)) { - var func = funcs[leftIndex++] = arguments[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (!wrapper && LodashWrapper.prototype.thru && getFuncName(func) == 'wrapper') { - wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? -1 : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && !data[4].length && data[9] == 1) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) ? wrapper[funcName]() : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && isArray(value) && value.length >= LARGE_ARRAY_SIZE) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }; + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); } /** - * Creates a function for `_.forEach` or `_.forEachRight`. + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. * * @private - * @param {Function} arrayFunc The function to iterate over an array. - * @param {Function} eachFunc The function to iterate over a collection. - * @returns {Function} Returns the new each function. - */ - function createForEach(arrayFunc, eachFunc) { - return function(collection, iteratee, thisArg) { - return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) - ? arrayFunc(collection, iteratee) - : eachFunc(collection, bindCallback(iteratee, thisArg, 3)); - }; + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } } /** - * Creates a function for `_.forIn` or `_.forInRight`. + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. * * @private - * @param {Function} objectFunc The function to iterate over an object. - * @returns {Function} Returns the new each function. - */ - function createForIn(objectFunc) { - return function(object, iteratee, thisArg) { - if (typeof iteratee != 'function' || thisArg !== undefined) { - iteratee = bindCallback(iteratee, thisArg, 3); - } - return objectFunc(object, iteratee, keysIn); - }; + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } } /** - * Creates a function for `_.forOwn` or `_.forOwnRight`. + * Gets the index at which the `key` is found in `array` of key-value pairs. * * @private - * @param {Function} objectFunc The function to iterate over an object. - * @returns {Function} Returns the new each function. + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. */ - function createForOwn(objectFunc) { - return function(object, iteratee, thisArg) { - if (typeof iteratee != 'function' || thisArg !== undefined) { - iteratee = bindCallback(iteratee, thisArg, 3); + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; } - return objectFunc(object, iteratee); - }; + } + return -1; } /** - * Creates a function for `_.mapKeys` or `_.mapValues`. + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. * * @private - * @param {boolean} [isMapKeys] Specify mapping keys instead of values. - * @returns {Function} Returns the new map function. - */ - function createObjectMapper(isMapKeys) { - return function(object, iteratee, thisArg) { - var result = {}; - iteratee = getCallback(iteratee, thisArg, 3); - - baseForOwn(object, function(value, key, object) { - var mapped = iteratee(value, key, object); - key = isMapKeys ? mapped : key; - value = isMapKeys ? value : mapped; - result[key] = value; - }); - return result; - }; + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; } /** - * Creates a function for `_.padLeft` or `_.padRight`. + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. * * @private - * @param {boolean} [fromRight] Specify padding from the right. - * @returns {Function} Returns the new pad function. + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. */ - function createPadDir(fromRight) { - return function(string, length, chars) { - string = baseToString(string); - return (fromRight ? string : '') + createPadding(string, length, chars) + (fromRight ? '' : string); - }; + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); } /** - * Creates a `_.partial` or `_.partialRight` function. + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. * * @private - * @param {boolean} flag The partial bit flag. - * @returns {Function} Returns the new partial function. + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. */ - function createPartial(flag) { - var partialFunc = restParam(function(func, partials) { - var holders = replaceHolders(partials, partialFunc.placeholder); - return createWrapper(func, flag, undefined, partials, holders); - }); - return partialFunc; + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); } /** - * Creates a function for `_.reduce` or `_.reduceRight`. + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. * * @private - * @param {Function} arrayFunc The function to iterate over an array. - * @param {Function} eachFunc The function to iterate over a collection. - * @returns {Function} Returns the new each function. - */ - function createReduce(arrayFunc, eachFunc) { - return function(collection, iteratee, accumulator, thisArg) { - var initFromArray = arguments.length < 3; - return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) - ? arrayFunc(collection, iteratee, accumulator, initFromArray) - : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc); - }; + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } } /** - * Creates a function that wraps `func` and invokes it with optional `this` - * binding of, partial application, and currying. + * The base implementation of `_.at` without support for individual paths. * * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. */ - function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & ARY_FLAG, - isBind = bitmask & BIND_FLAG, - isBindKey = bitmask & BIND_KEY_FLAG, - isCurry = bitmask & CURRY_FLAG, - isCurryBound = bitmask & CURRY_BOUND_FLAG, - isCurryRight = bitmask & CURRY_RIGHT_FLAG, - Ctor = isBindKey ? undefined : createCtorWrapper(func); - - function wrapper() { - // Avoid `arguments` object use disqualifying optimizations by - // converting it to an array before providing it to other functions. - var length = arguments.length, - index = length, - args = Array(length); - - while (index--) { - args[index] = arguments[index]; - } - if (partials) { - args = composeArgs(args, partials, holders); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight); - } - if (isCurry || isCurryRight) { - var placeholder = wrapper.placeholder, - argsHolders = replaceHolders(args, placeholder); - - length -= argsHolders.length; - if (length < arity) { - var newArgPos = argPos ? arrayCopy(argPos) : undefined, - newArity = nativeMax(arity - length, 0), - newsHolders = isCurry ? argsHolders : undefined, - newHoldersRight = isCurry ? undefined : argsHolders, - newPartials = isCurry ? args : undefined, - newPartialsRight = isCurry ? undefined : args; - - bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); - - if (!isCurryBound) { - bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); - } - var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity], - result = createHybridWrapper.apply(undefined, newData); - - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return result; - } - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; - if (argPos) { - args = reorder(args, argPos); - } - if (isAry && ary < args.length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtorWrapper(func); - } - return fn.apply(thisBinding, args); + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); } - return wrapper; + return result; } /** - * Creates the padding required for `string` based on the given `length`. - * The `chars` string is truncated if the number of characters exceeds `length`. + * The base implementation of `_.clamp` which doesn't coerce arguments. * * @private - * @param {string} string The string to create padding for. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the pad for `string`. + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. */ - function createPadding(string, length, chars) { - var strLength = string.length; - length = +length; - - if (strLength >= length || !nativeIsFinite(length)) { - return ''; + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } } - var padLength = length - strLength; - chars = chars == null ? ' ' : (chars + ''); - return repeat(chars, nativeCeil(padLength / chars.length)).slice(0, padLength); + return number; } /** - * Creates a function that wraps `func` and invokes it with the optional `this` - * binding of `thisArg` and the `partials` prepended to those provided to - * the wrapper. + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. * * @private - * @param {Function} func The function to partially apply arguments to. - * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to the new function. - * @returns {Function} Returns the new bound function. + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. */ - function createPartialWrapper(func, bitmask, thisArg, partials) { - var isBind = bitmask & BIND_FLAG, - Ctor = createCtorWrapper(func); + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; - function wrapper() { - // Avoid `arguments` object use disqualifying optimizations by - // converting it to an array before providing it `func`. - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength); + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, args); } - return wrapper; + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; } /** - * Creates a `_.ceil`, `_.floor`, or `_.round` function. + * The base implementation of `_.conforms` which doesn't clone `source`. * * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. */ - function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - precision = precision === undefined ? 0 : (+precision || 0); - if (precision) { - precision = pow(10, precision); - return func(number * precision) / precision; - } - return func(number); + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); }; } /** - * Creates a `_.sortedIndex` or `_.sortedLastIndex` function. + * The base implementation of `_.conformsTo` which accepts `props` to check. * * @private - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {Function} Returns the new index function. - */ - function createSortedIndex(retHighest) { - return function(array, value, iteratee, thisArg) { - var callback = getCallback(iteratee); - return (iteratee == null && callback === baseCallback) - ? binaryIndex(array, value, retHighest) - : binaryIndexBy(array, value, callback(iteratee, thisArg, 1), retHighest); - }; + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; } /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. * * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of flags. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. */ - function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { + function baseDelay(func, wait, args) { + if (typeof func != 'function') { throw new TypeError(FUNC_ERROR_TEXT); } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - length -= (holders ? holders.length : 0); - if (bitmask & PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func), - newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity]; - - if (data) { - mergeData(newData, data); - bitmask = newData[1]; - arity = newData[9]; - } - newData[9] = arity == null - ? (isBindKey ? 0 : func.length) - : (nativeMax(arity - length, 0) || 0); - - if (bitmask == BIND_FLAG) { - var result = createBindWrapper(newData[0], newData[2]); - } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) { - result = createPartialWrapper.apply(undefined, newData); - } else { - result = createHybridWrapper.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setter(result, newData); + return setTimeout(function() { func.apply(undefined, args); }, wait); } /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. * * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparing arrays. - * @param {boolean} [isLoose] Specify performing partial comparisons. - * @param {Array} [stackA] Tracks traversed `value` objects. - * @param {Array} [stackB] Tracks traversed `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. */ - function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) { + function baseDifference(array, values, iteratee, comparator) { var index = -1, - arrLength = array.length, - othLength = other.length; + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; - if (arrLength != othLength && !(isLoose && othLength > arrLength)) { - return false; + if (!length) { + return result; } - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index], - result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined; + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); - if (result !== undefined) { - if (result) { - continue; + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } } - return false; + result.push(value); } - // Recursively compare arrays (susceptible to call stack limits). - if (isLoose) { - if (!arraySome(other, function(othValue) { - return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB); - })) { - return false; - } - } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) { - return false; + else if (!includes(values, computed, comparator)) { + result.push(value); } } - return true; + return result; } /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. + * The base implementation of `_.forEach` without support for iteratee shorthands. * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. * * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. */ - function equalByTag(object, other, tag) { - switch (tag) { - case boolTag: - case dateTag: - // Coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal. - return +object == +other; + var baseEachRight = createBaseEach(baseForOwnRight, true); - case errorTag: - return object.name == other.name && object.message == other.message; + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } - case numberTag: - // Treat `NaN` vs. `NaN` as equal. - return (object != +object) - ? other != +other - : object == +other; + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings primitives and string - // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. - return object == (other + ''); + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } } - return false; + return result; } /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. + * The base implementation of `_.fill` without an iteratee call guard. * * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparing values. - * @param {boolean} [isLoose] Specify performing partial comparisons. - * @param {Array} [stackA] Tracks traversed `value` objects. - * @param {Array} [stackB] Tracks traversed `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. */ - function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) { - var objProps = keys(object), - objLength = objProps.length, - othProps = keys(other), - othLength = othProps.length; + function baseFill(array, value, start, end) { + var length = array.length; - if (objLength != othLength && !isLoose) { - return false; + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) { - return false; - } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; } - var skipCtor = isLoose; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key], - result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined; - - // Recursively compare objects (susceptible to call stack limits). - if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) { - return false; - } - skipCtor || (skipCtor = key == 'constructor'); + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; } - if (!skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; + return array; + } - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - return false; + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); } - } - return true; + }); + return result; } /** - * Gets the appropriate "callback" function. If the `_.callback` method is - * customized this function returns the custom method, otherwise it returns - * the `baseCallback` function. If arguments are provided the chosen function - * is invoked with them and its result is returned. + * The base implementation of `_.flatten` with support for restricting flattening. * * @private - * @returns {Function} Returns the chosen function or its result. + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. */ - function getCallback(func, thisArg, argCount) { - var result = lodash.callback || callback; - result = result === callback ? baseCallback : result; - return argCount ? result(func, thisArg, argCount) : result; + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; } /** - * Gets metadata for `func`. + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. * * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; + var baseFor = createBaseFor(); /** - * Gets the name of `func`. + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. * * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. */ - function getFuncName(func) { - var result = func.name, - array = realNames[result], - length = array ? array.length : 0; + var baseForRight = createBaseFor(true); - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); } /** - * Gets the appropriate "indexOf" function. If the `_.indexOf` method is - * customized this function returns the custom method, otherwise it returns - * the `baseIndexOf` function. If arguments are provided the chosen function - * is invoked with them and its result is returned. + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. * * @private - * @returns {Function|number} Returns the chosen function or its result. + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. */ - function getIndexOf(collection, target, fromIndex) { - var result = lodash.indexOf || indexOf; - result = result === indexOf ? baseIndexOf : result; - return collection ? result(collection, target, fromIndex) : result; + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); } /** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) - * that affects Safari on at least iOS 8.1-8.3 ARM64. + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. * * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. */ - var getLength = baseProperty('length'); + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } /** - * Gets the propery names, values, and compare flags of `object`. + * The base implementation of `_.get` without support for default values. * * @private * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. */ - function getMatchData(object) { - var result = pairs(object), - length = result.length; + function baseGet(object, path) { + path = castPath(path, object); - while (length--) { - result[length][2] = isStrictComparable(result[length][1]); + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; } - return result; + return (index && index == length) ? object : undefined; } /** - * Gets the native function at `key` of `object`. + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. * * @private * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. */ - function getNative(object, key) { - var value = object == null ? undefined : object[key]; - return isNative(value) ? value : undefined; + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); } /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. + * The base implementation of `getTag` without fallbacks for buggy environments. * * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. */ - function getView(start, end, transforms) { - var index = -1, - length = transforms.length; + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } - while (++index < length) { - var data = transforms[index], - size = data.size; + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); } /** - * Initializes an array clone. + * The base implementation of `_.hasIn` without support for deep paths. * * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. */ - function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); + function baseHasIn(object, key) { + return object != null && key in Object(object); + } - // Add array properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); } /** - * Initializes an object clone. + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. * * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. */ - function initCloneObject(object) { - var Ctor = object.constructor; - if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { - Ctor = Object; + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } } - return new Ctor; + return result; } /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. * * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return bufferClone(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - var buffer = object.buffer; - return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length); - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - var result = new Ctor(object.source, reFlags.exec(object)); - result.lastIndex = object.lastIndex; - } - return result; + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; } /** - * Invokes the method at `path` on `object`. + * The base implementation of `_.invoke` without support for individual + * method arguments. * * @private * @param {Object} object The object to query. @@ -25984,332 +28603,282 @@ function integer(val) { * @param {Array} args The arguments to invoke the method with. * @returns {*} Returns the result of the invoked method. */ - function invokePath(object, path, args) { - if (object != null && !isKey(path, object)) { - path = toPath(path); - object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); - path = last(path); - } - var func = object == null ? object : object[path]; - return func == null ? undefined : func.apply(object, args); + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); } /** - * Checks if `value` is array-like. + * The base implementation of `_.isArguments`. * * @private * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, */ - function isArrayLike(value) { - return value != null && isLength(getLength(value)); + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; } /** - * Checks if `value` is a valid array-like index. + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. * * @private * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. */ - function isIndex(value, length) { - value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; - length = length == null ? MAX_SAFE_INTEGER : length; - return value > -1 && value % 1 == 0 && value < length; + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; } /** - * Checks if the provided arguments are from an iteratee call. + * The base implementation of `_.isDate` without Node.js optimizations. * * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object)) { - var other = object[index]; - return value === value ? (value === other) : (other !== other); - } - return false; + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; } /** - * Checks if `value` is a property name and not a property path. + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. * * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. */ - function isKey(value, object) { - var type = typeof value; - if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') { + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { return true; } - if (isArray(value)) { - return false; + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; } - var result = !reIsDeepProp.test(value); - return result || (object != null && value in toObject(object)); + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); } /** - * Checks if `func` has a lazy counterpart. + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. * * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`. + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ - function isLaziable(func) { - var funcName = getFuncName(func); - if (!(funcName in LazyWrapper.prototype)) { - return false; + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; } - var other = lodash[funcName]; - if (func === other) { - return true; + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); } - var data = getData(other); - return !!data && func === data[0]; - } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - */ - function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); } /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * The base implementation of `_.isMap` without Node.js optimizations. * * @private * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. */ - function isStrictComparable(value) { - return value === value && !isObject(value); + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; } /** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers required to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg` - * augment function arguments, making the order in which they are executed important, - * preventing the merging of metadata. However, we make an exception for a safe - * common case where curried functions have `_.ary` and or `_.rearg` applied. + * The base implementation of `_.isMatch` without support for iteratee shorthands. * * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < ARY_FLAG; - - var isCombo = - (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) || - (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) || - (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG); + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value); - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]); - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value); - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]); - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = arrayCopy(value); - } - // Use source `ary` if it's smaller. - if (srcBitmask & ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + if (object == null) { + return !length; } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; - return data; + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; } /** - * Used by `_.defaultsDeep` to customize its `_.merge` use. + * The base implementation of `_.isNative` without bad shim checks. * * @private - * @param {*} objectValue The destination object property value. - * @param {*} sourceValue The source object property value. - * @returns {*} Returns the value to assign to the destination object. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. */ - function mergeDefaults(objectValue, sourceValue) { - return objectValue === undefined ? sourceValue : merge(objectValue, sourceValue, mergeDefaults); + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); } /** - * A specialized version of `_.pick` which picks `object` properties specified - * by `props`. + * The base implementation of `_.isRegExp` without Node.js optimizations. * * @private - * @param {Object} object The source object. - * @param {string[]} props The property names to pick. - * @returns {Object} Returns the new object. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. */ - function pickByArray(object, props) { - object = toObject(object); - - var index = -1, - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index]; - if (key in object) { - result[key] = object[key]; - } - } - return result; + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; } /** - * A specialized version of `_.pick` which picks `object` properties `predicate` - * returns truthy for. + * The base implementation of `_.isSet` without Node.js optimizations. * * @private - * @param {Object} object The source object. - * @param {Function} predicate The function invoked per iteration. - * @returns {Object} Returns the new object. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. */ - function pickByCallback(object, predicate) { - var result = {}; - baseForIn(object, function(value, key, object) { - if (predicate(value, key, object)) { - result[key] = value; - } - }); - return result; + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; } /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. + * The base implementation of `_.isTypedArray` without Node.js optimizations. * * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = arrayCopy(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; } /** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity function - * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070) - * for more details. + * The base implementation of `_.iteratee`. * * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. */ - var setData = (function() { - var count = 0, - lastCalled = 0; - - return function(key, value) { - var stamp = now(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return key; - } - } else { - count = 0; - } - return baseSetData(key, value); - }; - }()); + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } /** - * A fallback implementation of `Object.keys` which creates an array of the - * own enumerable property names of `object`. + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ - function shimKeys(object) { - var props = keysIn(object), - propsLength = props.length, - length = propsLength && object.length; - - var allowIndexes = !!length && isLength(length) && - (isArray(object) || isArguments(object)); - - var index = -1, - result = []; - - while (++index < propsLength) { - var key = props[index]; - if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { result.push(key); } } @@ -26317,24718 +28886,28736 @@ function integer(val) { } /** - * Converts `value` to an array-like object if it's not one. + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. * * @private - * @param {*} value The value to process. - * @returns {Array|Object} Returns the array-like object. + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. */ - function toIterable(value) { - if (value == null) { - return []; + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); } - if (!isArrayLike(value)) { - return values(value); + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } } - return isObject(value) ? value : Object(value); + return result; } /** - * Converts `value` to an object if it's not one. + * The base implementation of `_.lt` which doesn't coerce arguments. * * @private - * @param {*} value The value to process. - * @returns {Object} Returns the object. + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. */ - function toObject(value) { - return isObject(value) ? value : Object(value); + function baseLt(value, other) { + return value < other; } /** - * Converts `value` to property path array if it's not one. + * The base implementation of `_.map` without support for iteratee shorthands. * * @private - * @param {*} value The value to process. - * @returns {Array} Returns the property path array. + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. */ - function toPath(value) { - if (isArray(value)) { - return value; - } - var result = []; - baseToString(value).replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); }); return result; } /** - * Creates a clone of `wrapper`. + * The base implementation of `_.matches` which doesn't clone `source`. * * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. */ - function wrapperClone(wrapper) { - return wrapper instanceof LazyWrapper - ? wrapper.clone() - : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; } - /*------------------------------------------------------------------------*/ - /** - * Creates an array of elements split into groups the length of `size`. - * If `collection` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the new array containing chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. */ - function chunk(array, size, guard) { - if (guard ? isIterateeCall(array, size, guard) : size == null) { - size = 1; - } else { - size = nativeMax(nativeFloor(size) || 1, 1); - } - var index = 0, - length = array ? array.length : 0, - resIndex = -1, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[++resIndex] = baseSlice(array, index, (index += size)); + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); } - return result; + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; } /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example + * The base implementation of `_.merge` without support for multiple sources. * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - resIndex = -1, - result = []; + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; - while (++index < length) { - var value = array[index]; - if (value) { - result[++resIndex] = value; + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); } - } - return result; + }, keysIn); } /** - * Creates an array of unique `array` values not included in the other - * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The arrays of values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. * - * _.difference([1, 2, 3], [4, 2]); - * // => [1, 3] + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. */ - var difference = restParam(function(array, values) { - return (isObjectLike(array) && isArrayLike(array)) - ? baseDifference(array, baseFlatten(values, false, true)) - : []; - }); + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); - /** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function drop(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; + if (stacked) { + assignMergeValue(object, key, stacked); + return; } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); } - return baseSlice(array, n < 0 ? 0 : n); + assignMergeValue(object, key, newValue); } /** - * Creates a slice of `array` with `n` elements dropped from the end. + * The base implementation of `_.nth` which doesn't coerce arguments. * - * @static - * @memberOf _ - * @category Array + * @private * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. */ - function dropRight(array, n, guard) { - var length = array ? array.length : 0; + function baseNth(array, n) { + var length = array.length; if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; + return; } - n = length - (+n || 0); - return baseSlice(array, 0, n < 0 ? 0 : n); + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; } /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * bound to `thisArg` and invoked with three arguments: (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that match the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRightWhile([1, 2, 3], function(n) { - * return n > 1; - * }); - * // => [1] - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; + * The base implementation of `_.orderBy` without param guards. * - * // using the `_.matches` callback shorthand - * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); - * // => ['barney', 'fred'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.dropRightWhile(users, 'active', false), 'user'); - * // => ['barney'] + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. * - * // using the `_.property` callback shorthand - * _.pluck(_.dropRightWhile(users, 'active'), 'user'); - * // => ['barney', 'fred', 'pebbles'] + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. */ - function dropRightWhile(array, predicate, thisArg) { - return (array && array.length) - ? baseWhile(array, getCallback(predicate, thisArg, 3), true, true) - : []; + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); } /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * bound to `thisArg` and invoked with three arguments: (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropWhile([1, 2, 3], function(n) { - * return n < 3; - * }); - * // => [3] - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user'); - * // => ['fred', 'pebbles'] + * The base implementation of `_.pickBy` without support for iteratee shorthands. * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.dropWhile(users, 'active', false), 'user'); - * // => ['pebbles'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.dropWhile(users, 'active'), 'user'); - * // => ['barney', 'fred', 'pebbles'] + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. */ - function dropWhile(array, predicate, thisArg) { - return (array && array.length) - ? baseWhile(array, getCallback(predicate, thisArg, 3), true) - : []; + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; } /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. + * A specialized version of `baseProperty` which supports deep paths. * - * **Note:** This method mutates `array`. + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8], '*', 1, 2); - * // => [4, '*', 8] */ - function fill(array, value, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); } - return baseFill(array, value, start, end); + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; } /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(chr) { - * return chr.user == 'barney'; - * }); - * // => 0 - * - * // using the `_.matches` callback shorthand - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // using the `_.matchesProperty` callback shorthand - * _.findIndex(users, 'active', false); - * // => 0 + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. * - * // using the `_.property` callback shorthand - * _.findIndex(users, 'active'); - * // => 2 + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. */ - var findIndex = createFindIndex(); + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; + * The base implementation of `_.random` without support for returning + * floating-point numbers. * - * _.findLastIndex(users, function(chr) { - * return chr.user == 'pebbles'; - * }); - * // => 2 - * - * // using the `_.matches` callback shorthand - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // using the `_.matchesProperty` callback shorthand - * _.findLastIndex(users, 'active', false); - * // => 2 - * - * // using the `_.property` callback shorthand - * _.findLastIndex(users, 'active'); - * // => 0 + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. */ - var findLastIndex = createFindIndex(true); + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @alias head - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. * - * _.first([]); - * // => undefined + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. */ - function first(array) { - return array ? array[0] : undefined; + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; } /** - * Flattens a nested array. If `isDeep` is `true` the array is recursively - * flattened, otherwise it is only flattened a single level. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to flatten. - * @param {boolean} [isDeep] Specify a deep flatten. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, 3, [4]]]); - * // => [1, 2, 3, [4]] + * The base implementation of `_.repeat` which doesn't coerce arguments. * - * // using `isDeep` - * _.flatten([1, [2, 3, [4]]], true); - * // => [1, 2, 3, 4] + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. */ - function flatten(array, isDeep, guard) { - var length = array ? array.length : 0; - if (guard && isIterateeCall(array, isDeep, guard)) { - isDeep = false; + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; } - return length ? baseFlatten(array, isDeep) : []; + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; } /** - * Recursively flattens a nested array. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to recursively flatten. - * @returns {Array} Returns the new flattened array. - * @example + * The base implementation of `_.rest` which doesn't validate or coerce arguments. * - * _.flattenDeep([1, [2, 3, [4]]]); - * // => [1, 2, 3, 4] + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. */ - function flattenDeep(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, true) : []; + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); } /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it is used as the offset - * from the end of `array`. If `array` is sorted providing `true` for `fromIndex` - * performs a faster binary search. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=0] The index to search from or `true` - * to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example + * The base implementation of `_.sample`. * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // using `fromIndex` - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - * - * // performing a binary search - * _.indexOf([1, 1, 2, 2], 2, true); - * // => 2 + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. */ - function indexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - if (typeof fromIndex == 'number') { - fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; - } else if (fromIndex) { - var index = binaryIndex(array, value); - if (index < length && - (value === value ? (value === array[index]) : (array[index] !== array[index]))) { - return index; - } - return -1; - } - return baseIndexOf(array, value, fromIndex || 0); + function baseSample(collection) { + return arraySample(values(collection)); } /** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example + * The base implementation of `_.sampleSize` without param guards. * - * _.initial([1, 2, 3]); - * // => [1, 2] + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. */ - function initial(array) { - return dropRight(array, 1); + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); } /** - * Creates an array of unique values that are included in all of the provided - * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. + * The base implementation of `_.set`. * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of shared values. - * @example - * _.intersection([1, 2], [4, 2], [2, 1]); - * // => [2] + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. */ - var intersection = restParam(function(arrays) { - var othLength = arrays.length, - othIndex = othLength, - caches = Array(length), - indexOf = getIndexOf(), - isCommon = indexOf == baseIndexOf, - result = []; - - while (othIndex--) { - var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : []; - caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null; + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; } - var array = arrays[0], - index = -1, - length = array ? array.length : 0, - seen = caches[0]; + path = castPath(path, object); - outer: - while (++index < length) { - value = array[index]; - if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) { - var othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) { - continue outer; - } - } - if (seen) { - seen.push(value); + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); } - result.push(value); } + assignValue(nested, key, newValue); + nested = nested[key]; } - return result; - }); + return object; + } /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example + * The base implementation of `setData` without support for hot loop shorting. * - * _.last([1, 2, 3]); - * // => 3 + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. */ - function last(array) { - var length = array ? array.length : 0; - return length ? array[length - 1] : undefined; - } + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=array.length-1] The index to search from - * or `true` to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example + * The base implementation of `setToString` without support for hot loop shorting. * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. * - * // using `fromIndex` - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. * - * // performing a binary search - * _.lastIndexOf([1, 1, 2, 2], 2, true); - * // => 3 + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. */ - function lastIndexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = length; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1; - } else if (fromIndex) { - index = binaryIndex(array, value, true) - 1; - var other = array[index]; - if (value === value ? (value === other) : (other !== other)) { - return index; - } - return -1; + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); } - if (value !== value) { - return indexOfNaN(array, index, true); + end = end > length ? length : end; + if (end < 0) { + end += length; } - while (index--) { - if (array[index] === value) { - return index; - } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; } - return -1; + return result; } /** - * Removes all provided values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3, 1, 2, 3]; + * The base implementation of `_.some` without support for iteratee shorthands. * - * _.pull(array, 2, 3); - * console.log(array); - * // => [1, 1] + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. */ - function pull() { - var args = arguments, - array = args[0]; + function baseSome(collection, predicate) { + var result; - if (!(array && array.length)) { - return array; - } - var index = 0, - indexOf = getIndexOf(), - length = args.length; + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } - while (++index < length) { - var fromIndex = 0, - value = args[index]; + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; - while ((fromIndex = indexOf(array, value, fromIndex)) > -1) { - splice.call(array, fromIndex, 1); + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } } + return high; } - return array; + return baseSortedIndexBy(array, value, identity, retHighest); } /** - * Removes elements from `array` corresponding to the given indexes and returns - * an array of the removed elements. Indexes may be specified as an array of - * indexes or as individual arguments. + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove, - * specified as individual indexes or arrays of indexes. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [5, 10, 15, 20]; - * var evens = _.pullAt(array, 1, 3); - * - * console.log(array); - * // => [5, 15] - * - * console.log(evens); - * // => [10, 20] + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. */ - var pullAt = restParam(function(array, indexes) { - indexes = baseFlatten(indexes); + function baseSortedIndexBy(array, value, iteratee, retHighest) { + var low = 0, + high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } - var result = baseAt(array, indexes); - basePullAt(array, indexes.sort(baseCompareAscending)); - return result; - }); + value = iteratee(value); + var valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is bound to - * `thisArg` and invoked with three arguments: (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * **Note:** Unlike `_.filter`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. * - * console.log(evens); - * // => [2, 4] + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. */ - function remove(array, predicate, thisArg) { - var result = []; - if (!(array && array.length)) { - return result; - } + function baseSortedUniq(array, iteratee) { var index = -1, - indexes = [], - length = array.length; + length = array.length, + resIndex = 0, + result = []; - predicate = getCallback(predicate, thisArg, 3); while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - indexes.push(index); + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; } } - basePullAt(array, indexes); return result; } /** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @alias tail - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. * - * _.rest([1, 2, 3]); - * // => [2, 3] + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. */ - function rest(array) { - return drop(array, 1); + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; } /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of `Array#slice` to support node - * lists in IE < 9 and to ensure dense arrays are returned. + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. */ - function slice(array, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; } - return baseSlice(array, start, end); + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } /** - * Uses a binary search to determine the lowest index at which `value` should - * be inserted into `array` in order to maintain its sort order. If an iteratee - * function is provided it is invoked for `value` and each element of `array` - * to compute their sort ranking. The iteratee is bound to `thisArg` and - * invoked with one argument; (value). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - * - * _.sortedIndex([4, 4, 5, 5], 5); - * // => 2 + * The base implementation of `_.uniqBy` without support for iteratee shorthands. * - * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } }; - * - * // using an iteratee function - * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) { - * return this.data[word]; - * }, dict); - * // => 1 - * - * // using the `_.property` callback shorthand - * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 1 + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. */ - var sortedIndex = createSortedIndex(); + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. + * The base implementation of `_.unset`. * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + /** + * The base implementation of `_.update`. * - * _.sortedLastIndex([4, 4, 5, 5], 5); - * // => 4 + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. */ - var sortedLastIndex = createSortedIndex(true); + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } /** - * Creates a slice of `array` with `n` elements taken from the beginning. + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. * - * @static - * @memberOf _ - * @category Array + * @private * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. * - * _.take([1, 2, 3], 0); - * // => [] + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. */ - function take(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); } - return baseSlice(array, 0, n < 0 ? 0 : n); + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); } /** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. */ - function takeRight(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } } - n = length - (+n || 0); - return baseSlice(array, n < 0 ? 0 : n); + return baseUniq(baseFlatten(result, 1), iteratee, comparator); } /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is bound to `thisArg` - * and invoked with three arguments: (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. * - * _.takeRightWhile([1, 2, 3], function(n) { - * return n > 1; - * }); - * // => [2, 3] - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); - * // => ['pebbles'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.takeRightWhile(users, 'active', false), 'user'); - * // => ['fred', 'pebbles'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.takeRightWhile(users, 'active'), 'user'); - * // => [] + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. */ - function takeRightWhile(array, predicate, thisArg) { - return (array && array.length) - ? baseWhile(array, getCallback(predicate, thisArg, 3), false, true) - : []; + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; } /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is bound to - * `thisArg` and invoked with three arguments: (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeWhile([1, 2, 3], function(n) { - * return n < 3; - * }); - * // => [1, 2] - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false}, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.takeWhile(users, 'active', false), 'user'); - * // => ['barney', 'fred'] + * Casts `value` to an empty array if it's not an array like object. * - * // using the `_.property` callback shorthand - * _.pluck(_.takeWhile(users, 'active'), 'user'); - * // => [] + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. */ - function takeWhile(array, predicate, thisArg) { - return (array && array.length) - ? baseWhile(array, getCallback(predicate, thisArg, 3)) - : []; + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; } /** - * Creates an array of unique values, in order, from all of the provided arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example + * Casts `value` to `identity` if it's not a function. * - * _.union([1, 2], [4, 2], [2, 1]); - * // => [1, 2, 4] + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. */ - var union = restParam(function(arrays) { - return baseUniq(baseFlatten(arrays, false, true)); - }); + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurence of each element - * is kept. Providing `true` for `isSorted` performs a faster search algorithm - * for sorted arrays. If an iteratee function is provided it is invoked for - * each element in the array to generate the criterion by which uniqueness - * is computed. The `iteratee` is bound to `thisArg` and invoked with three - * arguments: (value, index, array). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. + * Casts `value` to a path array if it's not one. * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; + + /** + * Casts `array` to a slice if it's needed. * - * @static - * @memberOf _ - * @alias unique - * @category Array + * @private * @param {Array} array The array to inspect. - * @param {boolean} [isSorted] Specify the array is sorted. - * @param {Function|Object|string} [iteratee] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new duplicate-value-free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - * - * // using `isSorted` - * _.uniq([1, 1, 2], true); - * // => [1, 2] - * - * // using an iteratee function - * _.uniq([1, 2.5, 1.5, 2], function(n) { - * return this.floor(n); - * }, Math); - * // => [1, 2.5] - * - * // using the `_.property` callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. */ - function uniq(array, isSorted, iteratee, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (isSorted != null && typeof isSorted != 'boolean') { - thisArg = iteratee; - iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted; - isSorted = false; - } - var callback = getCallback(); - if (!(iteratee == null && callback === baseCallback)) { - iteratee = callback(iteratee, thisArg, 3); - } - return (isSorted && getIndexOf() == baseIndexOf) - ? sortedUniq(array, iteratee) - : baseUniq(array, iteratee); + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); } /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-zip - * configuration. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). * - * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + + /** + * Creates a clone of `buffer`. * - * _.unzip(zipped); - * // => [['fred', 'barney'], [30, 40], [true, false]] + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. */ - function unzip(array) { - if (!(array && array.length)) { - return []; + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); } - var index = -1, - length = 0; + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - array = arrayFilter(array, function(group) { - if (isArrayLike(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - var result = Array(length); - while (++index < length) { - result[index] = arrayMap(array, baseProperty(index)); - } + buffer.copy(result); return result; } /** - * This method is like `_.unzip` except that it accepts an iteratee to specify - * how regrouped values should be combined. The `iteratee` is bound to `thisArg` - * and invoked with four arguments: (accumulator, value, index, group). - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array of grouped elements to process. - * @param {Function} [iteratee] The function to combine regrouped values. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip([1, 2], [10, 20], [100, 200]); - * // => [[1, 10, 100], [2, 20, 200]] + * Creates a clone of `arrayBuffer`. * - * _.unzipWith(zipped, _.add); - * // => [3, 30, 300] + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. */ - function unzipWith(array, iteratee, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - var result = unzip(array); - if (iteratee == null) { - return result; - } - iteratee = bindCallback(iteratee, thisArg, 4); - return arrayMap(result, function(group) { - return arrayReduce(group, iteratee, undefined, true); - }); + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; } /** - * Creates an array excluding all provided values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. + * Creates a clone of `dataView`. * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to filter. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.without([1, 2, 1, 3], 1, 2); - * // => [3] + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. */ - var without = restParam(function(array, values) { - return isArrayLike(array) - ? baseDifference(array, values) - : []; - }); + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } /** - * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) - * of the provided arrays. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of values. - * @example + * Creates a clone of `regexp`. * - * _.xor([1, 2], [4, 2]); - * // => [1, 4] + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. */ - function xor() { - var index = -1, - length = arguments.length; - - while (++index < length) { - var array = arguments[index]; - if (isArrayLike(array)) { - var result = result - ? arrayPush(baseDifference(result, array), baseDifference(array, result)) - : array; - } - } - return result ? baseUniq(result) : []; + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; } /** - * Creates an array of grouped elements, the first of which contains the first - * elements of the given arrays, the second of which contains the second elements - * of the given arrays, and so on. + * Creates a clone of the `symbol` object. * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. * - * _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. */ - var zip = restParam(unzip); + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } /** - * The inverse of `_.pairs`; this method returns an object composed from arrays - * of property names and values. Provide either a single two dimensional array, - * e.g. `[[key1, value1], [key2, value2]]` or two arrays, one of property names - * and one of corresponding values. + * Compares values to sort them in ascending order. * - * @static - * @memberOf _ - * @alias object - * @category Array - * @param {Array} props The property names. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. * - * _.zipObject([['fred', 30], ['barney', 40]]); - * // => { 'fred': 30, 'barney': 40 } + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. * - * _.zipObject(['fred', 'barney'], [30, 40]); - * // => { 'fred': 30, 'barney': 40 } + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. */ - function zipObject(props, values) { + function compareMultiple(object, other, orders) { var index = -1, - length = props ? props.length : 0, - result = {}; + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; - if (length && !values && !isArray(props[0])) { - values = []; - } while (++index < length) { - var key = props[index]; - if (values) { - result[key] = values[index]; - } else if (key) { - result[key[0]] = key[1]; + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); } } - return result; + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; } /** - * This method is like `_.zip` except that it accepts an iteratee to specify - * how grouped values should be combined. The `iteratee` is bound to `thisArg` - * and invoked with four arguments: (accumulator, value, index, group). - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee] The function to combine grouped values. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new array of grouped elements. - * @example + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. * - * _.zipWith([1, 2], [10, 20], [100, 200], _.add); - * // => [111, 222] + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. */ - var zipWith = restParam(function(arrays) { - var length = arrays.length, - iteratee = length > 2 ? arrays[length - 2] : undefined, - thisArg = length > 1 ? arrays[length - 1] : undefined; + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; - if (length > 2 && typeof iteratee == 'function') { - length -= 2; - } else { - iteratee = (length > 1 && typeof thisArg == 'function') ? (--length, thisArg) : undefined; - thisArg = undefined; + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; } - arrays.length = length; - return unzipWith(arrays, iteratee, thisArg); - }); - - /*------------------------------------------------------------------------*/ + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } /** - * Creates a `lodash` object that wraps `value` with explicit method - * chaining enabled. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. * - * var youngest = _.chain(users) - * .sortBy('age') - * .map(function(chr) { - * return chr.user + ' is ' + chr.age; - * }) - * .first() - * .value(); - * // => 'pebbles is 1' + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } return result; } /** - * This method invokes `interceptor` and returns `value`. The interceptor is - * bound to `thisArg` and invoked with one argument; (value). The purpose of - * this method is to "tap into" a method chain in order to perform operations - * on intermediate results within the chain. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @param {*} [thisArg] The `this` binding of `interceptor`. - * @returns {*} Returns `value`. - * @example + * Copies the values of `source` to `array`. * - * _([1, 2, 3]) - * .tap(function(array) { - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. */ - function tap(value, interceptor, thisArg) { - interceptor.call(thisArg, value); - return value; + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; } /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @param {*} [thisArg] The `this` binding of `interceptor`. - * @returns {*} Returns the result of `interceptor`. - * @example + * Copies properties of `source` to `object`. * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. */ - function thru(value, interceptor, thisArg) { - return interceptor.call(thisArg, value); + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; } /** - * Enables explicit method chaining on the wrapper object. - * - * @name chain - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; + * Copies own symbols of `source` to `object`. * - * // without explicit chaining - * _(users).first(); - * // => { 'user': 'barney', 'age': 36 } - * - * // with explicit chaining - * _(users).chain() - * .first() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. */ - function wrapperChain() { - return chain(this); + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); } /** - * Executes the chained sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] + * Copies own and inherited symbols of `source` to `object`. * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); } /** - * Creates a new array joining a wrapped array with any additional arrays - * and/or values. - * - * @name concat - * @memberOf _ - * @category Chain - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var wrapped = _(array).concat(2, [3], [[4]]); - * - * console.log(wrapped.value()); - * // => [1, 2, 3, [4]] + * Creates a function like `_.groupBy`. * - * console.log(array); - * // => [1] + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. */ - var wrapperConcat = restParam(function(values) { - values = baseFlatten(values); - return this.thru(function(array) { - return arrayConcat(isArray(array) ? array : [toObject(array)], values); - }); - }); + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } /** - * Creates a clone of the chained sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).map(function(value) { - * return Math.pow(value, 2); - * }); - * - * var other = [3, 4]; - * var otherWrapped = wrapped.plant(other); - * - * otherWrapped.value(); - * // => [9, 16] + * Creates a function like `_.assign`. * - * wrapped.value(); - * // => [1, 4] + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. */ - function wrapperPlant(value) { - var result, - parent = this; + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); } /** - * Reverses the wrapped array so the first element becomes the last, the - * second element becomes the second to last, and so on. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new reversed `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] + * Creates a `baseEach` or `baseEachRight` function. * - * console.log(array); - * // => [3, 2, 1] + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. */ - function wrapperReverse() { - var value = this.__wrapped__; + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); - var interceptor = function(value) { - return (wrapped && wrapped.__dir__ < 0) ? value : value.reverse(); - }; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(interceptor); + return collection; + }; } /** - * Produces the result of coercing the unwrapped value to a string. - * - * @name toString - * @memberOf _ - * @category Chain - * @returns {string} Returns the coerced string value. - * @example + * Creates a base function for methods like `_.forIn` and `_.forOwn`. * - * _([1, 2, 3]).toString(); - * // => '1,2,3' + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. */ - function wrapperToString() { - return (this.value() + ''); + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; } /** - * Executes the chained sequence to extract the unwrapped value. - * - * @name value - * @memberOf _ - * @alias run, toJSON, valueOf - * @category Chain - * @returns {*} Returns the resolved unwrapped value. - * @example + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); - /*------------------------------------------------------------------------*/ + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } /** - * Creates an array of elements corresponding to the given keys, or indexes, - * of `collection`. Keys may be specified as individual arguments or as arrays - * of keys. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(number|number[]|string|string[])} [props] The property names - * or indexes of elements to pick, specified individually or in arrays. - * @returns {Array} Returns the new array of picked elements. - * @example - * - * _.at(['a', 'b', 'c'], [0, 2]); - * // => ['a', 'c'] + * Creates a function like `_.lowerFirst`. * - * _.at(['barney', 'fred', 'pebbles'], 0, 2); - * // => ['barney', 'pebbles'] + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. */ - var at = restParam(function(collection, props) { - return baseAt(collection, baseFlatten(props)); - }); + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is the number of times the key was returned by `iteratee`. - * The `iteratee` is bound to `thisArg` and invoked with three arguments: - * (value, index|key, collection). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. + * Creates a function like `_.camelCase`. * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(n) { - * return Math.floor(n); - * }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(n) { - * return this.floor(n); - * }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. */ - var countBy = createAggregator(function(result, value, key) { - hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); - }); + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * The predicate is bound to `thisArg` and invoked with three arguments: - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // using the `_.matchesProperty` callback shorthand - * _.every(users, 'active', false); - * // => true + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. * - * // using the `_.property` callback shorthand - * _.every(users, 'active'); - * // => false + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. */ - function every(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (thisArg && isIterateeCall(collection, predicate, thisArg)) { - predicate = undefined; - } - if (typeof predicate != 'function' || thisArg !== undefined) { - predicate = getCallback(predicate, thisArg, 3); - } - return func(collection, predicate); + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; } /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is bound to `thisArg` and - * invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new filtered array. - * @example - * - * _.filter([4, 5, 6], function(n) { - * return n % 2 == 0; - * }); - * // => [4, 6] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.filter(users, 'active', false), 'user'); - * // => ['fred'] + * Creates a function that wraps `func` to enable currying. * - * // using the `_.property` callback shorthand - * _.pluck(_.filter(users, 'active'), 'user'); - * // => ['barney'] + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. */ - function filter(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayFilter : baseFilter; - predicate = getCallback(predicate, thisArg, 3); - return func(collection, predicate); + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; } /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is bound to `thisArg` and - * invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias detect - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.result(_.find(users, function(chr) { - * return chr.age < 40; - * }), 'user'); - * // => 'barney' - * - * // using the `_.matches` callback shorthand - * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); - * // => 'pebbles' - * - * // using the `_.matchesProperty` callback shorthand - * _.result(_.find(users, 'active', false), 'user'); - * // => 'fred' + * Creates a `_.find` or `_.findLast` function. * - * // using the `_.property` callback shorthand - * _.result(_.find(users, 'active'), 'user'); - * // => 'barney' + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. */ - var find = createFind(baseEach); + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {*} Returns the matched element, else `undefined`. - * @example + * Creates a `_.flow` or `_.flowRight` function. * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. */ - var findLast = createFind(baseEachRight, true); + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } /** - * Performs a deep comparison between each element in `collection` and the - * source object, returning the first element that has equivalent property - * values. - * - * **Note:** This method supports comparing arrays, booleans, `Date` objects, - * numbers, `Object` objects, regexes, and strings. Objects are compared by - * their own, not inherited, enumerable properties. For comparing a single - * own or inherited property value see `_.matchesProperty`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Object} source The object of property values to match. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. * - * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user'); - * // => 'barney' - * - * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user'); - * // => 'fred' + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. */ - function findWhere(collection, source) { - return find(collection, baseMatches(source)); + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; } /** - * Iterates over elements of `collection` invoking `iteratee` for each element. - * The `iteratee` is bound to `thisArg` and invoked with three arguments: - * (value, index|key, collection). Iteratee functions may exit iteration early - * by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" property - * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` - * may be used for object iteration. - * - * @static - * @memberOf _ - * @alias each - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2]).forEach(function(n) { - * console.log(n); - * }).value(); - * // => logs each value from left to right and returns the array + * Creates a function like `_.invertBy`. * - * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { - * console.log(n, key); - * }); - * // => logs each value-key pair and returns the object (iteration order is not guaranteed) + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. */ - var forEach = createForEach(arrayEach, baseEach); + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; + } /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. + * Creates a function that performs a mathematical operation on two values. * - * @static - * @memberOf _ - * @alias eachRight - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2]).forEachRight(function(n) { - * console.log(n); - * }).value(); - * // => logs each value from right to left and returns the array + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. */ - var forEachRight = createForEach(arrayEachRight, baseEachRight); + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; + } /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is an array of the elements responsible for generating the key. - * The `iteratee` is bound to `thisArg` and invoked with three arguments: - * (value, index|key, collection). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. + * Creates a function like `_.over`. * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(n) { - * return Math.floor(n); - * }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(n) { - * return this.floor(n); - * }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); + } + + /** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. * - * // using the `_.property` callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - result[key] = [value]; + function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; } - }); + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); + } /** - * Checks if `value` is in `collection` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it is used as the offset - * from the end of `collection`. - * - * @static - * @memberOf _ - * @alias contains, include - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {*} target The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. - * @returns {boolean} Returns `true` if a matching element is found, else `false`. - * @example + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); - * // => true - * - * _.includes('pebbles', 'eb'); - * // => true + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. */ - function includes(collection, target, fromIndex, guard) { - var length = collection ? getLength(collection) : 0; - if (!isLength(length)) { - collection = values(collection); - length = collection.length; - } - if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) { - fromIndex = 0; - } else { - fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); } - return (typeof collection == 'string' || !isArray(collection) && isString(collection)) - ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1) - : (!!length && getIndexOf(collection, target, fromIndex) > -1); + return wrapper; } /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is the last element responsible for generating the key. The - * iteratee function is bound to `thisArg` and invoked with three arguments: - * (value, index|key, collection). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. + * Creates a `_.range` or `_.rangeRight` function. * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var keyData = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.indexBy(keyData, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keyData, function(object) { - * return String.fromCharCode(object.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates a function that performs a relational operation on two values. * - * _.indexBy(keyData, function(object) { - * return this.fromCharCode(object.code); - * }, String); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. */ - var indexBy = createAggregator(function(result, value, key) { - result[key] = value; - }); + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } /** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `methodName` is a function it is - * invoked for, and `this` bound to, each element in `collection`. + * Creates a function that wraps `func` to continue currying. * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. */ - var invoke = restParam(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - isProp = isKey(path), - result = isArrayLike(collection) ? Array(collection.length) : []; + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; - baseEach(collection, function(value) { - var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined); - result[++index] = func ? func.apply(value, args) : invokePath(value, path, args); - }); - return result; - }); + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); + } /** - * Creates an array of values by running each element in `collection` through - * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three - * arguments: (value, index|key, collection). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, - * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`, - * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`, - * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`, - * `sum`, `uniq`, and `words` - * - * @static - * @memberOf _ - * @alias collect - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new mapped array. - * @example - * - * function timesThree(n) { - * return n * 3; - * } + * Creates a function like `_.round`. * - * _.map([1, 2], timesThree); - * // => [3, 6] - * - * _.map({ 'a': 1, 'b': 2 }, timesThree); - * // => [3, 6] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // using the `_.property` callback shorthand - * _.map(users, 'user'); - * // => ['barney', 'fred'] + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. */ - function map(collection, iteratee, thisArg) { - var func = isArray(collection) ? arrayMap : baseMap; - iteratee = getCallback(iteratee, thisArg, 3); - return func(collection, iteratee); + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; } /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, while the second of which - * contains elements `predicate` returns falsey for. The predicate is bound - * to `thisArg` and invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * _.partition([1, 2, 3], function(n) { - * return n % 2; - * }); - * // => [[1, 3], [2]] + * Creates a set object of `values`. * - * _.partition([1.2, 2.3, 3.4], function(n) { - * return this.floor(n) % 2; - * }, Math); - * // => [[1.2, 3.4], [2.3]] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * var mapper = function(array) { - * return _.pluck(array, 'user'); - * }; - * - * // using the `_.matches` callback shorthand - * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper); - * // => [['pebbles'], ['barney', 'fred']] - * - * // using the `_.matchesProperty` callback shorthand - * _.map(_.partition(users, 'active', false), mapper); - * // => [['barney', 'pebbles'], ['fred']] - * - * // using the `_.property` callback shorthand - * _.map(_.partition(users, 'active'), mapper); - * // => [['fred'], ['barney', 'pebbles']] + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; /** - * Gets the property value of `path` from all elements in `collection`. + * Creates a `_.toPairs` or `_.toPairsIn` function. * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Array|string} path The path of the property to pluck. - * @returns {Array} Returns the property values. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * _.pluck(users, 'user'); - * // => ['barney', 'fred'] - * - * var userIndex = _.indexBy(users, 'user'); - * _.pluck(userIndex, 'age'); - * // => [36, 40] (iteration order is not guaranteed) + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. */ - function pluck(collection, path) { - return map(collection, property(path)); + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; } /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` through `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not provided the first element of `collection` is used as the initial - * value. The `iteratee` is bound to `thisArg` and invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`, - * and `sortByOrder` - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {*} Returns the accumulated value. - * @example - * - * _.reduce([1, 2], function(total, n) { - * return total + n; - * }); - * // => 3 + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. * - * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) { - * result[key] = n * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed) + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. */ - var reduce = createReduce(arrayReduce, baseEach); + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); + } /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {*} Returns the accumulated value. - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - var reduceRight = createReduce(arrayReduceRight, baseEachRight); + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; + } /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new filtered array. - * @example - * - * _.reject([1, 2, 3, 4], function(n) { - * return n % 2 == 0; - * }); - * // => [1, 3] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. * - * // using the `_.matches` callback shorthand - * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.reject(users, 'active', false), 'user'); - * // => ['fred'] + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; + } + + /** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. * - * // using the `_.property` callback shorthand - * _.pluck(_.reject(users, 'active'), 'user'); - * // => ['barney'] + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. */ - function reject(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayFilter : baseFilter; - predicate = getCallback(predicate, thisArg, 3); - return func(collection, function(value, index, collection) { - return !predicate(value, index, collection); - }); + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; } /** - * Gets a random element or `n` random elements from a collection. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to sample. - * @param {number} [n] The number of elements to sample. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {*} Returns the random sample(s). - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. * - * _.sample([1, 2, 3, 4], 2); - * // => [3, 1] + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. */ - function sample(collection, n, guard) { - if (guard ? isIterateeCall(collection, n, guard) : n == null) { - collection = toIterable(collection); - var length = collection.length; - return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; } var index = -1, - result = toArray(collection), - length = result.length, - lastIndex = length - 1; + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - n = nativeMin(n < 0 ? 0 : (+n || 0), length); - while (++index < n) { - var rand = baseRandom(index, lastIndex), - value = result[rand]; + stack.set(array, other); + stack.set(other, array); - result[rand] = result[index]; - result[index] = value; + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } } - result.length = n; + stack['delete'](array); + stack['delete'](other); return result; } /** - * Creates an array of shuffled values, using a version of the - * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ - function shuffle(collection) { - return sample(collection, POSITIVE_INFINITY); + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; } /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the size of `collection`. - * @example - * - * _.size([1, 2, 3]); - * // => 3 + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. * - * _.size('pebbles'); - * // => 7 + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. */ - function size(collection) { - var length = collection ? getLength(collection) : 0; - return isLength(length) ? length : keys(collection).length; + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); } /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * The function returns as soon as it finds a passing value and does not iterate - * over the entire collection. The predicate is bound to `thisArg` and invoked - * with three arguments: (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // using the `_.matchesProperty` callback shorthand - * _.some(users, 'active', false); - * // => true + * Creates an array of own enumerable property names and symbols of `object`. * - * // using the `_.property` callback shorthand - * _.some(users, 'active'); - * // => true + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. */ - function some(collection, predicate, thisArg) { - var func = isArray(collection) ? arraySome : baseSome; - if (thisArg && isIterateeCall(collection, predicate, thisArg)) { - predicate = undefined; - } - if (typeof predicate != 'function' || thisArg !== undefined) { - predicate = getCallback(predicate, thisArg, 3); - } - return func(collection, predicate); + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); } /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection through `iteratee`. This method performs - * a stable sort, that is, it preserves the original sort order of equal elements. - * The `iteratee` is bound to `thisArg` and invoked with three arguments: - * (value, index|key, collection). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new sorted array. - * @example - * - * _.sortBy([1, 2, 3], function(n) { - * return Math.sin(n); - * }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(n) { - * return this.sin(n); - * }, Math); - * // => [3, 1, 2] - * - * var users = [ - * { 'user': 'fred' }, - * { 'user': 'pebbles' }, - * { 'user': 'barney' } - * ]; + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. * - * // using the `_.property` callback shorthand - * _.pluck(_.sortBy(users, 'user'), 'user'); - * // => ['barney', 'fred', 'pebbles'] + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. */ - function sortBy(collection, iteratee, thisArg) { - if (collection == null) { - return []; - } - if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { - iteratee = undefined; - } - var index = -1; - iteratee = getCallback(iteratee, thisArg, 3); - - var result = baseMap(collection, function(value, key, collection) { - return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value }; - }); - return baseSortBy(result, compareAscending); + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); } /** - * This method is like `_.sortBy` except that it can sort by multiple iteratees - * or property names. - * - * If a property name is provided for an iteratee the created `_.property` - * style callback returns the property value of the given element. - * - * If an object is provided for an iteratee the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees - * The iteratees to sort by, specified as individual values or arrays of values. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 42 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.map(_.sortByAll(users, ['user', 'age']), _.values); - * // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]] + * Gets metadata for `func`. * - * _.map(_.sortByAll(users, 'user', function(chr) { - * return Math.floor(chr.age / 10); - * }), _.values); - * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. */ - var sortByAll = restParam(function(collection, iteratees) { - if (collection == null) { - return []; - } - var guard = iteratees[2]; - if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) { - iteratees.length = 1; - } - return baseSortByOrder(collection, baseFlatten(iteratees), []); - }); + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; /** - * This method is like `_.sortByAll` except that it allows specifying the - * sort orders of the iteratees to sort by. If `orders` is unspecified, all - * values are sorted in ascending order. Otherwise, a value is sorted in - * ascending order if its corresponding order is "asc", and descending if "desc". - * - * If a property name is provided for an iteratee the created `_.property` - * style callback returns the property value of the given element. - * - * If an object is provided for an iteratee the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {boolean[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 42 }, - * { 'user': 'barney', 'age': 36 } - * ]; + * Gets the name of `func`. * - * // sort by `user` in ascending order and by `age` in descending order - * _.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values); - * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. */ - function sortByOrder(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (guard && isIterateeCall(iteratees, orders, guard)) { - orders = undefined; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } } - return baseSortByOrder(collection, iteratees, orders); + return result; } /** - * Performs a deep comparison between each element in `collection` and the - * source object, returning an array of all elements that have equivalent - * property values. - * - * **Note:** This method supports comparing arrays, booleans, `Date` objects, - * numbers, `Object` objects, regexes, and strings. Objects are compared by - * their own, not inherited, enumerable properties. For comparing a single - * own or inherited property value see `_.matchesProperty`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Object} source The object of property values to match. - * @returns {Array} Returns the new filtered array. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] }, - * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] } - * ]; + * Gets the argument placeholder value for `func`. * - * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user'); - * // => ['barney'] - * - * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user'); - * // => ['fred'] + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. */ - function where(collection, source) { - return filter(collection, baseMatches(source)); + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; } - /*------------------------------------------------------------------------*/ + /** + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. + * + * @private + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. + */ + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } /** - * Gets the number of milliseconds that have elapsed since the Unix epoch - * (1 January 1970 00:00:00 UTC). + * Gets the data for `map`. * - * @static - * @memberOf _ - * @category Date - * @example + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the property names, values, and compare flags of `object`. * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => logs the number of milliseconds it took for the deferred function to be invoked + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. */ - var now = nativeNow || function() { - return new Date().getTime(); - }; + function getMatchData(object) { + var result = keys(object), + length = result.length; - /*------------------------------------------------------------------------*/ + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it is called `n` or more times. - * - * @static - * @memberOf _ - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; + * Gets the native function at `key` of `object`. * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => logs 'done saving!' after the two async saves have completed + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. */ - function after(n, func) { - if (typeof func != 'function') { - if (typeof n == 'function') { - var temp = n; - n = func; - func = temp; + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; } else { - throw new TypeError(FUNC_ERROR_TEXT); + delete value[symToStringTag]; } } - n = nativeIsFinite(n = +n) ? n : 0; - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; + return result; } /** - * Creates a function that accepts up to `n` arguments ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new function. - * @example + * Creates an array of the own enumerable symbols of `object`. * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. */ - function ary(func, n, guard) { - if (guard && isIterateeCall(func, n, guard)) { - n = undefined; + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; } - n = (func && n == null) ? func.length : nativeMax(+n || 0, 0); - return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n); - } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it is called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example + * Creates an array of the own and inherited enumerable symbols of `object`. * - * jQuery('#add').on('click', _.before(5, addContactToList)); - * // => allows adding up to 4 contacts to the list + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. */ - function before(n, func) { - var result; - if (typeof func != 'function') { - if (typeof n == 'function') { - var temp = n; - n = func; - func = temp; - } else { - throw new TypeError(FUNC_ERROR_TEXT); - } + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); } - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; + return result; + }; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } } return result; }; } /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and prepends any additional `_.bind` arguments to those provided to the - * bound function. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind` this method does not set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var greet = function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * }; - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' + * Gets the view, applying any `transforms` to the `start` and `end` positions. * - * // using placeholders - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. */ - var bind = restParam(function(func, thisArg, partials) { - var bitmask = BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, bind.placeholder); - bitmask |= PARTIAL_FLAG; + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } } - return createWrapper(func, bitmask, thisArg, partials, holders); - }); + return { 'start': start, 'end': end }; + } /** - * Binds methods of an object to the object itself, overwriting the existing - * method. Method names may be specified as individual arguments or as arrays - * of method names. If no method names are provided all enumerable function - * properties, own and inherited, of `object` are bound. - * - * **Note:** This method does not set the "length" property of bound functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...(string|string[])} [methodNames] The object method names to bind, - * specified as individual method names or arrays of method names. - * @returns {Object} Returns `object`. - * @example + * Extracts wrapper details from the `source` body comment. * - * var view = { - * 'label': 'docs', - * 'onClick': function() { - * console.log('clicked ' + this.label); - * } - * }; + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + + /** + * Checks if `path` exists on `object`. * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => logs 'clicked docs' when the element is clicked + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. */ - var bindAll = restParam(function(object, methodNames) { - methodNames = methodNames.length ? baseFlatten(methodNames) : functions(object); + function hasPath(object, path, hasFunc) { + path = castPath(path, object); var index = -1, - length = methodNames.length; + length = path.length, + result = false; while (++index < length) { - var key = methodNames[index]; - object[key] = createWrapper(object[key], BIND_FLAG, object); + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; } - return object; - }); - - /** - * Creates a function that invokes the method at `object[key]` and prepends - * any additional `_.bindKey` arguments to those provided to the bound function. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. - * See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @category Function - * @param {Object} object The object the method belongs to. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // using placeholders - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ - var bindKey = restParam(function(object, key, partials) { - var bitmask = BIND_FLAG | BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, bindKey.placeholder); - bitmask |= PARTIAL_FLAG; + if (result || ++index != length) { + return result; } - return createWrapper(key, bitmask, object, partials, holders); - }); + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } /** - * Creates a function that accepts one or more arguments of `func` that when - * called either invokes `func` returning its result, if all `func` arguments - * have been provided, or returns a function that accepts one or more of the - * remaining `func` arguments, and so on. The arity of `func` may be specified - * if `func.length` is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method does not set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] + * Initializes an array clone. * - * // using placeholders - * curried(1)(_, 3)(2); - * // => [1, 2, 3] + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. */ - var curry = createCurry(CURRY_FLAG); + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method does not set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] + * Initializes an object clone. * - * // using placeholders - * curried(3)(1, _)(2); - * // => [1, 2, 3] + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. */ - var curryRight = createCurry(CURRY_RIGHT_FLAG); + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed invocations. Provide an options object to indicate that `func` - * should be invoked on the leading and/or trailing edge of the `wait` timeout. - * Subsequent calls to the debounced function return the result of the last - * `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked - * on the trailing edge of the timeout only if the the debounced function is - * invoked more than once during the `wait` timeout. - * - * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=false] Specify invoking on the leading - * edge of the timeout. - * @param {number} [options.maxWait] The maximum time `func` is allowed to be - * delayed before it is invoked. - * @param {boolean} [options.trailing=true] Specify invoking on the trailing - * edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // avoid costly calculations while the window size is in flux - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // invoke `sendMail` when the click event is fired, debouncing subsequent calls - * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // ensure `batchLog` is invoked once after 1 second of debounced calls - * var source = new EventSource('/stream'); - * jQuery(source).on('message', _.debounce(batchLog, 250, { - * 'maxWait': 1000 - * })); - * - * // cancel a debounced call - * var todoChanges = _.debounce(batchLog, 1000); - * Object.observe(models.todo, todoChanges); - * - * Object.observe(models, function(changes) { - * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { - * todoChanges.cancel(); - * } - * }, ['delete']); + * Initializes an object clone based on its `toStringTag`. * - * // ...at some point `models.todo` is changed - * models.todo.completed = true; + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. * - * // ...before 1 second has passed `models.todo` is deleted - * // which cancels the debounced `todoChanges` call - * delete models.todo; + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. */ - function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - maxWait = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = wait < 0 ? 0 : (+wait || 0); - if (options === true) { - var leading = true; - trailing = false; - } else if (isObject(options)) { - leading = !!options.leading; - maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); - trailing = 'trailing' in options ? !!options.trailing : trailing; - } + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); - function cancel() { - if (timeoutId) { - clearTimeout(timeoutId); - } - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - lastCalled = 0; - maxTimeoutId = timeoutId = trailingCall = undefined; - } + case boolTag: + case dateTag: + return new Ctor(+object); - function complete(isCalled, id) { - if (id) { - clearTimeout(id); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = undefined; - } - } - } + case dataViewTag: + return cloneDataView(object, isDeep); - function delayed() { - var remaining = wait - (now() - stamp); - if (remaining <= 0 || remaining > wait) { - complete(trailingCall, maxTimeoutId); - } else { - timeoutId = setTimeout(delayed, remaining); - } - } + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); - function maxDelayed() { - complete(trailing, timeoutId); - } + case mapTag: + return new Ctor; - function debounced() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); + case numberTag: + case stringTag: + return new Ctor(object); - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0 || remaining > maxWait; + case regexpTag: + return cloneRegExp(object); - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = undefined; - } - return result; + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); } - debounced.cancel = cancel; - return debounced; } /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it is invoked. + * Inserts wrapper `details` in a comment at the top of the `source` body. * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // logs 'deferred' after one or more milliseconds + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. */ - var defer = restParam(function(func, args) { - return baseDelay(func, 1, args); - }); + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + } /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example + * Checks if `value` is a flattenable `arguments` object or array. * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => logs 'later' after one second + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. */ - var delay = restParam(function(func, wait, args) { - return baseDelay(func, wait, args); - }); + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } /** - * Creates a function that returns the result of invoking the provided - * functions with the `this` binding of the created function, where each - * successive invocation is supplied the return value of the previous. - * - * @static - * @memberOf _ - * @category Function - * @param {...Function} [funcs] Functions to invoke. - * @returns {Function} Returns the new function. - * @example - * - * function square(n) { - * return n * n; - * } + * Checks if `value` is a valid array-like index. * - * var addSquare = _.flow(_.add, square); - * addSquare(1, 2); - * // => 9 + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. */ - var flow = createFlow(); + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } /** - * This method is like `_.flow` except that it creates a function that - * invokes the provided functions from right to left. + * Checks if the given arguments are from an iteratee call. * - * @static - * @memberOf _ - * @alias backflow, compose - * @category Function - * @param {...Function} [funcs] Functions to invoke. - * @returns {Function} Returns the new function. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flowRight(square, _.add); - * addSquare(1, 2); - * // => 9 + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. */ - var flowRight = createFlow(true); + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is coerced to a string and used as the - * cache key. The `func` is invoked with the `this` binding of the memoized - * function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object) - * method interface of `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var upperCase = _.memoize(function(string) { - * return string.toUpperCase(); - * }); - * - * upperCase('fred'); - * // => 'FRED' - * - * // modifying the result cache - * upperCase.cache.set('fred', 'BARNEY'); - * upperCase('fred'); - * // => 'BARNEY' - * - * // replacing `_.memoize.Cache` - * var object = { 'user': 'fred' }; - * var other = { 'user': 'barney' }; - * var identity = _.memoize(_.identity); - * - * identity(object); - * // => { 'user': 'fred' } - * identity(other); - * // => { 'user': 'fred' } - * - * _.memoize.Cache = WeakMap; - * var identity = _.memoize(_.identity); + * Checks if `value` is a property name and not a property path. * - * identity(object); - * // => { 'user': 'fred' } - * identity(other); - * // => { 'user': 'barney' } + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); + function isKey(value, object) { + if (isArray(value)) { + return false; } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result); - return result; - }; - memoized.cache = new memoize.Cache; - return memoized; + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); } /** - * Creates a function that runs each argument through a corresponding - * transform function. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to wrap. - * @param {...(Function|Function[])} [transforms] The functions to transform - * arguments, specified as individual functions or arrays of functions. - * @returns {Function} Returns the new function. - * @example - * - * function doubled(n) { - * return n * 2; - * } - * - * function square(n) { - * return n * n; - * } - * - * var modded = _.modArgs(function(x, y) { - * return [x, y]; - * }, square, doubled); - * - * modded(1, 2); - * // => [1, 4] + * Checks if `value` is suitable for use as unique object key. * - * modded(5, 10); - * // => [25, 20] + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. */ - var modArgs = restParam(function(func, transforms) { - transforms = baseFlatten(transforms); - if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = transforms.length; - return restParam(function(args) { - var index = nativeMin(args.length, length); - while (index--) { - args[index] = transforms[index](args[index]); - } - return func.apply(this, args); - }); - }); + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } + * Checks if `func` has a lazy counterpart. * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; } - return function() { - return !predicate.apply(this, arguments); - }; + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; } /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first call. The `func` is invoked - * with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example + * Checks if `func` has its source masked. * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` invokes `createApplication` once + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. */ - function once(func) { - return before(2, func); + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); } /** - * Creates a function that invokes `func` with `partial` arguments prepended - * to those provided to the new function. This method is like `_.bind` except - * it does **not** alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method does not set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { - * return greeting + ' ' + name; - * }; - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' + * Checks if `func` is capable of being masked. * - * // using placeholders - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. */ - var partial = createPartial(PARTIAL_FLAG); + var isMaskable = coreJsData ? isFunction : stubFalse; /** - * This method is like `_.partial` except that partially applied arguments - * are appended to those provided to the new function. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method does not set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example + * Checks if `value` is likely a prototype object. * - * var greet = function(greeting, name) { - * return greeting + ' ' + name; - * }; + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. * - * // using placeholders - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. */ - var partialRight = createPartial(PARTIAL_RIGHT_FLAG); + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified indexes where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes, - * specified as individual indexes or arrays of indexes. - * @returns {Function} Returns the new function. - * @example + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** + * Merges the function metadata of `source` into `data`. * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, 2, 0, 1); + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. * - * var map = _.rearg(_.map, [1, 0]); - * map(function(n) { - * return n * 3; - * }, [1, 2, 3]); - * // => [3, 6, 9] + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. */ - var rearg = restParam(function(func, indexes) { - return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes)); - }); + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as an array. + * Converts `value` to a string using `Object.prototype.toString`. * - * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. * - * @static - * @memberOf _ - * @category Function + * @private * @param {Function} func The function to apply a rest parameter to. * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. * @returns {Function} Returns the new function. - * @example - * - * var say = _.restParam(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' */ - function restParam(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0); + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); return function() { var args = arguments, index = -1, length = nativeMax(args.length - start, 0), - rest = Array(length); + array = Array(length); while (++index < length) { - rest[index] = args[start + index]; - } - switch (start) { - case 0: return func.call(this, rest); - case 1: return func.call(this, args[0], rest); - case 2: return func.call(this, args[0], args[1], rest); + array[index] = args[start + index]; } - var otherArgs = Array(start + 1); index = -1; + var otherArgs = Array(start + 1); while (++index < start) { otherArgs[index] = args[index]; } - otherArgs[start] = rest; - return func.apply(this, otherArgs); + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); }; } /** - * Creates a function that invokes `func` with the `this` binding of the created - * function and an array of arguments much like [`Function#apply`](https://es5.github.io/#x15.3.4.3). + * Gets the parent value at `path` of `object`. * - * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator). + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to spread arguments over. - * @returns {Function} Returns the new function. - * @example + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". * - * var say = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; + } + + /** + * Sets metadata for `func`. * - * say(['fred', 'hello']); - * // => 'fred says hello' + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. * - * // with a Promise - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = shortOut(baseSetData); + + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. */ - function spread(func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function(array) { - return func.apply(this, array); + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); }; } /** - * Creates a throttled function that only invokes `func` at most once per - * every `wait` milliseconds. The throttled function comes with a `cancel` - * method to cancel delayed invocations. Provide an options object to indicate - * that `func` should be invoked on the leading and/or trailing edge of the - * `wait` timeout. Subsequent calls to the throttled function return the - * result of the last `func` call. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked - * on the trailing edge of the timeout only if the the throttled function is - * invoked more than once during the `wait` timeout. - * - * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=true] Specify invoking on the leading - * edge of the timeout. - * @param {boolean} [options.trailing=true] Specify invoking on the trailing - * edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // avoid excessively updating the position while scrolling - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes - * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { - * 'trailing': false - * })); + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. * - * // cancel a trailing throttled call - * jQuery(window).on('popstate', throttled.cancel); + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (options === false) { - leading = false; - } else if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; } - return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing }); + array.length = size; + return array; } /** - * Creates a function that provides `value` to the wrapper function as its - * first argument. Any additional arguments provided to the function are - * appended to those provided to the wrapper function. The wrapper is invoked - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Function - * @param {*} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

' + func(text) + '

'; - * }); + * Converts `string` to a property path array. * - * p('fred, barney, & pebbles'); - * // => '

fred, barney, & pebbles

' + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. */ - function wrap(value, wrapper) { - wrapper = wrapper == null ? identity : wrapper; - return createWrapper(wrapper, PARTIAL_FLAG, undefined, [value], []); - } - - /*------------------------------------------------------------------------*/ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); /** - * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned, - * otherwise they are assigned by reference. If `customizer` is provided it is - * invoked to produce the cloned values. If `customizer` returns `undefined` - * cloning is handled by the method instead. The `customizer` is bound to - * `thisArg` and invoked with two argument; (value [, index|key, object]). - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). - * The enumerable properties of `arguments` objects and objects created by - * constructors other than `Object` are cloned to plain `Object` objects. An - * empty object is returned for uncloneable values such as functions, DOM nodes, - * Maps, Sets, and WeakMaps. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @param {Function} [customizer] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {*} Returns the cloned value. - * @example + * Converts `value` to a string key if it's not a string or symbol. * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * var shallow = _.clone(users); - * shallow[0] === users[0]; - * // => true - * - * var deep = _.clone(users, true); - * deep[0] === users[0]; - * // => false - * - * // using a customizer callback - * var el = _.clone(document.body, function(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * }); - * - * el === document.body - * // => false - * el.nodeName - * // => BODY - * el.childNodes.length; - * // => 0 + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. */ - function clone(value, isDeep, customizer, thisArg) { - if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) { - isDeep = false; - } - else if (typeof isDeep == 'function') { - thisArg = customizer; - customizer = isDeep; - isDeep = false; + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; } - return typeof customizer == 'function' - ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1)) - : baseClone(value, isDeep); + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } /** - * Creates a deep clone of `value`. If `customizer` is provided it is invoked - * to produce the cloned values. If `customizer` returns `undefined` cloning - * is handled by the method instead. The `customizer` is bound to `thisArg` - * and invoked with two argument; (value [, index|key, object]). - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). - * The enumerable properties of `arguments` objects and objects created by - * constructors other than `Object` are cloned to plain `Object` objects. An - * empty object is returned for uncloneable values such as functions, DOM nodes, - * Maps, Sets, and WeakMaps. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to deep clone. - * @param {Function} [customizer] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {*} Returns the deep cloned value. - * @example - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; + * Converts `func` to its source code. * - * var deep = _.cloneDeep(users); - * deep[0] === users[0]; - * // => false - * - * // using a customizer callback - * var el = _.cloneDeep(document.body, function(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * }); - * - * el === document.body - * // => false - * el.nodeName - * // => BODY - * el.childNodes.length; - * // => 20 + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. */ - function cloneDeep(value, customizer, thisArg) { - return typeof customizer == 'function' - ? baseClone(value, true, bindCallback(customizer, thisArg, 1)) - : baseClone(value, true); + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; } /** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, else `false`. - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false + * Updates wrapper `details` based on `bitmask` flags. * - * _.gt(1, 3); - * // => false + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. */ - function gt(value, other) { - return value > other; + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); } /** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to `other`, else `false`. - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true + * Creates a clone of `wrapper`. * - * _.gte(1, 3); - * // => false + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. */ - function gte(value, other) { - return value >= other; + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; } + /*------------------------------------------------------------------------*/ + /** - * Checks if `value` is classified as an `arguments` object. + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. * @example * - * _.isArguments(function() { return arguments; }()); - * // => true + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] * - * _.isArguments([1, 2, 3]); - * // => false + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] */ - function isArguments(value) { - return isObjectLike(value) && isArrayLike(value) && - hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; } /** - * Checks if `value` is classified as an `Array` object. + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. * @example * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(function() { return arguments; }()); - * // => false + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] */ - var isArray = nativeIsArray || function(value) { - return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; - }; + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; + } /** - * Checks if `value` is classified as a boolean primitive or object. + * Creates a new array concatenating `array` with any additional arrays + * and/or values. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. * @example * - * _.isBoolean(false); - * // => true + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); * - * _.isBoolean(null); - * // => false + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] */ - function isBoolean(value) { - return value === true || value === false || (isObjectLike(value) && objToString.call(value) == boolTag); + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); } /** - * Checks if `value` is classified as a `Date` object. + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor * @example * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false + * _.difference([2, 1], [2, 3]); + * // => [1] */ - function isDate(value) { - return isObjectLike(value) && objToString.call(value) == dateTag; - } + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); /** - * Checks if `value` is a DOM element. + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. * @example * - * _.isElement(document.body); - * // => true + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] * - * _.isElement(''); - * // => false + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] */ - function isElement(value) { - return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value); - } + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); /** - * Checks if `value` is empty. A value is considered empty unless it is an - * `arguments` object, array, string, or jQuery-like collection with a length - * greater than `0` or an object with own enumerable properties. + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. * * @static * @memberOf _ - * @category Lang - * @param {Array|Object|string} value The value to inspect. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. * @example * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] */ - function isEmpty(value) { - if (value == null) { - return true; + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; } - if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) || - (isObjectLike(value) && isFunction(value.splice)))) { - return !value.length; - } - return !keys(value).length; - } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; + }); /** - * Performs a deep comparison between two values to determine if they are - * equivalent. If `customizer` is provided it is invoked to compare values. - * If `customizer` returns `undefined` comparisons are handled by the method - * instead. The `customizer` is bound to `thisArg` and invoked with three - * arguments: (value, other [, index|key]). - * - * **Note:** This method supports comparing arrays, booleans, `Date` objects, - * numbers, `Object` objects, regexes, and strings. Objects are compared by - * their own, not inherited, enumerable properties. Functions and DOM nodes - * are **not** supported. Provide a customizer function to extend support - * for comparing other values. + * Creates a slice of `array` with `n` elements dropped from the beginning. * * @static * @memberOf _ - * @alias eq - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize value comparisons. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. * @example * - * var object = { 'user': 'fred' }; - * var other = { 'user': 'fred' }; - * - * object == other; - * // => false + * _.drop([1, 2, 3]); + * // => [2, 3] * - * _.isEqual(object, other); - * // => true + * _.drop([1, 2, 3], 2); + * // => [3] * - * // using a customizer callback - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; + * _.drop([1, 2, 3], 5); + * // => [] * - * _.isEqual(array, other, function(value, other) { - * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) { - * return true; - * } - * }); - * // => true + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] */ - function isEqual(value, other, customizer, thisArg) { - customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined; - var result = customizer ? customizer(value, other) : undefined; - return result === undefined ? baseIsEqual(value, other, customizer) : !!result; + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); } /** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. + * Creates a slice of `array` with `n` elements dropped from the end. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. * @example * - * _.isError(new Error); - * // => true + * _.dropRight([1, 2, 3]); + * // => [1, 2] * - * _.isError(Error); - * // => false + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] */ - function isError(value) { - return isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag; + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); } /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on [`Number.isFinite`](http://ecma-international.org/ecma-262/6.0/#sec-number.isfinite). + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. * @example * - * _.isFinite(10); - * // => true + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; * - * _.isFinite('10'); - * // => false + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] * - * _.isFinite(true); - * // => false + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] * - * _.isFinite(Object(10)); - * // => false + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] * - * _.isFinite(Infinity); - * // => false + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; } /** - * Checks if `value` is classified as a `Function` object. + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. * @example * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return isObject(value) && objToString.call(value) == funcTag; - } - - /** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] * - * _.isObject({}); - * // => true + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] * - * _.isObject([1, 2, 3]); - * // => true + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] * - * _.isObject(1); - * // => false + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] */ - function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; } /** - * Performs a deep comparison between `object` and `source` to determine if - * `object` contains equivalent property values. If `customizer` is provided - * it is invoked to compare values. If `customizer` returns `undefined` - * comparisons are handled by the method instead. The `customizer` is bound - * to `thisArg` and invoked with three arguments: (value, other, index|key). + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. * - * **Note:** This method supports comparing properties of arrays, booleans, - * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions - * and DOM nodes are **not** supported. Provide a customizer function to extend - * support for comparing other values. + * **Note:** This method mutates `array`. * * @static * @memberOf _ - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize value comparisons. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. * @example * - * var object = { 'user': 'fred', 'age': 40 }; - * - * _.isMatch(object, { 'age': 40 }); - * // => true + * var array = [1, 2, 3]; * - * _.isMatch(object, { 'age': 36 }); - * // => false + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] * - * // using a customizer callback - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; + * _.fill(Array(3), 2); + * // => [2, 2, 2] * - * _.isMatch(object, source, function(value, other) { - * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined; - * }); - * // => true + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] */ - function isMatch(object, source, customizer, thisArg) { - customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined; - return baseIsMatch(object, getMatchData(source), customizer); + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); } /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is not the same as [`isNaN`](https://es5.github.io/#x15.1.2.4) - * which returns `true` for `undefined` and other non-numeric values. + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. * @example * - * _.isNaN(NaN); - * // => true + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; * - * _.isNaN(new Number(NaN)); - * // => true + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 * - * isNaN(undefined); - * // => true + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 * - * _.isNaN(undefined); - * // => false + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some host objects in IE. - return isNumber(value) && value != +value; + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); } /** - * Checks if `value` is a native function. + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, else `false`. + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. * @example * - * _.isNative(Array.prototype.push); - * // => true + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; * - * _.isNative(_); - * // => false + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 */ - function isNative(value) { - if (value == null) { - return false; + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; } - if (isFunction(value)) { - return reIsNative.test(fnToString.call(value)); + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); } - return isObjectLike(value) && reIsHostCtor.test(value); + return baseFindIndex(array, getIteratee(predicate, 3), index, true); } /** - * Checks if `value` is `null`. + * Flattens `array` a single level deep. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. * @example * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] */ - function isNull(value) { - return value === null; + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; } /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified - * as numbers, use the `_.isFinite` method. + * Recursively flattens `array`. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. * @example * - * _.isNumber(8.4); - * // => true - * - * _.isNumber(NaN); - * // => true - * - * _.isNumber('8.4'); - * // => false + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] */ - function isNumber(value) { - return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag); + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; } /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * **Note:** This method assumes objects created by the `Object` constructor - * have no inherited enumerable properties. + * Recursively flatten `array` up to `depth` times. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. * @example * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false + * var array = [1, [2, [3, [4]], 5]]; * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] * - * _.isPlainObject(Object.create(null)); - * // => true + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] */ - function isPlainObject(value) { - var Ctor; - - // Exit early for non `Object` objects. - if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isArguments(value)) || - (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { - return false; + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; } - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - var result; - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - baseForIn(value, function(subValue, key) { - result = key; - }); - return result === undefined || hasOwnProperty.call(value, result); + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); } /** - * Checks if `value` is classified as a `RegExp` object. + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. * @example * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } */ - function isRegExp(value) { - return isObject(value) && objToString.call(value) == regexpTag; + function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; } /** - * Checks if `value` is classified as a `String` primitive or object. + * Gets the first element of `array`. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. * @example * - * _.isString('abc'); - * // => true + * _.head([1, 2, 3]); + * // => 1 * - * _.isString(1); - * // => false + * _.head([]); + * // => undefined */ - function isString(value) { - return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag); + function head(array) { + return (array && array.length) ? array[0] : undefined; } /** - * Checks if `value` is classified as a typed array. + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. * @example * - * _.isTypedArray(new Uint8Array); - * // => true + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 * - * _.isTypedArray([]); - * // => false + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 */ - function isTypedArray(value) { - return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)]; + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); } /** - * Checks if `value` is `undefined`. + * Gets all but the last element of `array`. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. * @example * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false + * _.initial([1, 2, 3]); + * // => [1, 2] */ - function isUndefined(value) { - return value === undefined; + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; } /** - * Checks if `value` is less than `other`. + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, else `false`. + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. * @example * - * _.lt(1, 3); - * // => true - * - * _.lt(3, 3); - * // => false - * - * _.lt(3, 1); - * // => false + * _.intersection([2, 1], [2, 3]); + * // => [2] */ - function lt(value, other) { - return value < other; - } + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); /** - * Checks if `value` is less than or equal to `other`. + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than or equal to `other`, else `false`. + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. * @example * - * _.lte(1, 3); - * // => true - * - * _.lte(3, 3); - * // => true + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] * - * _.lte(3, 1); - * // => false + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] */ - function lte(value, other) { - return value <= other; - } + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); /** - * Converts `value` to an array. + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. * @example * - * (function() { - * return _.toArray(arguments).slice(1); - * }(1, 2, 3)); - * // => [2, 3] + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] */ - function toArray(value) { - var length = value ? getLength(value) : 0; - if (!isLength(length)) { - return values(value); - } - if (!length) { - return []; + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); } - return arrayCopy(value); - } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; + }); /** - * Converts `value` to a plain object flattening inherited enumerable - * properties of `value` to own properties of the plain object. + * Converts all elements in `array` into a string separated by `separator`. * * @static * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. * @example * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' */ - function toPlainObject(value) { - return baseCopy(value, keysIn(value)); + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); } - /*------------------------------------------------------------------------*/ - /** - * Recursively merges own enumerable properties of the source object(s), that - * don't resolve to `undefined` into the destination object. Subsequent sources - * overwrite property assignments of previous sources. If `customizer` is - * provided it is invoked to produce the merged values of the destination and - * source properties. If `customizer` returns `undefined` merging is handled - * by the method instead. The `customizer` is bound to `thisArg` and invoked - * with five arguments: (objectValue, sourceValue, key, object, source). + * Gets the last element of `array`. * * @static * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {Object} Returns `object`. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. * @example * - * var users = { - * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] - * }; - * - * var ages = { - * 'data': [{ 'age': 36 }, { 'age': 40 }] - * }; - * - * _.merge(users, ages); - * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } - * - * // using a customizer callback - * var object = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var other = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(object, other, function(a, b) { - * if (_.isArray(a)) { - * return a.concat(b); - * } - * }); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] } + * _.last([1, 2, 3]); + * // => 3 */ - var merge = createAssigner(baseMerge); + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources overwrite property assignments of previous sources. - * If `customizer` is provided it is invoked to produce the assigned values. - * The `customizer` is bound to `thisArg` and invoked with five arguments: - * (objectValue, sourceValue, key, object, source). - * - * **Note:** This method mutates `object` and is based on - * [`Object.assign`](http://ecma-international.org/ecma-262/6.0/#sec-object.assign). + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. * * @static * @memberOf _ - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {Object} Returns `object`. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. * @example * - * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' }); - * // => { 'user': 'fred', 'age': 40 } - * - * // using a customizer callback - * var defaults = _.partialRight(_.assign, function(value, other) { - * return _.isUndefined(value) ? other : value; - * }); + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 * - * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); - * // => { 'user': 'barney', 'age': 36 } + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 */ - var assign = createAssigner(function(object, source, customizer) { - return customizer - ? assignWith(object, source, customizer) - : baseAssign(object, source); - }); + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); + } /** - * Creates an object that inherits from the given `prototype` object. If a - * `properties` object is provided its own enumerable properties are assigned - * to the created object. + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. * * @static * @memberOf _ - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Object} Returns the new object. + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. * @example * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); + * var array = ['a', 'b', 'c', 'd']; * - * var circle = new Circle; - * circle instanceof Circle; - * // => true + * _.nth(array, 1); + * // => 'b' * - * circle instanceof Shape; - * // => true + * _.nth(array, -2); + * // => 'c'; */ - function create(prototype, properties, guard) { - var result = baseCreate(prototype); - if (guard && isIterateeCall(prototype, properties, guard)) { - properties = undefined; - } - return properties ? baseAssign(result, properties) : result; + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; } /** - * Assigns own enumerable properties of source object(s) to the destination - * object for all destination properties that resolve to `undefined`. Once a - * property is set, additional values of the same property are ignored. + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. * - * **Note:** This method mutates `object`. + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. * * @static * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. * @example * - * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); - * // => { 'user': 'barney', 'age': 36 } + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] */ - var defaults = createDefaults(assign, assignDefaults); + var pull = baseRest(pullAll); /** - * This method is like `_.defaults` except that it recursively assigns - * default properties. + * This method is like `_.pull` except that it accepts an array of values to remove. * - * **Note:** This method mutates `object`. + * **Note:** Unlike `_.difference`, this method mutates `array`. * * @static * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. * @example * - * _.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } }); - * // => { 'user': { 'name': 'barney', 'age': 36 } } + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] */ - var defaultsDeep = createDefaults(merge, mergeDefaults); + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; + } /** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {string|undefined} Returns the key of the matched element, else `undefined`. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. * @example * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(chr) { - * return chr.age < 40; - * }); - * // => 'barney' (iteration order is not guaranteed) - * - * // using the `_.matches` callback shorthand - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // using the `_.matchesProperty` callback shorthand - * _.findKey(users, 'active', false); - * // => 'fred' + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; * - * // using the `_.property` callback shorthand - * _.findKey(users, 'active'); - * // => 'barney' + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] */ - var findKey = createFindKey(baseForOwn); + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; + } /** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {string|undefined} Returns the key of the matched element, else `undefined`. + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. * @example * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(chr) { - * return chr.age < 40; - * }); - * // => returns `pebbles` assuming `_.findKey` returns `barney` - * - * // using the `_.matches` callback shorthand - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // using the `_.matchesProperty` callback shorthand - * _.findLastKey(users, 'active', false); - * // => 'fred' + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; * - * // using the `_.property` callback shorthand - * _.findLastKey(users, 'active'); - * // => 'pebbles' + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] */ - var findLastKey = createFindKey(baseForOwnRight); + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; + } /** - * Iterates over own and inherited enumerable properties of an object invoking - * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns `object`. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. * @example * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); * - * Foo.prototype.c = 3; + * console.log(array); + * // => ['a', 'c'] * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed) + * console.log(pulled); + * // => ['b', 'd'] */ - var forIn = createForIn(baseFor); + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; + }); /** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns `object`. + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. * @example * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); * - * Foo.prototype.c = 3; + * console.log(array); + * // => [1, 3] * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c' + * console.log(evens); + * // => [2, 4] */ - var forInRight = createForIn(baseForRight); + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } /** - * Iterates over own enumerable properties of an object invoking `iteratee` - * for each property. The `iteratee` is bound to `thisArg` and invoked with - * three arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns `object`. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. * @example * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } + * var array = [1, 2, 3]; * - * Foo.prototype.c = 3; + * _.reverse(array); + * // => [3, 2, 1] * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => logs 'a' and 'b' (iteration order is not guaranteed) + * console.log(array); + * // => [3, 2, 1] */ - var forOwn = createForOwn(baseForOwn); + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } /** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns `object`. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } + * Creates a slice of `array` from `start` up to, but not including, `end`. * - * Foo.prototype.c = 3; + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b' + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. */ - var forOwnRight = createForOwn(baseForOwnRight); + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); + } /** - * Creates an array of function property names from all enumerable properties, - * own and inherited, of `object`. + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. * * @static * @memberOf _ - * @alias methods - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the new array of property names. + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. * @example * - * _.functions(_); - * // => ['after', 'ary', 'assign', ...] + * _.sortedIndex([30, 50], 40); + * // => 1 */ - function functions(object) { - return baseFunctions(object, keysIn(object)); + function sortedIndex(array, value) { + return baseSortedIndex(array, value); } /** - * Gets the property value at `path` of `object`. If the resolved value is - * `undefined` the `defaultValue` is used in its place. + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned if the resolved value is `undefined`. - * @returns {*} Returns the resolved value. + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. * @example * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 + * var objects = [{ 'x': 4 }, { 'x': 5 }]; * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 */ - function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, toPath(path), path + ''); - return result === undefined ? defaultValue : result; + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); } /** - * Checks if `path` is a direct property. + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` is a direct property, else `false`. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. * @example * - * var object = { 'a': { 'b': { 'c': 3 } } }; - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b.c'); - * // => true - * - * _.has(object, ['a', 'b', 'c']); - * // => true + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 */ - function has(object, path) { - if (object == null) { - return false; - } - var result = hasOwnProperty.call(object, path); - if (!result && !isKey(path)) { - path = toPath(path); - object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); - if (object == null) { - return false; + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; } - path = last(path); - result = hasOwnProperty.call(object, path); } - return result || (isLength(object.length) && isIndex(path, object.length) && - (isArray(object) || isArguments(object))); + return -1; } /** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite property - * assignments of previous values unless `multiValue` is `true`. + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to invert. - * @param {boolean} [multiValue] Allow multiple values per key. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Object} Returns the new inverted object. + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. * @example * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - * - * // with `multiValue` - * _.invert(object, true); - * // => { '1': ['a', 'c'], '2': ['b'] } + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 */ - function invert(object, multiValue, guard) { - if (guard && isIterateeCall(object, multiValue, guard)) { - multiValue = undefined; - } - var index = -1, - props = keys(object), - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index], - value = object[key]; - - if (multiValue) { - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - } - else { - result[value] = key; - } - } - return result; + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); } /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) - * for more details. + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. * @example * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; + * var objects = [{ 'x': 4 }, { 'x': 5 }]; * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 * - * _.keys('hi'); - * // => ['0', '1'] + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 */ - var keys = !nativeKeys ? shimKeys : function(object) { - var Ctor = object == null ? undefined : object.constructor; - if ((typeof Ctor == 'function' && Ctor.prototype === object) || - (typeof object != 'function' && isArrayLike(object))) { - return shimKeys(object); - } - return isObject(object) ? nativeKeys(object) : []; - }; + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + } /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. * @example * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 */ - function keysIn(object) { - if (object == null) { - return []; - } - if (!isObject(object)) { - object = Object(object); - } - var length = object.length; - length = (length && isLength(length) && - (isArray(object) || isArguments(object)) && length) || 0; - - var Ctor = object.constructor, - index = -1, - isProto = typeof Ctor == 'function' && Ctor.prototype === object, - result = Array(length), - skipIndexes = length > 0; - - while (++index < length) { - result[index] = (index + ''); - } - for (var key in object) { - if (!(skipIndexes && isIndex(key, length)) && - !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; } } - return result; + return -1; } /** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * property of `object` through `iteratee`. + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the new mapped object. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. * @example * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] */ - var mapKeys = createObjectMapper(true); + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; + } /** - * Creates an object with the same keys as `object` and values generated by - * running each own enumerable property of `object` through `iteratee`. The - * iteratee function is bound to `thisArg` and invoked with three arguments: - * (value, key, object). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the new mapped object. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. * @example * - * _.mapValues({ 'a': 1, 'b': 2 }, function(n) { - * return n * 3; - * }); - * // => { 'a': 3, 'b': 6 } + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; + } + + /** + * Gets all but the first element of `array`. * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example * - * // using the `_.property` callback shorthand - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * _.tail([1, 2, 3]); + * // => [2, 3] */ - var mapValues = createObjectMapper(); + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable properties of `object` that are not omitted. + * Creates a slice of `array` with `n` elements taken from the beginning. * * @static * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {Function|...(string|string[])} [predicate] The function invoked per - * iteration or property names to omit, specified as individual property - * names or arrays of property names. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Object} Returns the new object. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. * @example * - * var object = { 'user': 'fred', 'age': 40 }; + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] * - * _.omit(object, 'age'); - * // => { 'user': 'fred' } + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] * - * _.omit(object, _.isNumber); - * // => { 'user': 'fred' } + * _.take([1, 2, 3], 0); + * // => [] */ - var omit = restParam(function(object, props) { - if (object == null) { - return {}; - } - if (typeof props[0] != 'function') { - var props = arrayMap(baseFlatten(props), String); - return pickByArray(object, baseDifference(keysIn(object), props)); + function take(array, n, guard) { + if (!(array && array.length)) { + return []; } - var predicate = bindCallback(props[0], props[1], 3); - return pickByCallback(object, function(value, key, object) { - return !predicate(value, key, object); - }); - }); + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); + } /** - * Creates a two dimensional array of the key-value pairs for `object`, - * e.g. `[[key1, value1], [key2, value2]]`. + * Creates a slice of `array` with `n` elements taken from the end. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the new array of key-value pairs. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. * @example * - * _.pairs({ 'barney': 36, 'fred': 40 }); - * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed) + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] */ - function pairs(object) { - object = toObject(object); - - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - var key = props[index]; - result[index] = [key, object[key]]; + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; } - return result; + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); } /** - * Creates an object composed of the picked `object` properties. Property - * names may be specified as individual arguments or as arrays of property - * names. If `predicate` is provided it is invoked for each property of `object` - * picking the properties `predicate` returns truthy for. The predicate is - * bound to `thisArg` and invoked with three arguments: (value, key, object). + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). * * @static * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {Function|...(string|string[])} [predicate] The function invoked per - * iteration or property names to pick, specified as individual property - * names or arrays of property names. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Object} Returns the new object. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. * @example * - * var object = { 'user': 'fred', 'age': 40 }; + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] * - * _.pick(object, 'user'); - * // => { 'user': 'fred' } + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] * - * _.pick(object, _.isString); - * // => { 'user': 'fred' } + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] */ - var pick = restParam(function(object, props) { - if (object == null) { - return {}; - } - return typeof props[0] == 'function' - ? pickByCallback(object, bindCallback(props[0], props[1], 3)) - : pickByArray(object, baseFlatten(props)); - }); + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; + } /** - * This method is like `_.get` except that if the resolved value is a function - * it is invoked with the `this` binding of its parent object and its result - * is returned. + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned if the resolved value is `undefined`. - * @returns {*} Returns the resolved value. + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. * @example * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; * - * _.result(object, 'a[0].b.c1'); - * // => 3 + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] * - * _.result(object, 'a[0].b.c2'); - * // => 4 + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] * - * _.result(object, 'a.b.c', 'default'); - * // => 'default' + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] * - * _.result(object, 'a.b.c', _.constant('default')); - * // => 'default' + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] */ - function result(object, path, defaultValue) { - var result = object == null ? undefined : object[path]; - if (result === undefined) { - if (object != null && !isKey(path, object)) { - path = toPath(path); - object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); - result = object == null ? undefined : object[last(path)]; - } - result = result === undefined ? defaultValue : result; - } - return isFunction(result) ? result.call(object) : result; + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; } /** - * Sets the property value of `path` on `object`. If a portion of `path` - * does not exist it is created. + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to augment. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @returns {Object} Returns `object`. + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. * @example * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.set(object, 'a[0].b.c', 4); - * console.log(object.a[0].b.c); - * // => 4 - * - * _.set(object, 'x[0].y.z', 5); - * console.log(object.x[0].y.z); - * // => 5 + * _.union([2], [1, 2]); + * // => [2, 1] */ - function set(object, path, value) { - if (object == null) { - return object; - } - var pathKey = (path + ''); - path = (object[pathKey] != null || isKey(path, object)) ? [pathKey] : toPath(path); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = path[index]; - if (isObject(nested)) { - if (index == lastIndex) { - nested[key] = value; - } else if (nested[key] == null) { - nested[key] = isIndex(path[index + 1]) ? [] : {}; - } - } - nested = nested[key]; - } - return object; - } + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); /** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own enumerable - * properties through `iteratee`, with each invocation potentially mutating - * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked - * with four arguments: (accumulator, value, key, object). Iteratee functions - * may exit iteration early by explicitly returning `false`. + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). * * @static * @memberOf _ - * @category Object - * @param {Array|Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {*} Returns the accumulated value. + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. * @example * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }); - * // => [4, 9] + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] * - * _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) { - * result[key] = n * 3; - * }); - * // => { 'a': 3, 'b': 6 } + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] */ - function transform(object, iteratee, accumulator, thisArg) { - var isArr = isArray(object) || isTypedArray(object); - iteratee = getCallback(iteratee, thisArg, 4); - - if (accumulator == null) { - if (isArr || isObject(object)) { - var Ctor = object.constructor; - if (isArr) { - accumulator = isArray(object) ? new Ctor : []; - } else { - accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined); - } - } else { - accumulator = {}; - } + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; } - (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; - } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); /** - * Creates an array of the own enumerable property values of `object`. - * - * **Note:** Non-object values are coerced to objects. + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. * @example * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; * - * Foo.prototype.c = 3; + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example * - * _.values('hi'); - * // => ['h', 'i'] + * _.uniq([2, 1, 2]); + * // => [2, 1] */ - function values(object) { - return baseValues(object, keys(object)); + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; } /** - * Creates an array of the own and inherited enumerable property values - * of `object`. - * - * **Note:** Non-object values are coerced to objects. + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). * * @static * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. * @example * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] * - * _.valuesIn(new Foo); - * // => [1, 2, 3] (iteration order is not guaranteed) + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] */ - function valuesIn(object) { - return baseValues(object, keysIn(object)); + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; } - /*------------------------------------------------------------------------*/ - /** - * Checks if `n` is between `start` and up to but not including, `end`. If - * `end` is not specified it is set to `start` with `start` then set to `0`. + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). * * @static * @memberOf _ - * @category Number - * @param {number} n The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `n` is in the range, else `false`. + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. * @example * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; * - * _.inRange(4, 2); - * // => false + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. * - * _.inRange(2, 2); - * // => false + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example * - * _.inRange(1.2, 2); - * // => true + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] * - * _.inRange(5.2, 4); - * // => false + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] */ - function inRange(value, start, end) { - start = +start || 0; - if (end === undefined) { - end = start; - start = 0; - } else { - end = +end || 0; + function unzip(array) { + if (!(array && array.length)) { + return []; } - return value >= nativeMin(start, end) && value < nativeMax(start, end); + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); } /** - * Produces a random number between `min` and `max` (inclusive). If only one - * argument is provided a number between `0` and the given number is returned. - * If `floating` is `true`, or either `min` or `max` are floats, a floating-point - * number is returned instead of an integer. + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). * * @static * @memberOf _ - * @category Number - * @param {number} [min=0] The minimum possible value. - * @param {number} [max=1] The maximum possible value. - * @param {boolean} [floating] Specify returning a floating-point number. - * @returns {number} Returns the random number. + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. * @example * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(min, max, floating) { - if (floating && isIterateeCall(min, max, floating)) { - max = floating = undefined; - } - var noMin = min == null, - noMax = max == null; - - if (floating == null) { - if (noMax && typeof min == 'boolean') { - floating = min; - min = 1; - } - else if (typeof max == 'boolean') { - floating = max; - noMax = true; - } - } - if (noMin && noMax) { - max = 1; - noMax = false; - } - min = +min || 0; - if (noMax) { - max = min; - min = 0; - } else { - max = +max || 0; + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; } - if (floating || min % 1 || max % 1) { - var rand = nativeRandom(); - return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max); + var result = unzip(array); + if (iteratee == null) { + return result; } - return baseRandom(min, max); + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); } - /*------------------------------------------------------------------------*/ - /** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor * @example * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar'); - * // => 'fooBar' - * - * _.camelCase('__foo_bar__'); - * // => 'fooBar' + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word); + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; }); /** - * Capitalizes the first character of `string`. + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without * @example * - * _.capitalize('fred'); - * // => 'Fred' + * _.xor([2, 1], [2, 3]); + * // => [1, 3] */ - function capitalize(string) { - string = baseToString(string); - return string && (string.charAt(0).toUpperCase() + string.slice(1)); - } + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); /** - * Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * to basic latin letters and removing [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. * @example * - * _.deburr('déjà vu'); - * // => 'deja vu' + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] */ - function deburr(string) { - string = baseToString(string); - return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, ''); - } + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); /** - * Checks if `string` ends with the given target string. + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to search. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search from. - * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`. + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. * @example * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; * - * _.endsWith('abc', 'b', 2); - * // => true + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] */ - function endsWith(string, target, position) { - string = baseToString(string); - target = (target + ''); - - var length = string.length; - position = position === undefined - ? length - : nativeMin(position < 0 ? 0 : (+position || 0), length); - - position -= target.length; - return position >= 0 && string.indexOf(target, position) == position; - } + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); + }); /** - * Converts the characters "&", "<", ">", '"', "'", and "\`", in `string` to - * their corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional characters - * use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. - * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * Backticks are escaped because in Internet Explorer < 9, they can break out - * of attribute values or HTML comments. See [#59](https://html5sec.org/#59), - * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and - * [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/) - * for more details. - * - * When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping) - * to reduce XSS vectors. + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. * @example * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] */ - function escape(string) { - // Reset `lastIndex` because in IE < 9 `String#replace` does not. - string = baseToString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } + var zip = baseRest(unzip); /** - * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?", - * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`. + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. * @example * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https:\/\/lodash\.com\/\)' + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } */ - function escapeRegExp(string) { - string = baseToString(string); - return (string && reHasRegExpChars.test(string)) - ? string.replace(reRegExpChars, escapeRegExpChar) - : (string || '(?:)'); + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); } /** - * Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * This method is like `_.zipObject` except that it supports property paths. * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. * @example * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__foo_bar__'); - * // => 'foo-bar' + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } */ - var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); - }); + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); + } /** - * Pads `string` on the left and right sides if it's shorter than `length`. - * Padding characters are truncated if they can't be evenly divided by `length`. + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. * @example * - * _.pad('abc', 8); - * // => ' abc ' - * - * _.pad('abc', 8, '_-'); - * // => '_-abc_-_' - * - * _.pad('abc', 3); - * // => 'abc' + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] */ - function pad(string, length, chars) { - string = baseToString(string); - length = +length; + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; - var strLength = string.length; - if (strLength >= length || !nativeIsFinite(length)) { - return string; - } - var mid = (length - strLength) / 2, - leftLength = nativeFloor(mid), - rightLength = nativeCeil(mid); + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); + }); - chars = createPadding('', rightLength, chars); - return chars.slice(0, leftLength) + string + chars; - } + /*------------------------------------------------------------------------*/ /** - * Pads `string` on the left side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. * @example * - * _.padLeft('abc', 6); - * // => ' abc' - * - * _.padLeft('abc', 6, '_-'); - * // => '_-_abc' + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; * - * _.padLeft('abc', 3); - * // => 'abc' + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' */ - var padLeft = createPadDir(); + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } /** - * Pads `string` on the right side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. * * @static * @memberOf _ - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. * @example * - * _.padRight('abc', 6); - * // => 'abc ' - * - * _.padRight('abc', 6, '_-'); - * // => 'abc_-_' - * - * _.padRight('abc', 3); - * // => 'abc' + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] */ - var padRight = createPadDir(true); + function tap(value, interceptor) { + interceptor(value); + return value; + } /** - * Converts `string` to an integer of the specified radix. If `radix` is - * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal, - * in which case a `radix` of `16` is used. - * - * **Note:** This method aligns with the [ES5 implementation](https://es5.github.io/#E) - * of `parseInt`. + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. * * @static * @memberOf _ - * @category String - * @param {string} string The string to convert. - * @param {number} [radix] The radix to interpret `value` by. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {number} Returns the converted integer. + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. * @example * - * _.parseInt('08'); - * // => 8 - * - * _.map(['6', '08', '10'], _.parseInt); - * // => [6, 8, 10] + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] */ - function parseInt(string, radix, guard) { - // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`. - // Chrome fails to trim leading whitespace characters. - // See https://code.google.com/p/v8/issues/detail?id=3109 for more details. - if (guard ? isIterateeCall(string, radix, guard) : radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - string = trim(string); - return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10)); + function thru(value, interceptor) { + return interceptor(value); } /** - * Repeats the given string `n` times. + * This method is the wrapper version of `_.at`. * - * @static + * @name at * @memberOf _ - * @category String - * @param {string} [string=''] The string to repeat. - * @param {number} [n=0] The number of times to repeat the string. - * @returns {string} Returns the repeated string. + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. * @example * - * _.repeat('*', 3); - * // => '***' - * - * _.repeat('abc', 2); - * // => 'abcabc' + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; * - * _.repeat('abc', 0); - * // => '' + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] */ - function repeat(string, n) { - var result = ''; - string = baseToString(string); - n = +n; - if (n < 1 || !string || !nativeIsFinite(n)) { - return result; + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); } - n = nativeFloor(n / 2); - string += string; - } while (n); - - return result; - } + return array; + }); + }); /** - * Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case). + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. * - * @static + * @name chain * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the snake cased string. + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. * @example * - * _.snakeCase('Foo Bar'); - * // => 'foo_bar' + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; * - * _.snakeCase('fooBar'); - * // => 'foo_bar' + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } * - * _.snakeCase('--foo-bar'); - * // => 'foo_bar' + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } */ - var snakeCase = createCompounder(function(result, word, index) { - return result + (index ? '_' : '') + word.toLowerCase(); - }); + function wrapperChain() { + return chain(this); + } /** - * Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * Executes the chain sequence and returns the wrapped result. * - * @static + * @name commit * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. * @example * - * _.startCase('--foo-bar'); - * // => 'Foo Bar' + * var array = [1, 2]; + * var wrapped = _(array).push(3); * - * _.startCase('fooBar'); - * // => 'Foo Bar' + * console.log(array); + * // => [1, 2] * - * _.startCase('__foo_bar__'); - * // => 'Foo Bar' + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] */ - var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1)); - }); + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } /** - * Checks if `string` starts with the given target string. + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). * - * @static + * @name next * @memberOf _ - * @category String - * @param {string} [string=''] The string to search. - * @param {string} [target] The string to search for. - * @param {number} [position=0] The position to search from. - * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`. + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. * @example * - * _.startsWith('abc', 'a'); - * // => true + * var wrapped = _([1, 2]); * - * _.startsWith('abc', 'b'); - * // => false + * wrapped.next(); + * // => { 'done': false, 'value': 1 } * - * _.startsWith('abc', 'b', 1); - * // => true + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } */ - function startsWith(string, target, position) { - string = baseToString(string); - position = position == null - ? 0 - : nativeMin(position < 0 ? 0 : (+position || 0), string.length); + function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; - return string.lastIndexOf(target, position) == position; + return { 'done': done, 'value': value }; } /** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is provided it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for easier debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * Enables the wrapper to be iterable. * - * @static + * @name Symbol.iterator * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options] The options object. - * @param {RegExp} [options.escape] The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate] The "evaluate" delimiter. - * @param {Object} [options.imports] An object to import into the template as free variables. - * @param {RegExp} [options.interpolate] The "interpolate" delimiter. - * @param {string} [options.sourceURL] The sourceURL of the template's compiled source. - * @param {string} [options.variable] The data object variable name. - * @param- {Object} [otherOptions] Enables the legacy `options` param signature. - * @returns {Function} Returns the compiled template function. + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. * @example * - * // using the "interpolate" delimiter to create a compiled template - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // using the HTML "escape" delimiter to escape data property values - * var compiled = _.template('<%- value %>'); - * compiled({ 'value': '