@vue/compiler-vapor 3.6.0-alpha.7 → 3.6.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compiler-vapor.cjs.js +214 -47
- package/dist/compiler-vapor.d.ts +4 -0
- package/dist/compiler-vapor.esm-browser.js +2531 -276
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vue/compiler-vapor v3.6.0-
|
|
2
|
+
* @vue/compiler-vapor v3.6.0-beta.2
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
5
|
**/
|
|
@@ -21,7 +21,7 @@ const remove = (arr, el) => {
|
|
|
21
21
|
arr.splice(i, 1);
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
|
-
const isArray = Array.isArray;
|
|
24
|
+
const isArray$1 = Array.isArray;
|
|
25
25
|
const isString = (val) => typeof val === "string";
|
|
26
26
|
const isBuiltInDirective = /* @__PURE__ */ makeMap(
|
|
27
27
|
"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
|
|
@@ -66,10 +66,12 @@ const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,asi
|
|
|
66
66
|
const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
|
|
67
67
|
const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics";
|
|
68
68
|
const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
|
|
69
|
+
const FORMATTING_TAGS = "a,b,big,code,em,font,i,nobr,s,small,strike,strong,tt,u";
|
|
69
70
|
const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
|
|
70
71
|
const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
|
|
71
72
|
const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);
|
|
72
73
|
const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
|
|
74
|
+
const isFormattingTag = /* @__PURE__ */ makeMap(FORMATTING_TAGS);
|
|
73
75
|
|
|
74
76
|
function shouldSetAsAttr(tagName, key) {
|
|
75
77
|
if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
|
|
@@ -133,10 +135,10 @@ function escapeHtml(string) {
|
|
|
133
135
|
return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
|
|
134
136
|
}
|
|
135
137
|
|
|
136
|
-
const TELEPORT = Symbol(`Teleport` );
|
|
137
|
-
const SUSPENSE = Symbol(`Suspense` );
|
|
138
|
-
const KEEP_ALIVE = Symbol(`KeepAlive` );
|
|
139
|
-
const BASE_TRANSITION = Symbol(
|
|
138
|
+
const TELEPORT = /* @__PURE__ */ Symbol(`Teleport` );
|
|
139
|
+
const SUSPENSE = /* @__PURE__ */ Symbol(`Suspense` );
|
|
140
|
+
const KEEP_ALIVE = /* @__PURE__ */ Symbol(`KeepAlive` );
|
|
141
|
+
const BASE_TRANSITION = /* @__PURE__ */ Symbol(
|
|
140
142
|
`BaseTransition`
|
|
141
143
|
);
|
|
142
144
|
function registerRuntimeHelpers(helpers) {
|
|
@@ -175,81 +177,2098 @@ function createSimpleExpression(content, isStatic = false, loc = locStub, constT
|
|
|
175
177
|
};
|
|
176
178
|
}
|
|
177
179
|
|
|
178
|
-
//
|
|
179
|
-
var
|
|
180
|
-
|
|
181
|
-
"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
181
|
+
var _a;
|
|
182
|
+
const decodeMap = new Map([
|
|
183
|
+
[0, 65533],
|
|
184
|
+
// C1 Unicode control character reference replacements
|
|
185
|
+
[128, 8364],
|
|
186
|
+
[130, 8218],
|
|
187
|
+
[131, 402],
|
|
188
|
+
[132, 8222],
|
|
189
|
+
[133, 8230],
|
|
190
|
+
[134, 8224],
|
|
191
|
+
[135, 8225],
|
|
192
|
+
[136, 710],
|
|
193
|
+
[137, 8240],
|
|
194
|
+
[138, 352],
|
|
195
|
+
[139, 8249],
|
|
196
|
+
[140, 338],
|
|
197
|
+
[142, 381],
|
|
198
|
+
[145, 8216],
|
|
199
|
+
[146, 8217],
|
|
200
|
+
[147, 8220],
|
|
201
|
+
[148, 8221],
|
|
202
|
+
[149, 8226],
|
|
203
|
+
[150, 8211],
|
|
204
|
+
[151, 8212],
|
|
205
|
+
[152, 732],
|
|
206
|
+
[153, 8482],
|
|
207
|
+
[154, 353],
|
|
208
|
+
[155, 8250],
|
|
209
|
+
[156, 339],
|
|
210
|
+
[158, 382],
|
|
211
|
+
[159, 376],
|
|
212
|
+
]);
|
|
213
|
+
/**
|
|
214
|
+
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
215
|
+
*/
|
|
216
|
+
const fromCodePoint =
|
|
217
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
218
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
|
|
219
|
+
let output = "";
|
|
220
|
+
if (codePoint > 65535) {
|
|
221
|
+
codePoint -= 65536;
|
|
222
|
+
output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
|
|
223
|
+
codePoint = 56320 | (codePoint & 1023);
|
|
224
|
+
}
|
|
225
|
+
output += String.fromCharCode(codePoint);
|
|
226
|
+
return output;
|
|
227
|
+
});
|
|
228
|
+
/**
|
|
229
|
+
* Replace the given code point with a replacement character if it is a
|
|
230
|
+
* surrogate or is outside the valid range. Otherwise return the code
|
|
231
|
+
* point unchanged.
|
|
232
|
+
*/
|
|
233
|
+
function replaceCodePoint(codePoint) {
|
|
234
|
+
var _a;
|
|
235
|
+
if ((codePoint >= 55296 && codePoint <= 57343) ||
|
|
236
|
+
codePoint > 1114111) {
|
|
237
|
+
return 65533;
|
|
238
|
+
}
|
|
239
|
+
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
var global$1 = (typeof global !== "undefined" ? global :
|
|
243
|
+
typeof self !== "undefined" ? self :
|
|
244
|
+
typeof window !== "undefined" ? window : {});
|
|
245
|
+
|
|
246
|
+
var lookup = [];
|
|
247
|
+
var revLookup = [];
|
|
248
|
+
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
|
|
249
|
+
var inited = false;
|
|
250
|
+
function init () {
|
|
251
|
+
inited = true;
|
|
252
|
+
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
253
|
+
for (var i = 0, len = code.length; i < len; ++i) {
|
|
254
|
+
lookup[i] = code[i];
|
|
255
|
+
revLookup[code.charCodeAt(i)] = i;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
revLookup['-'.charCodeAt(0)] = 62;
|
|
259
|
+
revLookup['_'.charCodeAt(0)] = 63;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function toByteArray (b64) {
|
|
263
|
+
if (!inited) {
|
|
264
|
+
init();
|
|
265
|
+
}
|
|
266
|
+
var i, j, l, tmp, placeHolders, arr;
|
|
267
|
+
var len = b64.length;
|
|
268
|
+
|
|
269
|
+
if (len % 4 > 0) {
|
|
270
|
+
throw new Error('Invalid string. Length must be a multiple of 4')
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// the number of equal signs (place holders)
|
|
274
|
+
// if there are two placeholders, than the two characters before it
|
|
275
|
+
// represent one byte
|
|
276
|
+
// if there is only one, then the three characters before it represent 2 bytes
|
|
277
|
+
// this is just a cheap hack to not do indexOf twice
|
|
278
|
+
placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;
|
|
279
|
+
|
|
280
|
+
// base64 is 4/3 + up to two characters of the original data
|
|
281
|
+
arr = new Arr(len * 3 / 4 - placeHolders);
|
|
282
|
+
|
|
283
|
+
// if there are placeholders, only get up to the last complete 4 chars
|
|
284
|
+
l = placeHolders > 0 ? len - 4 : len;
|
|
285
|
+
|
|
286
|
+
var L = 0;
|
|
287
|
+
|
|
288
|
+
for (i = 0, j = 0; i < l; i += 4, j += 3) {
|
|
289
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];
|
|
290
|
+
arr[L++] = (tmp >> 16) & 0xFF;
|
|
291
|
+
arr[L++] = (tmp >> 8) & 0xFF;
|
|
292
|
+
arr[L++] = tmp & 0xFF;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
if (placeHolders === 2) {
|
|
296
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);
|
|
297
|
+
arr[L++] = tmp & 0xFF;
|
|
298
|
+
} else if (placeHolders === 1) {
|
|
299
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);
|
|
300
|
+
arr[L++] = (tmp >> 8) & 0xFF;
|
|
301
|
+
arr[L++] = tmp & 0xFF;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return arr
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function tripletToBase64 (num) {
|
|
308
|
+
return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
function encodeChunk (uint8, start, end) {
|
|
312
|
+
var tmp;
|
|
313
|
+
var output = [];
|
|
314
|
+
for (var i = start; i < end; i += 3) {
|
|
315
|
+
tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
|
|
316
|
+
output.push(tripletToBase64(tmp));
|
|
317
|
+
}
|
|
318
|
+
return output.join('')
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
function fromByteArray (uint8) {
|
|
322
|
+
if (!inited) {
|
|
323
|
+
init();
|
|
324
|
+
}
|
|
325
|
+
var tmp;
|
|
326
|
+
var len = uint8.length;
|
|
327
|
+
var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
|
|
328
|
+
var output = '';
|
|
329
|
+
var parts = [];
|
|
330
|
+
var maxChunkLength = 16383; // must be multiple of 3
|
|
331
|
+
|
|
332
|
+
// go through the array every three bytes, we'll deal with trailing stuff later
|
|
333
|
+
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
|
334
|
+
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// pad the end with zeros, but make sure to not forget the extra bytes
|
|
338
|
+
if (extraBytes === 1) {
|
|
339
|
+
tmp = uint8[len - 1];
|
|
340
|
+
output += lookup[tmp >> 2];
|
|
341
|
+
output += lookup[(tmp << 4) & 0x3F];
|
|
342
|
+
output += '==';
|
|
343
|
+
} else if (extraBytes === 2) {
|
|
344
|
+
tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);
|
|
345
|
+
output += lookup[tmp >> 10];
|
|
346
|
+
output += lookup[(tmp >> 4) & 0x3F];
|
|
347
|
+
output += lookup[(tmp << 2) & 0x3F];
|
|
348
|
+
output += '=';
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
parts.push(output);
|
|
352
|
+
|
|
353
|
+
return parts.join('')
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
function read (buffer, offset, isLE, mLen, nBytes) {
|
|
357
|
+
var e, m;
|
|
358
|
+
var eLen = nBytes * 8 - mLen - 1;
|
|
359
|
+
var eMax = (1 << eLen) - 1;
|
|
360
|
+
var eBias = eMax >> 1;
|
|
361
|
+
var nBits = -7;
|
|
362
|
+
var i = isLE ? (nBytes - 1) : 0;
|
|
363
|
+
var d = isLE ? -1 : 1;
|
|
364
|
+
var s = buffer[offset + i];
|
|
365
|
+
|
|
366
|
+
i += d;
|
|
367
|
+
|
|
368
|
+
e = s & ((1 << (-nBits)) - 1);
|
|
369
|
+
s >>= (-nBits);
|
|
370
|
+
nBits += eLen;
|
|
371
|
+
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
|
372
|
+
|
|
373
|
+
m = e & ((1 << (-nBits)) - 1);
|
|
374
|
+
e >>= (-nBits);
|
|
375
|
+
nBits += mLen;
|
|
376
|
+
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
|
377
|
+
|
|
378
|
+
if (e === 0) {
|
|
379
|
+
e = 1 - eBias;
|
|
380
|
+
} else if (e === eMax) {
|
|
381
|
+
return m ? NaN : ((s ? -1 : 1) * Infinity)
|
|
382
|
+
} else {
|
|
383
|
+
m = m + Math.pow(2, mLen);
|
|
384
|
+
e = e - eBias;
|
|
385
|
+
}
|
|
386
|
+
return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
function write (buffer, value, offset, isLE, mLen, nBytes) {
|
|
390
|
+
var e, m, c;
|
|
391
|
+
var eLen = nBytes * 8 - mLen - 1;
|
|
392
|
+
var eMax = (1 << eLen) - 1;
|
|
393
|
+
var eBias = eMax >> 1;
|
|
394
|
+
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);
|
|
395
|
+
var i = isLE ? 0 : (nBytes - 1);
|
|
396
|
+
var d = isLE ? 1 : -1;
|
|
397
|
+
var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
|
|
398
|
+
|
|
399
|
+
value = Math.abs(value);
|
|
400
|
+
|
|
401
|
+
if (isNaN(value) || value === Infinity) {
|
|
402
|
+
m = isNaN(value) ? 1 : 0;
|
|
403
|
+
e = eMax;
|
|
404
|
+
} else {
|
|
405
|
+
e = Math.floor(Math.log(value) / Math.LN2);
|
|
406
|
+
if (value * (c = Math.pow(2, -e)) < 1) {
|
|
407
|
+
e--;
|
|
408
|
+
c *= 2;
|
|
409
|
+
}
|
|
410
|
+
if (e + eBias >= 1) {
|
|
411
|
+
value += rt / c;
|
|
412
|
+
} else {
|
|
413
|
+
value += rt * Math.pow(2, 1 - eBias);
|
|
414
|
+
}
|
|
415
|
+
if (value * c >= 2) {
|
|
416
|
+
e++;
|
|
417
|
+
c /= 2;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
if (e + eBias >= eMax) {
|
|
421
|
+
m = 0;
|
|
422
|
+
e = eMax;
|
|
423
|
+
} else if (e + eBias >= 1) {
|
|
424
|
+
m = (value * c - 1) * Math.pow(2, mLen);
|
|
425
|
+
e = e + eBias;
|
|
426
|
+
} else {
|
|
427
|
+
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
|
|
428
|
+
e = 0;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
|
|
433
|
+
|
|
434
|
+
e = (e << mLen) | m;
|
|
435
|
+
eLen += mLen;
|
|
436
|
+
for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
|
|
437
|
+
|
|
438
|
+
buffer[offset + i - d] |= s * 128;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
var toString = {}.toString;
|
|
442
|
+
|
|
443
|
+
var isArray = Array.isArray || function (arr) {
|
|
444
|
+
return toString.call(arr) == '[object Array]';
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
/*!
|
|
448
|
+
* The buffer module from node.js, for the browser.
|
|
449
|
+
*
|
|
450
|
+
* @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
|
|
451
|
+
* @license MIT
|
|
452
|
+
*/
|
|
453
|
+
/* eslint-disable no-proto */
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
var INSPECT_MAX_BYTES = 50;
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* If `Buffer.TYPED_ARRAY_SUPPORT`:
|
|
460
|
+
* === true Use Uint8Array implementation (fastest)
|
|
461
|
+
* === false Use Object implementation (most compatible, even IE6)
|
|
462
|
+
*
|
|
463
|
+
* Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
|
|
464
|
+
* Opera 11.6+, iOS 4.2+.
|
|
465
|
+
*
|
|
466
|
+
* Due to various browser bugs, sometimes the Object implementation will be used even
|
|
467
|
+
* when the browser supports typed arrays.
|
|
468
|
+
*
|
|
469
|
+
* Note:
|
|
470
|
+
*
|
|
471
|
+
* - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
|
|
472
|
+
* See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
|
|
473
|
+
*
|
|
474
|
+
* - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
|
|
475
|
+
*
|
|
476
|
+
* - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
|
|
477
|
+
* incorrect length in some situations.
|
|
478
|
+
|
|
479
|
+
* We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
|
|
480
|
+
* get the Object implementation, which is slower but behaves correctly.
|
|
481
|
+
*/
|
|
482
|
+
Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined
|
|
483
|
+
? global$1.TYPED_ARRAY_SUPPORT
|
|
484
|
+
: true;
|
|
485
|
+
|
|
486
|
+
/*
|
|
487
|
+
* Export kMaxLength after typed array support is determined.
|
|
488
|
+
*/
|
|
489
|
+
kMaxLength();
|
|
490
|
+
|
|
491
|
+
function kMaxLength () {
|
|
492
|
+
return Buffer.TYPED_ARRAY_SUPPORT
|
|
493
|
+
? 0x7fffffff
|
|
494
|
+
: 0x3fffffff
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
function createBuffer (that, length) {
|
|
498
|
+
if (kMaxLength() < length) {
|
|
499
|
+
throw new RangeError('Invalid typed array length')
|
|
500
|
+
}
|
|
501
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
502
|
+
// Return an augmented `Uint8Array` instance, for best performance
|
|
503
|
+
that = new Uint8Array(length);
|
|
504
|
+
that.__proto__ = Buffer.prototype;
|
|
505
|
+
} else {
|
|
506
|
+
// Fallback: Return an object instance of the Buffer class
|
|
507
|
+
if (that === null) {
|
|
508
|
+
that = new Buffer(length);
|
|
509
|
+
}
|
|
510
|
+
that.length = length;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
return that
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* The Buffer constructor returns instances of `Uint8Array` that have their
|
|
518
|
+
* prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
|
|
519
|
+
* `Uint8Array`, so the returned instances will have all the node `Buffer` methods
|
|
520
|
+
* and the `Uint8Array` methods. Square bracket notation works as expected -- it
|
|
521
|
+
* returns a single octet.
|
|
522
|
+
*
|
|
523
|
+
* The `Uint8Array` prototype remains unmodified.
|
|
524
|
+
*/
|
|
525
|
+
|
|
526
|
+
function Buffer (arg, encodingOrOffset, length) {
|
|
527
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
|
|
528
|
+
return new Buffer(arg, encodingOrOffset, length)
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
// Common case.
|
|
532
|
+
if (typeof arg === 'number') {
|
|
533
|
+
if (typeof encodingOrOffset === 'string') {
|
|
534
|
+
throw new Error(
|
|
535
|
+
'If encoding is specified then the first argument must be a string'
|
|
536
|
+
)
|
|
537
|
+
}
|
|
538
|
+
return allocUnsafe(this, arg)
|
|
539
|
+
}
|
|
540
|
+
return from(this, arg, encodingOrOffset, length)
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
Buffer.poolSize = 8192; // not used by this implementation
|
|
544
|
+
|
|
545
|
+
// TODO: Legacy, not needed anymore. Remove in next major version.
|
|
546
|
+
Buffer._augment = function (arr) {
|
|
547
|
+
arr.__proto__ = Buffer.prototype;
|
|
548
|
+
return arr
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
function from (that, value, encodingOrOffset, length) {
|
|
552
|
+
if (typeof value === 'number') {
|
|
553
|
+
throw new TypeError('"value" argument must not be a number')
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
|
|
557
|
+
return fromArrayBuffer(that, value, encodingOrOffset, length)
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
if (typeof value === 'string') {
|
|
561
|
+
return fromString(that, value, encodingOrOffset)
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
return fromObject(that, value)
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
|
|
569
|
+
* if value is a number.
|
|
570
|
+
* Buffer.from(str[, encoding])
|
|
571
|
+
* Buffer.from(array)
|
|
572
|
+
* Buffer.from(buffer)
|
|
573
|
+
* Buffer.from(arrayBuffer[, byteOffset[, length]])
|
|
574
|
+
**/
|
|
575
|
+
Buffer.from = function (value, encodingOrOffset, length) {
|
|
576
|
+
return from(null, value, encodingOrOffset, length)
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
580
|
+
Buffer.prototype.__proto__ = Uint8Array.prototype;
|
|
581
|
+
Buffer.__proto__ = Uint8Array;
|
|
582
|
+
if (typeof Symbol !== 'undefined' && Symbol.species &&
|
|
583
|
+
Buffer[Symbol.species] === Buffer) ;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
function assertSize (size) {
|
|
587
|
+
if (typeof size !== 'number') {
|
|
588
|
+
throw new TypeError('"size" argument must be a number')
|
|
589
|
+
} else if (size < 0) {
|
|
590
|
+
throw new RangeError('"size" argument must not be negative')
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
function alloc (that, size, fill, encoding) {
|
|
595
|
+
assertSize(size);
|
|
596
|
+
if (size <= 0) {
|
|
597
|
+
return createBuffer(that, size)
|
|
598
|
+
}
|
|
599
|
+
if (fill !== undefined) {
|
|
600
|
+
// Only pay attention to encoding if it's a string. This
|
|
601
|
+
// prevents accidentally sending in a number that would
|
|
602
|
+
// be interpretted as a start offset.
|
|
603
|
+
return typeof encoding === 'string'
|
|
604
|
+
? createBuffer(that, size).fill(fill, encoding)
|
|
605
|
+
: createBuffer(that, size).fill(fill)
|
|
606
|
+
}
|
|
607
|
+
return createBuffer(that, size)
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
/**
|
|
611
|
+
* Creates a new filled Buffer instance.
|
|
612
|
+
* alloc(size[, fill[, encoding]])
|
|
613
|
+
**/
|
|
614
|
+
Buffer.alloc = function (size, fill, encoding) {
|
|
615
|
+
return alloc(null, size, fill, encoding)
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
function allocUnsafe (that, size) {
|
|
619
|
+
assertSize(size);
|
|
620
|
+
that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
|
|
621
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT) {
|
|
622
|
+
for (var i = 0; i < size; ++i) {
|
|
623
|
+
that[i] = 0;
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
return that
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
* Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
|
|
631
|
+
* */
|
|
632
|
+
Buffer.allocUnsafe = function (size) {
|
|
633
|
+
return allocUnsafe(null, size)
|
|
634
|
+
};
|
|
635
|
+
/**
|
|
636
|
+
* Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
|
|
637
|
+
*/
|
|
638
|
+
Buffer.allocUnsafeSlow = function (size) {
|
|
639
|
+
return allocUnsafe(null, size)
|
|
640
|
+
};
|
|
641
|
+
|
|
642
|
+
function fromString (that, string, encoding) {
|
|
643
|
+
if (typeof encoding !== 'string' || encoding === '') {
|
|
644
|
+
encoding = 'utf8';
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
if (!Buffer.isEncoding(encoding)) {
|
|
648
|
+
throw new TypeError('"encoding" must be a valid string encoding')
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
var length = byteLength(string, encoding) | 0;
|
|
652
|
+
that = createBuffer(that, length);
|
|
653
|
+
|
|
654
|
+
var actual = that.write(string, encoding);
|
|
655
|
+
|
|
656
|
+
if (actual !== length) {
|
|
657
|
+
// Writing a hex string, for example, that contains invalid characters will
|
|
658
|
+
// cause everything after the first invalid character to be ignored. (e.g.
|
|
659
|
+
// 'abxxcd' will be treated as 'ab')
|
|
660
|
+
that = that.slice(0, actual);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
return that
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
function fromArrayLike (that, array) {
|
|
667
|
+
var length = array.length < 0 ? 0 : checked(array.length) | 0;
|
|
668
|
+
that = createBuffer(that, length);
|
|
669
|
+
for (var i = 0; i < length; i += 1) {
|
|
670
|
+
that[i] = array[i] & 255;
|
|
671
|
+
}
|
|
672
|
+
return that
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
function fromArrayBuffer (that, array, byteOffset, length) {
|
|
676
|
+
array.byteLength; // this throws if `array` is not a valid ArrayBuffer
|
|
677
|
+
|
|
678
|
+
if (byteOffset < 0 || array.byteLength < byteOffset) {
|
|
679
|
+
throw new RangeError('\'offset\' is out of bounds')
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
if (array.byteLength < byteOffset + (length || 0)) {
|
|
683
|
+
throw new RangeError('\'length\' is out of bounds')
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
if (byteOffset === undefined && length === undefined) {
|
|
687
|
+
array = new Uint8Array(array);
|
|
688
|
+
} else if (length === undefined) {
|
|
689
|
+
array = new Uint8Array(array, byteOffset);
|
|
690
|
+
} else {
|
|
691
|
+
array = new Uint8Array(array, byteOffset, length);
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
695
|
+
// Return an augmented `Uint8Array` instance, for best performance
|
|
696
|
+
that = array;
|
|
697
|
+
that.__proto__ = Buffer.prototype;
|
|
698
|
+
} else {
|
|
699
|
+
// Fallback: Return an object instance of the Buffer class
|
|
700
|
+
that = fromArrayLike(that, array);
|
|
701
|
+
}
|
|
702
|
+
return that
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
function fromObject (that, obj) {
|
|
706
|
+
if (internalIsBuffer(obj)) {
|
|
707
|
+
var len = checked(obj.length) | 0;
|
|
708
|
+
that = createBuffer(that, len);
|
|
709
|
+
|
|
710
|
+
if (that.length === 0) {
|
|
711
|
+
return that
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
obj.copy(that, 0, 0, len);
|
|
715
|
+
return that
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
if (obj) {
|
|
719
|
+
if ((typeof ArrayBuffer !== 'undefined' &&
|
|
720
|
+
obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
|
|
721
|
+
if (typeof obj.length !== 'number' || isnan(obj.length)) {
|
|
722
|
+
return createBuffer(that, 0)
|
|
723
|
+
}
|
|
724
|
+
return fromArrayLike(that, obj)
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
if (obj.type === 'Buffer' && isArray(obj.data)) {
|
|
728
|
+
return fromArrayLike(that, obj.data)
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
function checked (length) {
|
|
736
|
+
// Note: cannot use `length < kMaxLength()` here because that fails when
|
|
737
|
+
// length is NaN (which is otherwise coerced to zero.)
|
|
738
|
+
if (length >= kMaxLength()) {
|
|
739
|
+
throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
|
|
740
|
+
'size: 0x' + kMaxLength().toString(16) + ' bytes')
|
|
741
|
+
}
|
|
742
|
+
return length | 0
|
|
743
|
+
}
|
|
744
|
+
Buffer.isBuffer = isBuffer;
|
|
745
|
+
function internalIsBuffer (b) {
|
|
746
|
+
return !!(b != null && b._isBuffer)
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
Buffer.compare = function compare (a, b) {
|
|
750
|
+
if (!internalIsBuffer(a) || !internalIsBuffer(b)) {
|
|
751
|
+
throw new TypeError('Arguments must be Buffers')
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
if (a === b) return 0
|
|
755
|
+
|
|
756
|
+
var x = a.length;
|
|
757
|
+
var y = b.length;
|
|
758
|
+
|
|
759
|
+
for (var i = 0, len = Math.min(x, y); i < len; ++i) {
|
|
760
|
+
if (a[i] !== b[i]) {
|
|
761
|
+
x = a[i];
|
|
762
|
+
y = b[i];
|
|
763
|
+
break
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
if (x < y) return -1
|
|
768
|
+
if (y < x) return 1
|
|
769
|
+
return 0
|
|
770
|
+
};
|
|
771
|
+
|
|
772
|
+
Buffer.isEncoding = function isEncoding (encoding) {
|
|
773
|
+
switch (String(encoding).toLowerCase()) {
|
|
774
|
+
case 'hex':
|
|
775
|
+
case 'utf8':
|
|
776
|
+
case 'utf-8':
|
|
777
|
+
case 'ascii':
|
|
778
|
+
case 'latin1':
|
|
779
|
+
case 'binary':
|
|
780
|
+
case 'base64':
|
|
781
|
+
case 'ucs2':
|
|
782
|
+
case 'ucs-2':
|
|
783
|
+
case 'utf16le':
|
|
784
|
+
case 'utf-16le':
|
|
785
|
+
return true
|
|
786
|
+
default:
|
|
787
|
+
return false
|
|
788
|
+
}
|
|
789
|
+
};
|
|
790
|
+
|
|
791
|
+
Buffer.concat = function concat (list, length) {
|
|
792
|
+
if (!isArray(list)) {
|
|
793
|
+
throw new TypeError('"list" argument must be an Array of Buffers')
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
if (list.length === 0) {
|
|
797
|
+
return Buffer.alloc(0)
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
var i;
|
|
801
|
+
if (length === undefined) {
|
|
802
|
+
length = 0;
|
|
803
|
+
for (i = 0; i < list.length; ++i) {
|
|
804
|
+
length += list[i].length;
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
var buffer = Buffer.allocUnsafe(length);
|
|
809
|
+
var pos = 0;
|
|
810
|
+
for (i = 0; i < list.length; ++i) {
|
|
811
|
+
var buf = list[i];
|
|
812
|
+
if (!internalIsBuffer(buf)) {
|
|
813
|
+
throw new TypeError('"list" argument must be an Array of Buffers')
|
|
814
|
+
}
|
|
815
|
+
buf.copy(buffer, pos);
|
|
816
|
+
pos += buf.length;
|
|
817
|
+
}
|
|
818
|
+
return buffer
|
|
819
|
+
};
|
|
820
|
+
|
|
821
|
+
function byteLength (string, encoding) {
|
|
822
|
+
if (internalIsBuffer(string)) {
|
|
823
|
+
return string.length
|
|
824
|
+
}
|
|
825
|
+
if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
|
|
826
|
+
(ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
|
|
827
|
+
return string.byteLength
|
|
828
|
+
}
|
|
829
|
+
if (typeof string !== 'string') {
|
|
830
|
+
string = '' + string;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
var len = string.length;
|
|
834
|
+
if (len === 0) return 0
|
|
835
|
+
|
|
836
|
+
// Use a for loop to avoid recursion
|
|
837
|
+
var loweredCase = false;
|
|
838
|
+
for (;;) {
|
|
839
|
+
switch (encoding) {
|
|
840
|
+
case 'ascii':
|
|
841
|
+
case 'latin1':
|
|
842
|
+
case 'binary':
|
|
843
|
+
return len
|
|
844
|
+
case 'utf8':
|
|
845
|
+
case 'utf-8':
|
|
846
|
+
case undefined:
|
|
847
|
+
return utf8ToBytes(string).length
|
|
848
|
+
case 'ucs2':
|
|
849
|
+
case 'ucs-2':
|
|
850
|
+
case 'utf16le':
|
|
851
|
+
case 'utf-16le':
|
|
852
|
+
return len * 2
|
|
853
|
+
case 'hex':
|
|
854
|
+
return len >>> 1
|
|
855
|
+
case 'base64':
|
|
856
|
+
return base64ToBytes(string).length
|
|
857
|
+
default:
|
|
858
|
+
if (loweredCase) return utf8ToBytes(string).length // assume utf8
|
|
859
|
+
encoding = ('' + encoding).toLowerCase();
|
|
860
|
+
loweredCase = true;
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
Buffer.byteLength = byteLength;
|
|
865
|
+
|
|
866
|
+
function slowToString (encoding, start, end) {
|
|
867
|
+
var loweredCase = false;
|
|
868
|
+
|
|
869
|
+
// No need to verify that "this.length <= MAX_UINT32" since it's a read-only
|
|
870
|
+
// property of a typed array.
|
|
871
|
+
|
|
872
|
+
// This behaves neither like String nor Uint8Array in that we set start/end
|
|
873
|
+
// to their upper/lower bounds if the value passed is out of range.
|
|
874
|
+
// undefined is handled specially as per ECMA-262 6th Edition,
|
|
875
|
+
// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
|
|
876
|
+
if (start === undefined || start < 0) {
|
|
877
|
+
start = 0;
|
|
878
|
+
}
|
|
879
|
+
// Return early if start > this.length. Done here to prevent potential uint32
|
|
880
|
+
// coercion fail below.
|
|
881
|
+
if (start > this.length) {
|
|
882
|
+
return ''
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
if (end === undefined || end > this.length) {
|
|
886
|
+
end = this.length;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
if (end <= 0) {
|
|
890
|
+
return ''
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
// Force coersion to uint32. This will also coerce falsey/NaN values to 0.
|
|
894
|
+
end >>>= 0;
|
|
895
|
+
start >>>= 0;
|
|
896
|
+
|
|
897
|
+
if (end <= start) {
|
|
898
|
+
return ''
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
if (!encoding) encoding = 'utf8';
|
|
902
|
+
|
|
903
|
+
while (true) {
|
|
904
|
+
switch (encoding) {
|
|
905
|
+
case 'hex':
|
|
906
|
+
return hexSlice(this, start, end)
|
|
907
|
+
|
|
908
|
+
case 'utf8':
|
|
909
|
+
case 'utf-8':
|
|
910
|
+
return utf8Slice(this, start, end)
|
|
911
|
+
|
|
912
|
+
case 'ascii':
|
|
913
|
+
return asciiSlice(this, start, end)
|
|
914
|
+
|
|
915
|
+
case 'latin1':
|
|
916
|
+
case 'binary':
|
|
917
|
+
return latin1Slice(this, start, end)
|
|
918
|
+
|
|
919
|
+
case 'base64':
|
|
920
|
+
return base64Slice(this, start, end)
|
|
921
|
+
|
|
922
|
+
case 'ucs2':
|
|
923
|
+
case 'ucs-2':
|
|
924
|
+
case 'utf16le':
|
|
925
|
+
case 'utf-16le':
|
|
926
|
+
return utf16leSlice(this, start, end)
|
|
927
|
+
|
|
928
|
+
default:
|
|
929
|
+
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
|
|
930
|
+
encoding = (encoding + '').toLowerCase();
|
|
931
|
+
loweredCase = true;
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
|
|
937
|
+
// Buffer instances.
|
|
938
|
+
Buffer.prototype._isBuffer = true;
|
|
939
|
+
|
|
940
|
+
function swap (b, n, m) {
|
|
941
|
+
var i = b[n];
|
|
942
|
+
b[n] = b[m];
|
|
943
|
+
b[m] = i;
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
Buffer.prototype.swap16 = function swap16 () {
|
|
947
|
+
var len = this.length;
|
|
948
|
+
if (len % 2 !== 0) {
|
|
949
|
+
throw new RangeError('Buffer size must be a multiple of 16-bits')
|
|
950
|
+
}
|
|
951
|
+
for (var i = 0; i < len; i += 2) {
|
|
952
|
+
swap(this, i, i + 1);
|
|
953
|
+
}
|
|
954
|
+
return this
|
|
955
|
+
};
|
|
956
|
+
|
|
957
|
+
Buffer.prototype.swap32 = function swap32 () {
|
|
958
|
+
var len = this.length;
|
|
959
|
+
if (len % 4 !== 0) {
|
|
960
|
+
throw new RangeError('Buffer size must be a multiple of 32-bits')
|
|
961
|
+
}
|
|
962
|
+
for (var i = 0; i < len; i += 4) {
|
|
963
|
+
swap(this, i, i + 3);
|
|
964
|
+
swap(this, i + 1, i + 2);
|
|
965
|
+
}
|
|
966
|
+
return this
|
|
967
|
+
};
|
|
968
|
+
|
|
969
|
+
Buffer.prototype.swap64 = function swap64 () {
|
|
970
|
+
var len = this.length;
|
|
971
|
+
if (len % 8 !== 0) {
|
|
972
|
+
throw new RangeError('Buffer size must be a multiple of 64-bits')
|
|
973
|
+
}
|
|
974
|
+
for (var i = 0; i < len; i += 8) {
|
|
975
|
+
swap(this, i, i + 7);
|
|
976
|
+
swap(this, i + 1, i + 6);
|
|
977
|
+
swap(this, i + 2, i + 5);
|
|
978
|
+
swap(this, i + 3, i + 4);
|
|
979
|
+
}
|
|
980
|
+
return this
|
|
981
|
+
};
|
|
982
|
+
|
|
983
|
+
Buffer.prototype.toString = function toString () {
|
|
984
|
+
var length = this.length | 0;
|
|
985
|
+
if (length === 0) return ''
|
|
986
|
+
if (arguments.length === 0) return utf8Slice(this, 0, length)
|
|
987
|
+
return slowToString.apply(this, arguments)
|
|
988
|
+
};
|
|
989
|
+
|
|
990
|
+
Buffer.prototype.equals = function equals (b) {
|
|
991
|
+
if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')
|
|
992
|
+
if (this === b) return true
|
|
993
|
+
return Buffer.compare(this, b) === 0
|
|
994
|
+
};
|
|
995
|
+
|
|
996
|
+
Buffer.prototype.inspect = function inspect () {
|
|
997
|
+
var str = '';
|
|
998
|
+
var max = INSPECT_MAX_BYTES;
|
|
999
|
+
if (this.length > 0) {
|
|
1000
|
+
str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
|
|
1001
|
+
if (this.length > max) str += ' ... ';
|
|
1002
|
+
}
|
|
1003
|
+
return '<Buffer ' + str + '>'
|
|
1004
|
+
};
|
|
1005
|
+
|
|
1006
|
+
Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
|
|
1007
|
+
if (!internalIsBuffer(target)) {
|
|
1008
|
+
throw new TypeError('Argument must be a Buffer')
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
if (start === undefined) {
|
|
1012
|
+
start = 0;
|
|
1013
|
+
}
|
|
1014
|
+
if (end === undefined) {
|
|
1015
|
+
end = target ? target.length : 0;
|
|
1016
|
+
}
|
|
1017
|
+
if (thisStart === undefined) {
|
|
1018
|
+
thisStart = 0;
|
|
1019
|
+
}
|
|
1020
|
+
if (thisEnd === undefined) {
|
|
1021
|
+
thisEnd = this.length;
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
|
|
1025
|
+
throw new RangeError('out of range index')
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
if (thisStart >= thisEnd && start >= end) {
|
|
1029
|
+
return 0
|
|
1030
|
+
}
|
|
1031
|
+
if (thisStart >= thisEnd) {
|
|
1032
|
+
return -1
|
|
1033
|
+
}
|
|
1034
|
+
if (start >= end) {
|
|
1035
|
+
return 1
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
start >>>= 0;
|
|
1039
|
+
end >>>= 0;
|
|
1040
|
+
thisStart >>>= 0;
|
|
1041
|
+
thisEnd >>>= 0;
|
|
1042
|
+
|
|
1043
|
+
if (this === target) return 0
|
|
1044
|
+
|
|
1045
|
+
var x = thisEnd - thisStart;
|
|
1046
|
+
var y = end - start;
|
|
1047
|
+
var len = Math.min(x, y);
|
|
1048
|
+
|
|
1049
|
+
var thisCopy = this.slice(thisStart, thisEnd);
|
|
1050
|
+
var targetCopy = target.slice(start, end);
|
|
1051
|
+
|
|
1052
|
+
for (var i = 0; i < len; ++i) {
|
|
1053
|
+
if (thisCopy[i] !== targetCopy[i]) {
|
|
1054
|
+
x = thisCopy[i];
|
|
1055
|
+
y = targetCopy[i];
|
|
1056
|
+
break
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
if (x < y) return -1
|
|
1061
|
+
if (y < x) return 1
|
|
1062
|
+
return 0
|
|
1063
|
+
};
|
|
1064
|
+
|
|
1065
|
+
// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
|
|
1066
|
+
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
|
|
1067
|
+
//
|
|
1068
|
+
// Arguments:
|
|
1069
|
+
// - buffer - a Buffer to search
|
|
1070
|
+
// - val - a string, Buffer, or number
|
|
1071
|
+
// - byteOffset - an index into `buffer`; will be clamped to an int32
|
|
1072
|
+
// - encoding - an optional encoding, relevant is val is a string
|
|
1073
|
+
// - dir - true for indexOf, false for lastIndexOf
|
|
1074
|
+
function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
|
|
1075
|
+
// Empty buffer means no match
|
|
1076
|
+
if (buffer.length === 0) return -1
|
|
1077
|
+
|
|
1078
|
+
// Normalize byteOffset
|
|
1079
|
+
if (typeof byteOffset === 'string') {
|
|
1080
|
+
encoding = byteOffset;
|
|
1081
|
+
byteOffset = 0;
|
|
1082
|
+
} else if (byteOffset > 0x7fffffff) {
|
|
1083
|
+
byteOffset = 0x7fffffff;
|
|
1084
|
+
} else if (byteOffset < -2147483648) {
|
|
1085
|
+
byteOffset = -2147483648;
|
|
1086
|
+
}
|
|
1087
|
+
byteOffset = +byteOffset; // Coerce to Number.
|
|
1088
|
+
if (isNaN(byteOffset)) {
|
|
1089
|
+
// byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
|
|
1090
|
+
byteOffset = dir ? 0 : (buffer.length - 1);
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
// Normalize byteOffset: negative offsets start from the end of the buffer
|
|
1094
|
+
if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
|
|
1095
|
+
if (byteOffset >= buffer.length) {
|
|
1096
|
+
if (dir) return -1
|
|
1097
|
+
else byteOffset = buffer.length - 1;
|
|
1098
|
+
} else if (byteOffset < 0) {
|
|
1099
|
+
if (dir) byteOffset = 0;
|
|
1100
|
+
else return -1
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
// Normalize val
|
|
1104
|
+
if (typeof val === 'string') {
|
|
1105
|
+
val = Buffer.from(val, encoding);
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
// Finally, search either indexOf (if dir is true) or lastIndexOf
|
|
1109
|
+
if (internalIsBuffer(val)) {
|
|
1110
|
+
// Special case: looking for empty string/buffer always fails
|
|
1111
|
+
if (val.length === 0) {
|
|
1112
|
+
return -1
|
|
1113
|
+
}
|
|
1114
|
+
return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
|
|
1115
|
+
} else if (typeof val === 'number') {
|
|
1116
|
+
val = val & 0xFF; // Search for a byte value [0-255]
|
|
1117
|
+
if (Buffer.TYPED_ARRAY_SUPPORT &&
|
|
1118
|
+
typeof Uint8Array.prototype.indexOf === 'function') {
|
|
1119
|
+
if (dir) {
|
|
1120
|
+
return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
|
|
1121
|
+
} else {
|
|
1122
|
+
return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
throw new TypeError('val must be string, number or Buffer')
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
|
|
1132
|
+
var indexSize = 1;
|
|
1133
|
+
var arrLength = arr.length;
|
|
1134
|
+
var valLength = val.length;
|
|
1135
|
+
|
|
1136
|
+
if (encoding !== undefined) {
|
|
1137
|
+
encoding = String(encoding).toLowerCase();
|
|
1138
|
+
if (encoding === 'ucs2' || encoding === 'ucs-2' ||
|
|
1139
|
+
encoding === 'utf16le' || encoding === 'utf-16le') {
|
|
1140
|
+
if (arr.length < 2 || val.length < 2) {
|
|
1141
|
+
return -1
|
|
1142
|
+
}
|
|
1143
|
+
indexSize = 2;
|
|
1144
|
+
arrLength /= 2;
|
|
1145
|
+
valLength /= 2;
|
|
1146
|
+
byteOffset /= 2;
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
function read (buf, i) {
|
|
1151
|
+
if (indexSize === 1) {
|
|
1152
|
+
return buf[i]
|
|
1153
|
+
} else {
|
|
1154
|
+
return buf.readUInt16BE(i * indexSize)
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
var i;
|
|
1159
|
+
if (dir) {
|
|
1160
|
+
var foundIndex = -1;
|
|
1161
|
+
for (i = byteOffset; i < arrLength; i++) {
|
|
1162
|
+
if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
|
|
1163
|
+
if (foundIndex === -1) foundIndex = i;
|
|
1164
|
+
if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
|
|
1165
|
+
} else {
|
|
1166
|
+
if (foundIndex !== -1) i -= i - foundIndex;
|
|
1167
|
+
foundIndex = -1;
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
} else {
|
|
1171
|
+
if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
|
|
1172
|
+
for (i = byteOffset; i >= 0; i--) {
|
|
1173
|
+
var found = true;
|
|
1174
|
+
for (var j = 0; j < valLength; j++) {
|
|
1175
|
+
if (read(arr, i + j) !== read(val, j)) {
|
|
1176
|
+
found = false;
|
|
1177
|
+
break
|
|
1178
|
+
}
|
|
1179
|
+
}
|
|
1180
|
+
if (found) return i
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
return -1
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
|
|
1188
|
+
return this.indexOf(val, byteOffset, encoding) !== -1
|
|
1189
|
+
};
|
|
1190
|
+
|
|
1191
|
+
Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
|
|
1192
|
+
return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
|
|
1193
|
+
};
|
|
1194
|
+
|
|
1195
|
+
Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
|
|
1196
|
+
return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
|
|
1197
|
+
};
|
|
1198
|
+
|
|
1199
|
+
function hexWrite (buf, string, offset, length) {
|
|
1200
|
+
offset = Number(offset) || 0;
|
|
1201
|
+
var remaining = buf.length - offset;
|
|
1202
|
+
if (!length) {
|
|
1203
|
+
length = remaining;
|
|
1204
|
+
} else {
|
|
1205
|
+
length = Number(length);
|
|
1206
|
+
if (length > remaining) {
|
|
1207
|
+
length = remaining;
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
// must be an even number of digits
|
|
1212
|
+
var strLen = string.length;
|
|
1213
|
+
if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
|
|
1214
|
+
|
|
1215
|
+
if (length > strLen / 2) {
|
|
1216
|
+
length = strLen / 2;
|
|
1217
|
+
}
|
|
1218
|
+
for (var i = 0; i < length; ++i) {
|
|
1219
|
+
var parsed = parseInt(string.substr(i * 2, 2), 16);
|
|
1220
|
+
if (isNaN(parsed)) return i
|
|
1221
|
+
buf[offset + i] = parsed;
|
|
1222
|
+
}
|
|
1223
|
+
return i
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
function utf8Write (buf, string, offset, length) {
|
|
1227
|
+
return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
function asciiWrite (buf, string, offset, length) {
|
|
1231
|
+
return blitBuffer(asciiToBytes(string), buf, offset, length)
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
function latin1Write (buf, string, offset, length) {
|
|
1235
|
+
return asciiWrite(buf, string, offset, length)
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
function base64Write (buf, string, offset, length) {
|
|
1239
|
+
return blitBuffer(base64ToBytes(string), buf, offset, length)
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
function ucs2Write (buf, string, offset, length) {
|
|
1243
|
+
return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
Buffer.prototype.write = function write (string, offset, length, encoding) {
|
|
1247
|
+
// Buffer#write(string)
|
|
1248
|
+
if (offset === undefined) {
|
|
1249
|
+
encoding = 'utf8';
|
|
1250
|
+
length = this.length;
|
|
1251
|
+
offset = 0;
|
|
1252
|
+
// Buffer#write(string, encoding)
|
|
1253
|
+
} else if (length === undefined && typeof offset === 'string') {
|
|
1254
|
+
encoding = offset;
|
|
1255
|
+
length = this.length;
|
|
1256
|
+
offset = 0;
|
|
1257
|
+
// Buffer#write(string, offset[, length][, encoding])
|
|
1258
|
+
} else if (isFinite(offset)) {
|
|
1259
|
+
offset = offset | 0;
|
|
1260
|
+
if (isFinite(length)) {
|
|
1261
|
+
length = length | 0;
|
|
1262
|
+
if (encoding === undefined) encoding = 'utf8';
|
|
1263
|
+
} else {
|
|
1264
|
+
encoding = length;
|
|
1265
|
+
length = undefined;
|
|
1266
|
+
}
|
|
1267
|
+
// legacy write(string, encoding, offset, length) - remove in v0.13
|
|
1268
|
+
} else {
|
|
1269
|
+
throw new Error(
|
|
1270
|
+
'Buffer.write(string, encoding, offset[, length]) is no longer supported'
|
|
1271
|
+
)
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
var remaining = this.length - offset;
|
|
1275
|
+
if (length === undefined || length > remaining) length = remaining;
|
|
1276
|
+
|
|
1277
|
+
if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
|
|
1278
|
+
throw new RangeError('Attempt to write outside buffer bounds')
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
if (!encoding) encoding = 'utf8';
|
|
1282
|
+
|
|
1283
|
+
var loweredCase = false;
|
|
1284
|
+
for (;;) {
|
|
1285
|
+
switch (encoding) {
|
|
1286
|
+
case 'hex':
|
|
1287
|
+
return hexWrite(this, string, offset, length)
|
|
1288
|
+
|
|
1289
|
+
case 'utf8':
|
|
1290
|
+
case 'utf-8':
|
|
1291
|
+
return utf8Write(this, string, offset, length)
|
|
1292
|
+
|
|
1293
|
+
case 'ascii':
|
|
1294
|
+
return asciiWrite(this, string, offset, length)
|
|
1295
|
+
|
|
1296
|
+
case 'latin1':
|
|
1297
|
+
case 'binary':
|
|
1298
|
+
return latin1Write(this, string, offset, length)
|
|
1299
|
+
|
|
1300
|
+
case 'base64':
|
|
1301
|
+
// Warning: maxLength not taken into account in base64Write
|
|
1302
|
+
return base64Write(this, string, offset, length)
|
|
1303
|
+
|
|
1304
|
+
case 'ucs2':
|
|
1305
|
+
case 'ucs-2':
|
|
1306
|
+
case 'utf16le':
|
|
1307
|
+
case 'utf-16le':
|
|
1308
|
+
return ucs2Write(this, string, offset, length)
|
|
1309
|
+
|
|
1310
|
+
default:
|
|
1311
|
+
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
|
|
1312
|
+
encoding = ('' + encoding).toLowerCase();
|
|
1313
|
+
loweredCase = true;
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
};
|
|
1317
|
+
|
|
1318
|
+
Buffer.prototype.toJSON = function toJSON () {
|
|
1319
|
+
return {
|
|
1320
|
+
type: 'Buffer',
|
|
1321
|
+
data: Array.prototype.slice.call(this._arr || this, 0)
|
|
1322
|
+
}
|
|
1323
|
+
};
|
|
1324
|
+
|
|
1325
|
+
function base64Slice (buf, start, end) {
|
|
1326
|
+
if (start === 0 && end === buf.length) {
|
|
1327
|
+
return fromByteArray(buf)
|
|
1328
|
+
} else {
|
|
1329
|
+
return fromByteArray(buf.slice(start, end))
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
function utf8Slice (buf, start, end) {
|
|
1334
|
+
end = Math.min(buf.length, end);
|
|
1335
|
+
var res = [];
|
|
1336
|
+
|
|
1337
|
+
var i = start;
|
|
1338
|
+
while (i < end) {
|
|
1339
|
+
var firstByte = buf[i];
|
|
1340
|
+
var codePoint = null;
|
|
1341
|
+
var bytesPerSequence = (firstByte > 0xEF) ? 4
|
|
1342
|
+
: (firstByte > 0xDF) ? 3
|
|
1343
|
+
: (firstByte > 0xBF) ? 2
|
|
1344
|
+
: 1;
|
|
1345
|
+
|
|
1346
|
+
if (i + bytesPerSequence <= end) {
|
|
1347
|
+
var secondByte, thirdByte, fourthByte, tempCodePoint;
|
|
1348
|
+
|
|
1349
|
+
switch (bytesPerSequence) {
|
|
1350
|
+
case 1:
|
|
1351
|
+
if (firstByte < 0x80) {
|
|
1352
|
+
codePoint = firstByte;
|
|
1353
|
+
}
|
|
1354
|
+
break
|
|
1355
|
+
case 2:
|
|
1356
|
+
secondByte = buf[i + 1];
|
|
1357
|
+
if ((secondByte & 0xC0) === 0x80) {
|
|
1358
|
+
tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
|
|
1359
|
+
if (tempCodePoint > 0x7F) {
|
|
1360
|
+
codePoint = tempCodePoint;
|
|
1361
|
+
}
|
|
1362
|
+
}
|
|
1363
|
+
break
|
|
1364
|
+
case 3:
|
|
1365
|
+
secondByte = buf[i + 1];
|
|
1366
|
+
thirdByte = buf[i + 2];
|
|
1367
|
+
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
|
|
1368
|
+
tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
|
|
1369
|
+
if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
|
|
1370
|
+
codePoint = tempCodePoint;
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
break
|
|
1374
|
+
case 4:
|
|
1375
|
+
secondByte = buf[i + 1];
|
|
1376
|
+
thirdByte = buf[i + 2];
|
|
1377
|
+
fourthByte = buf[i + 3];
|
|
1378
|
+
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
|
|
1379
|
+
tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
|
|
1380
|
+
if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
|
|
1381
|
+
codePoint = tempCodePoint;
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
if (codePoint === null) {
|
|
1388
|
+
// we did not generate a valid codePoint so insert a
|
|
1389
|
+
// replacement char (U+FFFD) and advance only 1 byte
|
|
1390
|
+
codePoint = 0xFFFD;
|
|
1391
|
+
bytesPerSequence = 1;
|
|
1392
|
+
} else if (codePoint > 0xFFFF) {
|
|
1393
|
+
// encode to utf16 (surrogate pair dance)
|
|
1394
|
+
codePoint -= 0x10000;
|
|
1395
|
+
res.push(codePoint >>> 10 & 0x3FF | 0xD800);
|
|
1396
|
+
codePoint = 0xDC00 | codePoint & 0x3FF;
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
res.push(codePoint);
|
|
1400
|
+
i += bytesPerSequence;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
return decodeCodePointsArray(res)
|
|
1404
|
+
}
|
|
1405
|
+
|
|
1406
|
+
// Based on http://stackoverflow.com/a/22747272/680742, the browser with
|
|
1407
|
+
// the lowest limit is Chrome, with 0x10000 args.
|
|
1408
|
+
// We go 1 magnitude less, for safety
|
|
1409
|
+
var MAX_ARGUMENTS_LENGTH = 0x1000;
|
|
1410
|
+
|
|
1411
|
+
function decodeCodePointsArray (codePoints) {
|
|
1412
|
+
var len = codePoints.length;
|
|
1413
|
+
if (len <= MAX_ARGUMENTS_LENGTH) {
|
|
1414
|
+
return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1417
|
+
// Decode in chunks to avoid "call stack size exceeded".
|
|
1418
|
+
var res = '';
|
|
1419
|
+
var i = 0;
|
|
1420
|
+
while (i < len) {
|
|
1421
|
+
res += String.fromCharCode.apply(
|
|
1422
|
+
String,
|
|
1423
|
+
codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
|
|
1424
|
+
);
|
|
1425
|
+
}
|
|
1426
|
+
return res
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
function asciiSlice (buf, start, end) {
|
|
1430
|
+
var ret = '';
|
|
1431
|
+
end = Math.min(buf.length, end);
|
|
1432
|
+
|
|
1433
|
+
for (var i = start; i < end; ++i) {
|
|
1434
|
+
ret += String.fromCharCode(buf[i] & 0x7F);
|
|
1435
|
+
}
|
|
1436
|
+
return ret
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
function latin1Slice (buf, start, end) {
|
|
1440
|
+
var ret = '';
|
|
1441
|
+
end = Math.min(buf.length, end);
|
|
1442
|
+
|
|
1443
|
+
for (var i = start; i < end; ++i) {
|
|
1444
|
+
ret += String.fromCharCode(buf[i]);
|
|
1445
|
+
}
|
|
1446
|
+
return ret
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
function hexSlice (buf, start, end) {
|
|
1450
|
+
var len = buf.length;
|
|
1451
|
+
|
|
1452
|
+
if (!start || start < 0) start = 0;
|
|
1453
|
+
if (!end || end < 0 || end > len) end = len;
|
|
1454
|
+
|
|
1455
|
+
var out = '';
|
|
1456
|
+
for (var i = start; i < end; ++i) {
|
|
1457
|
+
out += toHex(buf[i]);
|
|
1458
|
+
}
|
|
1459
|
+
return out
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
function utf16leSlice (buf, start, end) {
|
|
1463
|
+
var bytes = buf.slice(start, end);
|
|
1464
|
+
var res = '';
|
|
1465
|
+
for (var i = 0; i < bytes.length; i += 2) {
|
|
1466
|
+
res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
|
|
1467
|
+
}
|
|
1468
|
+
return res
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
Buffer.prototype.slice = function slice (start, end) {
|
|
1472
|
+
var len = this.length;
|
|
1473
|
+
start = ~~start;
|
|
1474
|
+
end = end === undefined ? len : ~~end;
|
|
1475
|
+
|
|
1476
|
+
if (start < 0) {
|
|
1477
|
+
start += len;
|
|
1478
|
+
if (start < 0) start = 0;
|
|
1479
|
+
} else if (start > len) {
|
|
1480
|
+
start = len;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
if (end < 0) {
|
|
1484
|
+
end += len;
|
|
1485
|
+
if (end < 0) end = 0;
|
|
1486
|
+
} else if (end > len) {
|
|
1487
|
+
end = len;
|
|
1488
|
+
}
|
|
1489
|
+
|
|
1490
|
+
if (end < start) end = start;
|
|
1491
|
+
|
|
1492
|
+
var newBuf;
|
|
1493
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1494
|
+
newBuf = this.subarray(start, end);
|
|
1495
|
+
newBuf.__proto__ = Buffer.prototype;
|
|
1496
|
+
} else {
|
|
1497
|
+
var sliceLen = end - start;
|
|
1498
|
+
newBuf = new Buffer(sliceLen, undefined);
|
|
1499
|
+
for (var i = 0; i < sliceLen; ++i) {
|
|
1500
|
+
newBuf[i] = this[i + start];
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1504
|
+
return newBuf
|
|
1505
|
+
};
|
|
1506
|
+
|
|
1507
|
+
/*
|
|
1508
|
+
* Need to make sure that buffer isn't trying to write out of bounds.
|
|
1509
|
+
*/
|
|
1510
|
+
function checkOffset (offset, ext, length) {
|
|
1511
|
+
if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
|
|
1512
|
+
if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
|
|
1516
|
+
offset = offset | 0;
|
|
1517
|
+
byteLength = byteLength | 0;
|
|
1518
|
+
if (!noAssert) checkOffset(offset, byteLength, this.length);
|
|
1519
|
+
|
|
1520
|
+
var val = this[offset];
|
|
1521
|
+
var mul = 1;
|
|
1522
|
+
var i = 0;
|
|
1523
|
+
while (++i < byteLength && (mul *= 0x100)) {
|
|
1524
|
+
val += this[offset + i] * mul;
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
return val
|
|
1528
|
+
};
|
|
1529
|
+
|
|
1530
|
+
Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
|
|
1531
|
+
offset = offset | 0;
|
|
1532
|
+
byteLength = byteLength | 0;
|
|
1533
|
+
if (!noAssert) {
|
|
1534
|
+
checkOffset(offset, byteLength, this.length);
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
var val = this[offset + --byteLength];
|
|
1538
|
+
var mul = 1;
|
|
1539
|
+
while (byteLength > 0 && (mul *= 0x100)) {
|
|
1540
|
+
val += this[offset + --byteLength] * mul;
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
return val
|
|
1544
|
+
};
|
|
1545
|
+
|
|
1546
|
+
Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
|
|
1547
|
+
if (!noAssert) checkOffset(offset, 1, this.length);
|
|
1548
|
+
return this[offset]
|
|
1549
|
+
};
|
|
1550
|
+
|
|
1551
|
+
Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
|
|
1552
|
+
if (!noAssert) checkOffset(offset, 2, this.length);
|
|
1553
|
+
return this[offset] | (this[offset + 1] << 8)
|
|
1554
|
+
};
|
|
1555
|
+
|
|
1556
|
+
Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
|
|
1557
|
+
if (!noAssert) checkOffset(offset, 2, this.length);
|
|
1558
|
+
return (this[offset] << 8) | this[offset + 1]
|
|
1559
|
+
};
|
|
1560
|
+
|
|
1561
|
+
Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
|
|
1562
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1563
|
+
|
|
1564
|
+
return ((this[offset]) |
|
|
1565
|
+
(this[offset + 1] << 8) |
|
|
1566
|
+
(this[offset + 2] << 16)) +
|
|
1567
|
+
(this[offset + 3] * 0x1000000)
|
|
1568
|
+
};
|
|
1569
|
+
|
|
1570
|
+
Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
|
|
1571
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1572
|
+
|
|
1573
|
+
return (this[offset] * 0x1000000) +
|
|
1574
|
+
((this[offset + 1] << 16) |
|
|
1575
|
+
(this[offset + 2] << 8) |
|
|
1576
|
+
this[offset + 3])
|
|
1577
|
+
};
|
|
1578
|
+
|
|
1579
|
+
Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
|
|
1580
|
+
offset = offset | 0;
|
|
1581
|
+
byteLength = byteLength | 0;
|
|
1582
|
+
if (!noAssert) checkOffset(offset, byteLength, this.length);
|
|
1583
|
+
|
|
1584
|
+
var val = this[offset];
|
|
1585
|
+
var mul = 1;
|
|
1586
|
+
var i = 0;
|
|
1587
|
+
while (++i < byteLength && (mul *= 0x100)) {
|
|
1588
|
+
val += this[offset + i] * mul;
|
|
1589
|
+
}
|
|
1590
|
+
mul *= 0x80;
|
|
1591
|
+
|
|
1592
|
+
if (val >= mul) val -= Math.pow(2, 8 * byteLength);
|
|
1593
|
+
|
|
1594
|
+
return val
|
|
1595
|
+
};
|
|
1596
|
+
|
|
1597
|
+
Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
|
|
1598
|
+
offset = offset | 0;
|
|
1599
|
+
byteLength = byteLength | 0;
|
|
1600
|
+
if (!noAssert) checkOffset(offset, byteLength, this.length);
|
|
1601
|
+
|
|
1602
|
+
var i = byteLength;
|
|
1603
|
+
var mul = 1;
|
|
1604
|
+
var val = this[offset + --i];
|
|
1605
|
+
while (i > 0 && (mul *= 0x100)) {
|
|
1606
|
+
val += this[offset + --i] * mul;
|
|
1607
|
+
}
|
|
1608
|
+
mul *= 0x80;
|
|
1609
|
+
|
|
1610
|
+
if (val >= mul) val -= Math.pow(2, 8 * byteLength);
|
|
1611
|
+
|
|
1612
|
+
return val
|
|
1613
|
+
};
|
|
1614
|
+
|
|
1615
|
+
Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
|
|
1616
|
+
if (!noAssert) checkOffset(offset, 1, this.length);
|
|
1617
|
+
if (!(this[offset] & 0x80)) return (this[offset])
|
|
1618
|
+
return ((0xff - this[offset] + 1) * -1)
|
|
1619
|
+
};
|
|
1620
|
+
|
|
1621
|
+
Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
|
|
1622
|
+
if (!noAssert) checkOffset(offset, 2, this.length);
|
|
1623
|
+
var val = this[offset] | (this[offset + 1] << 8);
|
|
1624
|
+
return (val & 0x8000) ? val | 0xFFFF0000 : val
|
|
1625
|
+
};
|
|
1626
|
+
|
|
1627
|
+
Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
|
|
1628
|
+
if (!noAssert) checkOffset(offset, 2, this.length);
|
|
1629
|
+
var val = this[offset + 1] | (this[offset] << 8);
|
|
1630
|
+
return (val & 0x8000) ? val | 0xFFFF0000 : val
|
|
1631
|
+
};
|
|
1632
|
+
|
|
1633
|
+
Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
|
|
1634
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1635
|
+
|
|
1636
|
+
return (this[offset]) |
|
|
1637
|
+
(this[offset + 1] << 8) |
|
|
1638
|
+
(this[offset + 2] << 16) |
|
|
1639
|
+
(this[offset + 3] << 24)
|
|
1640
|
+
};
|
|
1641
|
+
|
|
1642
|
+
Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
|
|
1643
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1644
|
+
|
|
1645
|
+
return (this[offset] << 24) |
|
|
1646
|
+
(this[offset + 1] << 16) |
|
|
1647
|
+
(this[offset + 2] << 8) |
|
|
1648
|
+
(this[offset + 3])
|
|
1649
|
+
};
|
|
1650
|
+
|
|
1651
|
+
Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
|
|
1652
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1653
|
+
return read(this, offset, true, 23, 4)
|
|
1654
|
+
};
|
|
1655
|
+
|
|
1656
|
+
Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
|
|
1657
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1658
|
+
return read(this, offset, false, 23, 4)
|
|
1659
|
+
};
|
|
1660
|
+
|
|
1661
|
+
Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
|
|
1662
|
+
if (!noAssert) checkOffset(offset, 8, this.length);
|
|
1663
|
+
return read(this, offset, true, 52, 8)
|
|
1664
|
+
};
|
|
1665
|
+
|
|
1666
|
+
Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
|
|
1667
|
+
if (!noAssert) checkOffset(offset, 8, this.length);
|
|
1668
|
+
return read(this, offset, false, 52, 8)
|
|
1669
|
+
};
|
|
1670
|
+
|
|
1671
|
+
function checkInt (buf, value, offset, ext, max, min) {
|
|
1672
|
+
if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
|
|
1673
|
+
if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
|
|
1674
|
+
if (offset + ext > buf.length) throw new RangeError('Index out of range')
|
|
1675
|
+
}
|
|
1676
|
+
|
|
1677
|
+
Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
|
|
1678
|
+
value = +value;
|
|
1679
|
+
offset = offset | 0;
|
|
1680
|
+
byteLength = byteLength | 0;
|
|
1681
|
+
if (!noAssert) {
|
|
1682
|
+
var maxBytes = Math.pow(2, 8 * byteLength) - 1;
|
|
1683
|
+
checkInt(this, value, offset, byteLength, maxBytes, 0);
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
var mul = 1;
|
|
1687
|
+
var i = 0;
|
|
1688
|
+
this[offset] = value & 0xFF;
|
|
1689
|
+
while (++i < byteLength && (mul *= 0x100)) {
|
|
1690
|
+
this[offset + i] = (value / mul) & 0xFF;
|
|
1691
|
+
}
|
|
1692
|
+
|
|
1693
|
+
return offset + byteLength
|
|
1694
|
+
};
|
|
1695
|
+
|
|
1696
|
+
Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
|
|
1697
|
+
value = +value;
|
|
1698
|
+
offset = offset | 0;
|
|
1699
|
+
byteLength = byteLength | 0;
|
|
1700
|
+
if (!noAssert) {
|
|
1701
|
+
var maxBytes = Math.pow(2, 8 * byteLength) - 1;
|
|
1702
|
+
checkInt(this, value, offset, byteLength, maxBytes, 0);
|
|
1703
|
+
}
|
|
1704
|
+
|
|
1705
|
+
var i = byteLength - 1;
|
|
1706
|
+
var mul = 1;
|
|
1707
|
+
this[offset + i] = value & 0xFF;
|
|
1708
|
+
while (--i >= 0 && (mul *= 0x100)) {
|
|
1709
|
+
this[offset + i] = (value / mul) & 0xFF;
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
return offset + byteLength
|
|
1713
|
+
};
|
|
1714
|
+
|
|
1715
|
+
Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
|
|
1716
|
+
value = +value;
|
|
1717
|
+
offset = offset | 0;
|
|
1718
|
+
if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
|
|
1719
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
|
|
1720
|
+
this[offset] = (value & 0xff);
|
|
1721
|
+
return offset + 1
|
|
1722
|
+
};
|
|
1723
|
+
|
|
1724
|
+
function objectWriteUInt16 (buf, value, offset, littleEndian) {
|
|
1725
|
+
if (value < 0) value = 0xffff + value + 1;
|
|
1726
|
+
for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
|
|
1727
|
+
buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
|
|
1728
|
+
(littleEndian ? i : 1 - i) * 8;
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
|
|
1733
|
+
value = +value;
|
|
1734
|
+
offset = offset | 0;
|
|
1735
|
+
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
|
|
1736
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1737
|
+
this[offset] = (value & 0xff);
|
|
1738
|
+
this[offset + 1] = (value >>> 8);
|
|
1739
|
+
} else {
|
|
1740
|
+
objectWriteUInt16(this, value, offset, true);
|
|
1741
|
+
}
|
|
1742
|
+
return offset + 2
|
|
1743
|
+
};
|
|
1744
|
+
|
|
1745
|
+
Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
|
|
1746
|
+
value = +value;
|
|
1747
|
+
offset = offset | 0;
|
|
1748
|
+
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
|
|
1749
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1750
|
+
this[offset] = (value >>> 8);
|
|
1751
|
+
this[offset + 1] = (value & 0xff);
|
|
1752
|
+
} else {
|
|
1753
|
+
objectWriteUInt16(this, value, offset, false);
|
|
1754
|
+
}
|
|
1755
|
+
return offset + 2
|
|
1756
|
+
};
|
|
1757
|
+
|
|
1758
|
+
function objectWriteUInt32 (buf, value, offset, littleEndian) {
|
|
1759
|
+
if (value < 0) value = 0xffffffff + value + 1;
|
|
1760
|
+
for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
|
|
1761
|
+
buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;
|
|
1762
|
+
}
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
|
|
1766
|
+
value = +value;
|
|
1767
|
+
offset = offset | 0;
|
|
1768
|
+
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
|
|
1769
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1770
|
+
this[offset + 3] = (value >>> 24);
|
|
1771
|
+
this[offset + 2] = (value >>> 16);
|
|
1772
|
+
this[offset + 1] = (value >>> 8);
|
|
1773
|
+
this[offset] = (value & 0xff);
|
|
1774
|
+
} else {
|
|
1775
|
+
objectWriteUInt32(this, value, offset, true);
|
|
1776
|
+
}
|
|
1777
|
+
return offset + 4
|
|
1778
|
+
};
|
|
1779
|
+
|
|
1780
|
+
Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
|
|
1781
|
+
value = +value;
|
|
1782
|
+
offset = offset | 0;
|
|
1783
|
+
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
|
|
1784
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1785
|
+
this[offset] = (value >>> 24);
|
|
1786
|
+
this[offset + 1] = (value >>> 16);
|
|
1787
|
+
this[offset + 2] = (value >>> 8);
|
|
1788
|
+
this[offset + 3] = (value & 0xff);
|
|
1789
|
+
} else {
|
|
1790
|
+
objectWriteUInt32(this, value, offset, false);
|
|
1791
|
+
}
|
|
1792
|
+
return offset + 4
|
|
1793
|
+
};
|
|
1794
|
+
|
|
1795
|
+
Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
|
|
1796
|
+
value = +value;
|
|
1797
|
+
offset = offset | 0;
|
|
1798
|
+
if (!noAssert) {
|
|
1799
|
+
var limit = Math.pow(2, 8 * byteLength - 1);
|
|
1800
|
+
|
|
1801
|
+
checkInt(this, value, offset, byteLength, limit - 1, -limit);
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1804
|
+
var i = 0;
|
|
1805
|
+
var mul = 1;
|
|
1806
|
+
var sub = 0;
|
|
1807
|
+
this[offset] = value & 0xFF;
|
|
1808
|
+
while (++i < byteLength && (mul *= 0x100)) {
|
|
1809
|
+
if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
|
|
1810
|
+
sub = 1;
|
|
1811
|
+
}
|
|
1812
|
+
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
return offset + byteLength
|
|
1816
|
+
};
|
|
1817
|
+
|
|
1818
|
+
Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
|
|
1819
|
+
value = +value;
|
|
1820
|
+
offset = offset | 0;
|
|
1821
|
+
if (!noAssert) {
|
|
1822
|
+
var limit = Math.pow(2, 8 * byteLength - 1);
|
|
1823
|
+
|
|
1824
|
+
checkInt(this, value, offset, byteLength, limit - 1, -limit);
|
|
1825
|
+
}
|
|
1826
|
+
|
|
1827
|
+
var i = byteLength - 1;
|
|
1828
|
+
var mul = 1;
|
|
1829
|
+
var sub = 0;
|
|
1830
|
+
this[offset + i] = value & 0xFF;
|
|
1831
|
+
while (--i >= 0 && (mul *= 0x100)) {
|
|
1832
|
+
if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
|
|
1833
|
+
sub = 1;
|
|
1834
|
+
}
|
|
1835
|
+
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
|
|
1836
|
+
}
|
|
184
1837
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
// prettier-ignore
|
|
188
|
-
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
189
|
-
.split("")
|
|
190
|
-
.map((c) => c.charCodeAt(0)));
|
|
1838
|
+
return offset + byteLength
|
|
1839
|
+
};
|
|
191
1840
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
[
|
|
208
|
-
[
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
[
|
|
221
|
-
[
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
1841
|
+
Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
|
|
1842
|
+
value = +value;
|
|
1843
|
+
offset = offset | 0;
|
|
1844
|
+
if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128);
|
|
1845
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
|
|
1846
|
+
if (value < 0) value = 0xff + value + 1;
|
|
1847
|
+
this[offset] = (value & 0xff);
|
|
1848
|
+
return offset + 1
|
|
1849
|
+
};
|
|
1850
|
+
|
|
1851
|
+
Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
|
|
1852
|
+
value = +value;
|
|
1853
|
+
offset = offset | 0;
|
|
1854
|
+
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);
|
|
1855
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1856
|
+
this[offset] = (value & 0xff);
|
|
1857
|
+
this[offset + 1] = (value >>> 8);
|
|
1858
|
+
} else {
|
|
1859
|
+
objectWriteUInt16(this, value, offset, true);
|
|
1860
|
+
}
|
|
1861
|
+
return offset + 2
|
|
1862
|
+
};
|
|
1863
|
+
|
|
1864
|
+
Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
|
|
1865
|
+
value = +value;
|
|
1866
|
+
offset = offset | 0;
|
|
1867
|
+
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);
|
|
1868
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1869
|
+
this[offset] = (value >>> 8);
|
|
1870
|
+
this[offset + 1] = (value & 0xff);
|
|
1871
|
+
} else {
|
|
1872
|
+
objectWriteUInt16(this, value, offset, false);
|
|
1873
|
+
}
|
|
1874
|
+
return offset + 2
|
|
1875
|
+
};
|
|
1876
|
+
|
|
1877
|
+
Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
|
|
1878
|
+
value = +value;
|
|
1879
|
+
offset = offset | 0;
|
|
1880
|
+
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);
|
|
1881
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1882
|
+
this[offset] = (value & 0xff);
|
|
1883
|
+
this[offset + 1] = (value >>> 8);
|
|
1884
|
+
this[offset + 2] = (value >>> 16);
|
|
1885
|
+
this[offset + 3] = (value >>> 24);
|
|
1886
|
+
} else {
|
|
1887
|
+
objectWriteUInt32(this, value, offset, true);
|
|
1888
|
+
}
|
|
1889
|
+
return offset + 4
|
|
1890
|
+
};
|
|
1891
|
+
|
|
1892
|
+
Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
|
|
1893
|
+
value = +value;
|
|
1894
|
+
offset = offset | 0;
|
|
1895
|
+
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);
|
|
1896
|
+
if (value < 0) value = 0xffffffff + value + 1;
|
|
1897
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1898
|
+
this[offset] = (value >>> 24);
|
|
1899
|
+
this[offset + 1] = (value >>> 16);
|
|
1900
|
+
this[offset + 2] = (value >>> 8);
|
|
1901
|
+
this[offset + 3] = (value & 0xff);
|
|
1902
|
+
} else {
|
|
1903
|
+
objectWriteUInt32(this, value, offset, false);
|
|
1904
|
+
}
|
|
1905
|
+
return offset + 4
|
|
1906
|
+
};
|
|
1907
|
+
|
|
1908
|
+
function checkIEEE754 (buf, value, offset, ext, max, min) {
|
|
1909
|
+
if (offset + ext > buf.length) throw new RangeError('Index out of range')
|
|
1910
|
+
if (offset < 0) throw new RangeError('Index out of range')
|
|
1911
|
+
}
|
|
1912
|
+
|
|
1913
|
+
function writeFloat (buf, value, offset, littleEndian, noAssert) {
|
|
1914
|
+
if (!noAssert) {
|
|
1915
|
+
checkIEEE754(buf, value, offset, 4);
|
|
1916
|
+
}
|
|
1917
|
+
write(buf, value, offset, littleEndian, 23, 4);
|
|
1918
|
+
return offset + 4
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1921
|
+
Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
|
|
1922
|
+
return writeFloat(this, value, offset, true, noAssert)
|
|
1923
|
+
};
|
|
1924
|
+
|
|
1925
|
+
Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
|
|
1926
|
+
return writeFloat(this, value, offset, false, noAssert)
|
|
1927
|
+
};
|
|
1928
|
+
|
|
1929
|
+
function writeDouble (buf, value, offset, littleEndian, noAssert) {
|
|
1930
|
+
if (!noAssert) {
|
|
1931
|
+
checkIEEE754(buf, value, offset, 8);
|
|
1932
|
+
}
|
|
1933
|
+
write(buf, value, offset, littleEndian, 52, 8);
|
|
1934
|
+
return offset + 8
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1937
|
+
Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
|
|
1938
|
+
return writeDouble(this, value, offset, true, noAssert)
|
|
1939
|
+
};
|
|
1940
|
+
|
|
1941
|
+
Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
|
|
1942
|
+
return writeDouble(this, value, offset, false, noAssert)
|
|
1943
|
+
};
|
|
1944
|
+
|
|
1945
|
+
// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
|
|
1946
|
+
Buffer.prototype.copy = function copy (target, targetStart, start, end) {
|
|
1947
|
+
if (!start) start = 0;
|
|
1948
|
+
if (!end && end !== 0) end = this.length;
|
|
1949
|
+
if (targetStart >= target.length) targetStart = target.length;
|
|
1950
|
+
if (!targetStart) targetStart = 0;
|
|
1951
|
+
if (end > 0 && end < start) end = start;
|
|
1952
|
+
|
|
1953
|
+
// Copy 0 bytes; we're done
|
|
1954
|
+
if (end === start) return 0
|
|
1955
|
+
if (target.length === 0 || this.length === 0) return 0
|
|
1956
|
+
|
|
1957
|
+
// Fatal error conditions
|
|
1958
|
+
if (targetStart < 0) {
|
|
1959
|
+
throw new RangeError('targetStart out of bounds')
|
|
1960
|
+
}
|
|
1961
|
+
if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
|
|
1962
|
+
if (end < 0) throw new RangeError('sourceEnd out of bounds')
|
|
1963
|
+
|
|
1964
|
+
// Are we oob?
|
|
1965
|
+
if (end > this.length) end = this.length;
|
|
1966
|
+
if (target.length - targetStart < end - start) {
|
|
1967
|
+
end = target.length - targetStart + start;
|
|
1968
|
+
}
|
|
1969
|
+
|
|
1970
|
+
var len = end - start;
|
|
1971
|
+
var i;
|
|
1972
|
+
|
|
1973
|
+
if (this === target && start < targetStart && targetStart < end) {
|
|
1974
|
+
// descending copy from end
|
|
1975
|
+
for (i = len - 1; i >= 0; --i) {
|
|
1976
|
+
target[i + targetStart] = this[i + start];
|
|
236
1977
|
}
|
|
237
|
-
|
|
238
|
-
|
|
1978
|
+
} else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1979
|
+
// ascending copy from start
|
|
1980
|
+
for (i = 0; i < len; ++i) {
|
|
1981
|
+
target[i + targetStart] = this[i + start];
|
|
1982
|
+
}
|
|
1983
|
+
} else {
|
|
1984
|
+
Uint8Array.prototype.set.call(
|
|
1985
|
+
target,
|
|
1986
|
+
this.subarray(start, start + len),
|
|
1987
|
+
targetStart
|
|
1988
|
+
);
|
|
1989
|
+
}
|
|
1990
|
+
|
|
1991
|
+
return len
|
|
239
1992
|
};
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
1993
|
+
|
|
1994
|
+
// Usage:
|
|
1995
|
+
// buffer.fill(number[, offset[, end]])
|
|
1996
|
+
// buffer.fill(buffer[, offset[, end]])
|
|
1997
|
+
// buffer.fill(string[, offset[, end]][, encoding])
|
|
1998
|
+
Buffer.prototype.fill = function fill (val, start, end, encoding) {
|
|
1999
|
+
// Handle string cases:
|
|
2000
|
+
if (typeof val === 'string') {
|
|
2001
|
+
if (typeof start === 'string') {
|
|
2002
|
+
encoding = start;
|
|
2003
|
+
start = 0;
|
|
2004
|
+
end = this.length;
|
|
2005
|
+
} else if (typeof end === 'string') {
|
|
2006
|
+
encoding = end;
|
|
2007
|
+
end = this.length;
|
|
2008
|
+
}
|
|
2009
|
+
if (val.length === 1) {
|
|
2010
|
+
var code = val.charCodeAt(0);
|
|
2011
|
+
if (code < 256) {
|
|
2012
|
+
val = code;
|
|
2013
|
+
}
|
|
2014
|
+
}
|
|
2015
|
+
if (encoding !== undefined && typeof encoding !== 'string') {
|
|
2016
|
+
throw new TypeError('encoding must be a string')
|
|
2017
|
+
}
|
|
2018
|
+
if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
|
|
2019
|
+
throw new TypeError('Unknown encoding: ' + encoding)
|
|
2020
|
+
}
|
|
2021
|
+
} else if (typeof val === 'number') {
|
|
2022
|
+
val = val & 255;
|
|
2023
|
+
}
|
|
2024
|
+
|
|
2025
|
+
// Invalid ranges are not set to a default, so can range check early.
|
|
2026
|
+
if (start < 0 || this.length < start || this.length < end) {
|
|
2027
|
+
throw new RangeError('Out of range index')
|
|
2028
|
+
}
|
|
2029
|
+
|
|
2030
|
+
if (end <= start) {
|
|
2031
|
+
return this
|
|
2032
|
+
}
|
|
2033
|
+
|
|
2034
|
+
start = start >>> 0;
|
|
2035
|
+
end = end === undefined ? this.length : end >>> 0;
|
|
2036
|
+
|
|
2037
|
+
if (!val) val = 0;
|
|
2038
|
+
|
|
2039
|
+
var i;
|
|
2040
|
+
if (typeof val === 'number') {
|
|
2041
|
+
for (i = start; i < end; ++i) {
|
|
2042
|
+
this[i] = val;
|
|
2043
|
+
}
|
|
2044
|
+
} else {
|
|
2045
|
+
var bytes = internalIsBuffer(val)
|
|
2046
|
+
? val
|
|
2047
|
+
: utf8ToBytes(new Buffer(val, encoding).toString());
|
|
2048
|
+
var len = bytes.length;
|
|
2049
|
+
for (i = 0; i < end - start; ++i) {
|
|
2050
|
+
this[i + start] = bytes[i % len];
|
|
2051
|
+
}
|
|
2052
|
+
}
|
|
2053
|
+
|
|
2054
|
+
return this
|
|
2055
|
+
};
|
|
2056
|
+
|
|
2057
|
+
// HELPER FUNCTIONS
|
|
2058
|
+
// ================
|
|
2059
|
+
|
|
2060
|
+
var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
|
|
2061
|
+
|
|
2062
|
+
function base64clean (str) {
|
|
2063
|
+
// Node strips out invalid characters like \n and \t from the string, base64-js does not
|
|
2064
|
+
str = stringtrim(str).replace(INVALID_BASE64_RE, '');
|
|
2065
|
+
// Node converts strings with length < 2 to ''
|
|
2066
|
+
if (str.length < 2) return ''
|
|
2067
|
+
// Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
|
|
2068
|
+
while (str.length % 4 !== 0) {
|
|
2069
|
+
str = str + '=';
|
|
2070
|
+
}
|
|
2071
|
+
return str
|
|
2072
|
+
}
|
|
2073
|
+
|
|
2074
|
+
function stringtrim (str) {
|
|
2075
|
+
if (str.trim) return str.trim()
|
|
2076
|
+
return str.replace(/^\s+|\s+$/g, '')
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2079
|
+
function toHex (n) {
|
|
2080
|
+
if (n < 16) return '0' + n.toString(16)
|
|
2081
|
+
return n.toString(16)
|
|
2082
|
+
}
|
|
2083
|
+
|
|
2084
|
+
function utf8ToBytes (string, units) {
|
|
2085
|
+
units = units || Infinity;
|
|
2086
|
+
var codePoint;
|
|
2087
|
+
var length = string.length;
|
|
2088
|
+
var leadSurrogate = null;
|
|
2089
|
+
var bytes = [];
|
|
2090
|
+
|
|
2091
|
+
for (var i = 0; i < length; ++i) {
|
|
2092
|
+
codePoint = string.charCodeAt(i);
|
|
2093
|
+
|
|
2094
|
+
// is surrogate component
|
|
2095
|
+
if (codePoint > 0xD7FF && codePoint < 0xE000) {
|
|
2096
|
+
// last char was a lead
|
|
2097
|
+
if (!leadSurrogate) {
|
|
2098
|
+
// no lead yet
|
|
2099
|
+
if (codePoint > 0xDBFF) {
|
|
2100
|
+
// unexpected trail
|
|
2101
|
+
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
|
|
2102
|
+
continue
|
|
2103
|
+
} else if (i + 1 === length) {
|
|
2104
|
+
// unpaired lead
|
|
2105
|
+
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
|
|
2106
|
+
continue
|
|
2107
|
+
}
|
|
2108
|
+
|
|
2109
|
+
// valid lead
|
|
2110
|
+
leadSurrogate = codePoint;
|
|
2111
|
+
|
|
2112
|
+
continue
|
|
2113
|
+
}
|
|
2114
|
+
|
|
2115
|
+
// 2 leads in a row
|
|
2116
|
+
if (codePoint < 0xDC00) {
|
|
2117
|
+
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
|
|
2118
|
+
leadSurrogate = codePoint;
|
|
2119
|
+
continue
|
|
2120
|
+
}
|
|
2121
|
+
|
|
2122
|
+
// valid surrogate pair
|
|
2123
|
+
codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
|
|
2124
|
+
} else if (leadSurrogate) {
|
|
2125
|
+
// valid bmp char, but last char was a lead
|
|
2126
|
+
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
leadSurrogate = null;
|
|
2130
|
+
|
|
2131
|
+
// encode utf8
|
|
2132
|
+
if (codePoint < 0x80) {
|
|
2133
|
+
if ((units -= 1) < 0) break
|
|
2134
|
+
bytes.push(codePoint);
|
|
2135
|
+
} else if (codePoint < 0x800) {
|
|
2136
|
+
if ((units -= 2) < 0) break
|
|
2137
|
+
bytes.push(
|
|
2138
|
+
codePoint >> 0x6 | 0xC0,
|
|
2139
|
+
codePoint & 0x3F | 0x80
|
|
2140
|
+
);
|
|
2141
|
+
} else if (codePoint < 0x10000) {
|
|
2142
|
+
if ((units -= 3) < 0) break
|
|
2143
|
+
bytes.push(
|
|
2144
|
+
codePoint >> 0xC | 0xE0,
|
|
2145
|
+
codePoint >> 0x6 & 0x3F | 0x80,
|
|
2146
|
+
codePoint & 0x3F | 0x80
|
|
2147
|
+
);
|
|
2148
|
+
} else if (codePoint < 0x110000) {
|
|
2149
|
+
if ((units -= 4) < 0) break
|
|
2150
|
+
bytes.push(
|
|
2151
|
+
codePoint >> 0x12 | 0xF0,
|
|
2152
|
+
codePoint >> 0xC & 0x3F | 0x80,
|
|
2153
|
+
codePoint >> 0x6 & 0x3F | 0x80,
|
|
2154
|
+
codePoint & 0x3F | 0x80
|
|
2155
|
+
);
|
|
2156
|
+
} else {
|
|
2157
|
+
throw new Error('Invalid code point')
|
|
2158
|
+
}
|
|
2159
|
+
}
|
|
2160
|
+
|
|
2161
|
+
return bytes
|
|
2162
|
+
}
|
|
2163
|
+
|
|
2164
|
+
function asciiToBytes (str) {
|
|
2165
|
+
var byteArray = [];
|
|
2166
|
+
for (var i = 0; i < str.length; ++i) {
|
|
2167
|
+
// Node's code seems to be doing this and not & 0x7F..
|
|
2168
|
+
byteArray.push(str.charCodeAt(i) & 0xFF);
|
|
2169
|
+
}
|
|
2170
|
+
return byteArray
|
|
2171
|
+
}
|
|
2172
|
+
|
|
2173
|
+
function utf16leToBytes (str, units) {
|
|
2174
|
+
var c, hi, lo;
|
|
2175
|
+
var byteArray = [];
|
|
2176
|
+
for (var i = 0; i < str.length; ++i) {
|
|
2177
|
+
if ((units -= 2) < 0) break
|
|
2178
|
+
|
|
2179
|
+
c = str.charCodeAt(i);
|
|
2180
|
+
hi = c >> 8;
|
|
2181
|
+
lo = c % 256;
|
|
2182
|
+
byteArray.push(lo);
|
|
2183
|
+
byteArray.push(hi);
|
|
2184
|
+
}
|
|
2185
|
+
|
|
2186
|
+
return byteArray
|
|
2187
|
+
}
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
function base64ToBytes (str) {
|
|
2191
|
+
return toByteArray(base64clean(str))
|
|
2192
|
+
}
|
|
2193
|
+
|
|
2194
|
+
function blitBuffer (src, dst, offset, length) {
|
|
2195
|
+
for (var i = 0; i < length; ++i) {
|
|
2196
|
+
if ((i + offset >= dst.length) || (i >= src.length)) break
|
|
2197
|
+
dst[i + offset] = src[i];
|
|
2198
|
+
}
|
|
2199
|
+
return i
|
|
2200
|
+
}
|
|
2201
|
+
|
|
2202
|
+
function isnan (val) {
|
|
2203
|
+
return val !== val // eslint-disable-line no-self-compare
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
|
|
2208
|
+
// The _isBuffer check is for Safari 5-7 support, because it's missing
|
|
2209
|
+
// Object.prototype.constructor. Remove this eventually
|
|
2210
|
+
function isBuffer(obj) {
|
|
2211
|
+
return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
function isFastBuffer (obj) {
|
|
2215
|
+
return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
|
|
2216
|
+
}
|
|
2217
|
+
|
|
2218
|
+
// For Node v0.10 support. Remove this eventually.
|
|
2219
|
+
function isSlowBuffer (obj) {
|
|
2220
|
+
return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))
|
|
2221
|
+
}
|
|
2222
|
+
|
|
2223
|
+
/*
|
|
2224
|
+
* Shared base64 decode helper for generated decode data.
|
|
2225
|
+
* Assumes global atob is available.
|
|
244
2226
|
*/
|
|
245
|
-
function
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
2227
|
+
function decodeBase64(input) {
|
|
2228
|
+
const binary =
|
|
2229
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
2230
|
+
typeof atob === "function"
|
|
2231
|
+
? // Browser (and Node >=16)
|
|
2232
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
2233
|
+
atob(input)
|
|
2234
|
+
: // Older Node versions (<16)
|
|
2235
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
2236
|
+
typeof Buffer.from === "function"
|
|
2237
|
+
? // eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
2238
|
+
Buffer.from(input, "base64").toString("binary")
|
|
2239
|
+
: // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
|
|
2240
|
+
new Buffer(input, "base64").toString("binary");
|
|
2241
|
+
const evenLength = binary.length & -2; // Round down to even length
|
|
2242
|
+
const out = new Uint16Array(evenLength / 2);
|
|
2243
|
+
for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
|
|
2244
|
+
const lo = binary.charCodeAt(index);
|
|
2245
|
+
const hi = binary.charCodeAt(index + 1);
|
|
2246
|
+
out[outIndex++] = lo | (hi << 8);
|
|
249
2247
|
}
|
|
250
|
-
return
|
|
2248
|
+
return out;
|
|
251
2249
|
}
|
|
252
2250
|
|
|
2251
|
+
// Generated using scripts/write-decode-map.ts
|
|
2252
|
+
const htmlDecodeTree = /* #__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
2253
|
+
|
|
2254
|
+
/**
|
|
2255
|
+
* Bit flags & masks for the binary trie encoding used for entity decoding.
|
|
2256
|
+
*
|
|
2257
|
+
* Bit layout (16 bits total):
|
|
2258
|
+
* 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
|
|
2259
|
+
* 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
|
|
2260
|
+
* If valueLength==0: compact run flag.
|
|
2261
|
+
* 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
|
|
2262
|
+
* 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
|
|
2263
|
+
*/
|
|
2264
|
+
var BinTrieFlags;
|
|
2265
|
+
(function (BinTrieFlags) {
|
|
2266
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
2267
|
+
BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
|
|
2268
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
|
|
2269
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
2270
|
+
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
2271
|
+
|
|
253
2272
|
var CharCodes;
|
|
254
2273
|
(function (CharCodes) {
|
|
255
2274
|
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
@@ -266,13 +2285,7 @@ var CharCodes;
|
|
|
266
2285
|
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
267
2286
|
})(CharCodes || (CharCodes = {}));
|
|
268
2287
|
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
269
|
-
const TO_LOWER_BIT =
|
|
270
|
-
var BinTrieFlags;
|
|
271
|
-
(function (BinTrieFlags) {
|
|
272
|
-
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
273
|
-
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
274
|
-
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
275
|
-
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
2288
|
+
const TO_LOWER_BIT = 32;
|
|
276
2289
|
function isNumber(code) {
|
|
277
2290
|
return code >= CharCodes.ZERO && code <= CharCodes.NINE;
|
|
278
2291
|
}
|
|
@@ -317,6 +2330,7 @@ var DecodingMode;
|
|
|
317
2330
|
class EntityDecoder {
|
|
318
2331
|
constructor(
|
|
319
2332
|
/** The tree used to decode entities. */
|
|
2333
|
+
// biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
|
|
320
2334
|
decodeTree,
|
|
321
2335
|
/**
|
|
322
2336
|
* The function that is called when a codepoint is decoded.
|
|
@@ -367,32 +2381,32 @@ class EntityDecoder {
|
|
|
367
2381
|
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
368
2382
|
* entity is incomplete, and resume when the next string is written.
|
|
369
2383
|
*
|
|
370
|
-
* @param
|
|
2384
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
371
2385
|
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
372
2386
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
373
2387
|
*/
|
|
374
|
-
write(
|
|
2388
|
+
write(input, offset) {
|
|
375
2389
|
switch (this.state) {
|
|
376
2390
|
case EntityDecoderState.EntityStart: {
|
|
377
|
-
if (
|
|
2391
|
+
if (input.charCodeAt(offset) === CharCodes.NUM) {
|
|
378
2392
|
this.state = EntityDecoderState.NumericStart;
|
|
379
2393
|
this.consumed += 1;
|
|
380
|
-
return this.stateNumericStart(
|
|
2394
|
+
return this.stateNumericStart(input, offset + 1);
|
|
381
2395
|
}
|
|
382
2396
|
this.state = EntityDecoderState.NamedEntity;
|
|
383
|
-
return this.stateNamedEntity(
|
|
2397
|
+
return this.stateNamedEntity(input, offset);
|
|
384
2398
|
}
|
|
385
2399
|
case EntityDecoderState.NumericStart: {
|
|
386
|
-
return this.stateNumericStart(
|
|
2400
|
+
return this.stateNumericStart(input, offset);
|
|
387
2401
|
}
|
|
388
2402
|
case EntityDecoderState.NumericDecimal: {
|
|
389
|
-
return this.stateNumericDecimal(
|
|
2403
|
+
return this.stateNumericDecimal(input, offset);
|
|
390
2404
|
}
|
|
391
2405
|
case EntityDecoderState.NumericHex: {
|
|
392
|
-
return this.stateNumericHex(
|
|
2406
|
+
return this.stateNumericHex(input, offset);
|
|
393
2407
|
}
|
|
394
2408
|
case EntityDecoderState.NamedEntity: {
|
|
395
|
-
return this.stateNamedEntity(
|
|
2409
|
+
return this.stateNamedEntity(input, offset);
|
|
396
2410
|
}
|
|
397
2411
|
}
|
|
398
2412
|
}
|
|
@@ -401,78 +2415,71 @@ class EntityDecoder {
|
|
|
401
2415
|
*
|
|
402
2416
|
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
403
2417
|
*
|
|
404
|
-
* @param
|
|
2418
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
405
2419
|
* @param offset The current offset.
|
|
406
2420
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
407
2421
|
*/
|
|
408
|
-
stateNumericStart(
|
|
409
|
-
if (offset >=
|
|
2422
|
+
stateNumericStart(input, offset) {
|
|
2423
|
+
if (offset >= input.length) {
|
|
410
2424
|
return -1;
|
|
411
2425
|
}
|
|
412
|
-
if ((
|
|
2426
|
+
if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
|
|
413
2427
|
this.state = EntityDecoderState.NumericHex;
|
|
414
2428
|
this.consumed += 1;
|
|
415
|
-
return this.stateNumericHex(
|
|
2429
|
+
return this.stateNumericHex(input, offset + 1);
|
|
416
2430
|
}
|
|
417
2431
|
this.state = EntityDecoderState.NumericDecimal;
|
|
418
|
-
return this.stateNumericDecimal(
|
|
419
|
-
}
|
|
420
|
-
addToNumericResult(str, start, end, base) {
|
|
421
|
-
if (start !== end) {
|
|
422
|
-
const digitCount = end - start;
|
|
423
|
-
this.result =
|
|
424
|
-
this.result * Math.pow(base, digitCount) +
|
|
425
|
-
parseInt(str.substr(start, digitCount), base);
|
|
426
|
-
this.consumed += digitCount;
|
|
427
|
-
}
|
|
2432
|
+
return this.stateNumericDecimal(input, offset);
|
|
428
2433
|
}
|
|
429
2434
|
/**
|
|
430
2435
|
* Parses a hexadecimal numeric entity.
|
|
431
2436
|
*
|
|
432
2437
|
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
433
2438
|
*
|
|
434
|
-
* @param
|
|
2439
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
435
2440
|
* @param offset The current offset.
|
|
436
2441
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
437
2442
|
*/
|
|
438
|
-
stateNumericHex(
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
const char = str.charCodeAt(offset);
|
|
2443
|
+
stateNumericHex(input, offset) {
|
|
2444
|
+
while (offset < input.length) {
|
|
2445
|
+
const char = input.charCodeAt(offset);
|
|
442
2446
|
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
443
|
-
|
|
2447
|
+
// Convert hex digit to value (0-15); 'a'/'A' -> 10.
|
|
2448
|
+
const digit = char <= CharCodes.NINE
|
|
2449
|
+
? char - CharCodes.ZERO
|
|
2450
|
+
: (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;
|
|
2451
|
+
this.result = this.result * 16 + digit;
|
|
2452
|
+
this.consumed++;
|
|
2453
|
+
offset++;
|
|
444
2454
|
}
|
|
445
2455
|
else {
|
|
446
|
-
this.addToNumericResult(str, startIdx, offset, 16);
|
|
447
2456
|
return this.emitNumericEntity(char, 3);
|
|
448
2457
|
}
|
|
449
2458
|
}
|
|
450
|
-
|
|
451
|
-
return -1;
|
|
2459
|
+
return -1; // Incomplete entity
|
|
452
2460
|
}
|
|
453
2461
|
/**
|
|
454
2462
|
* Parses a decimal numeric entity.
|
|
455
2463
|
*
|
|
456
2464
|
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
457
2465
|
*
|
|
458
|
-
* @param
|
|
2466
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
459
2467
|
* @param offset The current offset.
|
|
460
2468
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
461
2469
|
*/
|
|
462
|
-
stateNumericDecimal(
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
const char = str.charCodeAt(offset);
|
|
2470
|
+
stateNumericDecimal(input, offset) {
|
|
2471
|
+
while (offset < input.length) {
|
|
2472
|
+
const char = input.charCodeAt(offset);
|
|
466
2473
|
if (isNumber(char)) {
|
|
467
|
-
|
|
2474
|
+
this.result = this.result * 10 + (char - CharCodes.ZERO);
|
|
2475
|
+
this.consumed++;
|
|
2476
|
+
offset++;
|
|
468
2477
|
}
|
|
469
2478
|
else {
|
|
470
|
-
this.addToNumericResult(str, startIdx, offset, 10);
|
|
471
2479
|
return this.emitNumericEntity(char, 2);
|
|
472
2480
|
}
|
|
473
2481
|
}
|
|
474
|
-
|
|
475
|
-
return -1;
|
|
2482
|
+
return -1; // Incomplete entity
|
|
476
2483
|
}
|
|
477
2484
|
/**
|
|
478
2485
|
* Validate and emit a numeric entity.
|
|
@@ -515,17 +2522,74 @@ class EntityDecoder {
|
|
|
515
2522
|
*
|
|
516
2523
|
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
517
2524
|
*
|
|
518
|
-
* @param
|
|
2525
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
519
2526
|
* @param offset The current offset.
|
|
520
2527
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
521
2528
|
*/
|
|
522
|
-
stateNamedEntity(
|
|
2529
|
+
stateNamedEntity(input, offset) {
|
|
523
2530
|
const { decodeTree } = this;
|
|
524
2531
|
let current = decodeTree[this.treeIndex];
|
|
525
|
-
// The
|
|
2532
|
+
// The length is the number of bytes of the value, including the current byte.
|
|
526
2533
|
let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
527
|
-
|
|
528
|
-
|
|
2534
|
+
while (offset < input.length) {
|
|
2535
|
+
// Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
|
|
2536
|
+
if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {
|
|
2537
|
+
const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
|
|
2538
|
+
const firstChar = current & BinTrieFlags.JUMP_TABLE;
|
|
2539
|
+
// Fast-fail if we don't have enough remaining input for the full run (incomplete entity)
|
|
2540
|
+
if (offset + runLength > input.length)
|
|
2541
|
+
return -1;
|
|
2542
|
+
// Verify first char
|
|
2543
|
+
if (input.charCodeAt(offset) !== firstChar) {
|
|
2544
|
+
return this.result === 0
|
|
2545
|
+
? 0
|
|
2546
|
+
: this.emitNotTerminatedNamedEntity();
|
|
2547
|
+
}
|
|
2548
|
+
offset++;
|
|
2549
|
+
this.excess++;
|
|
2550
|
+
// Remaining characters after the first
|
|
2551
|
+
const remaining = runLength - 1;
|
|
2552
|
+
// Iterate over packed 2-char words
|
|
2553
|
+
for (let runPos = 1; runPos < runLength; runPos += 2) {
|
|
2554
|
+
const packedWord = decodeTree[this.treeIndex + 1 + ((runPos - 1) >> 1)];
|
|
2555
|
+
const low = packedWord & 0xff;
|
|
2556
|
+
if (input.charCodeAt(offset) !== low) {
|
|
2557
|
+
return this.result === 0
|
|
2558
|
+
? 0
|
|
2559
|
+
: this.emitNotTerminatedNamedEntity();
|
|
2560
|
+
}
|
|
2561
|
+
offset++;
|
|
2562
|
+
this.excess++;
|
|
2563
|
+
const high = (packedWord >> 8) & 0xff;
|
|
2564
|
+
if (runPos + 1 < runLength) {
|
|
2565
|
+
if (input.charCodeAt(offset) !== high) {
|
|
2566
|
+
return this.result === 0
|
|
2567
|
+
? 0
|
|
2568
|
+
: this.emitNotTerminatedNamedEntity();
|
|
2569
|
+
}
|
|
2570
|
+
offset++;
|
|
2571
|
+
this.excess++;
|
|
2572
|
+
}
|
|
2573
|
+
}
|
|
2574
|
+
this.treeIndex += 1 + ((remaining + 1) >> 1);
|
|
2575
|
+
current = decodeTree[this.treeIndex];
|
|
2576
|
+
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
2577
|
+
}
|
|
2578
|
+
if (offset >= input.length)
|
|
2579
|
+
break;
|
|
2580
|
+
const char = input.charCodeAt(offset);
|
|
2581
|
+
/*
|
|
2582
|
+
* Implicit semicolon handling for nodes that require a semicolon but
|
|
2583
|
+
* don't have an explicit ';' branch stored in the trie. If we have
|
|
2584
|
+
* a value on the current node, it requires a semicolon, and the
|
|
2585
|
+
* current input character is a semicolon, emit the entity using the
|
|
2586
|
+
* current node (without descending further).
|
|
2587
|
+
*/
|
|
2588
|
+
if (char === CharCodes.SEMI &&
|
|
2589
|
+
valueLength !== 0 &&
|
|
2590
|
+
(current & BinTrieFlags.FLAG13) !== 0) {
|
|
2591
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
2592
|
+
}
|
|
529
2593
|
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
530
2594
|
if (this.treeIndex < 0) {
|
|
531
2595
|
return this.result === 0 ||
|
|
@@ -547,12 +2611,16 @@ class EntityDecoder {
|
|
|
547
2611
|
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
548
2612
|
}
|
|
549
2613
|
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
550
|
-
if (this.decodeMode !== DecodingMode.Strict
|
|
2614
|
+
if (this.decodeMode !== DecodingMode.Strict &&
|
|
2615
|
+
(current & BinTrieFlags.FLAG13) === 0) {
|
|
551
2616
|
this.result = this.treeIndex;
|
|
552
2617
|
this.consumed += this.excess;
|
|
553
2618
|
this.excess = 0;
|
|
554
2619
|
}
|
|
555
2620
|
}
|
|
2621
|
+
// Increment offset & excess for next iteration
|
|
2622
|
+
offset++;
|
|
2623
|
+
this.excess++;
|
|
556
2624
|
}
|
|
557
2625
|
return -1;
|
|
558
2626
|
}
|
|
@@ -581,7 +2649,8 @@ class EntityDecoder {
|
|
|
581
2649
|
emitNamedEntityData(result, valueLength, consumed) {
|
|
582
2650
|
const { decodeTree } = this;
|
|
583
2651
|
this.emitCodePoint(valueLength === 1
|
|
584
|
-
? decodeTree[result] &
|
|
2652
|
+
? decodeTree[result] &
|
|
2653
|
+
~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)
|
|
585
2654
|
: decodeTree[result + 1], consumed);
|
|
586
2655
|
if (valueLength === 3) {
|
|
587
2656
|
// For multi-byte values, we need to emit the second byte.
|
|
@@ -632,28 +2701,28 @@ class EntityDecoder {
|
|
|
632
2701
|
* @returns A function that decodes entities in a string.
|
|
633
2702
|
*/
|
|
634
2703
|
function getDecoder(decodeTree) {
|
|
635
|
-
let
|
|
636
|
-
const decoder = new EntityDecoder(decodeTree, (
|
|
637
|
-
return function decodeWithTrie(
|
|
2704
|
+
let returnValue = "";
|
|
2705
|
+
const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));
|
|
2706
|
+
return function decodeWithTrie(input, decodeMode) {
|
|
638
2707
|
let lastIndex = 0;
|
|
639
2708
|
let offset = 0;
|
|
640
|
-
while ((offset =
|
|
641
|
-
|
|
2709
|
+
while ((offset = input.indexOf("&", offset)) >= 0) {
|
|
2710
|
+
returnValue += input.slice(lastIndex, offset);
|
|
642
2711
|
decoder.startEntity(decodeMode);
|
|
643
|
-
const
|
|
2712
|
+
const length = decoder.write(input,
|
|
644
2713
|
// Skip the "&"
|
|
645
2714
|
offset + 1);
|
|
646
|
-
if (
|
|
2715
|
+
if (length < 0) {
|
|
647
2716
|
lastIndex = offset + decoder.end();
|
|
648
2717
|
break;
|
|
649
2718
|
}
|
|
650
|
-
lastIndex = offset +
|
|
651
|
-
// If `
|
|
652
|
-
offset =
|
|
2719
|
+
lastIndex = offset + length;
|
|
2720
|
+
// If `length` is 0, skip the current `&` and continue.
|
|
2721
|
+
offset = length === 0 ? lastIndex + 1 : lastIndex;
|
|
653
2722
|
}
|
|
654
|
-
const result =
|
|
2723
|
+
const result = returnValue + input.slice(lastIndex);
|
|
655
2724
|
// Make sure we don't keep a reference to the final string.
|
|
656
|
-
|
|
2725
|
+
returnValue = "";
|
|
657
2726
|
return result;
|
|
658
2727
|
};
|
|
659
2728
|
}
|
|
@@ -667,50 +2736,55 @@ function getDecoder(decodeTree) {
|
|
|
667
2736
|
* @param char The current character.
|
|
668
2737
|
* @returns The index of the next node, or -1 if no branch is taken.
|
|
669
2738
|
*/
|
|
670
|
-
function determineBranch(decodeTree, current,
|
|
2739
|
+
function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
671
2740
|
const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
672
2741
|
const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
673
2742
|
// Case 1: Single branch encoded in jump offset
|
|
674
2743
|
if (branchCount === 0) {
|
|
675
|
-
return jumpOffset !== 0 && char === jumpOffset ?
|
|
2744
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
|
|
676
2745
|
}
|
|
677
2746
|
// Case 2: Multiple branches encoded in jump table
|
|
678
2747
|
if (jumpOffset) {
|
|
679
2748
|
const value = char - jumpOffset;
|
|
680
2749
|
return value < 0 || value >= branchCount
|
|
681
2750
|
? -1
|
|
682
|
-
: decodeTree[
|
|
2751
|
+
: decodeTree[nodeIndex + value] - 1;
|
|
683
2752
|
}
|
|
684
|
-
// Case 3: Multiple branches encoded in dictionary
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
2753
|
+
// Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
|
|
2754
|
+
const packedKeySlots = (branchCount + 1) >> 1;
|
|
2755
|
+
/*
|
|
2756
|
+
* Treat packed keys as a virtual sorted array of length `branchCount`.
|
|
2757
|
+
* Key(i) = low byte for even i, high byte for odd i in slot i>>1.
|
|
2758
|
+
*/
|
|
2759
|
+
let lo = 0;
|
|
2760
|
+
let hi = branchCount - 1;
|
|
688
2761
|
while (lo <= hi) {
|
|
689
2762
|
const mid = (lo + hi) >>> 1;
|
|
690
|
-
const
|
|
691
|
-
|
|
2763
|
+
const slot = mid >> 1;
|
|
2764
|
+
const packed = decodeTree[nodeIndex + slot];
|
|
2765
|
+
const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
|
|
2766
|
+
if (midKey < char) {
|
|
692
2767
|
lo = mid + 1;
|
|
693
2768
|
}
|
|
694
|
-
else if (
|
|
2769
|
+
else if (midKey > char) {
|
|
695
2770
|
hi = mid - 1;
|
|
696
2771
|
}
|
|
697
2772
|
else {
|
|
698
|
-
return decodeTree[
|
|
2773
|
+
return decodeTree[nodeIndex + packedKeySlots + mid];
|
|
699
2774
|
}
|
|
700
2775
|
}
|
|
701
2776
|
return -1;
|
|
702
2777
|
}
|
|
703
|
-
const htmlDecoder = getDecoder(htmlDecodeTree);
|
|
704
|
-
getDecoder(xmlDecodeTree);
|
|
2778
|
+
const htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);
|
|
705
2779
|
/**
|
|
706
2780
|
* Decodes an HTML string.
|
|
707
2781
|
*
|
|
708
|
-
* @param
|
|
2782
|
+
* @param htmlString The string to decode.
|
|
709
2783
|
* @param mode The decoding mode.
|
|
710
2784
|
* @returns The decoded string.
|
|
711
2785
|
*/
|
|
712
|
-
function decodeHTML(
|
|
713
|
-
return htmlDecoder(
|
|
2786
|
+
function decodeHTML(htmlString, mode = DecodingMode.Legacy) {
|
|
2787
|
+
return htmlDecoder(htmlString, mode);
|
|
714
2788
|
}
|
|
715
2789
|
|
|
716
2790
|
const defaultDelimitersOpen = new Uint8Array([123, 123]);
|
|
@@ -820,14 +2894,28 @@ class Tokenizer {
|
|
|
820
2894
|
getPos(index) {
|
|
821
2895
|
let line = 1;
|
|
822
2896
|
let column = index + 1;
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
2897
|
+
const length = this.newlines.length;
|
|
2898
|
+
let j = -1;
|
|
2899
|
+
if (length > 100) {
|
|
2900
|
+
let l = -1;
|
|
2901
|
+
let r = length;
|
|
2902
|
+
while (l + 1 < r) {
|
|
2903
|
+
const m = l + r >>> 1;
|
|
2904
|
+
this.newlines[m] < index ? l = m : r = m;
|
|
2905
|
+
}
|
|
2906
|
+
j = l;
|
|
2907
|
+
} else {
|
|
2908
|
+
for (let i = length - 1; i >= 0; i--) {
|
|
2909
|
+
if (index > this.newlines[i]) {
|
|
2910
|
+
j = i;
|
|
2911
|
+
break;
|
|
2912
|
+
}
|
|
829
2913
|
}
|
|
830
2914
|
}
|
|
2915
|
+
if (j >= 0) {
|
|
2916
|
+
line = j + 2;
|
|
2917
|
+
column = index - this.newlines[j];
|
|
2918
|
+
}
|
|
831
2919
|
return {
|
|
832
2920
|
column,
|
|
833
2921
|
line,
|
|
@@ -1631,7 +3719,7 @@ const errorMessages = {
|
|
|
1631
3719
|
[32]: `v-for has invalid expression.`,
|
|
1632
3720
|
[33]: `<template v-for> key should be placed on the <template> tag.`,
|
|
1633
3721
|
[34]: `v-bind is missing expression.`,
|
|
1634
|
-
[
|
|
3722
|
+
[53]: `v-bind with same-name shorthand only allows static argument.`,
|
|
1635
3723
|
[35]: `v-on is missing expression.`,
|
|
1636
3724
|
[36]: `Unexpected custom directive on <slot> outlet.`,
|
|
1637
3725
|
[37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,
|
|
@@ -1643,16 +3731,17 @@ const errorMessages = {
|
|
|
1643
3731
|
[43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
|
|
1644
3732
|
[44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
|
|
1645
3733
|
Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
|
|
1646
|
-
[45]: `
|
|
1647
|
-
[46]:
|
|
1648
|
-
[
|
|
3734
|
+
[45]: `v-model cannot be used on a const binding because it is not writable.`,
|
|
3735
|
+
[46]: `Error parsing JavaScript expression: `,
|
|
3736
|
+
[47]: `<KeepAlive> expects exactly one child component.`,
|
|
3737
|
+
[52]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`,
|
|
1649
3738
|
// generic errors
|
|
1650
|
-
[
|
|
1651
|
-
[
|
|
1652
|
-
[
|
|
1653
|
-
[
|
|
3739
|
+
[48]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
|
|
3740
|
+
[49]: `ES module mode is not supported in this build of compiler.`,
|
|
3741
|
+
[50]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
|
|
3742
|
+
[51]: `"scopeId" option is only supported in module mode.`,
|
|
1654
3743
|
// just to fulfill types
|
|
1655
|
-
[
|
|
3744
|
+
[54]: ``
|
|
1656
3745
|
};
|
|
1657
3746
|
|
|
1658
3747
|
var lib = {};
|
|
@@ -16542,8 +18631,7 @@ function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [
|
|
|
16542
18631
|
if (includeAll || isRefed && !isLocal) {
|
|
16543
18632
|
onIdentifier(node, parent, parentStack, isRefed, isLocal);
|
|
16544
18633
|
}
|
|
16545
|
-
} else if (node.type === "ObjectProperty" &&
|
|
16546
|
-
(parent == null ? void 0 : parent.type) === "ObjectPattern") {
|
|
18634
|
+
} else if (node.type === "ObjectProperty" && (parent == null ? void 0 : parent.type) === "ObjectPattern") {
|
|
16547
18635
|
node.inPattern = true;
|
|
16548
18636
|
} else if (isFunctionType(node)) {
|
|
16549
18637
|
if (node.scopeIds) {
|
|
@@ -17085,7 +19173,7 @@ function toValidAssetId(name, type) {
|
|
|
17085
19173
|
})}`;
|
|
17086
19174
|
}
|
|
17087
19175
|
function filterNonCommentChildren(node) {
|
|
17088
|
-
return node.children.filter((n) => n
|
|
19176
|
+
return node.children.filter((n) => !isCommentOrWhitespace(n));
|
|
17089
19177
|
}
|
|
17090
19178
|
function hasSingleChild(node) {
|
|
17091
19179
|
return filterNonCommentChildren(node).length === 1;
|
|
@@ -17746,7 +19834,7 @@ function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0
|
|
|
17746
19834
|
}
|
|
17747
19835
|
} catch (e) {
|
|
17748
19836
|
exp.ast = false;
|
|
17749
|
-
emitError(
|
|
19837
|
+
emitError(46, loc.start.offset, e.message);
|
|
17750
19838
|
}
|
|
17751
19839
|
}
|
|
17752
19840
|
return exp;
|
|
@@ -18046,7 +20134,7 @@ var hasRequiredUtil;
|
|
|
18046
20134
|
function requireUtil () {
|
|
18047
20135
|
if (hasRequiredUtil) return util;
|
|
18048
20136
|
hasRequiredUtil = 1;
|
|
18049
|
-
(function (exports) {
|
|
20137
|
+
(function (exports$1) {
|
|
18050
20138
|
/*
|
|
18051
20139
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
18052
20140
|
* Licensed under the New BSD license. See LICENSE or:
|
|
@@ -18072,7 +20160,7 @@ function requireUtil () {
|
|
|
18072
20160
|
throw new Error('"' + aName + '" is a required argument.');
|
|
18073
20161
|
}
|
|
18074
20162
|
}
|
|
18075
|
-
exports.getArg = getArg;
|
|
20163
|
+
exports$1.getArg = getArg;
|
|
18076
20164
|
|
|
18077
20165
|
var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
|
|
18078
20166
|
var dataUrlRegexp = /^data:.+\,.+$/;
|
|
@@ -18090,7 +20178,7 @@ function requireUtil () {
|
|
|
18090
20178
|
path: match[5]
|
|
18091
20179
|
};
|
|
18092
20180
|
}
|
|
18093
|
-
exports.urlParse = urlParse;
|
|
20181
|
+
exports$1.urlParse = urlParse;
|
|
18094
20182
|
|
|
18095
20183
|
function urlGenerate(aParsedUrl) {
|
|
18096
20184
|
var url = '';
|
|
@@ -18112,7 +20200,7 @@ function requireUtil () {
|
|
|
18112
20200
|
}
|
|
18113
20201
|
return url;
|
|
18114
20202
|
}
|
|
18115
|
-
exports.urlGenerate = urlGenerate;
|
|
20203
|
+
exports$1.urlGenerate = urlGenerate;
|
|
18116
20204
|
|
|
18117
20205
|
var MAX_CACHED_INPUTS = 32;
|
|
18118
20206
|
|
|
@@ -18171,7 +20259,7 @@ function requireUtil () {
|
|
|
18171
20259
|
}
|
|
18172
20260
|
path = url.path;
|
|
18173
20261
|
}
|
|
18174
|
-
var isAbsolute = exports.isAbsolute(path);
|
|
20262
|
+
var isAbsolute = exports$1.isAbsolute(path);
|
|
18175
20263
|
// Split the path into parts between `/` characters. This is much faster than
|
|
18176
20264
|
// using `.split(/\/+/g)`.
|
|
18177
20265
|
var parts = [];
|
|
@@ -18222,7 +20310,7 @@ function requireUtil () {
|
|
|
18222
20310
|
}
|
|
18223
20311
|
return path;
|
|
18224
20312
|
});
|
|
18225
|
-
exports.normalize = normalize;
|
|
20313
|
+
exports$1.normalize = normalize;
|
|
18226
20314
|
|
|
18227
20315
|
/**
|
|
18228
20316
|
* Joins two paths/URLs.
|
|
@@ -18281,9 +20369,9 @@ function requireUtil () {
|
|
|
18281
20369
|
}
|
|
18282
20370
|
return joined;
|
|
18283
20371
|
}
|
|
18284
|
-
exports.join = join;
|
|
20372
|
+
exports$1.join = join;
|
|
18285
20373
|
|
|
18286
|
-
exports.isAbsolute = function (aPath) {
|
|
20374
|
+
exports$1.isAbsolute = function (aPath) {
|
|
18287
20375
|
return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
|
|
18288
20376
|
};
|
|
18289
20377
|
|
|
@@ -18325,7 +20413,7 @@ function requireUtil () {
|
|
|
18325
20413
|
// Make sure we add a "../" for each component we removed from the root.
|
|
18326
20414
|
return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
|
|
18327
20415
|
}
|
|
18328
|
-
exports.relative = relative;
|
|
20416
|
+
exports$1.relative = relative;
|
|
18329
20417
|
|
|
18330
20418
|
var supportsNullProto = (function () {
|
|
18331
20419
|
var obj = Object.create(null);
|
|
@@ -18352,7 +20440,7 @@ function requireUtil () {
|
|
|
18352
20440
|
|
|
18353
20441
|
return aStr;
|
|
18354
20442
|
}
|
|
18355
|
-
exports.toSetString = supportsNullProto ? identity : toSetString;
|
|
20443
|
+
exports$1.toSetString = supportsNullProto ? identity : toSetString;
|
|
18356
20444
|
|
|
18357
20445
|
function fromSetString(aStr) {
|
|
18358
20446
|
if (isProtoString(aStr)) {
|
|
@@ -18361,7 +20449,7 @@ function requireUtil () {
|
|
|
18361
20449
|
|
|
18362
20450
|
return aStr;
|
|
18363
20451
|
}
|
|
18364
|
-
exports.fromSetString = supportsNullProto ? identity : fromSetString;
|
|
20452
|
+
exports$1.fromSetString = supportsNullProto ? identity : fromSetString;
|
|
18365
20453
|
|
|
18366
20454
|
function isProtoString(s) {
|
|
18367
20455
|
if (!s) {
|
|
@@ -18431,7 +20519,7 @@ function requireUtil () {
|
|
|
18431
20519
|
|
|
18432
20520
|
return strcmp(mappingA.name, mappingB.name);
|
|
18433
20521
|
}
|
|
18434
|
-
exports.compareByOriginalPositions = compareByOriginalPositions;
|
|
20522
|
+
exports$1.compareByOriginalPositions = compareByOriginalPositions;
|
|
18435
20523
|
|
|
18436
20524
|
function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {
|
|
18437
20525
|
var cmp;
|
|
@@ -18458,7 +20546,7 @@ function requireUtil () {
|
|
|
18458
20546
|
|
|
18459
20547
|
return strcmp(mappingA.name, mappingB.name);
|
|
18460
20548
|
}
|
|
18461
|
-
exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
|
|
20549
|
+
exports$1.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
|
|
18462
20550
|
|
|
18463
20551
|
/**
|
|
18464
20552
|
* Comparator between two mappings with deflated source and name indices where
|
|
@@ -18497,7 +20585,7 @@ function requireUtil () {
|
|
|
18497
20585
|
|
|
18498
20586
|
return strcmp(mappingA.name, mappingB.name);
|
|
18499
20587
|
}
|
|
18500
|
-
exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
|
|
20588
|
+
exports$1.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
|
|
18501
20589
|
|
|
18502
20590
|
function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {
|
|
18503
20591
|
var cmp = mappingA.generatedColumn - mappingB.generatedColumn;
|
|
@@ -18522,7 +20610,7 @@ function requireUtil () {
|
|
|
18522
20610
|
|
|
18523
20611
|
return strcmp(mappingA.name, mappingB.name);
|
|
18524
20612
|
}
|
|
18525
|
-
exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
|
|
20613
|
+
exports$1.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
|
|
18526
20614
|
|
|
18527
20615
|
function strcmp(aStr1, aStr2) {
|
|
18528
20616
|
if (aStr1 === aStr2) {
|
|
@@ -18576,7 +20664,7 @@ function requireUtil () {
|
|
|
18576
20664
|
|
|
18577
20665
|
return strcmp(mappingA.name, mappingB.name);
|
|
18578
20666
|
}
|
|
18579
|
-
exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
|
|
20667
|
+
exports$1.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
|
|
18580
20668
|
|
|
18581
20669
|
/**
|
|
18582
20670
|
* Strip any JSON XSSI avoidance prefix from the string (as documented
|
|
@@ -18586,7 +20674,7 @@ function requireUtil () {
|
|
|
18586
20674
|
function parseSourceMapInput(str) {
|
|
18587
20675
|
return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
|
|
18588
20676
|
}
|
|
18589
|
-
exports.parseSourceMapInput = parseSourceMapInput;
|
|
20677
|
+
exports$1.parseSourceMapInput = parseSourceMapInput;
|
|
18590
20678
|
|
|
18591
20679
|
/**
|
|
18592
20680
|
* Compute the URL of a source given the the source root, the source's
|
|
@@ -18639,7 +20727,7 @@ function requireUtil () {
|
|
|
18639
20727
|
|
|
18640
20728
|
return normalize(sourceURL);
|
|
18641
20729
|
}
|
|
18642
|
-
exports.computeSourceURL = computeSourceURL;
|
|
20730
|
+
exports$1.computeSourceURL = computeSourceURL;
|
|
18643
20731
|
} (util));
|
|
18644
20732
|
return util;
|
|
18645
20733
|
}
|
|
@@ -19330,15 +21418,15 @@ var hasRequiredBinarySearch;
|
|
|
19330
21418
|
function requireBinarySearch () {
|
|
19331
21419
|
if (hasRequiredBinarySearch) return binarySearch;
|
|
19332
21420
|
hasRequiredBinarySearch = 1;
|
|
19333
|
-
(function (exports) {
|
|
21421
|
+
(function (exports$1) {
|
|
19334
21422
|
/*
|
|
19335
21423
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
19336
21424
|
* Licensed under the New BSD license. See LICENSE or:
|
|
19337
21425
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
19338
21426
|
*/
|
|
19339
21427
|
|
|
19340
|
-
exports.GREATEST_LOWER_BOUND = 1;
|
|
19341
|
-
exports.LEAST_UPPER_BOUND = 2;
|
|
21428
|
+
exports$1.GREATEST_LOWER_BOUND = 1;
|
|
21429
|
+
exports$1.LEAST_UPPER_BOUND = 2;
|
|
19342
21430
|
|
|
19343
21431
|
/**
|
|
19344
21432
|
* Recursive implementation of binary search.
|
|
@@ -19378,7 +21466,7 @@ function requireBinarySearch () {
|
|
|
19378
21466
|
|
|
19379
21467
|
// The exact needle element was not found in this haystack. Determine if
|
|
19380
21468
|
// we are in termination case (3) or (2) and return the appropriate thing.
|
|
19381
|
-
if (aBias == exports.LEAST_UPPER_BOUND) {
|
|
21469
|
+
if (aBias == exports$1.LEAST_UPPER_BOUND) {
|
|
19382
21470
|
return aHigh < aHaystack.length ? aHigh : -1;
|
|
19383
21471
|
} else {
|
|
19384
21472
|
return mid;
|
|
@@ -19392,7 +21480,7 @@ function requireBinarySearch () {
|
|
|
19392
21480
|
}
|
|
19393
21481
|
|
|
19394
21482
|
// we are in termination case (3) or (2) and return the appropriate thing.
|
|
19395
|
-
if (aBias == exports.LEAST_UPPER_BOUND) {
|
|
21483
|
+
if (aBias == exports$1.LEAST_UPPER_BOUND) {
|
|
19396
21484
|
return mid;
|
|
19397
21485
|
} else {
|
|
19398
21486
|
return aLow < 0 ? -1 : aLow;
|
|
@@ -19418,13 +21506,13 @@ function requireBinarySearch () {
|
|
|
19418
21506
|
* searching for, respectively, if the exact element cannot be found.
|
|
19419
21507
|
* Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
|
|
19420
21508
|
*/
|
|
19421
|
-
exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
|
|
21509
|
+
exports$1.search = function search(aNeedle, aHaystack, aCompare, aBias) {
|
|
19422
21510
|
if (aHaystack.length === 0) {
|
|
19423
21511
|
return -1;
|
|
19424
21512
|
}
|
|
19425
21513
|
|
|
19426
21514
|
var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
|
|
19427
|
-
aCompare, aBias || exports.GREATEST_LOWER_BOUND);
|
|
21515
|
+
aCompare, aBias || exports$1.GREATEST_LOWER_BOUND);
|
|
19428
21516
|
if (index < 0) {
|
|
19429
21517
|
return -1;
|
|
19430
21518
|
}
|
|
@@ -21229,26 +23317,26 @@ var sourceMapExports = /*@__PURE__*/ requireSourceMap();
|
|
|
21229
23317
|
|
|
21230
23318
|
const isLiteralWhitelisted = /* @__PURE__ */ makeMap("true,false,null,this");
|
|
21231
23319
|
|
|
21232
|
-
const V_MODEL_RADIO = Symbol(`vModelRadio` );
|
|
21233
|
-
const V_MODEL_CHECKBOX = Symbol(
|
|
23320
|
+
const V_MODEL_RADIO = /* @__PURE__ */ Symbol(`vModelRadio` );
|
|
23321
|
+
const V_MODEL_CHECKBOX = /* @__PURE__ */ Symbol(
|
|
21234
23322
|
`vModelCheckbox`
|
|
21235
23323
|
);
|
|
21236
|
-
const V_MODEL_TEXT = Symbol(`vModelText` );
|
|
21237
|
-
const V_MODEL_SELECT = Symbol(
|
|
23324
|
+
const V_MODEL_TEXT = /* @__PURE__ */ Symbol(`vModelText` );
|
|
23325
|
+
const V_MODEL_SELECT = /* @__PURE__ */ Symbol(
|
|
21238
23326
|
`vModelSelect`
|
|
21239
23327
|
);
|
|
21240
|
-
const V_MODEL_DYNAMIC = Symbol(
|
|
23328
|
+
const V_MODEL_DYNAMIC = /* @__PURE__ */ Symbol(
|
|
21241
23329
|
`vModelDynamic`
|
|
21242
23330
|
);
|
|
21243
|
-
const V_ON_WITH_MODIFIERS = Symbol(
|
|
23331
|
+
const V_ON_WITH_MODIFIERS = /* @__PURE__ */ Symbol(
|
|
21244
23332
|
`vOnModifiersGuard`
|
|
21245
23333
|
);
|
|
21246
|
-
const V_ON_WITH_KEYS = Symbol(
|
|
23334
|
+
const V_ON_WITH_KEYS = /* @__PURE__ */ Symbol(
|
|
21247
23335
|
`vOnKeysGuard`
|
|
21248
23336
|
);
|
|
21249
|
-
const V_SHOW = Symbol(`vShow` );
|
|
21250
|
-
const TRANSITION = Symbol(`Transition` );
|
|
21251
|
-
const TRANSITION_GROUP = Symbol(
|
|
23337
|
+
const V_SHOW = /* @__PURE__ */ Symbol(`vShow` );
|
|
23338
|
+
const TRANSITION = /* @__PURE__ */ Symbol(`Transition` );
|
|
23339
|
+
const TRANSITION_GROUP = /* @__PURE__ */ Symbol(
|
|
21252
23340
|
`TransitionGroup`
|
|
21253
23341
|
);
|
|
21254
23342
|
registerRuntimeHelpers({
|
|
@@ -21319,19 +23407,19 @@ function createDOMCompilerError(code, loc) {
|
|
|
21319
23407
|
);
|
|
21320
23408
|
}
|
|
21321
23409
|
const DOMErrorMessages = {
|
|
21322
|
-
[
|
|
21323
|
-
[
|
|
21324
|
-
[
|
|
21325
|
-
[
|
|
21326
|
-
[
|
|
21327
|
-
[
|
|
21328
|
-
[
|
|
21329
|
-
[
|
|
21330
|
-
[
|
|
21331
|
-
[
|
|
21332
|
-
[
|
|
23410
|
+
[54]: `v-html is missing expression.`,
|
|
23411
|
+
[55]: `v-html will override element children.`,
|
|
23412
|
+
[56]: `v-text is missing expression.`,
|
|
23413
|
+
[57]: `v-text will override element children.`,
|
|
23414
|
+
[58]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
|
|
23415
|
+
[59]: `v-model argument is not supported on plain elements.`,
|
|
23416
|
+
[60]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
|
|
23417
|
+
[61]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
|
|
23418
|
+
[62]: `v-show is missing expression.`,
|
|
23419
|
+
[63]: `<Transition> expects exactly one child element or component.`,
|
|
23420
|
+
[64]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`,
|
|
21333
23421
|
// just to fulfill types
|
|
21334
|
-
[
|
|
23422
|
+
[65]: ``
|
|
21335
23423
|
};
|
|
21336
23424
|
|
|
21337
23425
|
const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
|
|
@@ -21387,7 +23475,7 @@ function postTransformTransition(node, onError, hasMultipleChildren = defaultHas
|
|
|
21387
23475
|
}
|
|
21388
23476
|
if (hasMultipleChildren(node)) {
|
|
21389
23477
|
onError(
|
|
21390
|
-
createDOMCompilerError(
|
|
23478
|
+
createDOMCompilerError(63, {
|
|
21391
23479
|
start: node.children[0].loc.start,
|
|
21392
23480
|
end: node.children[node.children.length - 1].loc.end,
|
|
21393
23481
|
source: ""
|
|
@@ -21723,6 +23811,8 @@ class TransformContext {
|
|
|
21723
23811
|
this.node = node;
|
|
21724
23812
|
this.selfName = null;
|
|
21725
23813
|
this.parent = null;
|
|
23814
|
+
// cached parent that skips template tags
|
|
23815
|
+
this.effectiveParent = null;
|
|
21726
23816
|
this.index = 0;
|
|
21727
23817
|
this.block = this.ir.block;
|
|
21728
23818
|
this.template = "";
|
|
@@ -21735,6 +23825,12 @@ class TransformContext {
|
|
|
21735
23825
|
this.component = this.ir.component;
|
|
21736
23826
|
this.directive = this.ir.directive;
|
|
21737
23827
|
this.slots = [];
|
|
23828
|
+
// whether this node is the last effective child of its parent
|
|
23829
|
+
// (all siblings after it are components, which don't appear in HTML template)
|
|
23830
|
+
this.isLastEffectiveChild = true;
|
|
23831
|
+
// whether this node is on the rightmost path of the tree
|
|
23832
|
+
// (all ancestors are also last effective children)
|
|
23833
|
+
this.isOnRightmostPath = true;
|
|
21738
23834
|
this.globalId = 0;
|
|
21739
23835
|
this.nextIdMap = null;
|
|
21740
23836
|
this.increaseId = () => {
|
|
@@ -21815,15 +23911,31 @@ class TransformContext {
|
|
|
21815
23911
|
this.block.operation.push(...node);
|
|
21816
23912
|
}
|
|
21817
23913
|
create(node, index) {
|
|
23914
|
+
let effectiveParent = this;
|
|
23915
|
+
while (effectiveParent && effectiveParent.node.type === 1 && effectiveParent.node.tagType === 3) {
|
|
23916
|
+
effectiveParent = effectiveParent.parent;
|
|
23917
|
+
}
|
|
23918
|
+
const isLastEffectiveChild = this.isEffectivelyLastChild(index);
|
|
23919
|
+
const isOnRightmostPath = this.isOnRightmostPath && isLastEffectiveChild;
|
|
21818
23920
|
return Object.assign(Object.create(TransformContext.prototype), this, {
|
|
21819
23921
|
node,
|
|
21820
23922
|
parent: this,
|
|
21821
23923
|
index,
|
|
21822
23924
|
template: "",
|
|
21823
23925
|
childrenTemplate: [],
|
|
21824
|
-
dynamic: newDynamic()
|
|
23926
|
+
dynamic: newDynamic(),
|
|
23927
|
+
effectiveParent,
|
|
23928
|
+
isLastEffectiveChild,
|
|
23929
|
+
isOnRightmostPath
|
|
21825
23930
|
});
|
|
21826
23931
|
}
|
|
23932
|
+
isEffectivelyLastChild(index) {
|
|
23933
|
+
const children = this.node.children;
|
|
23934
|
+
if (!children) return true;
|
|
23935
|
+
return children.every(
|
|
23936
|
+
(c, i) => i <= index || c.type === 1 && c.tagType === 1
|
|
23937
|
+
);
|
|
23938
|
+
}
|
|
21827
23939
|
}
|
|
21828
23940
|
const defaultOptions = {
|
|
21829
23941
|
filename: "",
|
|
@@ -21874,7 +23986,7 @@ function transformNode(context) {
|
|
|
21874
23986
|
for (const nodeTransform of nodeTransforms) {
|
|
21875
23987
|
const onExit = nodeTransform(node, context);
|
|
21876
23988
|
if (onExit) {
|
|
21877
|
-
if (isArray(onExit)) {
|
|
23989
|
+
if (isArray$1(onExit)) {
|
|
21878
23990
|
exitFns.push(...onExit);
|
|
21879
23991
|
} else {
|
|
21880
23992
|
exitFns.push(onExit);
|
|
@@ -21944,10 +24056,10 @@ const IMPORT_EXPR_RE = new RegExp(
|
|
|
21944
24056
|
`${IMPORT_EXP_START}(.*?)${IMPORT_EXP_END}`,
|
|
21945
24057
|
"g"
|
|
21946
24058
|
);
|
|
21947
|
-
const NEWLINE = Symbol(`newline` );
|
|
21948
|
-
const LF = Symbol(`line feed` );
|
|
21949
|
-
const INDENT_START = Symbol(`indent start` );
|
|
21950
|
-
const INDENT_END = Symbol(`indent end` );
|
|
24059
|
+
const NEWLINE = /* @__PURE__ */ Symbol(`newline` );
|
|
24060
|
+
const LF = /* @__PURE__ */ Symbol(`line feed` );
|
|
24061
|
+
const INDENT_START = /* @__PURE__ */ Symbol(`indent start` );
|
|
24062
|
+
const INDENT_END = /* @__PURE__ */ Symbol(`indent end` );
|
|
21951
24063
|
function buildCodeFragment(...frag) {
|
|
21952
24064
|
const push = frag.push.bind(frag);
|
|
21953
24065
|
const unshift = frag.unshift.bind(frag);
|
|
@@ -21971,7 +24083,7 @@ function genMulti([left, right, seg, placeholder], ...frags) {
|
|
|
21971
24083
|
push(right);
|
|
21972
24084
|
return frag;
|
|
21973
24085
|
function push(fn) {
|
|
21974
|
-
if (!isArray(fn)) fn = [fn];
|
|
24086
|
+
if (!isArray$1(fn)) fn = [fn];
|
|
21975
24087
|
frag.push(...fn);
|
|
21976
24088
|
}
|
|
21977
24089
|
}
|
|
@@ -21988,7 +24100,7 @@ const DELIMITERS_OBJECT_NEWLINE = [
|
|
|
21988
24100
|
[",", NEWLINE]
|
|
21989
24101
|
];
|
|
21990
24102
|
function genCall(name, ...frags) {
|
|
21991
|
-
const hasPlaceholder = isArray(name);
|
|
24103
|
+
const hasPlaceholder = isArray$1(name);
|
|
21992
24104
|
const fnName = hasPlaceholder ? name[0] : name;
|
|
21993
24105
|
const placeholder = hasPlaceholder ? name[1] : "null";
|
|
21994
24106
|
return [fnName, ...genMulti(["(", ")", ", ", placeholder], ...frags)];
|
|
@@ -22363,6 +24475,10 @@ function analyzeExpressions(expressions) {
|
|
|
22363
24475
|
end: id.end
|
|
22364
24476
|
});
|
|
22365
24477
|
});
|
|
24478
|
+
const parentOfMemberExp = parentStack[parentStack.length - 2];
|
|
24479
|
+
if (parentOfMemberExp && isCallExpression(parentOfMemberExp)) {
|
|
24480
|
+
return;
|
|
24481
|
+
}
|
|
22366
24482
|
registerVariable(
|
|
22367
24483
|
memberExp,
|
|
22368
24484
|
exp,
|
|
@@ -22579,6 +24695,8 @@ function extractMemberExpression(exp, onIdentifier) {
|
|
|
22579
24695
|
return `${extractMemberExpression(exp.left, onIdentifier)} ${exp.operator} ${extractMemberExpression(exp.right, onIdentifier)}`;
|
|
22580
24696
|
case "CallExpression":
|
|
22581
24697
|
return `${extractMemberExpression(exp.callee, onIdentifier)}(${exp.arguments.map((arg) => extractMemberExpression(arg, onIdentifier)).join(", ")})`;
|
|
24698
|
+
case "OptionalCallExpression":
|
|
24699
|
+
return `${extractMemberExpression(exp.callee, onIdentifier)}?.(${exp.arguments.map((arg) => extractMemberExpression(arg, onIdentifier)).join(", ")})`;
|
|
22582
24700
|
case "MemberExpression":
|
|
22583
24701
|
// foo[bar.baz]
|
|
22584
24702
|
case "OptionalMemberExpression":
|
|
@@ -22591,6 +24709,9 @@ function extractMemberExpression(exp, onIdentifier) {
|
|
|
22591
24709
|
return "";
|
|
22592
24710
|
}
|
|
22593
24711
|
}
|
|
24712
|
+
const isCallExpression = (node) => {
|
|
24713
|
+
return node.type === "CallExpression" || node.type === "OptionalCallExpression";
|
|
24714
|
+
};
|
|
22594
24715
|
const isMemberExpression = (node) => {
|
|
22595
24716
|
return node.type === "MemberExpression" || node.type === "OptionalMemberExpression" || node.type === "TSNonNullExpression";
|
|
22596
24717
|
};
|
|
@@ -22658,7 +24779,7 @@ function genSetDynamicEvents(oper, context) {
|
|
|
22658
24779
|
)
|
|
22659
24780
|
];
|
|
22660
24781
|
}
|
|
22661
|
-
function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] }, extraWrap = false) {
|
|
24782
|
+
function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] }, asComponentProp = false, extraWrap = false) {
|
|
22662
24783
|
let handlerExp = [];
|
|
22663
24784
|
if (values) {
|
|
22664
24785
|
values.forEach((value, index) => {
|
|
@@ -22666,7 +24787,7 @@ function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] },
|
|
|
22666
24787
|
if (value && value.content.trim()) {
|
|
22667
24788
|
if (isMemberExpression$1(value, context.options)) {
|
|
22668
24789
|
exp = genExpression(value, context);
|
|
22669
|
-
if (!isConstantBinding(value, context) && !
|
|
24790
|
+
if (!isConstantBinding(value, context) && !asComponentProp) {
|
|
22670
24791
|
const isTSNode = value.ast && TS_NODE_TYPES.includes(value.ast.type);
|
|
22671
24792
|
exp = [
|
|
22672
24793
|
`e => `,
|
|
@@ -23196,7 +25317,7 @@ function genPropKey({ key: node, modifier, runtimeCamelize, handler, handlerModi
|
|
|
23196
25317
|
const { helper } = context;
|
|
23197
25318
|
const handlerModifierPostfix = handlerModifiers && handlerModifiers.options ? handlerModifiers.options.map(capitalize).join("") : "";
|
|
23198
25319
|
if (node.isStatic) {
|
|
23199
|
-
const keyName = (handler ? toHandlerKey(node.content) : node.content) + handlerModifierPostfix;
|
|
25320
|
+
const keyName = (handler ? toHandlerKey(camelize(node.content)) : node.content) + handlerModifierPostfix;
|
|
23200
25321
|
return [
|
|
23201
25322
|
[
|
|
23202
25323
|
isSimpleIdentifier(keyName) ? keyName : JSON.stringify(keyName),
|
|
@@ -23449,7 +25570,7 @@ function genCreateComponent(operation, context) {
|
|
|
23449
25570
|
const rawProps = context.withId(() => genRawProps(props, context), ids);
|
|
23450
25571
|
const inlineHandlers = handlers.reduce(
|
|
23451
25572
|
(acc, { name, value }) => {
|
|
23452
|
-
const handler = genEventHandler(context, [value], void 0, false);
|
|
25573
|
+
const handler = genEventHandler(context, [value], void 0, false, false);
|
|
23453
25574
|
return [...acc, `const ${name} = `, ...handler, NEWLINE];
|
|
23454
25575
|
},
|
|
23455
25576
|
[]
|
|
@@ -23507,7 +25628,7 @@ function processInlineHandlers(props, context) {
|
|
|
23507
25628
|
const ids = /* @__PURE__ */ Object.create(null);
|
|
23508
25629
|
const handlers = [];
|
|
23509
25630
|
const staticProps = props[0];
|
|
23510
|
-
if (isArray(staticProps)) {
|
|
25631
|
+
if (isArray$1(staticProps)) {
|
|
23511
25632
|
for (let i = 0; i < staticProps.length; i++) {
|
|
23512
25633
|
const prop = staticProps[i];
|
|
23513
25634
|
if (!prop.handler) continue;
|
|
@@ -23529,7 +25650,7 @@ function processInlineHandlers(props, context) {
|
|
|
23529
25650
|
}
|
|
23530
25651
|
function genRawProps(props, context) {
|
|
23531
25652
|
const staticProps = props[0];
|
|
23532
|
-
if (isArray(staticProps)) {
|
|
25653
|
+
if (isArray$1(staticProps)) {
|
|
23533
25654
|
if (!staticProps.length && props.length === 1) {
|
|
23534
25655
|
return;
|
|
23535
25656
|
}
|
|
@@ -23543,7 +25664,89 @@ function genRawProps(props, context) {
|
|
|
23543
25664
|
}
|
|
23544
25665
|
}
|
|
23545
25666
|
function genStaticProps(props, context, dynamicProps) {
|
|
23546
|
-
const args =
|
|
25667
|
+
const args = [];
|
|
25668
|
+
const handlerGroups = /* @__PURE__ */ new Map();
|
|
25669
|
+
const ensureHandlerGroup = (keyName, keyFrag) => {
|
|
25670
|
+
let group = handlerGroups.get(keyName);
|
|
25671
|
+
if (!group) {
|
|
25672
|
+
const index = args.length;
|
|
25673
|
+
args.push([]);
|
|
25674
|
+
group = { keyFrag, handlers: [], index };
|
|
25675
|
+
handlerGroups.set(keyName, group);
|
|
25676
|
+
}
|
|
25677
|
+
return group;
|
|
25678
|
+
};
|
|
25679
|
+
const addHandler = (keyName, keyFrag, handlerExp) => {
|
|
25680
|
+
ensureHandlerGroup(keyName, keyFrag).handlers.push(handlerExp);
|
|
25681
|
+
};
|
|
25682
|
+
const getStaticPropKeyName = (prop) => {
|
|
25683
|
+
if (!prop.key.isStatic) return;
|
|
25684
|
+
const handlerModifierPostfix = prop.handlerModifiers && prop.handlerModifiers.options ? prop.handlerModifiers.options.map((m) => m.charAt(0).toUpperCase() + m.slice(1)).join("") : "";
|
|
25685
|
+
const keyName = (prop.handler ? toHandlerKey(camelize(prop.key.content)) : prop.key.content) + handlerModifierPostfix;
|
|
25686
|
+
return keyName;
|
|
25687
|
+
};
|
|
25688
|
+
for (const prop of props) {
|
|
25689
|
+
if (prop.handler) {
|
|
25690
|
+
const keyName = getStaticPropKeyName(prop);
|
|
25691
|
+
if (!keyName) {
|
|
25692
|
+
args.push(genProp(prop, context, true));
|
|
25693
|
+
continue;
|
|
25694
|
+
}
|
|
25695
|
+
const keyFrag = genPropKey(prop, context);
|
|
25696
|
+
const hasModifiers = !!prop.handlerModifiers && (prop.handlerModifiers.keys.length > 0 || prop.handlerModifiers.nonKeys.length > 0);
|
|
25697
|
+
if (hasModifiers || prop.values.length <= 1) {
|
|
25698
|
+
const handlerExp = genEventHandler(
|
|
25699
|
+
context,
|
|
25700
|
+
prop.values,
|
|
25701
|
+
prop.handlerModifiers,
|
|
25702
|
+
true,
|
|
25703
|
+
false
|
|
25704
|
+
);
|
|
25705
|
+
addHandler(keyName, keyFrag, handlerExp);
|
|
25706
|
+
} else {
|
|
25707
|
+
for (const value of prop.values) {
|
|
25708
|
+
const handlerExp = genEventHandler(
|
|
25709
|
+
context,
|
|
25710
|
+
[value],
|
|
25711
|
+
prop.handlerModifiers,
|
|
25712
|
+
true,
|
|
25713
|
+
false
|
|
25714
|
+
);
|
|
25715
|
+
addHandler(keyName, keyFrag, handlerExp);
|
|
25716
|
+
}
|
|
25717
|
+
}
|
|
25718
|
+
continue;
|
|
25719
|
+
}
|
|
25720
|
+
args.push(genProp(prop, context, true));
|
|
25721
|
+
if (prop.model) {
|
|
25722
|
+
if (prop.key.isStatic) {
|
|
25723
|
+
const keyName = `onUpdate:${camelize(prop.key.content)}`;
|
|
25724
|
+
const keyFrag = [JSON.stringify(keyName)];
|
|
25725
|
+
addHandler(keyName, keyFrag, genModelHandler(prop.values[0], context));
|
|
25726
|
+
} else {
|
|
25727
|
+
const keyFrag = [
|
|
25728
|
+
'["onUpdate:" + ',
|
|
25729
|
+
...genExpression(prop.key, context),
|
|
25730
|
+
"]"
|
|
25731
|
+
];
|
|
25732
|
+
args.push([
|
|
25733
|
+
...keyFrag,
|
|
25734
|
+
": () => ",
|
|
25735
|
+
...genModelHandler(prop.values[0], context)
|
|
25736
|
+
]);
|
|
25737
|
+
}
|
|
25738
|
+
const { key, modelModifiers } = prop;
|
|
25739
|
+
if (modelModifiers && modelModifiers.length) {
|
|
25740
|
+
const modifiersKey = key.isStatic ? [getModifierPropName(key.content)] : ["[", ...genExpression(key, context), ' + "Modifiers"]'];
|
|
25741
|
+
const modifiersVal = genDirectiveModifiers(modelModifiers);
|
|
25742
|
+
args.push([...modifiersKey, `: () => ({ ${modifiersVal} })`]);
|
|
25743
|
+
}
|
|
25744
|
+
}
|
|
25745
|
+
}
|
|
25746
|
+
for (const group of handlerGroups.values()) {
|
|
25747
|
+
const handlerValue = group.handlers.length > 1 ? genMulti(DELIMITERS_ARRAY_NEWLINE, ...group.handlers) : group.handlers[0];
|
|
25748
|
+
args[group.index] = [...group.keyFrag, ": () => ", ...handlerValue];
|
|
25749
|
+
}
|
|
23547
25750
|
if (dynamicProps) {
|
|
23548
25751
|
args.push([`$: `, ...dynamicProps]);
|
|
23549
25752
|
}
|
|
@@ -23557,17 +25760,52 @@ function genDynamicProps(props, context) {
|
|
|
23557
25760
|
const frags = [];
|
|
23558
25761
|
for (const p of props) {
|
|
23559
25762
|
let expr;
|
|
23560
|
-
if (isArray(p)) {
|
|
25763
|
+
if (isArray$1(p)) {
|
|
23561
25764
|
if (p.length) {
|
|
23562
25765
|
frags.push(genStaticProps(p, context));
|
|
23563
25766
|
}
|
|
23564
25767
|
continue;
|
|
23565
25768
|
} else {
|
|
23566
|
-
if (p.kind === 1)
|
|
23567
|
-
|
|
23568
|
-
|
|
25769
|
+
if (p.kind === 1) {
|
|
25770
|
+
if (p.model) {
|
|
25771
|
+
const entries = [genProp(p, context)];
|
|
25772
|
+
const updateKey = p.key.isStatic ? [
|
|
25773
|
+
JSON.stringify(`onUpdate:${camelize(p.key.content)}`)
|
|
25774
|
+
] : [
|
|
25775
|
+
'["onUpdate:" + ',
|
|
25776
|
+
...genExpression(p.key, context),
|
|
25777
|
+
"]"
|
|
25778
|
+
];
|
|
25779
|
+
entries.push([
|
|
25780
|
+
...updateKey,
|
|
25781
|
+
": () => ",
|
|
25782
|
+
...genModelHandler(p.values[0], context)
|
|
25783
|
+
]);
|
|
25784
|
+
const { modelModifiers } = p;
|
|
25785
|
+
if (modelModifiers && modelModifiers.length) {
|
|
25786
|
+
const modifiersKey = p.key.isStatic ? [getModifierPropName(p.key.content)] : [
|
|
25787
|
+
"[",
|
|
25788
|
+
...genExpression(p.key, context),
|
|
25789
|
+
' + "Modifiers"]'
|
|
25790
|
+
];
|
|
25791
|
+
const modifiersVal = genDirectiveModifiers(modelModifiers);
|
|
25792
|
+
entries.push([...modifiersKey, `: () => ({ ${modifiersVal} })`]);
|
|
25793
|
+
}
|
|
25794
|
+
expr = genMulti(DELIMITERS_OBJECT_NEWLINE, ...entries);
|
|
25795
|
+
} else {
|
|
25796
|
+
expr = genMulti(DELIMITERS_OBJECT, genProp(p, context));
|
|
25797
|
+
}
|
|
25798
|
+
} else {
|
|
23569
25799
|
expr = genExpression(p.value, context);
|
|
23570
|
-
if (p.handler)
|
|
25800
|
+
if (p.handler)
|
|
25801
|
+
expr = genCall(
|
|
25802
|
+
helper("toHandlers"),
|
|
25803
|
+
expr,
|
|
25804
|
+
`false`,
|
|
25805
|
+
// preserveCaseIfNecessary: false, not needed for component
|
|
25806
|
+
`true`
|
|
25807
|
+
// wrap handler values in functions
|
|
25808
|
+
);
|
|
23571
25809
|
}
|
|
23572
25810
|
}
|
|
23573
25811
|
frags.push(["() => (", ...expr, ")"]);
|
|
@@ -23585,23 +25823,11 @@ function genProp(prop, context, isStatic) {
|
|
|
23585
25823
|
context,
|
|
23586
25824
|
prop.values,
|
|
23587
25825
|
prop.handlerModifiers,
|
|
25826
|
+
true,
|
|
23588
25827
|
true
|
|
23589
|
-
) : isStatic ? ["() => (", ...values, ")"] : values
|
|
23590
|
-
...prop.model ? [...genModelEvent(prop, context), ...genModelModifiers(prop, context)] : []
|
|
25828
|
+
) : isStatic ? ["() => (", ...values, ")"] : values
|
|
23591
25829
|
];
|
|
23592
25830
|
}
|
|
23593
|
-
function genModelEvent(prop, context) {
|
|
23594
|
-
const name = prop.key.isStatic ? [JSON.stringify(`onUpdate:${camelize(prop.key.content)}`)] : ['["onUpdate:" + ', ...genExpression(prop.key, context), "]"];
|
|
23595
|
-
const handler = genModelHandler(prop.values[0], context);
|
|
23596
|
-
return [",", NEWLINE, ...name, ": () => ", ...handler];
|
|
23597
|
-
}
|
|
23598
|
-
function genModelModifiers(prop, context) {
|
|
23599
|
-
const { key, modelModifiers } = prop;
|
|
23600
|
-
if (!modelModifiers || !modelModifiers.length) return [];
|
|
23601
|
-
const modifiersKey = key.isStatic ? [getModifierPropName(key.content)] : ["[", ...genExpression(key, context), ' + "Modifiers"]'];
|
|
23602
|
-
const modifiersVal = genDirectiveModifiers(modelModifiers);
|
|
23603
|
-
return [",", NEWLINE, ...modifiersKey, `: () => ({ ${modifiersVal} })`];
|
|
23604
|
-
}
|
|
23605
25831
|
function genRawSlots(slots, context) {
|
|
23606
25832
|
if (!slots.length) return;
|
|
23607
25833
|
const staticSlots = slots[0];
|
|
@@ -24040,7 +26266,13 @@ function genChildren(dynamic, context, pushBlock, from = `n${dynamic.id}`) {
|
|
|
24040
26266
|
}
|
|
24041
26267
|
} else {
|
|
24042
26268
|
if (elementIndex === 0) {
|
|
24043
|
-
pushBlock(
|
|
26269
|
+
pushBlock(
|
|
26270
|
+
...genCall(
|
|
26271
|
+
helper("child"),
|
|
26272
|
+
from,
|
|
26273
|
+
logicalIndex !== 0 ? String(logicalIndex) : void 0
|
|
26274
|
+
)
|
|
26275
|
+
);
|
|
24044
26276
|
} else {
|
|
24045
26277
|
let init = genCall(helper("child"), from);
|
|
24046
26278
|
if (elementIndex === 1) {
|
|
@@ -24459,7 +26691,10 @@ const transformElement = (node, context) => {
|
|
|
24459
26691
|
propsResult,
|
|
24460
26692
|
singleRoot,
|
|
24461
26693
|
context,
|
|
24462
|
-
getEffectIndex
|
|
26694
|
+
getEffectIndex,
|
|
26695
|
+
// Root-level elements generate dedicated templates
|
|
26696
|
+
// so closing tags can be omitted
|
|
26697
|
+
context.root === context.effectiveParent || canOmitEndTag(node, context)
|
|
24463
26698
|
);
|
|
24464
26699
|
}
|
|
24465
26700
|
if (parentSlots) {
|
|
@@ -24467,6 +26702,17 @@ const transformElement = (node, context) => {
|
|
|
24467
26702
|
}
|
|
24468
26703
|
};
|
|
24469
26704
|
};
|
|
26705
|
+
function canOmitEndTag(node, context) {
|
|
26706
|
+
const { block, parent } = context;
|
|
26707
|
+
if (!parent) return false;
|
|
26708
|
+
if (block !== parent.block) {
|
|
26709
|
+
return true;
|
|
26710
|
+
}
|
|
26711
|
+
if (isFormattingTag(node.tag) || parent.node.type === 1 && node.tag === parent.node.tag) {
|
|
26712
|
+
return context.isOnRightmostPath;
|
|
26713
|
+
}
|
|
26714
|
+
return context.isLastEffectiveChild;
|
|
26715
|
+
}
|
|
24470
26716
|
function isSingleRoot(context) {
|
|
24471
26717
|
if (context.inVFor) {
|
|
24472
26718
|
return false;
|
|
@@ -24556,7 +26802,8 @@ function resolveSetupReference(name, context) {
|
|
|
24556
26802
|
return bindings[name] ? name : bindings[camelName] ? camelName : bindings[PascalName] ? PascalName : void 0;
|
|
24557
26803
|
}
|
|
24558
26804
|
const dynamicKeys = ["indeterminate"];
|
|
24559
|
-
|
|
26805
|
+
const NEEDS_QUOTES_RE = /[\s"'`=<>]/;
|
|
26806
|
+
function transformNativeElement(node, propsResult, singleRoot, context, getEffectIndex, omitEndTag) {
|
|
24560
26807
|
const { tag } = node;
|
|
24561
26808
|
const { scopeId } = context.options;
|
|
24562
26809
|
let template = "";
|
|
@@ -24576,16 +26823,24 @@ function transformNativeElement(node, propsResult, singleRoot, context, getEffec
|
|
|
24576
26823
|
getEffectIndex
|
|
24577
26824
|
);
|
|
24578
26825
|
} else {
|
|
26826
|
+
let prevWasQuoted = false;
|
|
24579
26827
|
for (const prop of propsResult[1]) {
|
|
24580
26828
|
const { key, values } = prop;
|
|
24581
26829
|
if (context.imports.some(
|
|
24582
26830
|
(imported) => values[0].content.includes(imported.exp.content)
|
|
24583
26831
|
)) {
|
|
24584
|
-
template += `
|
|
26832
|
+
if (!prevWasQuoted) template += ` `;
|
|
26833
|
+
template += `${key.content}="${IMPORT_EXP_START}${values[0].content}${IMPORT_EXP_END}"`;
|
|
26834
|
+
prevWasQuoted = true;
|
|
24585
26835
|
} else if (key.isStatic && values.length === 1 && (values[0].isStatic || values[0].content === "''") && !dynamicKeys.includes(key.content)) {
|
|
24586
|
-
template += `
|
|
24587
|
-
|
|
24588
|
-
|
|
26836
|
+
if (!prevWasQuoted) template += ` `;
|
|
26837
|
+
const value = values[0].content === "''" ? "" : values[0].content;
|
|
26838
|
+
template += key.content;
|
|
26839
|
+
if (value) {
|
|
26840
|
+
template += (prevWasQuoted = NEEDS_QUOTES_RE.test(value)) ? `="${value.replace(/"/g, """)}"` : `=${value}`;
|
|
26841
|
+
} else {
|
|
26842
|
+
prevWasQuoted = false;
|
|
26843
|
+
}
|
|
24589
26844
|
} else {
|
|
24590
26845
|
dynamicProps.push(key.content);
|
|
24591
26846
|
context.registerEffect(
|
|
@@ -24602,7 +26857,7 @@ function transformNativeElement(node, propsResult, singleRoot, context, getEffec
|
|
|
24602
26857
|
}
|
|
24603
26858
|
}
|
|
24604
26859
|
template += `>` + context.childrenTemplate.join("");
|
|
24605
|
-
if (!isVoidTag(tag)) {
|
|
26860
|
+
if (!isVoidTag(tag) && !omitEndTag) {
|
|
24606
26861
|
template += `</${tag}>`;
|
|
24607
26862
|
}
|
|
24608
26863
|
if (singleRoot) {
|
|
@@ -24767,13 +27022,13 @@ const transformVHtml = (dir, node, context) => {
|
|
|
24767
27022
|
let { exp, loc } = dir;
|
|
24768
27023
|
if (!exp) {
|
|
24769
27024
|
context.options.onError(
|
|
24770
|
-
createDOMCompilerError(
|
|
27025
|
+
createDOMCompilerError(54, loc)
|
|
24771
27026
|
);
|
|
24772
27027
|
exp = EMPTY_EXPRESSION;
|
|
24773
27028
|
}
|
|
24774
27029
|
if (node.children.length) {
|
|
24775
27030
|
context.options.onError(
|
|
24776
|
-
createDOMCompilerError(
|
|
27031
|
+
createDOMCompilerError(55, loc)
|
|
24777
27032
|
);
|
|
24778
27033
|
context.childrenTemplate.length = 0;
|
|
24779
27034
|
}
|
|
@@ -24789,13 +27044,13 @@ const transformVText = (dir, node, context) => {
|
|
|
24789
27044
|
let { exp, loc } = dir;
|
|
24790
27045
|
if (!exp) {
|
|
24791
27046
|
context.options.onError(
|
|
24792
|
-
createDOMCompilerError(
|
|
27047
|
+
createDOMCompilerError(56, loc)
|
|
24793
27048
|
);
|
|
24794
27049
|
exp = EMPTY_EXPRESSION;
|
|
24795
27050
|
}
|
|
24796
27051
|
if (node.children.length) {
|
|
24797
27052
|
context.options.onError(
|
|
24798
|
-
createDOMCompilerError(
|
|
27053
|
+
createDOMCompilerError(57, loc)
|
|
24799
27054
|
);
|
|
24800
27055
|
context.childrenTemplate.length = 0;
|
|
24801
27056
|
}
|
|
@@ -24828,7 +27083,7 @@ function normalizeBindShorthand(arg, context) {
|
|
|
24828
27083
|
if (arg.type !== 4 || !arg.isStatic) {
|
|
24829
27084
|
context.options.onError(
|
|
24830
27085
|
createCompilerError(
|
|
24831
|
-
|
|
27086
|
+
53,
|
|
24832
27087
|
arg.loc
|
|
24833
27088
|
)
|
|
24834
27089
|
);
|
|
@@ -24942,7 +27197,7 @@ const transformVShow = (dir, node, context) => {
|
|
|
24942
27197
|
const { exp, loc } = dir;
|
|
24943
27198
|
if (!exp) {
|
|
24944
27199
|
context.options.onError(
|
|
24945
|
-
createDOMCompilerError(
|
|
27200
|
+
createDOMCompilerError(62, loc)
|
|
24946
27201
|
);
|
|
24947
27202
|
return;
|
|
24948
27203
|
}
|
|
@@ -25141,7 +27396,7 @@ const transformVModel = (dir, node, context) => {
|
|
|
25141
27396
|
if (dir.arg)
|
|
25142
27397
|
context.options.onError(
|
|
25143
27398
|
createDOMCompilerError(
|
|
25144
|
-
|
|
27399
|
+
59,
|
|
25145
27400
|
dir.arg.loc
|
|
25146
27401
|
)
|
|
25147
27402
|
);
|
|
@@ -25166,7 +27421,7 @@ const transformVModel = (dir, node, context) => {
|
|
|
25166
27421
|
modelType = void 0;
|
|
25167
27422
|
context.options.onError(
|
|
25168
27423
|
createDOMCompilerError(
|
|
25169
|
-
|
|
27424
|
+
60,
|
|
25170
27425
|
dir.loc
|
|
25171
27426
|
)
|
|
25172
27427
|
);
|
|
@@ -25189,7 +27444,7 @@ const transformVModel = (dir, node, context) => {
|
|
|
25189
27444
|
} else {
|
|
25190
27445
|
context.options.onError(
|
|
25191
27446
|
createDOMCompilerError(
|
|
25192
|
-
|
|
27447
|
+
58,
|
|
25193
27448
|
dir.loc
|
|
25194
27449
|
)
|
|
25195
27450
|
);
|
|
@@ -25208,7 +27463,7 @@ const transformVModel = (dir, node, context) => {
|
|
|
25208
27463
|
if (value && isStaticArgOf(value.arg, "value")) {
|
|
25209
27464
|
context.options.onError(
|
|
25210
27465
|
createDOMCompilerError(
|
|
25211
|
-
|
|
27466
|
+
61,
|
|
25212
27467
|
value.loc
|
|
25213
27468
|
)
|
|
25214
27469
|
);
|