From a08e9337b5dc064ad0be7647efb03ac64dc3ddf0 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 7 Nov 2023 05:47:26 +0000 Subject: [PATCH] Auto-generated commit --- dist/index.js | 2 +- dist/index.js.map | 6 +++--- format/lib/main.js | 9 +++------ 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/dist/index.js b/dist/index.js index 6ef2f75e..3a222ab6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,4 +1,4 @@ -"use strict";var n=function(r,i){return function(){return i||r((i={exports:{}}).exports,i),i.exports}};var er=n(function(iA,y0){"use strict";function Ps(r){return typeof r=="number"}y0.exports=Ps});var sr=n(function(xA,S0){"use strict";function Rs(r){return r[0]==="-"}function T0(r){var i="",t;for(t=0;t0&&(i-=1),t=x.toExponential(i)):t=x.toPrecision(r.precision),r.alternate||(t=y.call(t,Zs,"$1e"),t=y.call(t,Hs,"e"),t=y.call(t,$s,""));break;default:throw new Error("invalid double notation. Value: "+r.specifier)}return t=y.call(t,Us,"e+0$1"),t=y.call(t,zs,"e-0$1"),r.alternate&&(t=y.call(t,Ws,"$1."),t=y.call(t,js,"$1.e")),x>=0&&r.sign&&(t=r.sign+t),t=r.specifier===O0.call(r.specifier)?O0.call(t):Ms.call(t),t}I0.exports=Xs});var U0=n(function(uA,M0){"use strict";function k0(r){var i="",t;for(t=0;t127)throw new Error("invalid character code. Value: "+x.arg);x.arg=W(u)?String(x.arg):ds(u)}break;case"e":case"E":case"f":case"F":case"g":case"G":i||(x.precision=6),x.arg=Ks(x);break;default:throw new Error("invalid specifier: "+x.specifier)}x.maxWidth>=0&&x.arg.length>x.maxWidth&&(x.arg=x.arg.substring(0,x.maxWidth)),x.padZeros?x.arg=cs(x.arg,x.width||x.precision,x.padRight):x.width&&(x.arg=os(x.arg,x.width,x.padRight)),e+=x.arg||"",s+=1}return e}z0.exports=xF});var Fr=n(function(sA,j0){"use strict";var tF=W0();j0.exports=tF});var H0=n(function(FA,$0){"use strict";var j=/%(?:([1-9]\d*)\$)?([0 +\-#]*)(\*|\d+)?(?:(\.)(\*|\d+)?)?[hlL]?([%A-Za-z])/g;function aF(r){var i={mapping:r[1]?parseInt(r[1],10):void 0,flags:r[2],width:r[3],precision:r[5],specifier:r[6]};return r[4]==="."&&r[5]===void 0&&(i.precision="1"),i}function nF(r){var i,t,x,a;for(t=[],a=0,x=j.exec(r);x;)i=r.slice(a,j.lastIndex-x[0].length),i.length&&t.push(i),t.push(aF(x)),a=j.lastIndex,x=j.exec(r);return i=r.slice(a),i.length&&t.push(i),t}$0.exports=nF});var vr=n(function(vA,Z0){"use strict";var uF=H0();Z0.exports=uF});var Q0=n(function(CA,X0){"use strict";function eF(r){return typeof r=="string"}X0.exports=eF});var K0=n(function(lA,Y0){"use strict";var sF=Fr(),FF=vr(),vF=Q0();function J0(r){var i,t,x;if(!vF(r))throw new TypeError(J0("invalid argument. First argument must be a string. Value: `%s`.",r));for(i=FF(r),t=new Array(arguments.length),t[0]=i,x=1;x?`{}|~\/\\\[\]]/g;function bF(r){if(!mF(r))throw new TypeError(qF("invalid argument. Must provide a string. Value: `%s`.",r));return hF(r,wF,"")}ai.exports=bF});var Br=n(function(AA,ui){"use strict";var yF=ni();ui.exports=yF});var si=n(function(mA,ei){"use strict";function TF(r){return r.toUpperCase()}ei.exports=TF});var R=n(function(hA,Fi){"use strict";var SF=si();Fi.exports=SF});var Ci=n(function(qA,vi){"use strict";function VF(r){return r.toLowerCase()}vi.exports=VF});var q=n(function(wA,li){"use strict";var PF=Ci();li.exports=PF});var gi=n(function(bA,fi){"use strict";var RF=require("@stdlib/assert/is-plain-object"),LF=require("@stdlib/assert/has-own-property"),NF=require("@stdlib/assert/is-string-array").primitives,_F=require("@stdlib/assert/is-empty-array"),Bi=v();function OF(r,i){return RF(i)?LF(i,"stopwords")&&(r.stopwords=i.stopwords,!NF(r.stopwords)&&!_F(r.stopwords))?new TypeError(Bi("invalid option. `%s` option must be an array of strings. Option: `%s`.","stopwords",r.stopwords)):null:new TypeError(Bi("invalid argument. Options argument must be an object. Value: `%s`.",i))}fi.exports=OF});var Ei=n(function(yA,IF){IF.exports=["a","all","also","although","an","and","any","are","as","at","b","be","been","but","by","c","could","d","e","each","eg","either","even","ever","ex","except","f","far","few","for","from","further","g","get","gets","given","gives","go","going","got","h","had","has","have","having","he","her","here","herself","him","himself","his","how","i","ie","if","in","into","is","it","its","itself","j","just","k","l","less","let","m","many","may","me","might","must","my","myself","n","need","needs","next","no","non","not","now","o","of","off","old","on","once","only","or","our","out","p","per","put","q","r","s","same","shall","she","should","since","so","such","sure","t","than","that","the","their","them","then","there","these","they","this","those","though","thus","to","too","u","us","v","w","was","we","well","went","were","what","when","where","which","who","whose","why","will","would","x","y","yet","z"]});var Di=n(function(TA,pi){"use strict";var GF=Br(),kF=require("@stdlib/nlp/tokenize"),MF=A(),UF=R(),zF=q(),WF=require("@stdlib/assert/is-string").isPrimitive,jF=require("@stdlib/array/base/assert/contains").factory,$F=v(),HF=gi(),ZF=Ei(),XF=/-/g;function QF(r,i){var t,x,a,u,e,s;if(!WF(r))throw new TypeError($F("invalid argument. First argument must be a string. Value: `%s`.",r));if(a={},arguments.length>1&&(u=HF(a,i),u))throw u;for(t=jF(a.stopwords||ZF),r=GF(r),r=MF(r,XF," "),x=kF(r),e="",s=0;s?`{}|~\/\\\[\]_#$*&^@%]+/g,gv=/(?:\s|^)([^\s]+)(?=\s|$)/g,Ev=/([a-z0-9])([A-Z])/g;function pv(r,i,t){return i=Cv(i),t===0?i:vv(i)}function Dv(r){return r=$(r,fv," "),r=$(r,Bv," "),r=$(r,Ev,"$1 $2"),r=lv(r),$(r,gv,pv)}Gi.exports=Dv});var Er=n(function(kA,Mi){"use strict";var Av=ki();Mi.exports=Av});var Hi=n(function(MA,$i){"use strict";var Ui=65536,zi=1024,H=55296,Wi=56319,Z=56320,ji=57343;function mv(r,i,t){var x,a,u;return i<0&&(i+=r.length),x=r.charCodeAt(i),x>=H&&x<=Wi&&i=Z&&x<=ji&&i>=1?(u=r.charCodeAt(i-1),a=x,H<=u&&u<=Wi?(u-H)*zi+(a-Z)+Ui:a):x}$i.exports=mv});var pr=n(function(UA,Zi){"use strict";var hv=Hi();Zi.exports=hv});var Qi=n(function(zA,Xi){"use strict";var qv=R(),Dr=A(),wv=w(),bv=/\s+/g,yv=/[\-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,Tv=/([a-z0-9])([A-Z])/g;function Sv(r){return r=Dr(r,yv," "),r=Dr(r,Tv,"$1 $2"),r=wv(r),r=Dr(r,bv,"_"),qv(r)}Xi.exports=Sv});var Ar=n(function(WA,Ji){"use strict";var Vv=Qi();Ji.exports=Vv});var di=n(function(jA,ci){"use strict";var Yi=require("@stdlib/assert/is-string").isPrimitive,Ki=v(),oi=require("@stdlib/math/base/special/min");function Pv(r,i){var t,x,a,u,e,s,F,f;if(!Yi(r))throw new TypeError(Ki("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Yi(i))throw new TypeError(Ki("invalid argument. Second argument must be a string. Value: `%s`.",i));if(e=r.length,u=i.length,e===0)return u;if(u===0)return e;for(x=[],s=0;s<=u;s++)x.push(s);for(s=0;s?`{}|~\/\\\[\]_#$*&^@%]+/g,Gv=/([a-z0-9])([A-Z])/g;function kv(r){return r=mr(r,Iv," "),r=mr(r,Gv,"$1 $2"),r=_v(r),r=mr(r,Ov,"."),Nv(r)}nx.exports=kv});var hr=n(function(XA,ex){"use strict";var Mv=ux();ex.exports=Mv});var Fx=n(function(QA,sx){"use strict";var Uv=typeof String.prototype.endsWith!="undefined";sx.exports=Uv});var Cx=n(function(JA,vx){"use strict";function zv(r,i,t){var x,a,u;if(a=i.length,t===0)return a===0;if(t<0?x=r.length+t:x=t,a===0)return!0;if(x-=a,x<0)return!1;for(u=0;ur.length?!1:jv.call(r,i,x))}fx.exports=$v});var X=n(function(oA,Ex){"use strict";var Hv=Fx(),Zv=Cx(),Xv=gx(),qr;Hv?qr=Xv:qr=Zv;Ex.exports=qr});var Dx=n(function(cA,px){"use strict";function Qv(r,i){return r.substring(0,i)}px.exports=Qv});var wr=n(function(dA,Ax){"use strict";var Jv=Dx();Ax.exports=Jv});var hx=n(function(r2,mx){"use strict";var Yv=require("@stdlib/regexp/utf16-surrogate-pair").REGEXP,Kv=/[\uDC00-\uDFFF]/,ov=/[\uD800-\uDBFF]/;function cv(r,i){var t,x,a,u,e,s;if(r===""||i===0)return"";if(i===1)return r=r.substring(0,2),Yv.test(r)?r:r[0];for(t=r.length,x="",e=0,s=0;s=r.length)throw new RangeError(Q("invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.",i));if(arguments.length>2){if(!rC(t))throw new TypeError(Q("invalid argument. Third argument must be a boolean. Value: `%s`.",t));x=t}else x=!1;return tC(r,i,x)}wx.exports=aC});var J=n(function(t2,yx){"use strict";var nC=bx();yx.exports=nC});var N=n(function(a2,Tx){"use strict";var uC={CR:0,LF:1,Control:2,Extend:3,RegionalIndicator:4,SpacingMark:5,L:6,V:7,T:8,LV:9,LVT:10,Other:11,Prepend:12,ZWJ:13,NotBreak:0,BreakStart:1,Break:2,BreakLastRegional:3,BreakPenultimateRegional:4,ExtendedPictographic:101};Tx.exports=uC});var Rx=n(function(n2,Px){"use strict";var B=N();function eC(r,i,t,x){var a,u;for(t>=r.length&&(t=r.length-1),a=0,u=i;u<=t;u++)r[u]===x&&(a+=1);return a}function Sx(r,i,t,x){var a;for(t>=r.length&&(t=r.length-1),a=i;a<=t;a++)if(r[a]!==x)return!1;return!0}function sC(r,i,t,x){var a;for(t>=r.length&&(t=r.length-1),a=i;a<=t;a++)if(r[a]===x)return a;return-1}function Vx(r,i,t,x){var a;for(i>=r.length-1&&(i=r.length-1),a=i;a>=t;a--)if(r[a]===x)return a;return-1}function FC(r,i){var t,x,a,u,e,s;return e=r.length,s=e-1,a=r[s-1],x=r[s],t=i[s],u=Vx(r,s,0,B.RegionalIndicator),u>0&&a!==B.Prepend&&a!==B.RegionalIndicator&&Sx(r,1,u-1,B.RegionalIndicator)?eC(r,0,s,B.RegionalIndicator)%2===1?B.BreakLastRegional:B.BreakPenultimateRegional:a===B.CR&&x===B.LF?B.NotBreak:a===B.Control||a===B.CR||a===B.LF||x===B.Control||x===B.CR||x===B.LF?B.BreakStart:a===B.L&&(x===B.L||x===B.V||x===B.LV||x===B.LVT)||(a===B.LV||a===B.V)&&(x===B.V||x===B.T)||(a===B.LVT||a===B.T)&&x===B.T||x===B.Extend||x===B.ZWJ||x===B.SpacingMark||a===B.Prepend||(u=Vx(i,s-1,0,B.ExtendedPictographic),u>=0&&a===B.ZWJ&&t===B.ExtendedPictographic&&i[u]===B.ExtendedPictographic&&Sx(r,u+1,s-2,B.Extend))?B.NotBreak:sC(r,1,s-1,B.RegionalIndicator)>=0?B.Break:a===B.RegionalIndicator&&x===B.RegionalIndicator?B.NotBreak:B.BreakStart}Px.exports=FC});var _x=n(function(u2,Nx){"use strict";var Lx=N();function vC(r){return r===169||r===174||r===8252||r===8265||r===8482||r===8505||8596<=r&&r<=8601||8617<=r&&r<=8618||8986<=r&&r<=8987||r===9e3||r===9096||r===9167||9193<=r&&r<=9196||9197<=r&&r<=9198||r===9199||r===9200||9201<=r&&r<=9202||r===9203||9208<=r&&r<=9210||r===9410||9642<=r&&r<=9643||r===9654||r===9664||9723<=r&&r<=9726||9728<=r&&r<=9729||9730<=r&&r<=9731||r===9732||r===9733||9735<=r&&r<=9741||r===9742||9743<=r&&r<=9744||r===9745||r===9746||9748<=r&&r<=9749||9750<=r&&r<=9751||r===9752||9753<=r&&r<=9756||r===9757||9758<=r&&r<=9759||r===9760||r===9761||9762<=r&&r<=9763||9764<=r&&r<=9765||r===9766||9767<=r&&r<=9769||r===9770||9771<=r&&r<=9773||r===9774||r===9775||9776<=r&&r<=9783||9784<=r&&r<=9785||r===9786||9787<=r&&r<=9791||r===9792||r===9793||r===9794||9795<=r&&r<=9799||9800<=r&&r<=9811||9812<=r&&r<=9822||r===9823||r===9824||9825<=r&&r<=9826||r===9827||r===9828||9829<=r&&r<=9830||r===9831||r===9832||9833<=r&&r<=9850||r===9851||9852<=r&&r<=9853||r===9854||r===9855||9856<=r&&r<=9861||9872<=r&&r<=9873||r===9874||r===9875||r===9876||r===9877||9878<=r&&r<=9879||r===9880||r===9881||r===9882||9883<=r&&r<=9884||9885<=r&&r<=9887||9888<=r&&r<=9889||9890<=r&&r<=9894||r===9895||9896<=r&&r<=9897||9898<=r&&r<=9899||9900<=r&&r<=9903||9904<=r&&r<=9905||9906<=r&&r<=9916||9917<=r&&r<=9918||9919<=r&&r<=9923||9924<=r&&r<=9925||9926<=r&&r<=9927||r===9928||9929<=r&&r<=9933||r===9934||r===9935||r===9936||r===9937||r===9938||r===9939||r===9940||9941<=r&&r<=9960||r===9961||r===9962||9963<=r&&r<=9967||9968<=r&&r<=9969||9970<=r&&r<=9971||r===9972||r===9973||r===9974||9975<=r&&r<=9977||r===9978||9979<=r&&r<=9980||r===9981||9982<=r&&r<=9985||r===9986||9987<=r&&r<=9988||r===9989||9992<=r&&r<=9996||r===9997||r===9998||r===9999||1e4<=r&&r<=10001||r===10002||r===10004||r===10006||r===10013||r===10017||r===10024||10035<=r&&r<=10036||r===10052||r===10055||r===10060||r===10062||10067<=r&&r<=10069||r===10071||r===10083||r===10084||10085<=r&&r<=10087||10133<=r&&r<=10135||r===10145||r===10160||r===10175||10548<=r&&r<=10549||11013<=r&&r<=11015||11035<=r&&r<=11036||r===11088||r===11093||r===12336||r===12349||r===12951||r===12953||126976<=r&&r<=126979||r===126980||126981<=r&&r<=127182||r===127183||127184<=r&&r<=127231||127245<=r&&r<=127247||r===127279||127340<=r&&r<=127343||127344<=r&&r<=127345||127358<=r&&r<=127359||r===127374||127377<=r&&r<=127386||127405<=r&&r<=127461||127489<=r&&r<=127490||127491<=r&&r<=127503||r===127514||r===127535||127538<=r&&r<=127546||127548<=r&&r<=127551||127561<=r&&r<=127567||127568<=r&&r<=127569||127570<=r&&r<=127743||127744<=r&&r<=127756||127757<=r&&r<=127758||r===127759||r===127760||r===127761||r===127762||127763<=r&&r<=127765||127766<=r&&r<=127768||r===127769||r===127770||r===127771||r===127772||127773<=r&&r<=127774||127775<=r&&r<=127776||r===127777||127778<=r&&r<=127779||127780<=r&&r<=127788||127789<=r&&r<=127791||127792<=r&&r<=127793||127794<=r&&r<=127795||127796<=r&&r<=127797||r===127798||127799<=r&&r<=127818||r===127819||127820<=r&&r<=127823||r===127824||127825<=r&&r<=127867||r===127868||r===127869||127870<=r&&r<=127871||127872<=r&&r<=127891||127892<=r&&r<=127893||127894<=r&&r<=127895||r===127896||127897<=r&&r<=127899||127900<=r&&r<=127901||127902<=r&&r<=127903||127904<=r&&r<=127940||r===127941||r===127942||r===127943||r===127944||r===127945||r===127946||127947<=r&&r<=127950||127951<=r&&r<=127955||127956<=r&&r<=127967||127968<=r&&r<=127971||r===127972||127973<=r&&r<=127984||127985<=r&&r<=127986||r===127987||r===127988||r===127989||r===127990||r===127991||127992<=r&&r<=127994||128e3<=r&&r<=128007||r===128008||128009<=r&&r<=128011||128012<=r&&r<=128014||128015<=r&&r<=128016||128017<=r&&r<=128018||r===128019||r===128020||r===128021||r===128022||128023<=r&&r<=128041||r===128042||128043<=r&&r<=128062||r===128063||r===128064||r===128065||128066<=r&&r<=128100||r===128101||128102<=r&&r<=128107||128108<=r&&r<=128109||128110<=r&&r<=128172||r===128173||128174<=r&&r<=128181||128182<=r&&r<=128183||128184<=r&&r<=128235||128236<=r&&r<=128237||r===128238||r===128239||128240<=r&&r<=128244||r===128245||128246<=r&&r<=128247||r===128248||128249<=r&&r<=128252||r===128253||r===128254||128255<=r&&r<=128258||r===128259||128260<=r&&r<=128263||r===128264||r===128265||128266<=r&&r<=128276||r===128277||128278<=r&&r<=128299||128300<=r&&r<=128301||128302<=r&&r<=128317||128326<=r&&r<=128328||128329<=r&&r<=128330||128331<=r&&r<=128334||r===128335||128336<=r&&r<=128347||128348<=r&&r<=128359||128360<=r&&r<=128366||128367<=r&&r<=128368||128369<=r&&r<=128370||128371<=r&&r<=128377||r===128378||128379<=r&&r<=128390||r===128391||128392<=r&&r<=128393||128394<=r&&r<=128397||128398<=r&&r<=128399||r===128400||128401<=r&&r<=128404||128405<=r&&r<=128406||128407<=r&&r<=128419||r===128420||r===128421||128422<=r&&r<=128423||r===128424||128425<=r&&r<=128432||128433<=r&&r<=128434||128435<=r&&r<=128443||r===128444||128445<=r&&r<=128449||128450<=r&&r<=128452||128453<=r&&r<=128464||128465<=r&&r<=128467||128468<=r&&r<=128475||128476<=r&&r<=128478||128479<=r&&r<=128480||r===128481||r===128482||r===128483||128484<=r&&r<=128487||r===128488||128489<=r&&r<=128494||r===128495||128496<=r&&r<=128498||r===128499||128500<=r&&r<=128505||r===128506||128507<=r&&r<=128511||r===128512||128513<=r&&r<=128518||128519<=r&&r<=128520||128521<=r&&r<=128525||r===128526||r===128527||r===128528||r===128529||128530<=r&&r<=128532||r===128533||r===128534||r===128535||r===128536||r===128537||r===128538||r===128539||128540<=r&&r<=128542||r===128543||128544<=r&&r<=128549||128550<=r&&r<=128551||128552<=r&&r<=128555||r===128556||r===128557||128558<=r&&r<=128559||128560<=r&&r<=128563||r===128564||r===128565||r===128566||128567<=r&&r<=128576||128577<=r&&r<=128580||128581<=r&&r<=128591||r===128640||128641<=r&&r<=128642||128643<=r&&r<=128645||r===128646||r===128647||r===128648||r===128649||128650<=r&&r<=128651||r===128652||r===128653||r===128654||r===128655||r===128656||128657<=r&&r<=128659||r===128660||r===128661||r===128662||r===128663||r===128664||128665<=r&&r<=128666||128667<=r&&r<=128673||r===128674||r===128675||128676<=r&&r<=128677||r===128678||128679<=r&&r<=128685||128686<=r&&r<=128689||r===128690||128691<=r&&r<=128693||r===128694||128695<=r&&r<=128696||128697<=r&&r<=128702||r===128703||r===128704||128705<=r&&r<=128709||128710<=r&&r<=128714||r===128715||r===128716||128717<=r&&r<=128719||r===128720||128721<=r&&r<=128722||128723<=r&&r<=128724||r===128725||128726<=r&&r<=128727||128728<=r&&r<=128735||128736<=r&&r<=128741||128742<=r&&r<=128744||r===128745||r===128746||128747<=r&&r<=128748||128749<=r&&r<=128751||r===128752||128753<=r&&r<=128754||r===128755||128756<=r&&r<=128758||128759<=r&&r<=128760||r===128761||r===128762||128763<=r&&r<=128764||128765<=r&&r<=128767||128884<=r&&r<=128895||128981<=r&&r<=128991||128992<=r&&r<=129003||129004<=r&&r<=129023||129036<=r&&r<=129039||129096<=r&&r<=129103||129114<=r&&r<=129119||129160<=r&&r<=129167||129198<=r&&r<=129279||r===129292||129293<=r&&r<=129295||129296<=r&&r<=129304||129305<=r&&r<=129310||r===129311||129312<=r&&r<=129319||129320<=r&&r<=129327||r===129328||129329<=r&&r<=129330||129331<=r&&r<=129338||129340<=r&&r<=129342||r===129343||129344<=r&&r<=129349||129351<=r&&r<=129355||r===129356||129357<=r&&r<=129359||129360<=r&&r<=129374||129375<=r&&r<=129387||129388<=r&&r<=129392||r===129393||r===129394||129395<=r&&r<=129398||129399<=r&&r<=129400||r===129401||r===129402||r===129403||129404<=r&&r<=129407||129408<=r&&r<=129412||129413<=r&&r<=129425||129426<=r&&r<=129431||129432<=r&&r<=129442||129443<=r&&r<=129444||129445<=r&&r<=129450||129451<=r&&r<=129453||129454<=r&&r<=129455||129456<=r&&r<=129465||129466<=r&&r<=129471||r===129472||129473<=r&&r<=129474||129475<=r&&r<=129482||r===129483||r===129484||129485<=r&&r<=129487||129488<=r&&r<=129510||129511<=r&&r<=129535||129536<=r&&r<=129647||129648<=r&&r<=129651||r===129652||129653<=r&&r<=129655||129656<=r&&r<=129658||129659<=r&&r<=129663||129664<=r&&r<=129666||129667<=r&&r<=129670||129671<=r&&r<=129679||129680<=r&&r<=129685||129686<=r&&r<=129704||129705<=r&&r<=129711||129712<=r&&r<=129718||129719<=r&&r<=129727||129728<=r&&r<=129730||129731<=r&&r<=129743||129744<=r&&r<=129750||129751<=r&&r<=129791||130048<=r&&r<=131069?Lx.ExtendedPictographic:Lx.Other}Nx.exports=vC});var Ix=n(function(e2,Ox){"use strict";var m=N();function CC(r){return 1536<=r&&r<=1541||r===1757||r===1807||r===2274||r===3406||r===69821||r===69837||70082<=r&&r<=70083||r===71999||r===72001||r===72250||72324<=r&&r<=72329||r===73030?m.Prepend:r===13?m.CR:r===10?m.LF:0<=r&&r<=9||11<=r&&r<=12||14<=r&&r<=31||127<=r&&r<=159||r===173||r===1564||r===6158||r===8203||8206<=r&&r<=8207||r===8232||r===8233||8234<=r&&r<=8238||8288<=r&&r<=8292||r===8293||8294<=r&&r<=8303||r===65279||65520<=r&&r<=65528||65529<=r&&r<=65531||78896<=r&&r<=78904||113824<=r&&r<=113827||119155<=r&&r<=119162||r===917504||r===917505||917506<=r&&r<=917535||917632<=r&&r<=917759||918e3<=r&&r<=921599?m.Control:768<=r&&r<=879||1155<=r&&r<=1159||1160<=r&&r<=1161||1425<=r&&r<=1469||r===1471||1473<=r&&r<=1474||1476<=r&&r<=1477||r===1479||1552<=r&&r<=1562||1611<=r&&r<=1631||r===1648||1750<=r&&r<=1756||1759<=r&&r<=1764||1767<=r&&r<=1768||1770<=r&&r<=1773||r===1809||1840<=r&&r<=1866||1958<=r&&r<=1968||2027<=r&&r<=2035||r===2045||2070<=r&&r<=2073||2075<=r&&r<=2083||2085<=r&&r<=2087||2089<=r&&r<=2093||2137<=r&&r<=2139||2259<=r&&r<=2273||2275<=r&&r<=2306||r===2362||r===2364||2369<=r&&r<=2376||r===2381||2385<=r&&r<=2391||2402<=r&&r<=2403||r===2433||r===2492||r===2494||2497<=r&&r<=2500||r===2509||r===2519||2530<=r&&r<=2531||r===2558||2561<=r&&r<=2562||r===2620||2625<=r&&r<=2626||2631<=r&&r<=2632||2635<=r&&r<=2637||r===2641||2672<=r&&r<=2673||r===2677||2689<=r&&r<=2690||r===2748||2753<=r&&r<=2757||2759<=r&&r<=2760||r===2765||2786<=r&&r<=2787||2810<=r&&r<=2815||r===2817||r===2876||r===2878||r===2879||2881<=r&&r<=2884||r===2893||2901<=r&&r<=2902||r===2903||2914<=r&&r<=2915||r===2946||r===3006||r===3008||r===3021||r===3031||r===3072||r===3076||3134<=r&&r<=3136||3142<=r&&r<=3144||3146<=r&&r<=3149||3157<=r&&r<=3158||3170<=r&&r<=3171||r===3201||r===3260||r===3263||r===3266||r===3270||3276<=r&&r<=3277||3285<=r&&r<=3286||3298<=r&&r<=3299||3328<=r&&r<=3329||3387<=r&&r<=3388||r===3390||3393<=r&&r<=3396||r===3405||r===3415||3426<=r&&r<=3427||r===3457||r===3530||r===3535||3538<=r&&r<=3540||r===3542||r===3551||r===3633||3636<=r&&r<=3642||3655<=r&&r<=3662||r===3761||3764<=r&&r<=3772||3784<=r&&r<=3789||3864<=r&&r<=3865||r===3893||r===3895||r===3897||3953<=r&&r<=3966||3968<=r&&r<=3972||3974<=r&&r<=3975||3981<=r&&r<=3991||3993<=r&&r<=4028||r===4038||4141<=r&&r<=4144||4146<=r&&r<=4151||4153<=r&&r<=4154||4157<=r&&r<=4158||4184<=r&&r<=4185||4190<=r&&r<=4192||4209<=r&&r<=4212||r===4226||4229<=r&&r<=4230||r===4237||r===4253||4957<=r&&r<=4959||5906<=r&&r<=5908||5938<=r&&r<=5940||5970<=r&&r<=5971||6002<=r&&r<=6003||6068<=r&&r<=6069||6071<=r&&r<=6077||r===6086||6089<=r&&r<=6099||r===6109||6155<=r&&r<=6157||6277<=r&&r<=6278||r===6313||6432<=r&&r<=6434||6439<=r&&r<=6440||r===6450||6457<=r&&r<=6459||6679<=r&&r<=6680||r===6683||r===6742||6744<=r&&r<=6750||r===6752||r===6754||6757<=r&&r<=6764||6771<=r&&r<=6780||r===6783||6832<=r&&r<=6845||r===6846||6847<=r&&r<=6848||6912<=r&&r<=6915||r===6964||r===6965||6966<=r&&r<=6970||r===6972||r===6978||7019<=r&&r<=7027||7040<=r&&r<=7041||7074<=r&&r<=7077||7080<=r&&r<=7081||7083<=r&&r<=7085||r===7142||7144<=r&&r<=7145||r===7149||7151<=r&&r<=7153||7212<=r&&r<=7219||7222<=r&&r<=7223||7376<=r&&r<=7378||7380<=r&&r<=7392||7394<=r&&r<=7400||r===7405||r===7412||7416<=r&&r<=7417||7616<=r&&r<=7673||7675<=r&&r<=7679||r===8204||8400<=r&&r<=8412||8413<=r&&r<=8416||r===8417||8418<=r&&r<=8420||8421<=r&&r<=8432||11503<=r&&r<=11505||r===11647||11744<=r&&r<=11775||12330<=r&&r<=12333||12334<=r&&r<=12335||12441<=r&&r<=12442||r===42607||42608<=r&&r<=42610||42612<=r&&r<=42621||42654<=r&&r<=42655||42736<=r&&r<=42737||r===43010||r===43014||r===43019||43045<=r&&r<=43046||r===43052||43204<=r&&r<=43205||43232<=r&&r<=43249||r===43263||43302<=r&&r<=43309||43335<=r&&r<=43345||43392<=r&&r<=43394||r===43443||43446<=r&&r<=43449||43452<=r&&r<=43453||r===43493||43561<=r&&r<=43566||43569<=r&&r<=43570||43573<=r&&r<=43574||r===43587||r===43596||r===43644||r===43696||43698<=r&&r<=43700||43703<=r&&r<=43704||43710<=r&&r<=43711||r===43713||43756<=r&&r<=43757||r===43766||r===44005||r===44008||r===44013||r===64286||65024<=r&&r<=65039||65056<=r&&r<=65071||65438<=r&&r<=65439||r===66045||r===66272||66422<=r&&r<=66426||68097<=r&&r<=68099||68101<=r&&r<=68102||68108<=r&&r<=68111||68152<=r&&r<=68154||r===68159||68325<=r&&r<=68326||68900<=r&&r<=68903||69291<=r&&r<=69292||69446<=r&&r<=69456||r===69633||69688<=r&&r<=69702||69759<=r&&r<=69761||69811<=r&&r<=69814||69817<=r&&r<=69818||69888<=r&&r<=69890||69927<=r&&r<=69931||69933<=r&&r<=69940||r===70003||70016<=r&&r<=70017||70070<=r&&r<=70078||70089<=r&&r<=70092||r===70095||70191<=r&&r<=70193||r===70196||70198<=r&&r<=70199||r===70206||r===70367||70371<=r&&r<=70378||70400<=r&&r<=70401||70459<=r&&r<=70460||r===70462||r===70464||r===70487||70502<=r&&r<=70508||70512<=r&&r<=70516||70712<=r&&r<=70719||70722<=r&&r<=70724||r===70726||r===70750||r===70832||70835<=r&&r<=70840||r===70842||r===70845||70847<=r&&r<=70848||70850<=r&&r<=70851||r===71087||71090<=r&&r<=71093||71100<=r&&r<=71101||71103<=r&&r<=71104||71132<=r&&r<=71133||71219<=r&&r<=71226||r===71229||71231<=r&&r<=71232||r===71339||r===71341||71344<=r&&r<=71349||r===71351||71453<=r&&r<=71455||71458<=r&&r<=71461||71463<=r&&r<=71467||71727<=r&&r<=71735||71737<=r&&r<=71738||r===71984||71995<=r&&r<=71996||r===71998||r===72003||72148<=r&&r<=72151||72154<=r&&r<=72155||r===72160||72193<=r&&r<=72202||72243<=r&&r<=72248||72251<=r&&r<=72254||r===72263||72273<=r&&r<=72278||72281<=r&&r<=72283||72330<=r&&r<=72342||72344<=r&&r<=72345||72752<=r&&r<=72758||72760<=r&&r<=72765||r===72767||72850<=r&&r<=72871||72874<=r&&r<=72880||72882<=r&&r<=72883||72885<=r&&r<=72886||73009<=r&&r<=73014||r===73018||73020<=r&&r<=73021||73023<=r&&r<=73029||r===73031||73104<=r&&r<=73105||r===73109||r===73111||73459<=r&&r<=73460||92912<=r&&r<=92916||92976<=r&&r<=92982||r===94031||94095<=r&&r<=94098||r===94180||113821<=r&&r<=113822||r===119141||119143<=r&&r<=119145||119150<=r&&r<=119154||119163<=r&&r<=119170||119173<=r&&r<=119179||119210<=r&&r<=119213||119362<=r&&r<=119364||121344<=r&&r<=121398||121403<=r&&r<=121452||r===121461||r===121476||121499<=r&&r<=121503||121505<=r&&r<=121519||122880<=r&&r<=122886||122888<=r&&r<=122904||122907<=r&&r<=122913||122915<=r&&r<=122916||122918<=r&&r<=122922||123184<=r&&r<=123190||123628<=r&&r<=123631||125136<=r&&r<=125142||125252<=r&&r<=125258||127995<=r&&r<=127999||917536<=r&&r<=917631||917760<=r&&r<=917999?m.Extend:127462<=r&&r<=127487?m.RegionalIndicator:r===2307||r===2363||2366<=r&&r<=2368||2377<=r&&r<=2380||2382<=r&&r<=2383||2434<=r&&r<=2435||2495<=r&&r<=2496||2503<=r&&r<=2504||2507<=r&&r<=2508||r===2563||2622<=r&&r<=2624||r===2691||2750<=r&&r<=2752||r===2761||2763<=r&&r<=2764||2818<=r&&r<=2819||r===2880||2887<=r&&r<=2888||2891<=r&&r<=2892||r===3007||3009<=r&&r<=3010||3014<=r&&r<=3016||3018<=r&&r<=3020||3073<=r&&r<=3075||3137<=r&&r<=3140||3202<=r&&r<=3203||r===3262||3264<=r&&r<=3265||3267<=r&&r<=3268||3271<=r&&r<=3272||3274<=r&&r<=3275||3330<=r&&r<=3331||3391<=r&&r<=3392||3398<=r&&r<=3400||3402<=r&&r<=3404||3458<=r&&r<=3459||3536<=r&&r<=3537||3544<=r&&r<=3550||3570<=r&&r<=3571||r===3635||r===3763||3902<=r&&r<=3903||r===3967||r===4145||4155<=r&&r<=4156||4182<=r&&r<=4183||r===4228||r===6070||6078<=r&&r<=6085||6087<=r&&r<=6088||6435<=r&&r<=6438||6441<=r&&r<=6443||6448<=r&&r<=6449||6451<=r&&r<=6456||6681<=r&&r<=6682||r===6741||r===6743||6765<=r&&r<=6770||r===6916||r===6971||6973<=r&&r<=6977||6979<=r&&r<=6980||r===7042||r===7073||7078<=r&&r<=7079||r===7082||r===7143||7146<=r&&r<=7148||r===7150||7154<=r&&r<=7155||7204<=r&&r<=7211||7220<=r&&r<=7221||r===7393||r===7415||43043<=r&&r<=43044||r===43047||43136<=r&&r<=43137||43188<=r&&r<=43203||43346<=r&&r<=43347||r===43395||43444<=r&&r<=43445||43450<=r&&r<=43451||43454<=r&&r<=43456||43567<=r&&r<=43568||43571<=r&&r<=43572||r===43597||r===43755||43758<=r&&r<=43759||r===43765||44003<=r&&r<=44004||44006<=r&&r<=44007||44009<=r&&r<=44010||r===44012||r===69632||r===69634||r===69762||69808<=r&&r<=69810||69815<=r&&r<=69816||r===69932||69957<=r&&r<=69958||r===70018||70067<=r&&r<=70069||70079<=r&&r<=70080||r===70094||70188<=r&&r<=70190||70194<=r&&r<=70195||r===70197||70368<=r&&r<=70370||70402<=r&&r<=70403||r===70463||70465<=r&&r<=70468||70471<=r&&r<=70472||70475<=r&&r<=70477||70498<=r&&r<=70499||70709<=r&&r<=70711||70720<=r&&r<=70721||r===70725||70833<=r&&r<=70834||r===70841||70843<=r&&r<=70844||r===70846||r===70849||71088<=r&&r<=71089||71096<=r&&r<=71099||r===71102||71216<=r&&r<=71218||71227<=r&&r<=71228||r===71230||r===71340||71342<=r&&r<=71343||r===71350||71456<=r&&r<=71457||r===71462||71724<=r&&r<=71726||r===71736||71985<=r&&r<=71989||71991<=r&&r<=71992||r===71997||r===72e3||r===72002||72145<=r&&r<=72147||72156<=r&&r<=72159||r===72164||r===72249||72279<=r&&r<=72280||r===72343||r===72751||r===72766||r===72873||r===72881||r===72884||73098<=r&&r<=73102||73107<=r&&r<=73108||r===73110||73461<=r&&r<=73462||94033<=r&&r<=94087||94192<=r&&r<=94193||r===119142||r===119149?m.SpacingMark:4352<=r&&r<=4447||43360<=r&&r<=43388?m.L:4448<=r&&r<=4519||55216<=r&&r<=55238?m.V:4520<=r&&r<=4607||55243<=r&&r<=55291?m.T:r===44032||r===44060||r===44088||r===44116||r===44144||r===44172||r===44200||r===44228||r===44256||r===44284||r===44312||r===44340||r===44368||r===44396||r===44424||r===44452||r===44480||r===44508||r===44536||r===44564||r===44592||r===44620||r===44648||r===44676||r===44704||r===44732||r===44760||r===44788||r===44816||r===44844||r===44872||r===44900||r===44928||r===44956||r===44984||r===45012||r===45040||r===45068||r===45096||r===45124||r===45152||r===45180||r===45208||r===45236||r===45264||r===45292||r===45320||r===45348||r===45376||r===45404||r===45432||r===45460||r===45488||r===45516||r===45544||r===45572||r===45600||r===45628||r===45656||r===45684||r===45712||r===45740||r===45768||r===45796||r===45824||r===45852||r===45880||r===45908||r===45936||r===45964||r===45992||r===46020||r===46048||r===46076||r===46104||r===46132||r===46160||r===46188||r===46216||r===46244||r===46272||r===46300||r===46328||r===46356||r===46384||r===46412||r===46440||r===46468||r===46496||r===46524||r===46552||r===46580||r===46608||r===46636||r===46664||r===46692||r===46720||r===46748||r===46776||r===46804||r===46832||r===46860||r===46888||r===46916||r===46944||r===46972||r===47e3||r===47028||r===47056||r===47084||r===47112||r===47140||r===47168||r===47196||r===47224||r===47252||r===47280||r===47308||r===47336||r===47364||r===47392||r===47420||r===47448||r===47476||r===47504||r===47532||r===47560||r===47588||r===47616||r===47644||r===47672||r===47700||r===47728||r===47756||r===47784||r===47812||r===47840||r===47868||r===47896||r===47924||r===47952||r===47980||r===48008||r===48036||r===48064||r===48092||r===48120||r===48148||r===48176||r===48204||r===48232||r===48260||r===48288||r===48316||r===48344||r===48372||r===48400||r===48428||r===48456||r===48484||r===48512||r===48540||r===48568||r===48596||r===48624||r===48652||r===48680||r===48708||r===48736||r===48764||r===48792||r===48820||r===48848||r===48876||r===48904||r===48932||r===48960||r===48988||r===49016||r===49044||r===49072||r===49100||r===49128||r===49156||r===49184||r===49212||r===49240||r===49268||r===49296||r===49324||r===49352||r===49380||r===49408||r===49436||r===49464||r===49492||r===49520||r===49548||r===49576||r===49604||r===49632||r===49660||r===49688||r===49716||r===49744||r===49772||r===49800||r===49828||r===49856||r===49884||r===49912||r===49940||r===49968||r===49996||r===50024||r===50052||r===50080||r===50108||r===50136||r===50164||r===50192||r===50220||r===50248||r===50276||r===50304||r===50332||r===50360||r===50388||r===50416||r===50444||r===50472||r===50500||r===50528||r===50556||r===50584||r===50612||r===50640||r===50668||r===50696||r===50724||r===50752||r===50780||r===50808||r===50836||r===50864||r===50892||r===50920||r===50948||r===50976||r===51004||r===51032||r===51060||r===51088||r===51116||r===51144||r===51172||r===51200||r===51228||r===51256||r===51284||r===51312||r===51340||r===51368||r===51396||r===51424||r===51452||r===51480||r===51508||r===51536||r===51564||r===51592||r===51620||r===51648||r===51676||r===51704||r===51732||r===51760||r===51788||r===51816||r===51844||r===51872||r===51900||r===51928||r===51956||r===51984||r===52012||r===52040||r===52068||r===52096||r===52124||r===52152||r===52180||r===52208||r===52236||r===52264||r===52292||r===52320||r===52348||r===52376||r===52404||r===52432||r===52460||r===52488||r===52516||r===52544||r===52572||r===52600||r===52628||r===52656||r===52684||r===52712||r===52740||r===52768||r===52796||r===52824||r===52852||r===52880||r===52908||r===52936||r===52964||r===52992||r===53020||r===53048||r===53076||r===53104||r===53132||r===53160||r===53188||r===53216||r===53244||r===53272||r===53300||r===53328||r===53356||r===53384||r===53412||r===53440||r===53468||r===53496||r===53524||r===53552||r===53580||r===53608||r===53636||r===53664||r===53692||r===53720||r===53748||r===53776||r===53804||r===53832||r===53860||r===53888||r===53916||r===53944||r===53972||r===54e3||r===54028||r===54056||r===54084||r===54112||r===54140||r===54168||r===54196||r===54224||r===54252||r===54280||r===54308||r===54336||r===54364||r===54392||r===54420||r===54448||r===54476||r===54504||r===54532||r===54560||r===54588||r===54616||r===54644||r===54672||r===54700||r===54728||r===54756||r===54784||r===54812||r===54840||r===54868||r===54896||r===54924||r===54952||r===54980||r===55008||r===55036||r===55064||r===55092||r===55120||r===55148||r===55176?m.LV:44033<=r&&r<=44059||44061<=r&&r<=44087||44089<=r&&r<=44115||44117<=r&&r<=44143||44145<=r&&r<=44171||44173<=r&&r<=44199||44201<=r&&r<=44227||44229<=r&&r<=44255||44257<=r&&r<=44283||44285<=r&&r<=44311||44313<=r&&r<=44339||44341<=r&&r<=44367||44369<=r&&r<=44395||44397<=r&&r<=44423||44425<=r&&r<=44451||44453<=r&&r<=44479||44481<=r&&r<=44507||44509<=r&&r<=44535||44537<=r&&r<=44563||44565<=r&&r<=44591||44593<=r&&r<=44619||44621<=r&&r<=44647||44649<=r&&r<=44675||44677<=r&&r<=44703||44705<=r&&r<=44731||44733<=r&&r<=44759||44761<=r&&r<=44787||44789<=r&&r<=44815||44817<=r&&r<=44843||44845<=r&&r<=44871||44873<=r&&r<=44899||44901<=r&&r<=44927||44929<=r&&r<=44955||44957<=r&&r<=44983||44985<=r&&r<=45011||45013<=r&&r<=45039||45041<=r&&r<=45067||45069<=r&&r<=45095||45097<=r&&r<=45123||45125<=r&&r<=45151||45153<=r&&r<=45179||45181<=r&&r<=45207||45209<=r&&r<=45235||45237<=r&&r<=45263||45265<=r&&r<=45291||45293<=r&&r<=45319||45321<=r&&r<=45347||45349<=r&&r<=45375||45377<=r&&r<=45403||45405<=r&&r<=45431||45433<=r&&r<=45459||45461<=r&&r<=45487||45489<=r&&r<=45515||45517<=r&&r<=45543||45545<=r&&r<=45571||45573<=r&&r<=45599||45601<=r&&r<=45627||45629<=r&&r<=45655||45657<=r&&r<=45683||45685<=r&&r<=45711||45713<=r&&r<=45739||45741<=r&&r<=45767||45769<=r&&r<=45795||45797<=r&&r<=45823||45825<=r&&r<=45851||45853<=r&&r<=45879||45881<=r&&r<=45907||45909<=r&&r<=45935||45937<=r&&r<=45963||45965<=r&&r<=45991||45993<=r&&r<=46019||46021<=r&&r<=46047||46049<=r&&r<=46075||46077<=r&&r<=46103||46105<=r&&r<=46131||46133<=r&&r<=46159||46161<=r&&r<=46187||46189<=r&&r<=46215||46217<=r&&r<=46243||46245<=r&&r<=46271||46273<=r&&r<=46299||46301<=r&&r<=46327||46329<=r&&r<=46355||46357<=r&&r<=46383||46385<=r&&r<=46411||46413<=r&&r<=46439||46441<=r&&r<=46467||46469<=r&&r<=46495||46497<=r&&r<=46523||46525<=r&&r<=46551||46553<=r&&r<=46579||46581<=r&&r<=46607||46609<=r&&r<=46635||46637<=r&&r<=46663||46665<=r&&r<=46691||46693<=r&&r<=46719||46721<=r&&r<=46747||46749<=r&&r<=46775||46777<=r&&r<=46803||46805<=r&&r<=46831||46833<=r&&r<=46859||46861<=r&&r<=46887||46889<=r&&r<=46915||46917<=r&&r<=46943||46945<=r&&r<=46971||46973<=r&&r<=46999||47001<=r&&r<=47027||47029<=r&&r<=47055||47057<=r&&r<=47083||47085<=r&&r<=47111||47113<=r&&r<=47139||47141<=r&&r<=47167||47169<=r&&r<=47195||47197<=r&&r<=47223||47225<=r&&r<=47251||47253<=r&&r<=47279||47281<=r&&r<=47307||47309<=r&&r<=47335||47337<=r&&r<=47363||47365<=r&&r<=47391||47393<=r&&r<=47419||47421<=r&&r<=47447||47449<=r&&r<=47475||47477<=r&&r<=47503||47505<=r&&r<=47531||47533<=r&&r<=47559||47561<=r&&r<=47587||47589<=r&&r<=47615||47617<=r&&r<=47643||47645<=r&&r<=47671||47673<=r&&r<=47699||47701<=r&&r<=47727||47729<=r&&r<=47755||47757<=r&&r<=47783||47785<=r&&r<=47811||47813<=r&&r<=47839||47841<=r&&r<=47867||47869<=r&&r<=47895||47897<=r&&r<=47923||47925<=r&&r<=47951||47953<=r&&r<=47979||47981<=r&&r<=48007||48009<=r&&r<=48035||48037<=r&&r<=48063||48065<=r&&r<=48091||48093<=r&&r<=48119||48121<=r&&r<=48147||48149<=r&&r<=48175||48177<=r&&r<=48203||48205<=r&&r<=48231||48233<=r&&r<=48259||48261<=r&&r<=48287||48289<=r&&r<=48315||48317<=r&&r<=48343||48345<=r&&r<=48371||48373<=r&&r<=48399||48401<=r&&r<=48427||48429<=r&&r<=48455||48457<=r&&r<=48483||48485<=r&&r<=48511||48513<=r&&r<=48539||48541<=r&&r<=48567||48569<=r&&r<=48595||48597<=r&&r<=48623||48625<=r&&r<=48651||48653<=r&&r<=48679||48681<=r&&r<=48707||48709<=r&&r<=48735||48737<=r&&r<=48763||48765<=r&&r<=48791||48793<=r&&r<=48819||48821<=r&&r<=48847||48849<=r&&r<=48875||48877<=r&&r<=48903||48905<=r&&r<=48931||48933<=r&&r<=48959||48961<=r&&r<=48987||48989<=r&&r<=49015||49017<=r&&r<=49043||49045<=r&&r<=49071||49073<=r&&r<=49099||49101<=r&&r<=49127||49129<=r&&r<=49155||49157<=r&&r<=49183||49185<=r&&r<=49211||49213<=r&&r<=49239||49241<=r&&r<=49267||49269<=r&&r<=49295||49297<=r&&r<=49323||49325<=r&&r<=49351||49353<=r&&r<=49379||49381<=r&&r<=49407||49409<=r&&r<=49435||49437<=r&&r<=49463||49465<=r&&r<=49491||49493<=r&&r<=49519||49521<=r&&r<=49547||49549<=r&&r<=49575||49577<=r&&r<=49603||49605<=r&&r<=49631||49633<=r&&r<=49659||49661<=r&&r<=49687||49689<=r&&r<=49715||49717<=r&&r<=49743||49745<=r&&r<=49771||49773<=r&&r<=49799||49801<=r&&r<=49827||49829<=r&&r<=49855||49857<=r&&r<=49883||49885<=r&&r<=49911||49913<=r&&r<=49939||49941<=r&&r<=49967||49969<=r&&r<=49995||49997<=r&&r<=50023||50025<=r&&r<=50051||50053<=r&&r<=50079||50081<=r&&r<=50107||50109<=r&&r<=50135||50137<=r&&r<=50163||50165<=r&&r<=50191||50193<=r&&r<=50219||50221<=r&&r<=50247||50249<=r&&r<=50275||50277<=r&&r<=50303||50305<=r&&r<=50331||50333<=r&&r<=50359||50361<=r&&r<=50387||50389<=r&&r<=50415||50417<=r&&r<=50443||50445<=r&&r<=50471||50473<=r&&r<=50499||50501<=r&&r<=50527||50529<=r&&r<=50555||50557<=r&&r<=50583||50585<=r&&r<=50611||50613<=r&&r<=50639||50641<=r&&r<=50667||50669<=r&&r<=50695||50697<=r&&r<=50723||50725<=r&&r<=50751||50753<=r&&r<=50779||50781<=r&&r<=50807||50809<=r&&r<=50835||50837<=r&&r<=50863||50865<=r&&r<=50891||50893<=r&&r<=50919||50921<=r&&r<=50947||50949<=r&&r<=50975||50977<=r&&r<=51003||51005<=r&&r<=51031||51033<=r&&r<=51059||51061<=r&&r<=51087||51089<=r&&r<=51115||51117<=r&&r<=51143||51145<=r&&r<=51171||51173<=r&&r<=51199||51201<=r&&r<=51227||51229<=r&&r<=51255||51257<=r&&r<=51283||51285<=r&&r<=51311||51313<=r&&r<=51339||51341<=r&&r<=51367||51369<=r&&r<=51395||51397<=r&&r<=51423||51425<=r&&r<=51451||51453<=r&&r<=51479||51481<=r&&r<=51507||51509<=r&&r<=51535||51537<=r&&r<=51563||51565<=r&&r<=51591||51593<=r&&r<=51619||51621<=r&&r<=51647||51649<=r&&r<=51675||51677<=r&&r<=51703||51705<=r&&r<=51731||51733<=r&&r<=51759||51761<=r&&r<=51787||51789<=r&&r<=51815||51817<=r&&r<=51843||51845<=r&&r<=51871||51873<=r&&r<=51899||51901<=r&&r<=51927||51929<=r&&r<=51955||51957<=r&&r<=51983||51985<=r&&r<=52011||52013<=r&&r<=52039||52041<=r&&r<=52067||52069<=r&&r<=52095||52097<=r&&r<=52123||52125<=r&&r<=52151||52153<=r&&r<=52179||52181<=r&&r<=52207||52209<=r&&r<=52235||52237<=r&&r<=52263||52265<=r&&r<=52291||52293<=r&&r<=52319||52321<=r&&r<=52347||52349<=r&&r<=52375||52377<=r&&r<=52403||52405<=r&&r<=52431||52433<=r&&r<=52459||52461<=r&&r<=52487||52489<=r&&r<=52515||52517<=r&&r<=52543||52545<=r&&r<=52571||52573<=r&&r<=52599||52601<=r&&r<=52627||52629<=r&&r<=52655||52657<=r&&r<=52683||52685<=r&&r<=52711||52713<=r&&r<=52739||52741<=r&&r<=52767||52769<=r&&r<=52795||52797<=r&&r<=52823||52825<=r&&r<=52851||52853<=r&&r<=52879||52881<=r&&r<=52907||52909<=r&&r<=52935||52937<=r&&r<=52963||52965<=r&&r<=52991||52993<=r&&r<=53019||53021<=r&&r<=53047||53049<=r&&r<=53075||53077<=r&&r<=53103||53105<=r&&r<=53131||53133<=r&&r<=53159||53161<=r&&r<=53187||53189<=r&&r<=53215||53217<=r&&r<=53243||53245<=r&&r<=53271||53273<=r&&r<=53299||53301<=r&&r<=53327||53329<=r&&r<=53355||53357<=r&&r<=53383||53385<=r&&r<=53411||53413<=r&&r<=53439||53441<=r&&r<=53467||53469<=r&&r<=53495||53497<=r&&r<=53523||53525<=r&&r<=53551||53553<=r&&r<=53579||53581<=r&&r<=53607||53609<=r&&r<=53635||53637<=r&&r<=53663||53665<=r&&r<=53691||53693<=r&&r<=53719||53721<=r&&r<=53747||53749<=r&&r<=53775||53777<=r&&r<=53803||53805<=r&&r<=53831||53833<=r&&r<=53859||53861<=r&&r<=53887||53889<=r&&r<=53915||53917<=r&&r<=53943||53945<=r&&r<=53971||53973<=r&&r<=53999||54001<=r&&r<=54027||54029<=r&&r<=54055||54057<=r&&r<=54083||54085<=r&&r<=54111||54113<=r&&r<=54139||54141<=r&&r<=54167||54169<=r&&r<=54195||54197<=r&&r<=54223||54225<=r&&r<=54251||54253<=r&&r<=54279||54281<=r&&r<=54307||54309<=r&&r<=54335||54337<=r&&r<=54363||54365<=r&&r<=54391||54393<=r&&r<=54419||54421<=r&&r<=54447||54449<=r&&r<=54475||54477<=r&&r<=54503||54505<=r&&r<=54531||54533<=r&&r<=54559||54561<=r&&r<=54587||54589<=r&&r<=54615||54617<=r&&r<=54643||54645<=r&&r<=54671||54673<=r&&r<=54699||54701<=r&&r<=54727||54729<=r&&r<=54755||54757<=r&&r<=54783||54785<=r&&r<=54811||54813<=r&&r<=54839||54841<=r&&r<=54867||54869<=r&&r<=54895||54897<=r&&r<=54923||54925<=r&&r<=54951||54953<=r&&r<=54979||54981<=r&&r<=55007||55009<=r&&r<=55035||55037<=r&&r<=55063||55065<=r&&r<=55091||55093<=r&&r<=55119||55121<=r&&r<=55147||55149<=r&&r<=55175||55177<=r&&r<=55203?m.LVT:r===8205?m.ZWJ:m.Other}Ox.exports=CC});var yr=n(function(s2,Gx){"use strict";var Y=require("@stdlib/utils/define-nonenumerable-read-only-property"),lC=N(),BC=Rx(),fC=_x(),gC=Ix(),_={};Y(_,"constants",lC);Y(_,"breakType",BC);Y(_,"emojiProperty",fC);Y(_,"breakProperty",gC);Gx.exports=_});var jx=n(function(F2,Wx){"use strict";var EC=require("@stdlib/assert/is-string").isPrimitive,pC=require("@stdlib/assert/is-integer").isPrimitive,kx=J(),DC=require("@stdlib/assert/has-utf16-surrogate-pair-at"),Tr=yr(),Mx=v(),AC=Tr.breakType,Ux=Tr.breakProperty,zx=Tr.emojiProperty;function mC(r,i){var t,x,a,u,e,s;if(!EC(r))throw new TypeError(Mx("invalid argument. First argument must be a string. Value: `%s`.",r));if(arguments.length>1){if(!pC(i))throw new TypeError(Mx("invalid argument. Second argument must be an integer. Value: `%s`.",i));u=i}else u=0;if(a=r.length,u<0&&(u+=a,u<0&&(u=0)),a===0||u>=a)return-1;for(t=[],x=[],e=kx(r,u),t.push(Ux(e)),x.push(zx(e)),s=u+1;s0))return s;return-1}Wx.exports=mC});var h=n(function(v2,$x){"use strict";var hC=jx();$x.exports=hC});var Zx=n(function(C2,Hx){"use strict";var qC=h();function wC(r,i){for(var t=0;i>0;)t=qC(r,t),i-=1;return r===""||t===-1?r:r.substring(0,t)}Hx.exports=wC});var Sr=n(function(l2,Xx){"use strict";var bC=Zx();Xx.exports=bC});var Jx=n(function(B2,Qx){"use strict";function yC(r,i,t){var x;for(x=0;x?`{}|~\/\\\[\]_#$*&^@%]+/g,jC=/([a-z0-9])([A-Z])/g;function $C(r){return r=Lr(r,WC," "),r=Lr(r,jC,"$1 $2"),r=UC(r),r=kC(r),r=MC(r),Lr(r,zC,"-")}nt.exports=$C});var Nr=n(function(q2,et){"use strict";var HC=ut();et.exports=HC});var Ft=n(function(w2,st){"use strict";var ZC=R(),XC=q();function QC(r){var i,t,x,a;for(i=[],a=0;a?`{}|~\/\\\[\]_#$*&^@%]+/g,dC=/([a-z0-9])([A-Z])/g;function rl(r){return r=_r(r,cC," "),r=_r(r,dC,"$1 $2"),r=KC(r),r=_r(r,oC,"-"),YC(r)}lt.exports=rl});var Or=n(function(T2,ft){"use strict";var il=Bt();ft.exports=il});var Et=n(function(S2,gt){"use strict";var xl=typeof String.prototype.repeat!="undefined";gt.exports=xl});var Dt=n(function(V2,pt){"use strict";function tl(r,i){var t,x;if(r.length===0||i===0)return"";for(t="",x=i;(x&1)===1&&(t+=r),x>>>=1,x!==0;)r+=r;return t}pt.exports=tl});var mt=n(function(P2,At){"use strict";var al=String.prototype.repeat;At.exports=al});var qt=n(function(R2,ht){"use strict";var nl=mt();function ul(r,i){return nl.call(r,i)}ht.exports=ul});var O=n(function(L2,wt){"use strict";var el=Et(),sl=Dt(),Fl=qt(),Ir;el?Ir=Fl:Ir=sl;wt.exports=Ir});var yt=n(function(N2,bt){"use strict";var vl=O(),Cl=require("@stdlib/math/base/special/ceil");function ll(r,i,t){var x=(i-r.length)/t.length;return x<=0?r:(x=Cl(x),vl(t,x)+r)}bt.exports=ll});var Gr=n(function(_2,Tt){"use strict";var Bl=yt();Tt.exports=Bl});var Vt=n(function(O2,St){"use strict";var fl=typeof String.prototype.trimLeft!="undefined";St.exports=fl});var Rt=n(function(I2,Pt){"use strict";var gl=A(),El=/^[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/;function pl(r){return gl(r,El,"")}Pt.exports=pl});var Nt=n(function(G2,Lt){"use strict";var Dl=String.prototype.trimLeft;Lt.exports=Dl});var Ot=n(function(k2,_t){"use strict";var Al=Nt();function ml(r){return Al.call(r)}_t.exports=ml});var Mr=n(function(M2,It){"use strict";var hl=Vt(),ql=Rt(),wl=Ot(),kr;hl?kr=wl:kr=ql;It.exports=kr});var kt=n(function(U2,Gt){"use strict";var bl=L(),yl=q(),o=A(),Tl=w(),Sl=/\s+/g,Vl=/[-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,Pl=/(?:\s|^)([^\s]+)(?=\s|$)/g,Rl=/([a-z0-9])([A-Z])/g;function Ll(r,i){return bl(yl(i))}function Nl(r){return r=o(r,Vl," "),r=o(r,Sl," "),r=o(r,Rl,"$1 $2"),r=Tl(r),o(r,Pl,Ll)}Gt.exports=Nl});var Ur=n(function(z2,Mt){"use strict";var _l=kt();Mt.exports=_l});var Wt=n(function(W2,zt){"use strict";var Ol=require("@stdlib/assert/is-string").isPrimitive,Il=v(),V=63,T=128,Gl=192,kl=224,Ml=240,Ut=1023,Ul=2048,zl=55296,Wl=57344,jl=65536;function $l(r){var i,t,x,a;if(!Ol(r))throw new TypeError(Il("invalid argument. Must provide a string. Value: `%s`.",r));for(x=r.length,t=[],a=0;a>6),t.push(T|i&V)):i=Wl?(t.push(kl|i>>12),t.push(T|i>>6&V),t.push(T|i&V)):(a+=1,i=jl+((i&Ut)<<10|r.charCodeAt(a)&Ut),t.push(Ml|i>>18),t.push(T|i>>12&V),t.push(T|i>>6&V),t.push(T|i&V));return t}zt.exports=$l});var zr=n(function(j2,jt){"use strict";var Hl=Wt();jt.exports=Hl});var Ht=n(function($2,$t){"use strict";var Zl=zr(),Xl=95,Ql=46,Jl=45,Yl=126,Kl=48,ol=57,cl=65,dl=90,rB=97,iB=122;function xB(r){var i,t,x,a,u;for(a=Zl(r),x=a.length,t="",u=0;u=Kl&&i<=ol||i>=cl&&i<=dl||i>=rB&&i<=iB||i===Jl||i===Ql||i===Xl||i===Yl?t+=r.charAt(u):t+="%"+i.toString(16).toUpperCase();return t}$t.exports=xB});var Wr=n(function(H2,Zt){"use strict";var tB=Ht();Zt.exports=tB});var Qt=n(function(Z2,Xt){"use strict";function aB(r,i){return r.substring(i,r.length)}Xt.exports=aB});var jr=n(function(X2,Jt){"use strict";var nB=Qt();Jt.exports=nB});var Kt=n(function(Q2,Yt){"use strict";var uB=/[\uDC00-\uDFFF]/,eB=/[\uD800-\uDBFF]/;function sB(r,i){var t,x,a,u,e;if(i===0)return r;for(t=r.length,u=0,e=0;e0;)t=vB(r,t),i-=1;return r===""||t===-1?"":r.substring(t,r.length)}ct.exports=CB});var Hr=n(function(K2,ra){"use strict";var lB=dt();ra.exports=lB});var xa=n(function(o2,ia){"use strict";function BB(r,i,t){var x=r.indexOf(i);return r===""||i===""||t===""||x<0?r:t+r.substring(x)}ia.exports=BB});var Zr=n(function(c2,ta){"use strict";var fB=xa();ta.exports=fB});var na=n(function(d2,aa){"use strict";var gB=O(),EB=require("@stdlib/math/base/special/ceil");function pB(r,i,t){var x=(i-r.length)/t.length;return x<=0?r:(x=EB(x),r+gB(t,x))}aa.exports=pB});var Xr=n(function(rm,ua){"use strict";var DB=na();ua.exports=DB});var sa=n(function(im,ea){"use strict";var AB=typeof String.prototype.trimRight!="undefined";ea.exports=AB});var va=n(function(xm,Fa){"use strict";var mB=A(),hB=/[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+$/;function qB(r){return mB(r,hB,"")}Fa.exports=qB});var la=n(function(tm,Ca){"use strict";var wB=String.prototype.trimRight;Ca.exports=wB});var fa=n(function(am,Ba){"use strict";var bB=la();function yB(r){return bB.call(r)}Ba.exports=yB});var Jr=n(function(nm,ga){"use strict";var TB=sa(),SB=va(),VB=fa(),Qr;TB?Qr=VB:Qr=SB;ga.exports=Qr});var pa=n(function(um,Ea){"use strict";var PB=q(),Yr=A(),RB=w(),LB=/\s+/g,NB=/[\-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,_B=/([a-z0-9])([A-Z])/g;function OB(r){return r=Yr(r,NB," "),r=Yr(r,_B,"$1 $2"),r=RB(r),r=Yr(r,LB,"_"),PB(r)}Ea.exports=OB});var Kr=n(function(em,Da){"use strict";var IB=pa();Da.exports=IB});var ma=n(function(sm,Aa){"use strict";var GB=typeof String.prototype.startsWith!="undefined";Aa.exports=GB});var qa=n(function(Fm,ha){"use strict";function kB(r,i,t){var x,a;if(t<0?x=r.length+t:x=t,i.length===0)return!0;if(x<0||x+i.length>r.length)return!1;for(a=0;ar.length?!1:UB.call(r,i,x)}ya.exports=zB});var cr=n(function(lm,Sa){"use strict";var WB=ma(),jB=qa(),$B=Ta(),or;WB?or=$B:or=jB;Sa.exports=or});var Pa=n(function(Bm,Va){"use strict";function HB(r){return r===""?"":r.charAt(0).toLowerCase()+r.slice(1)}Va.exports=HB});var dr=n(function(fm,Ra){"use strict";var ZB=Pa();Ra.exports=ZB});var Na=n(function(gm,La){"use strict";var p=require("@stdlib/utils/define-read-only-property"),E={};p(E,"camelcase",Er());p(E,"capitalize",L());p(E,"codePointAt",pr());p(E,"constantcase",Ar());p(E,"distances",ax());p(E,"dotcase",hr());p(E,"endsWith",X());p(E,"first",wr());p(E,"firstCodePoint",br());p(E,"firstGraphemeCluster",Sr());p(E,"forEach",Vr());p(E,"forEachCodePoint",Pr());p(E,"forEachGraphemeCluster",Rr());p(E,"formatInterpolate",Fr());p(E,"formatTokenize",vr());p(E,"headercase",Nr());p(E,"invcase",Ct());p(E,"kebabcase",Or());p(E,"lpad",Gr());p(E,"ltrim",Mr());p(E,"lowercase",q());p(E,"pascalcase",Ur());p(E,"percentEncode",Wr());p(E,"removeFirst",jr());p(E,"removeFirstCodePoint",$r());p(E,"removeFirstGraphemeCluster",Hr());p(E,"repeat",O());p(E,"replace",A());p(E,"replaceBefore",Zr());p(E,"rpad",Xr());p(E,"rtrim",Jr());p(E,"snakecase",Kr());p(E,"startcase",K());p(E,"startsWith",cr());p(E,"trim",w());p(E,"uncapitalize",dr());p(E,"uppercase",R());La.exports=E});var Oa=n(function(Em,_a){"use strict";var XB=require("@stdlib/assert/is-string").isPrimitive,QB=v(),JB=Er();function YB(r){if(!XB(r))throw new TypeError(QB("invalid argument. First argument must be a string. Value: `%s`.",r));return JB(r)}_a.exports=YB});var Ga=n(function(pm,Ia){"use strict";var KB=Oa();Ia.exports=KB});var Ma=n(function(Dm,ka){"use strict";var oB=require("@stdlib/assert/is-string").isPrimitive,cB=v(),dB=L();function rf(r){if(!oB(r))throw new TypeError(cB("invalid argument. First argument must be a string. Value: `%s`.",r));return dB(r)}ka.exports=rf});var za=n(function(Am,Ua){"use strict";var xf=Ma();Ua.exports=xf});var ja=n(function(mm,Wa){"use strict";var tf=require("@stdlib/assert/is-string").isPrimitive,af=v(),nf=Ar();function uf(r){if(!tf(r))throw new TypeError(af("invalid argument. Must provide a string. Value: `%s`.",r));return nf(r)}Wa.exports=uf});var Ha=n(function(hm,$a){"use strict";var ef=ja();$a.exports=ef});var Xa=n(function(qm,Za){"use strict";var sf=require("@stdlib/assert/is-string").isPrimitive,Ff=v(),vf=hr();function Cf(r){if(!sf(r))throw new TypeError(Ff("invalid argument. First argument must be a string. Value: `%s`.",r));return vf(r)}Za.exports=Cf});var Ja=n(function(wm,Qa){"use strict";var lf=Xa();Qa.exports=lf});var oa=n(function(bm,Ka){"use strict";var Bf=require("@stdlib/assert/is-integer").isPrimitive,Ya=require("@stdlib/assert/is-string").isPrimitive,r0=v(),ff=X();function gf(r,i,t){if(!Ya(r))throw new TypeError(r0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Ya(i))throw new TypeError(r0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!Bf(t))throw new TypeError(r0("invalid argument. Third argument must be an integer. Value: `%s`.",t))}else t=r.length;return ff(r,i,t)}Ka.exports=gf});var da=n(function(ym,ca){"use strict";var Ef=oa();ca.exports=Ef});var nn=n(function(Tm,an){"use strict";var pf=require("@stdlib/assert/is-string").isPrimitive,rn=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,xn=require("@stdlib/assert/is-plain-object"),Df=require("@stdlib/assert/has-own-property"),Af=require("@stdlib/array/base/assert/contains").factory,mf=wr(),hf=br(),qf=Sr(),I=v(),tn=["grapheme","code_point","code_unit"],wf={grapheme:qf,code_point:hf,code_unit:mf},bf=Af(tn);function yf(r){var i,t,x,a;if(!pf(r))throw new TypeError(I("invalid argument. First argument must be a string. Value: `%s`.",r));if(x={mode:"grapheme"},t=arguments.length,t===1)a=1;else if(t===2){if(a=arguments[1],xn(a))i=a,a=1;else if(!rn(a))throw new TypeError(I("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a))}else{if(a=arguments[1],!rn(a))throw new TypeError(I("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a));if(i=arguments[2],!xn(i))throw new TypeError(I("invalid argument. Options argument must be an object. Value: `%s`.",i))}if(i&&Df(i,"mode")&&(x.mode=i.mode,!bf(x.mode)))throw new TypeError(I('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",tn.join('", "'),x.mode));return wf[x.mode](r,a)}an.exports=yf});var en=n(function(Sm,un){"use strict";var Tf=nn();un.exports=Tf});var Cn=n(function(Vm,vn){"use strict";var Sf=require("@stdlib/assert/is-function"),Vf=require("@stdlib/assert/is-string").isPrimitive,sn=require("@stdlib/assert/is-plain-object"),Pf=require("@stdlib/assert/has-own-property"),Rf=require("@stdlib/array/base/assert/contains").factory,Lf=Vr(),Nf=Pr(),_f=Rr(),c=v(),Fn=["grapheme","code_point","code_unit"],Of={grapheme:_f,code_point:Nf,code_unit:Lf},If=Rf(Fn);function Gf(r,i,t){var x,a,u,e;if(!Vf(r))throw new TypeError(c("invalid argument. First argument must be a string. Value: `%s`.",r));if(u={mode:"grapheme"},a=arguments.length,a===2)e=i,i=null;else if(a===3)sn(i)?e=t:(e=i,i=null,x=t);else{if(!sn(i))throw new TypeError(c("invalid argument. Options argument must be an object. Value: `%s`.",i));e=t,x=arguments[3]}if(!Sf(e))throw new TypeError(c("invalid argument. Callback argument must be a function. Value: `%s`.",e));if(i&&Pf(i,"mode")&&(u.mode=i.mode,!If(u.mode)))throw new TypeError(c('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",Fn.join('", "'),u.mode));return Of[u.mode](r,e,x),r}vn.exports=Gf});var Bn=n(function(Pm,ln){"use strict";var kf=Cn();ln.exports=kf});var Dn=n(function(Rm,pn){"use strict";var Mf=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Uf=require("@stdlib/assert/is-collection"),fn=v(),gn=require("@stdlib/constants/unicode/max"),zf=require("@stdlib/constants/unicode/max-bmp"),En=String.fromCharCode,Wf=65536,jf=55296,$f=56320,Hf=1023;function Zf(r){var i,t,x,a,u,e,s;if(i=arguments.length,i===1&&Uf(r))x=arguments[0],i=x.length;else for(x=[],s=0;sgn)throw new RangeError(fn("invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.",gn,e));e<=zf?t+=En(e):(e-=Wf,u=(e>>10)+jf,a=(e&Hf)+$f,t+=En(u,a))}return t}pn.exports=Zf});var mn=n(function(Lm,An){"use strict";var Xf=Dn();An.exports=Xf});var qn=n(function(Nm,hn){"use strict";var Qf=require("@stdlib/assert/is-string").isPrimitive,Jf=v(),Yf=Nr();function Kf(r){if(!Qf(r))throw new TypeError(Jf("invalid argument. First argument must be a string. Value: `%s`.",r));return Yf(r)}hn.exports=Kf});var bn=n(function(_m,wn){"use strict";var of=qn();wn.exports=of});var Tn=n(function(Om,yn){"use strict";var cf=require("@stdlib/assert/is-string").isPrimitive,df=v(),rg=Or();function ig(r){if(!cf(r))throw new TypeError(df("invalid argument. Must provide a string. Value: `%s`.",r));return rg(r)}yn.exports=ig});var Vn=n(function(Im,Sn){"use strict";var xg=Tn();Sn.exports=xg});var Ln=n(function(Gm,Rn){"use strict";var tg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Pn=require("@stdlib/assert/is-string").isPrimitive,d=v(),ag=require("@stdlib/constants/float64/max-safe-integer"),ng=Gr();function ug(r,i,t){var x;if(!Pn(r))throw new TypeError(d("invalid argument. First argument must be a string. Value: `%s`.",r));if(!tg(i))throw new TypeError(d("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(x=t,!Pn(x))throw new TypeError(d("invalid argument. Third argument must be a string. Value: `%s`.",x));if(x.length===0)throw new RangeError("invalid argument. Third argument must not be an empty string.")}else x=" ";if(i>ag)throw new RangeError(d("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));return ng(r,i,x)}Rn.exports=ug});var i0=n(function(km,Nn){"use strict";var eg=Ln();Nn.exports=eg});var On=n(function(Mm,_n){"use strict";var sg=require("@stdlib/assert/is-string").isPrimitive,Fg=v(),vg=Mr();function Cg(r){if(!sg(r))throw new TypeError(Fg("invalid argument. Must provide a string. Value: `%s`.",r));return vg(r)}_n.exports=Cg});var Gn=n(function(Um,In){"use strict";var lg=On();In.exports=lg});var Un=n(function(zm,Mn){"use strict";var Bg=require("@stdlib/assert/is-string").isPrimitive,kn=h(),fg=v();function gg(r){var i,t,x;if(!Bg(r))throw new TypeError(fg("invalid argument. Must provide a string. Value: `%s`.",r));if(i=0,x=[],r.length===0)return x;for(t=kn(r,i);t!==-1;)x.push(r.substring(i,t)),i=t,t=kn(r,i);return x.push(r.substring(i)),x}Mn.exports=gg});var rr=n(function(Wm,zn){"use strict";var Eg=Un();zn.exports=Eg});var Hn=n(function(jm,$n){"use strict";var Wn=require("@stdlib/assert/is-string").isPrimitive,pg=rr(),Dg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Ag=require("@stdlib/assert/is-string-array").primitives,mg=P(),jn=require("@stdlib/utils/escape-regexp-string"),x0=v(),hg=" \f\n\r \v\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF";function qg(r,i,t){var x,a,u,e,s;if(!Wn(r))throw new TypeError(x0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Dg(i))throw new TypeError(x0("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(u=Wn(t),!u&&!Ag(t))throw new TypeError(x0("invalid argument. Third argument must be a string or an array of strings. Value: `%s`.",t));for(u&&(t=pg(t)),x=t.length-1,a="",s=0;s0&&(t+="-"+a1[x],x=0);else{for(a=3;a0&&(i+=" "),i+=t,ir(x,i)}n1.exports=ir});var v1=n(function(om,F1){"use strict";var Mg=require("@stdlib/assert/is-plain-object"),Ug=require("@stdlib/assert/has-own-property"),zg=require("@stdlib/utils/index-of"),e1=v(),s1=["en","de"];function Wg(r,i){return Mg(i)?Ug(i,"lang")&&(r.lang=i.lang,zg(s1,r.lang)===-1)?new TypeError(e1('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"lang",s1.join('", "'),r.lang)):null:new TypeError(e1("invalid argument. Options argument must be an object. Value: `%s`.",i))}F1.exports=Wg});var l1=n(function(cm,C1){"use strict";function jg(r,i){var t,x,a;for(x=r.length,t="",a=0;a1&&(a=Qg(x,i),a))throw a;if(Hg(r))switch(x.lang){case"de":return n0(r,"");case"en":default:return u0(r,"")}if(!Zg(r))switch(x.lang){case"de":return r<0?"minus unendlich":"unendlich";case"en":default:return r<0?"negative infinity":"infinity"}switch(t=r.toString().split("."),x.lang){case"de":return n0(t[0],"")+" Komma "+B1(t[1],n0);case"en":default:return u0(t[0],"")+" point "+B1(t[1],u0)}}f1.exports=Jg});var p1=n(function(r3,E1){"use strict";var Yg=g1();E1.exports=Yg});var m1=n(function(i3,A1){"use strict";var Kg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,og=require("@stdlib/assert/is-string").isPrimitive,D1=v(),cg=O();function dg(r,i){if(!og(r))throw new TypeError(D1("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Kg(i))throw new TypeError(D1("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));return cg(r,i)}A1.exports=dg});var e0=n(function(x3,h1){"use strict";var rE=m1();h1.exports=rE});var b1=n(function(t3,w1){"use strict";var iE=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,q1=require("@stdlib/assert/is-string").isPrimitive,xr=v(),xE=require("@stdlib/constants/float64/max-safe-integer"),tE=Xr();function aE(r,i,t){var x;if(!q1(r))throw new TypeError(xr("invalid argument. First argument must be a string. Value: `%s`.",r));if(!iE(i))throw new TypeError(xr("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(x=t,!q1(x))throw new TypeError(xr("invalid argument. Third argument must be a string. Value: `%s`.",x));if(x.length===0)throw new RangeError("invalid argument. Pad string must not be an empty string.")}else x=" ";if(i>xE)throw new RangeError(xr("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));return tE(r,i,x)}w1.exports=aE});var s0=n(function(a3,y1){"use strict";var nE=b1();y1.exports=nE});var V1=n(function(n3,S1){"use strict";var uE=require("@stdlib/assert/is-plain-object"),F0=require("@stdlib/assert/has-own-property"),T1=require("@stdlib/assert/is-string").isPrimitive,eE=require("@stdlib/assert/is-boolean").isPrimitive,tr=v();function sE(r,i){return uE(i)?F0(i,"lpad")&&(r.lpad=i.lpad,!T1(r.lpad))?new TypeError(tr("invalid option. `%s` option must be a string. Option: `%s`.","lpad",r.lpad)):F0(i,"rpad")&&(r.rpad=i.rpad,!T1(r.rpad))?new TypeError(tr("invalid option. `%s` option must be a string. Option: `%s`.","rpad",r.rpad)):F0(i,"centerRight")&&(r.centerRight=i.centerRight,!eE(r.centerRight))?new TypeError(tr("invalid option. `%s` option must be a boolean. Option: `%s`.","centerRight",r.centerRight)):null:new TypeError(tr("invalid argument. Options argument must be an object. Value: `%s`.",i))}S1.exports=sE});var O1=n(function(u3,_1){"use strict";var FE=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,vE=require("@stdlib/assert/is-string").isPrimitive,P1=e0(),ar=v(),R1=require("@stdlib/math/base/special/floor"),L1=require("@stdlib/math/base/special/ceil"),CE=i0(),N1=s0(),lE=require("@stdlib/math/base/special/abs"),BE=require("@stdlib/constants/float64/max-safe-integer"),fE=V1();function gE(r,i,t){var x,a,u,e,s,F,f,D,g;if(!vE(r))throw new TypeError(ar("invalid argument. First argument must be a string. Value: `%s`.",r));if(!FE(i))throw new TypeError(ar("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(i>BE)throw new RangeError(ar("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));if(F={},arguments.length>2&&(f=fE(F,t),f))throw f;if(F.lpad&&F.rpad)return g=(i-r.length)/2,g===0?r:(D=R1(g),D!==g&&(u=!0),g<0?(g=R1(lE(g)),a=g,x=r.length-g,u&&(F.centerRight?x-=1:a+=1),r.substring(a,x)):(a=L1(g/F.lpad.length),s=P1(F.lpad,a),x=L1(g/F.rpad.length),e=P1(F.rpad,x),g=D,a=g,x=g,u&&(F.centerRight?a+=1:x+=1),s=s.substring(0,a),e=e.substring(0,x),s+r+e));if(F.lpad)return D=CE(r,i,F.lpad),D.substring(D.length-i);if(F.rpad)return N1(r,i,F.rpad).substring(0,i);if(F.rpad===void 0)return N1(r,i," ").substring(0,i);throw new RangeError(ar("invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.",F.lpad,F.rpad))}_1.exports=gE});var G1=n(function(e3,I1){"use strict";var EE=O1();I1.exports=EE});var M1=n(function(s3,k1){"use strict";var pE=require("@stdlib/assert/is-string").isPrimitive,DE=v(),AE=Ur();function mE(r){if(!pE(r))throw new TypeError(DE("invalid argument. First argument must be a string. Value: `%s`.",r));return AE(r)}k1.exports=mE});var z1=n(function(F3,U1){"use strict";var hE=M1();U1.exports=hE});var j1=n(function(v3,W1){"use strict";var qE=require("@stdlib/assert/is-string").isPrimitive,wE=v(),bE=Wr();function yE(r){if(!qE(r))throw new TypeError(wE("invalid argument. Must provide a string. Value: `%s`.",r));return bE(r)}W1.exports=yE});var H1=n(function(C3,$1){"use strict";var TE=j1();$1.exports=TE});var K1=n(function(l3,Y1){"use strict";var SE=require("@stdlib/assert/is-string").isPrimitive,VE=require("@stdlib/assert/is-integer"),Z1=J(),PE=require("@stdlib/assert/has-utf16-surrogate-pair-at"),v0=yr(),X1=v(),RE=v0.breakType,Q1=v0.breakProperty,J1=v0.emojiProperty;function LE(r,i){var t,x,a,u,e,s,F;if(!SE(r))throw new TypeError(X1("invalid argument. First argument must be a string. Value: `%s`.",r));if(u=r.length,arguments.length>1){if(!VE(i))throw new TypeError(X1("invalid argument. Second argument must be an integer. Value: `%s`.",i));e=i}else e=u-1;if(u===0||e<=0)return-1;for(e>=u&&(e=u-1),t=[],x=[],s=Z1(r,0),t.push(Q1(s)),x.push(J1(s)),a=-1,F=1;F<=e;F++){if(PE(r,F-1)){a=F-2,t.length=0,x.length=0;continue}if(s=Z1(r,F),t.push(Q1(s)),x.push(J1(s)),RE(t,x)>0){a=F-1,t.length=0,x.length=0;continue}}return a}Y1.exports=LE});var C0=n(function(B3,o1){"use strict";var NE=K1();o1.exports=NE});var xu=n(function(f3,iu){"use strict";var _E=require("@stdlib/assert/is-string").isPrimitive,c1=require("@stdlib/assert/is-plain-object"),OE=require("@stdlib/assert/has-own-property"),IE=require("@stdlib/array/base/assert/contains").factory,d1=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,GE=jr(),kE=$r(),ME=Hr(),U=v(),ru=["grapheme","code_point","code_unit"],UE={grapheme:ME,code_point:kE,code_unit:GE},zE=IE(ru);function WE(r){var i,t,x,a;if(!_E(r))throw new TypeError(U("invalid argument. First argument must be a string. Value: `%s`.",r));if(x={mode:"grapheme"},t=arguments.length,t===1)a=1;else if(t===2){if(a=arguments[1],c1(a))i=a,a=1;else if(!d1(a))throw new TypeError(U("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a))}else{if(a=arguments[1],!d1(a))throw new TypeError(U("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a));if(i=arguments[2],!c1(i))throw new TypeError(U("invalid argument. Options argument must be an object. Value: `%s`.",i))}if(i&&OE(i,"mode")&&(x.mode=i.mode,!zE(x.mode)))throw new TypeError(U('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",ru.join('", "'),x.mode));return UE[x.mode](r,a)}iu.exports=WE});var au=n(function(g3,tu){"use strict";var jE=xu();tu.exports=jE});var uu=n(function(E3,nu){"use strict";function $E(r,i){return r.substring(0,r.length-i)}nu.exports=$E});var su=n(function(p3,eu){"use strict";var HE=uu();eu.exports=HE});var vu=n(function(D3,Fu){"use strict";var ZE=/[\uDC00-\uDFFF]/,XE=/[\uD800-\uDBFF]/;function QE(r,i){var t,x,a,u,e;if(i===0)return r;for(t=r.length,u=0,e=t-1;e>=0;e--){if(x=r[e],u+=1,ZE.test(x)){if(e===0)break;a=r[e-1],XE.test(a)&&(e-=1)}if(u===i)break}return r.substring(0,e)}Fu.exports=QE});var lu=n(function(A3,Cu){"use strict";var JE=vu();Cu.exports=JE});var fu=n(function(m3,Bu){"use strict";var YE=h(),KE=G();function oE(r,i){var t,x,a;if(i===0)return r;if(t=KE(r),r===""||t2&&!Ap(t))throw new TypeError(B0("invalid argument. Third argument must be a boolean. Value: `%s`.",t));if(x=hp(r,!0),F=i.length,s=[],t){for(u=i.slice(),f=0;f=0;t--)i+=r[t];return i}zu.exports=Sp});var $u=n(function(_3,ju){"use strict";var Vp=Wu();ju.exports=Vp});var Zu=n(function(O3,Hu){"use strict";var Pp=/[\uDC00-\uDFFF]/,Rp=/[\uD800-\uDBFF]/;function Lp(r){var i,t,x,a,u;for(i=r.length,t="",u=0;u1&&(i=arguments[1],!kp(i)))throw new TypeError(E0("invalid argument. Options argument must be an object. Value: `%s`.",i));if(i&&Mp(i,"mode")&&(x.mode=i.mode,!Hp(x.mode)))throw new TypeError(E0('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",cu.join('", "'),x.mode));return $p[x.mode](r)}du.exports=Zp});var xe=n(function(U3,ie){"use strict";var Xp=re();ie.exports=Xp});var ae=n(function(z3,te){"use strict";var Qp=require("@stdlib/assert/is-string").isPrimitive,Jp=v(),Yp=Jr();function Kp(r){if(!Qp(r))throw new TypeError(Jp("invalid argument. Must provide a string. Value: `%s`.",r));return Yp(r)}te.exports=Kp});var ue=n(function(W3,ne){"use strict";var op=ae();ne.exports=op});var ve=n(function(j3,Fe){"use strict";var ee=require("@stdlib/assert/is-string").isPrimitive,cp=rr(),dp=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,rD=require("@stdlib/assert/is-string-array").primitives,iD=P(),se=require("@stdlib/utils/escape-regexp-string"),p0=v(),xD=" \f\n\r \v\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF";function tD(r,i,t){var x,a,u,e,s;if(!ee(r))throw new TypeError(p0("invalid argument. Must provide a string. Value: `%s`.",r));if(!dp(i))throw new TypeError(p0("invalid argument. Must provide a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(u=ee(t),!u&&!rD(t))throw new TypeError(p0("invalid argument. Must provide a string or an array of strings. Value: `%s`.",t));for(u&&(t=cp(t)),x=t.length-1,a="",s=0;s2){if(!gD(t))throw new TypeError(D0("invalid argument. Third argument must be an integer. Value: `%s`.",t));x=t}else x=0;return ED(r,i,x)}qe.exports=pD});var ye=n(function(Y3,be){"use strict";var DD=we();be.exports=DD});var Ve=n(function(K3,Se){"use strict";var Te=require("@stdlib/assert/is-string").isPrimitive,AD=require("@stdlib/assert/is-integer").isPrimitive,A0=v();function mD(r,i,t){var x;if(!Te(r))throw new TypeError(A0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Te(i))throw new TypeError(A0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!AD(t))throw new TypeError(A0("invalid argument. Third argument must be an integer. Value: `%s`.",t));x=r.indexOf(i,t)}else x=r.indexOf(i);return x===-1?"":r.substring(x+i.length)}Se.exports=mD});var Re=n(function(o3,Pe){"use strict";var hD=Ve();Pe.exports=hD});var _e=n(function(c3,Ne){"use strict";var qD=require("@stdlib/assert/is-integer").isPrimitive,Le=require("@stdlib/assert/is-string").isPrimitive,m0=v();function wD(r,i,t){var x;if(!Le(r))throw new TypeError(m0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Le(i))throw new TypeError(m0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!qD(t))throw new TypeError(m0("invalid argument. Third argument must be a nonnegative integer. Value: `%s`.",t));x=r.lastIndexOf(i,t)}else x=r.lastIndexOf(i);return x===-1?"":r.substring(x+i.length)}Ne.exports=wD});var Ie=n(function(d3,Oe){"use strict";var bD=_e();Oe.exports=bD});var Ue=n(function(r6,Me){"use strict";var Ge=require("@stdlib/assert/is-string").isPrimitive,ke=v();function yD(r,i){var t;if(!Ge(r))throw new TypeError(ke("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Ge(i))throw new TypeError(ke("invalid argument. Second argument must be a string. Value: `%s`.",i));return t=r.indexOf(i),t===-1?r:r.substring(0,t)}Me.exports=yD});var We=n(function(i6,ze){"use strict";var TD=Ue();ze.exports=TD});var Ze=n(function(x6,He){"use strict";var je=require("@stdlib/assert/is-string").isPrimitive,$e=v();function SD(r,i){var t;if(!je(r))throw new TypeError($e("invalid argument. First argument must be a string. Value: `%s`.",r));if(!je(i))throw new TypeError($e("invalid argument. Second argument must be a string. Value: `%s`.",i));return t=r.lastIndexOf(i),t===-1?r:r.substring(0,t)}He.exports=SD});var Qe=n(function(t6,Xe){"use strict";var VD=Ze();Xe.exports=VD});var ce=n(function(a6,oe){"use strict";var nr=require("@stdlib/utils/define-nonenumerable-read-only-property"),PD=require("@stdlib/assert/is-function"),RD=require("@stdlib/assert/is-string").isPrimitive,Je=require("@stdlib/symbol/iterator"),Ye=h(),Ke=v();function h0(r){var i,t,x,a,u;if(!RD(r))throw new TypeError(Ke("invalid argument. First argument must be astring. Value: `%s`.",r));if(arguments.length>1){if(a=arguments[1],!PD(a))throw new TypeError(Ke("invalid argument. Second argument must be a function. Value: `%s`.",a));i=arguments[2]}return u=0,t={},a?nr(t,"next",e):nr(t,"next",s),nr(t,"return",F),Je&&nr(t,Je,f),t;function e(){var D,g;return x?{done:!0}:(g=Ye(r,u),g===-1?(x=!0,r.length?{value:a.call(i,r.substring(u),u,r),done:!1}:{done:!0}):(D=a.call(i,r.substring(u,g),u,r),u=g,{value:D,done:!1}))}function s(){var D,g;return x?{done:!0}:(g=Ye(r,u),g===-1?(x=!0,r.length?{value:r.substring(u),done:!1}:{done:!0}):(D=r.substring(u,g),u=g,{value:D,done:!1}))}function F(D){return x=!0,arguments.length?{value:D,done:!0}:{done:!0}}function f(){return a?h0(r,a,i):h0(r)}}oe.exports=h0});var rs=n(function(n6,de){"use strict";var LD=ce();de.exports=LD});var ns=n(function(u6,as){"use strict";var ur=require("@stdlib/utils/define-nonenumerable-read-only-property"),ND=require("@stdlib/assert/is-function"),_D=require("@stdlib/assert/is-string").isPrimitive,is=require("@stdlib/symbol/iterator"),xs=C0(),ts=v();function q0(r){var i,t,x,a,u;if(!_D(r))throw new TypeError(ts("invalid argument. First argument must be astring. Value: `%s`.",r));if(arguments.length>1){if(a=arguments[1],!ND(a))throw new TypeError(ts("invalid argument. Second argument must be a function. Value: `%s`.",a));i=arguments[2]}return u=r.length-1,t={},a?ur(t,"next",e):ur(t,"next",s),ur(t,"return",F),is&&ur(t,is,f),t;function e(){var D,g;return x?{done:!0}:(g=xs(r,u),g===-1?(x=!0,r.length?{value:a.call(i,r.substring(g+1,u+1),g+1,r),done:!1}:{done:!0}):(D=a.call(i,r.substring(g+1,u+1),g+1,r),u=g,{value:D,done:!1}))}function s(){var D,g;return x?{done:!0}:(g=xs(r,u),g===-1?(x=!0,r.length?{value:r.substring(g+1,u+1),done:!1}:{done:!0}):(D=r.substring(g+1,u+1),u=g,{value:D,done:!1}))}function F(D){return x=!0,arguments.length?{value:D,done:!0}:{done:!0}}function f(){return a?q0(r,a,i):q0(r)}}as.exports=q0});var es=n(function(e6,us){"use strict";var OD=ns();us.exports=OD});var Fs=n(function(s6,ss){"use strict";var ID=require("@stdlib/assert/is-string").isPrimitive,GD=v(),kD=w();function MD(r){if(!ID(r))throw new TypeError(GD("invalid argument. Must provide a string. Value: `%s`.",r));return kD(r)}ss.exports=MD});var Cs=n(function(F6,vs){"use strict";var UD=Fs();vs.exports=UD});var gs=n(function(v6,fs){"use strict";var ls=require("@stdlib/assert/is-string").isPrimitive,zD=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Bs=G(),WD=h(),w0=v();function jD(r,i,t){var x,a,u,e;if(!ls(r))throw new TypeError(w0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!zD(i))throw new TypeError(w0("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2&&!ls(t))throw new TypeError(w0("invalid argument. Third argument must be a string. Value: `%s`.",t));if(t=t||"...",x=Bs(t),a=0,i>Bs(r))return r;if(i-x<0)return t.slice(0,i);for(u=0;u2&&!Ds(t))throw new TypeError(b0("invalid argument. Third argument must be a string. Value: `%s`.",t));if(t=t||"...",x=As(t),u=As(r),a=0,i>u)return r;if(i-x<0)return t.slice(0,i);for(e=ZD((i-x)/2),F=u-XD((i-x)/2),s=0;s0&&(f=ms(r,a),!(f>=F+a-s));)a=f,s+=1;return r.substring(0,D)+t+r.substring(f)}hs.exports=QD});var bs=n(function(B6,ws){"use strict";var JD=qs();ws.exports=JD});var Ts=n(function(f6,ys){"use strict";var YD=require("@stdlib/assert/is-string").isPrimitive,KD=v(),oD=dr();function cD(r){if(!YD(r))throw new TypeError(KD("invalid argument. First argument must be a string. Value: `%s`.",r));return oD(r)}ys.exports=cD});var Vs=n(function(g6,Ss){"use strict";var dD=Ts();Ss.exports=dD});var l=require("@stdlib/utils/define-read-only-property"),C={};l(C,"acronym",mi());l(C,"base",Na());l(C,"camelcase",Ga());l(C,"capitalize",za());l(C,"codePointAt",J());l(C,"constantcase",Ha());l(C,"dotcase",Ja());l(C,"endsWith",da());l(C,"first",en());l(C,"forEach",Bn());l(C,"format",v());l(C,"fromCodePoint",mn());l(C,"headercase",bn());l(C,"kebabcase",Vn());l(C,"lpad",i0());l(C,"ltrim",Gn());l(C,"ltrimN",Xn());l(C,"lowercase",Kn());l(C,"nextGraphemeClusterBreak",h());l(C,"numGraphemeClusters",G());l(C,"num2words",p1());l(C,"pad",G1());l(C,"pascalcase",z1());l(C,"percentEncode",H1());l(C,"prevGraphemeClusterBreak",C0());l(C,"removeFirst",au());l(C,"removeLast",wu());l(C,"removePunctuation",Br());l(C,"removeUTF8BOM",Su());l(C,"removeWords",Iu());l(C,"repeat",e0());l(C,"replace",P());l(C,"replaceBefore",Uu());l(C,"reverseString",xe());l(C,"rpad",s0());l(C,"rtrim",ue());l(C,"rtrimN",le());l(C,"snakecase",Ee());l(C,"splitGraphemeClusters",rr());l(C,"startcase",me());l(C,"startsWith",ye());l(C,"substringAfter",Re());l(C,"substringAfterLast",Ie());l(C,"substringBefore",We());l(C,"substringBeforeLast",Qe());l(C,"graphemeClusters2iterator",rs());l(C,"graphemeClusters2iteratorRight",es());l(C,"trim",Cs());l(C,"truncate",ps());l(C,"truncateMiddle",bs());l(C,"uncapitalize",Vs());l(C,"uppercase",l0());l(C,"utf16ToUTF8Array",zr());module.exports=C; +"use strict";var n=function(r,i){return function(){return i||r((i={exports:{}}).exports,i),i.exports}};var sr=n(function(iA,y0){"use strict";function Pe(r){return typeof r=="number"}y0.exports=Pe});var er=n(function(xA,S0){"use strict";function Re(r){return r[0]==="-"}function T0(r){var i="",t;for(t=0;t0&&(i-=1),t=x.toExponential(i)):t=x.toPrecision(r.precision),r.alternate||(t=y.call(t,Ze,"$1e"),t=y.call(t,He,"e"),t=y.call(t,$e,""));break;default:throw new Error("invalid double notation. Value: "+r.specifier)}return t=y.call(t,Ue,"e+0$1"),t=y.call(t,ze,"e-0$1"),r.alternate&&(t=y.call(t,We,"$1."),t=y.call(t,je,"$1.e")),x>=0&&r.sign&&(t=r.sign+t),t=r.specifier===O0.call(r.specifier)?O0.call(t):Me.call(t),t}I0.exports=Xe});var U0=n(function(uA,M0){"use strict";function k0(r){var i="",t;for(t=0;t127)throw new Error("invalid character code. Value: "+x.arg);x.arg=W(u)?String(x.arg):de(u)}break;case"e":case"E":case"f":case"F":case"g":case"G":i||(x.precision=6),x.arg=Ke(x);break;default:throw new Error("invalid specifier: "+x.specifier)}x.maxWidth>=0&&x.arg.length>x.maxWidth&&(x.arg=x.arg.substring(0,x.maxWidth)),x.padZeros?x.arg=ce(x.arg,x.width||x.precision,x.padRight):x.width&&(x.arg=oe(x.arg,x.width,x.padRight)),s+=x.arg||"",e+=1}return s}z0.exports=xF});var Fr=n(function(eA,j0){"use strict";var tF=W0();j0.exports=tF});var H0=n(function(FA,$0){"use strict";var j=/%(?:([1-9]\d*)\$)?([0 +\-#]*)(\*|\d+)?(?:(\.)(\*|\d+)?)?[hlL]?([%A-Za-z])/g;function aF(r){var i={mapping:r[1]?parseInt(r[1],10):void 0,flags:r[2],width:r[3],precision:r[5],specifier:r[6]};return r[4]==="."&&r[5]===void 0&&(i.precision="1"),i}function nF(r){var i,t,x,a;for(t=[],a=0,x=j.exec(r);x;)i=r.slice(a,j.lastIndex-x[0].length),i.length&&t.push(i),t.push(aF(x)),a=j.lastIndex,x=j.exec(r);return i=r.slice(a),i.length&&t.push(i),t}$0.exports=nF});var vr=n(function(vA,Z0){"use strict";var uF=H0();Z0.exports=uF});var Q0=n(function(CA,X0){"use strict";function sF(r){return typeof r=="string"}X0.exports=sF});var K0=n(function(lA,Y0){"use strict";var eF=Fr(),FF=vr(),vF=Q0();function J0(r){var i,t;if(!vF(r))throw new TypeError(J0("invalid argument. First argument must be a string. Value: `%s`.",r));for(i=[FF(r)],t=1;t?`{}|~\/\\\[\]]/g;function bF(r){if(!mF(r))throw new TypeError(qF("invalid argument. Must provide a string. Value: `%s`.",r));return hF(r,wF,"")}ai.exports=bF});var Br=n(function(AA,ui){"use strict";var yF=ni();ui.exports=yF});var ei=n(function(mA,si){"use strict";function TF(r){return r.toUpperCase()}si.exports=TF});var R=n(function(hA,Fi){"use strict";var SF=ei();Fi.exports=SF});var Ci=n(function(qA,vi){"use strict";function VF(r){return r.toLowerCase()}vi.exports=VF});var q=n(function(wA,li){"use strict";var PF=Ci();li.exports=PF});var gi=n(function(bA,fi){"use strict";var RF=require("@stdlib/assert/is-plain-object"),LF=require("@stdlib/assert/has-own-property"),NF=require("@stdlib/assert/is-string-array").primitives,_F=require("@stdlib/assert/is-empty-array"),Bi=v();function OF(r,i){return RF(i)?LF(i,"stopwords")&&(r.stopwords=i.stopwords,!NF(r.stopwords)&&!_F(r.stopwords))?new TypeError(Bi("invalid option. `%s` option must be an array of strings. Option: `%s`.","stopwords",r.stopwords)):null:new TypeError(Bi("invalid argument. Options argument must be an object. Value: `%s`.",i))}fi.exports=OF});var Ei=n(function(yA,IF){IF.exports=["a","all","also","although","an","and","any","are","as","at","b","be","been","but","by","c","could","d","e","each","eg","either","even","ever","ex","except","f","far","few","for","from","further","g","get","gets","given","gives","go","going","got","h","had","has","have","having","he","her","here","herself","him","himself","his","how","i","ie","if","in","into","is","it","its","itself","j","just","k","l","less","let","m","many","may","me","might","must","my","myself","n","need","needs","next","no","non","not","now","o","of","off","old","on","once","only","or","our","out","p","per","put","q","r","s","same","shall","she","should","since","so","such","sure","t","than","that","the","their","them","then","there","these","they","this","those","though","thus","to","too","u","us","v","w","was","we","well","went","were","what","when","where","which","who","whose","why","will","would","x","y","yet","z"]});var Di=n(function(TA,pi){"use strict";var GF=Br(),kF=require("@stdlib/nlp/tokenize"),MF=A(),UF=R(),zF=q(),WF=require("@stdlib/assert/is-string").isPrimitive,jF=require("@stdlib/array/base/assert/contains").factory,$F=v(),HF=gi(),ZF=Ei(),XF=/-/g;function QF(r,i){var t,x,a,u,s,e;if(!WF(r))throw new TypeError($F("invalid argument. First argument must be a string. Value: `%s`.",r));if(a={},arguments.length>1&&(u=HF(a,i),u))throw u;for(t=jF(a.stopwords||ZF),r=GF(r),r=MF(r,XF," "),x=kF(r),s="",e=0;e?`{}|~\/\\\[\]_#$*&^@%]+/g,gv=/(?:\s|^)([^\s]+)(?=\s|$)/g,Ev=/([a-z0-9])([A-Z])/g;function pv(r,i,t){return i=Cv(i),t===0?i:vv(i)}function Dv(r){return r=$(r,fv," "),r=$(r,Bv," "),r=$(r,Ev,"$1 $2"),r=lv(r),$(r,gv,pv)}Gi.exports=Dv});var Er=n(function(kA,Mi){"use strict";var Av=ki();Mi.exports=Av});var Hi=n(function(MA,$i){"use strict";var Ui=65536,zi=1024,H=55296,Wi=56319,Z=56320,ji=57343;function mv(r,i,t){var x,a,u;return i<0&&(i+=r.length),x=r.charCodeAt(i),x>=H&&x<=Wi&&i=Z&&x<=ji&&i>=1?(u=r.charCodeAt(i-1),a=x,H<=u&&u<=Wi?(u-H)*zi+(a-Z)+Ui:a):x}$i.exports=mv});var pr=n(function(UA,Zi){"use strict";var hv=Hi();Zi.exports=hv});var Qi=n(function(zA,Xi){"use strict";var qv=R(),Dr=A(),wv=w(),bv=/\s+/g,yv=/[\-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,Tv=/([a-z0-9])([A-Z])/g;function Sv(r){return r=Dr(r,yv," "),r=Dr(r,Tv,"$1 $2"),r=wv(r),r=Dr(r,bv,"_"),qv(r)}Xi.exports=Sv});var Ar=n(function(WA,Ji){"use strict";var Vv=Qi();Ji.exports=Vv});var di=n(function(jA,ci){"use strict";var Yi=require("@stdlib/assert/is-string").isPrimitive,Ki=v(),oi=require("@stdlib/math/base/special/min");function Pv(r,i){var t,x,a,u,s,e,F,f;if(!Yi(r))throw new TypeError(Ki("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Yi(i))throw new TypeError(Ki("invalid argument. Second argument must be a string. Value: `%s`.",i));if(s=r.length,u=i.length,s===0)return u;if(u===0)return s;for(x=[],e=0;e<=u;e++)x.push(e);for(e=0;e?`{}|~\/\\\[\]_#$*&^@%]+/g,Gv=/([a-z0-9])([A-Z])/g;function kv(r){return r=mr(r,Iv," "),r=mr(r,Gv,"$1 $2"),r=_v(r),r=mr(r,Ov,"."),Nv(r)}nx.exports=kv});var hr=n(function(XA,sx){"use strict";var Mv=ux();sx.exports=Mv});var Fx=n(function(QA,ex){"use strict";var Uv=typeof String.prototype.endsWith!="undefined";ex.exports=Uv});var Cx=n(function(JA,vx){"use strict";function zv(r,i,t){var x,a,u;if(a=i.length,t===0)return a===0;if(t<0?x=r.length+t:x=t,a===0)return!0;if(x-=a,x<0)return!1;for(u=0;ur.length?!1:jv.call(r,i,x))}fx.exports=$v});var X=n(function(oA,Ex){"use strict";var Hv=Fx(),Zv=Cx(),Xv=gx(),qr;Hv?qr=Xv:qr=Zv;Ex.exports=qr});var Dx=n(function(cA,px){"use strict";function Qv(r,i){return r.substring(0,i)}px.exports=Qv});var wr=n(function(dA,Ax){"use strict";var Jv=Dx();Ax.exports=Jv});var hx=n(function(r2,mx){"use strict";var Yv=require("@stdlib/regexp/utf16-surrogate-pair").REGEXP,Kv=/[\uDC00-\uDFFF]/,ov=/[\uD800-\uDBFF]/;function cv(r,i){var t,x,a,u,s,e;if(r===""||i===0)return"";if(i===1)return r=r.substring(0,2),Yv.test(r)?r:r[0];for(t=r.length,x="",s=0,e=0;e=r.length)throw new RangeError(Q("invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.",i));if(arguments.length>2){if(!rC(t))throw new TypeError(Q("invalid argument. Third argument must be a boolean. Value: `%s`.",t));x=t}else x=!1;return tC(r,i,x)}wx.exports=aC});var J=n(function(t2,yx){"use strict";var nC=bx();yx.exports=nC});var N=n(function(a2,Tx){"use strict";var uC={CR:0,LF:1,Control:2,Extend:3,RegionalIndicator:4,SpacingMark:5,L:6,V:7,T:8,LV:9,LVT:10,Other:11,Prepend:12,ZWJ:13,NotBreak:0,BreakStart:1,Break:2,BreakLastRegional:3,BreakPenultimateRegional:4,ExtendedPictographic:101};Tx.exports=uC});var Rx=n(function(n2,Px){"use strict";var B=N();function sC(r,i,t,x){var a,u;for(t>=r.length&&(t=r.length-1),a=0,u=i;u<=t;u++)r[u]===x&&(a+=1);return a}function Sx(r,i,t,x){var a;for(t>=r.length&&(t=r.length-1),a=i;a<=t;a++)if(r[a]!==x)return!1;return!0}function eC(r,i,t,x){var a;for(t>=r.length&&(t=r.length-1),a=i;a<=t;a++)if(r[a]===x)return a;return-1}function Vx(r,i,t,x){var a;for(i>=r.length-1&&(i=r.length-1),a=i;a>=t;a--)if(r[a]===x)return a;return-1}function FC(r,i){var t,x,a,u,s,e;return s=r.length,e=s-1,a=r[e-1],x=r[e],t=i[e],u=Vx(r,e,0,B.RegionalIndicator),u>0&&a!==B.Prepend&&a!==B.RegionalIndicator&&Sx(r,1,u-1,B.RegionalIndicator)?sC(r,0,e,B.RegionalIndicator)%2===1?B.BreakLastRegional:B.BreakPenultimateRegional:a===B.CR&&x===B.LF?B.NotBreak:a===B.Control||a===B.CR||a===B.LF||x===B.Control||x===B.CR||x===B.LF?B.BreakStart:a===B.L&&(x===B.L||x===B.V||x===B.LV||x===B.LVT)||(a===B.LV||a===B.V)&&(x===B.V||x===B.T)||(a===B.LVT||a===B.T)&&x===B.T||x===B.Extend||x===B.ZWJ||x===B.SpacingMark||a===B.Prepend||(u=Vx(i,e-1,0,B.ExtendedPictographic),u>=0&&a===B.ZWJ&&t===B.ExtendedPictographic&&i[u]===B.ExtendedPictographic&&Sx(r,u+1,e-2,B.Extend))?B.NotBreak:eC(r,1,e-1,B.RegionalIndicator)>=0?B.Break:a===B.RegionalIndicator&&x===B.RegionalIndicator?B.NotBreak:B.BreakStart}Px.exports=FC});var _x=n(function(u2,Nx){"use strict";var Lx=N();function vC(r){return r===169||r===174||r===8252||r===8265||r===8482||r===8505||8596<=r&&r<=8601||8617<=r&&r<=8618||8986<=r&&r<=8987||r===9e3||r===9096||r===9167||9193<=r&&r<=9196||9197<=r&&r<=9198||r===9199||r===9200||9201<=r&&r<=9202||r===9203||9208<=r&&r<=9210||r===9410||9642<=r&&r<=9643||r===9654||r===9664||9723<=r&&r<=9726||9728<=r&&r<=9729||9730<=r&&r<=9731||r===9732||r===9733||9735<=r&&r<=9741||r===9742||9743<=r&&r<=9744||r===9745||r===9746||9748<=r&&r<=9749||9750<=r&&r<=9751||r===9752||9753<=r&&r<=9756||r===9757||9758<=r&&r<=9759||r===9760||r===9761||9762<=r&&r<=9763||9764<=r&&r<=9765||r===9766||9767<=r&&r<=9769||r===9770||9771<=r&&r<=9773||r===9774||r===9775||9776<=r&&r<=9783||9784<=r&&r<=9785||r===9786||9787<=r&&r<=9791||r===9792||r===9793||r===9794||9795<=r&&r<=9799||9800<=r&&r<=9811||9812<=r&&r<=9822||r===9823||r===9824||9825<=r&&r<=9826||r===9827||r===9828||9829<=r&&r<=9830||r===9831||r===9832||9833<=r&&r<=9850||r===9851||9852<=r&&r<=9853||r===9854||r===9855||9856<=r&&r<=9861||9872<=r&&r<=9873||r===9874||r===9875||r===9876||r===9877||9878<=r&&r<=9879||r===9880||r===9881||r===9882||9883<=r&&r<=9884||9885<=r&&r<=9887||9888<=r&&r<=9889||9890<=r&&r<=9894||r===9895||9896<=r&&r<=9897||9898<=r&&r<=9899||9900<=r&&r<=9903||9904<=r&&r<=9905||9906<=r&&r<=9916||9917<=r&&r<=9918||9919<=r&&r<=9923||9924<=r&&r<=9925||9926<=r&&r<=9927||r===9928||9929<=r&&r<=9933||r===9934||r===9935||r===9936||r===9937||r===9938||r===9939||r===9940||9941<=r&&r<=9960||r===9961||r===9962||9963<=r&&r<=9967||9968<=r&&r<=9969||9970<=r&&r<=9971||r===9972||r===9973||r===9974||9975<=r&&r<=9977||r===9978||9979<=r&&r<=9980||r===9981||9982<=r&&r<=9985||r===9986||9987<=r&&r<=9988||r===9989||9992<=r&&r<=9996||r===9997||r===9998||r===9999||1e4<=r&&r<=10001||r===10002||r===10004||r===10006||r===10013||r===10017||r===10024||10035<=r&&r<=10036||r===10052||r===10055||r===10060||r===10062||10067<=r&&r<=10069||r===10071||r===10083||r===10084||10085<=r&&r<=10087||10133<=r&&r<=10135||r===10145||r===10160||r===10175||10548<=r&&r<=10549||11013<=r&&r<=11015||11035<=r&&r<=11036||r===11088||r===11093||r===12336||r===12349||r===12951||r===12953||126976<=r&&r<=126979||r===126980||126981<=r&&r<=127182||r===127183||127184<=r&&r<=127231||127245<=r&&r<=127247||r===127279||127340<=r&&r<=127343||127344<=r&&r<=127345||127358<=r&&r<=127359||r===127374||127377<=r&&r<=127386||127405<=r&&r<=127461||127489<=r&&r<=127490||127491<=r&&r<=127503||r===127514||r===127535||127538<=r&&r<=127546||127548<=r&&r<=127551||127561<=r&&r<=127567||127568<=r&&r<=127569||127570<=r&&r<=127743||127744<=r&&r<=127756||127757<=r&&r<=127758||r===127759||r===127760||r===127761||r===127762||127763<=r&&r<=127765||127766<=r&&r<=127768||r===127769||r===127770||r===127771||r===127772||127773<=r&&r<=127774||127775<=r&&r<=127776||r===127777||127778<=r&&r<=127779||127780<=r&&r<=127788||127789<=r&&r<=127791||127792<=r&&r<=127793||127794<=r&&r<=127795||127796<=r&&r<=127797||r===127798||127799<=r&&r<=127818||r===127819||127820<=r&&r<=127823||r===127824||127825<=r&&r<=127867||r===127868||r===127869||127870<=r&&r<=127871||127872<=r&&r<=127891||127892<=r&&r<=127893||127894<=r&&r<=127895||r===127896||127897<=r&&r<=127899||127900<=r&&r<=127901||127902<=r&&r<=127903||127904<=r&&r<=127940||r===127941||r===127942||r===127943||r===127944||r===127945||r===127946||127947<=r&&r<=127950||127951<=r&&r<=127955||127956<=r&&r<=127967||127968<=r&&r<=127971||r===127972||127973<=r&&r<=127984||127985<=r&&r<=127986||r===127987||r===127988||r===127989||r===127990||r===127991||127992<=r&&r<=127994||128e3<=r&&r<=128007||r===128008||128009<=r&&r<=128011||128012<=r&&r<=128014||128015<=r&&r<=128016||128017<=r&&r<=128018||r===128019||r===128020||r===128021||r===128022||128023<=r&&r<=128041||r===128042||128043<=r&&r<=128062||r===128063||r===128064||r===128065||128066<=r&&r<=128100||r===128101||128102<=r&&r<=128107||128108<=r&&r<=128109||128110<=r&&r<=128172||r===128173||128174<=r&&r<=128181||128182<=r&&r<=128183||128184<=r&&r<=128235||128236<=r&&r<=128237||r===128238||r===128239||128240<=r&&r<=128244||r===128245||128246<=r&&r<=128247||r===128248||128249<=r&&r<=128252||r===128253||r===128254||128255<=r&&r<=128258||r===128259||128260<=r&&r<=128263||r===128264||r===128265||128266<=r&&r<=128276||r===128277||128278<=r&&r<=128299||128300<=r&&r<=128301||128302<=r&&r<=128317||128326<=r&&r<=128328||128329<=r&&r<=128330||128331<=r&&r<=128334||r===128335||128336<=r&&r<=128347||128348<=r&&r<=128359||128360<=r&&r<=128366||128367<=r&&r<=128368||128369<=r&&r<=128370||128371<=r&&r<=128377||r===128378||128379<=r&&r<=128390||r===128391||128392<=r&&r<=128393||128394<=r&&r<=128397||128398<=r&&r<=128399||r===128400||128401<=r&&r<=128404||128405<=r&&r<=128406||128407<=r&&r<=128419||r===128420||r===128421||128422<=r&&r<=128423||r===128424||128425<=r&&r<=128432||128433<=r&&r<=128434||128435<=r&&r<=128443||r===128444||128445<=r&&r<=128449||128450<=r&&r<=128452||128453<=r&&r<=128464||128465<=r&&r<=128467||128468<=r&&r<=128475||128476<=r&&r<=128478||128479<=r&&r<=128480||r===128481||r===128482||r===128483||128484<=r&&r<=128487||r===128488||128489<=r&&r<=128494||r===128495||128496<=r&&r<=128498||r===128499||128500<=r&&r<=128505||r===128506||128507<=r&&r<=128511||r===128512||128513<=r&&r<=128518||128519<=r&&r<=128520||128521<=r&&r<=128525||r===128526||r===128527||r===128528||r===128529||128530<=r&&r<=128532||r===128533||r===128534||r===128535||r===128536||r===128537||r===128538||r===128539||128540<=r&&r<=128542||r===128543||128544<=r&&r<=128549||128550<=r&&r<=128551||128552<=r&&r<=128555||r===128556||r===128557||128558<=r&&r<=128559||128560<=r&&r<=128563||r===128564||r===128565||r===128566||128567<=r&&r<=128576||128577<=r&&r<=128580||128581<=r&&r<=128591||r===128640||128641<=r&&r<=128642||128643<=r&&r<=128645||r===128646||r===128647||r===128648||r===128649||128650<=r&&r<=128651||r===128652||r===128653||r===128654||r===128655||r===128656||128657<=r&&r<=128659||r===128660||r===128661||r===128662||r===128663||r===128664||128665<=r&&r<=128666||128667<=r&&r<=128673||r===128674||r===128675||128676<=r&&r<=128677||r===128678||128679<=r&&r<=128685||128686<=r&&r<=128689||r===128690||128691<=r&&r<=128693||r===128694||128695<=r&&r<=128696||128697<=r&&r<=128702||r===128703||r===128704||128705<=r&&r<=128709||128710<=r&&r<=128714||r===128715||r===128716||128717<=r&&r<=128719||r===128720||128721<=r&&r<=128722||128723<=r&&r<=128724||r===128725||128726<=r&&r<=128727||128728<=r&&r<=128735||128736<=r&&r<=128741||128742<=r&&r<=128744||r===128745||r===128746||128747<=r&&r<=128748||128749<=r&&r<=128751||r===128752||128753<=r&&r<=128754||r===128755||128756<=r&&r<=128758||128759<=r&&r<=128760||r===128761||r===128762||128763<=r&&r<=128764||128765<=r&&r<=128767||128884<=r&&r<=128895||128981<=r&&r<=128991||128992<=r&&r<=129003||129004<=r&&r<=129023||129036<=r&&r<=129039||129096<=r&&r<=129103||129114<=r&&r<=129119||129160<=r&&r<=129167||129198<=r&&r<=129279||r===129292||129293<=r&&r<=129295||129296<=r&&r<=129304||129305<=r&&r<=129310||r===129311||129312<=r&&r<=129319||129320<=r&&r<=129327||r===129328||129329<=r&&r<=129330||129331<=r&&r<=129338||129340<=r&&r<=129342||r===129343||129344<=r&&r<=129349||129351<=r&&r<=129355||r===129356||129357<=r&&r<=129359||129360<=r&&r<=129374||129375<=r&&r<=129387||129388<=r&&r<=129392||r===129393||r===129394||129395<=r&&r<=129398||129399<=r&&r<=129400||r===129401||r===129402||r===129403||129404<=r&&r<=129407||129408<=r&&r<=129412||129413<=r&&r<=129425||129426<=r&&r<=129431||129432<=r&&r<=129442||129443<=r&&r<=129444||129445<=r&&r<=129450||129451<=r&&r<=129453||129454<=r&&r<=129455||129456<=r&&r<=129465||129466<=r&&r<=129471||r===129472||129473<=r&&r<=129474||129475<=r&&r<=129482||r===129483||r===129484||129485<=r&&r<=129487||129488<=r&&r<=129510||129511<=r&&r<=129535||129536<=r&&r<=129647||129648<=r&&r<=129651||r===129652||129653<=r&&r<=129655||129656<=r&&r<=129658||129659<=r&&r<=129663||129664<=r&&r<=129666||129667<=r&&r<=129670||129671<=r&&r<=129679||129680<=r&&r<=129685||129686<=r&&r<=129704||129705<=r&&r<=129711||129712<=r&&r<=129718||129719<=r&&r<=129727||129728<=r&&r<=129730||129731<=r&&r<=129743||129744<=r&&r<=129750||129751<=r&&r<=129791||130048<=r&&r<=131069?Lx.ExtendedPictographic:Lx.Other}Nx.exports=vC});var Ix=n(function(s2,Ox){"use strict";var m=N();function CC(r){return 1536<=r&&r<=1541||r===1757||r===1807||r===2274||r===3406||r===69821||r===69837||70082<=r&&r<=70083||r===71999||r===72001||r===72250||72324<=r&&r<=72329||r===73030?m.Prepend:r===13?m.CR:r===10?m.LF:0<=r&&r<=9||11<=r&&r<=12||14<=r&&r<=31||127<=r&&r<=159||r===173||r===1564||r===6158||r===8203||8206<=r&&r<=8207||r===8232||r===8233||8234<=r&&r<=8238||8288<=r&&r<=8292||r===8293||8294<=r&&r<=8303||r===65279||65520<=r&&r<=65528||65529<=r&&r<=65531||78896<=r&&r<=78904||113824<=r&&r<=113827||119155<=r&&r<=119162||r===917504||r===917505||917506<=r&&r<=917535||917632<=r&&r<=917759||918e3<=r&&r<=921599?m.Control:768<=r&&r<=879||1155<=r&&r<=1159||1160<=r&&r<=1161||1425<=r&&r<=1469||r===1471||1473<=r&&r<=1474||1476<=r&&r<=1477||r===1479||1552<=r&&r<=1562||1611<=r&&r<=1631||r===1648||1750<=r&&r<=1756||1759<=r&&r<=1764||1767<=r&&r<=1768||1770<=r&&r<=1773||r===1809||1840<=r&&r<=1866||1958<=r&&r<=1968||2027<=r&&r<=2035||r===2045||2070<=r&&r<=2073||2075<=r&&r<=2083||2085<=r&&r<=2087||2089<=r&&r<=2093||2137<=r&&r<=2139||2259<=r&&r<=2273||2275<=r&&r<=2306||r===2362||r===2364||2369<=r&&r<=2376||r===2381||2385<=r&&r<=2391||2402<=r&&r<=2403||r===2433||r===2492||r===2494||2497<=r&&r<=2500||r===2509||r===2519||2530<=r&&r<=2531||r===2558||2561<=r&&r<=2562||r===2620||2625<=r&&r<=2626||2631<=r&&r<=2632||2635<=r&&r<=2637||r===2641||2672<=r&&r<=2673||r===2677||2689<=r&&r<=2690||r===2748||2753<=r&&r<=2757||2759<=r&&r<=2760||r===2765||2786<=r&&r<=2787||2810<=r&&r<=2815||r===2817||r===2876||r===2878||r===2879||2881<=r&&r<=2884||r===2893||2901<=r&&r<=2902||r===2903||2914<=r&&r<=2915||r===2946||r===3006||r===3008||r===3021||r===3031||r===3072||r===3076||3134<=r&&r<=3136||3142<=r&&r<=3144||3146<=r&&r<=3149||3157<=r&&r<=3158||3170<=r&&r<=3171||r===3201||r===3260||r===3263||r===3266||r===3270||3276<=r&&r<=3277||3285<=r&&r<=3286||3298<=r&&r<=3299||3328<=r&&r<=3329||3387<=r&&r<=3388||r===3390||3393<=r&&r<=3396||r===3405||r===3415||3426<=r&&r<=3427||r===3457||r===3530||r===3535||3538<=r&&r<=3540||r===3542||r===3551||r===3633||3636<=r&&r<=3642||3655<=r&&r<=3662||r===3761||3764<=r&&r<=3772||3784<=r&&r<=3789||3864<=r&&r<=3865||r===3893||r===3895||r===3897||3953<=r&&r<=3966||3968<=r&&r<=3972||3974<=r&&r<=3975||3981<=r&&r<=3991||3993<=r&&r<=4028||r===4038||4141<=r&&r<=4144||4146<=r&&r<=4151||4153<=r&&r<=4154||4157<=r&&r<=4158||4184<=r&&r<=4185||4190<=r&&r<=4192||4209<=r&&r<=4212||r===4226||4229<=r&&r<=4230||r===4237||r===4253||4957<=r&&r<=4959||5906<=r&&r<=5908||5938<=r&&r<=5940||5970<=r&&r<=5971||6002<=r&&r<=6003||6068<=r&&r<=6069||6071<=r&&r<=6077||r===6086||6089<=r&&r<=6099||r===6109||6155<=r&&r<=6157||6277<=r&&r<=6278||r===6313||6432<=r&&r<=6434||6439<=r&&r<=6440||r===6450||6457<=r&&r<=6459||6679<=r&&r<=6680||r===6683||r===6742||6744<=r&&r<=6750||r===6752||r===6754||6757<=r&&r<=6764||6771<=r&&r<=6780||r===6783||6832<=r&&r<=6845||r===6846||6847<=r&&r<=6848||6912<=r&&r<=6915||r===6964||r===6965||6966<=r&&r<=6970||r===6972||r===6978||7019<=r&&r<=7027||7040<=r&&r<=7041||7074<=r&&r<=7077||7080<=r&&r<=7081||7083<=r&&r<=7085||r===7142||7144<=r&&r<=7145||r===7149||7151<=r&&r<=7153||7212<=r&&r<=7219||7222<=r&&r<=7223||7376<=r&&r<=7378||7380<=r&&r<=7392||7394<=r&&r<=7400||r===7405||r===7412||7416<=r&&r<=7417||7616<=r&&r<=7673||7675<=r&&r<=7679||r===8204||8400<=r&&r<=8412||8413<=r&&r<=8416||r===8417||8418<=r&&r<=8420||8421<=r&&r<=8432||11503<=r&&r<=11505||r===11647||11744<=r&&r<=11775||12330<=r&&r<=12333||12334<=r&&r<=12335||12441<=r&&r<=12442||r===42607||42608<=r&&r<=42610||42612<=r&&r<=42621||42654<=r&&r<=42655||42736<=r&&r<=42737||r===43010||r===43014||r===43019||43045<=r&&r<=43046||r===43052||43204<=r&&r<=43205||43232<=r&&r<=43249||r===43263||43302<=r&&r<=43309||43335<=r&&r<=43345||43392<=r&&r<=43394||r===43443||43446<=r&&r<=43449||43452<=r&&r<=43453||r===43493||43561<=r&&r<=43566||43569<=r&&r<=43570||43573<=r&&r<=43574||r===43587||r===43596||r===43644||r===43696||43698<=r&&r<=43700||43703<=r&&r<=43704||43710<=r&&r<=43711||r===43713||43756<=r&&r<=43757||r===43766||r===44005||r===44008||r===44013||r===64286||65024<=r&&r<=65039||65056<=r&&r<=65071||65438<=r&&r<=65439||r===66045||r===66272||66422<=r&&r<=66426||68097<=r&&r<=68099||68101<=r&&r<=68102||68108<=r&&r<=68111||68152<=r&&r<=68154||r===68159||68325<=r&&r<=68326||68900<=r&&r<=68903||69291<=r&&r<=69292||69446<=r&&r<=69456||r===69633||69688<=r&&r<=69702||69759<=r&&r<=69761||69811<=r&&r<=69814||69817<=r&&r<=69818||69888<=r&&r<=69890||69927<=r&&r<=69931||69933<=r&&r<=69940||r===70003||70016<=r&&r<=70017||70070<=r&&r<=70078||70089<=r&&r<=70092||r===70095||70191<=r&&r<=70193||r===70196||70198<=r&&r<=70199||r===70206||r===70367||70371<=r&&r<=70378||70400<=r&&r<=70401||70459<=r&&r<=70460||r===70462||r===70464||r===70487||70502<=r&&r<=70508||70512<=r&&r<=70516||70712<=r&&r<=70719||70722<=r&&r<=70724||r===70726||r===70750||r===70832||70835<=r&&r<=70840||r===70842||r===70845||70847<=r&&r<=70848||70850<=r&&r<=70851||r===71087||71090<=r&&r<=71093||71100<=r&&r<=71101||71103<=r&&r<=71104||71132<=r&&r<=71133||71219<=r&&r<=71226||r===71229||71231<=r&&r<=71232||r===71339||r===71341||71344<=r&&r<=71349||r===71351||71453<=r&&r<=71455||71458<=r&&r<=71461||71463<=r&&r<=71467||71727<=r&&r<=71735||71737<=r&&r<=71738||r===71984||71995<=r&&r<=71996||r===71998||r===72003||72148<=r&&r<=72151||72154<=r&&r<=72155||r===72160||72193<=r&&r<=72202||72243<=r&&r<=72248||72251<=r&&r<=72254||r===72263||72273<=r&&r<=72278||72281<=r&&r<=72283||72330<=r&&r<=72342||72344<=r&&r<=72345||72752<=r&&r<=72758||72760<=r&&r<=72765||r===72767||72850<=r&&r<=72871||72874<=r&&r<=72880||72882<=r&&r<=72883||72885<=r&&r<=72886||73009<=r&&r<=73014||r===73018||73020<=r&&r<=73021||73023<=r&&r<=73029||r===73031||73104<=r&&r<=73105||r===73109||r===73111||73459<=r&&r<=73460||92912<=r&&r<=92916||92976<=r&&r<=92982||r===94031||94095<=r&&r<=94098||r===94180||113821<=r&&r<=113822||r===119141||119143<=r&&r<=119145||119150<=r&&r<=119154||119163<=r&&r<=119170||119173<=r&&r<=119179||119210<=r&&r<=119213||119362<=r&&r<=119364||121344<=r&&r<=121398||121403<=r&&r<=121452||r===121461||r===121476||121499<=r&&r<=121503||121505<=r&&r<=121519||122880<=r&&r<=122886||122888<=r&&r<=122904||122907<=r&&r<=122913||122915<=r&&r<=122916||122918<=r&&r<=122922||123184<=r&&r<=123190||123628<=r&&r<=123631||125136<=r&&r<=125142||125252<=r&&r<=125258||127995<=r&&r<=127999||917536<=r&&r<=917631||917760<=r&&r<=917999?m.Extend:127462<=r&&r<=127487?m.RegionalIndicator:r===2307||r===2363||2366<=r&&r<=2368||2377<=r&&r<=2380||2382<=r&&r<=2383||2434<=r&&r<=2435||2495<=r&&r<=2496||2503<=r&&r<=2504||2507<=r&&r<=2508||r===2563||2622<=r&&r<=2624||r===2691||2750<=r&&r<=2752||r===2761||2763<=r&&r<=2764||2818<=r&&r<=2819||r===2880||2887<=r&&r<=2888||2891<=r&&r<=2892||r===3007||3009<=r&&r<=3010||3014<=r&&r<=3016||3018<=r&&r<=3020||3073<=r&&r<=3075||3137<=r&&r<=3140||3202<=r&&r<=3203||r===3262||3264<=r&&r<=3265||3267<=r&&r<=3268||3271<=r&&r<=3272||3274<=r&&r<=3275||3330<=r&&r<=3331||3391<=r&&r<=3392||3398<=r&&r<=3400||3402<=r&&r<=3404||3458<=r&&r<=3459||3536<=r&&r<=3537||3544<=r&&r<=3550||3570<=r&&r<=3571||r===3635||r===3763||3902<=r&&r<=3903||r===3967||r===4145||4155<=r&&r<=4156||4182<=r&&r<=4183||r===4228||r===6070||6078<=r&&r<=6085||6087<=r&&r<=6088||6435<=r&&r<=6438||6441<=r&&r<=6443||6448<=r&&r<=6449||6451<=r&&r<=6456||6681<=r&&r<=6682||r===6741||r===6743||6765<=r&&r<=6770||r===6916||r===6971||6973<=r&&r<=6977||6979<=r&&r<=6980||r===7042||r===7073||7078<=r&&r<=7079||r===7082||r===7143||7146<=r&&r<=7148||r===7150||7154<=r&&r<=7155||7204<=r&&r<=7211||7220<=r&&r<=7221||r===7393||r===7415||43043<=r&&r<=43044||r===43047||43136<=r&&r<=43137||43188<=r&&r<=43203||43346<=r&&r<=43347||r===43395||43444<=r&&r<=43445||43450<=r&&r<=43451||43454<=r&&r<=43456||43567<=r&&r<=43568||43571<=r&&r<=43572||r===43597||r===43755||43758<=r&&r<=43759||r===43765||44003<=r&&r<=44004||44006<=r&&r<=44007||44009<=r&&r<=44010||r===44012||r===69632||r===69634||r===69762||69808<=r&&r<=69810||69815<=r&&r<=69816||r===69932||69957<=r&&r<=69958||r===70018||70067<=r&&r<=70069||70079<=r&&r<=70080||r===70094||70188<=r&&r<=70190||70194<=r&&r<=70195||r===70197||70368<=r&&r<=70370||70402<=r&&r<=70403||r===70463||70465<=r&&r<=70468||70471<=r&&r<=70472||70475<=r&&r<=70477||70498<=r&&r<=70499||70709<=r&&r<=70711||70720<=r&&r<=70721||r===70725||70833<=r&&r<=70834||r===70841||70843<=r&&r<=70844||r===70846||r===70849||71088<=r&&r<=71089||71096<=r&&r<=71099||r===71102||71216<=r&&r<=71218||71227<=r&&r<=71228||r===71230||r===71340||71342<=r&&r<=71343||r===71350||71456<=r&&r<=71457||r===71462||71724<=r&&r<=71726||r===71736||71985<=r&&r<=71989||71991<=r&&r<=71992||r===71997||r===72e3||r===72002||72145<=r&&r<=72147||72156<=r&&r<=72159||r===72164||r===72249||72279<=r&&r<=72280||r===72343||r===72751||r===72766||r===72873||r===72881||r===72884||73098<=r&&r<=73102||73107<=r&&r<=73108||r===73110||73461<=r&&r<=73462||94033<=r&&r<=94087||94192<=r&&r<=94193||r===119142||r===119149?m.SpacingMark:4352<=r&&r<=4447||43360<=r&&r<=43388?m.L:4448<=r&&r<=4519||55216<=r&&r<=55238?m.V:4520<=r&&r<=4607||55243<=r&&r<=55291?m.T:r===44032||r===44060||r===44088||r===44116||r===44144||r===44172||r===44200||r===44228||r===44256||r===44284||r===44312||r===44340||r===44368||r===44396||r===44424||r===44452||r===44480||r===44508||r===44536||r===44564||r===44592||r===44620||r===44648||r===44676||r===44704||r===44732||r===44760||r===44788||r===44816||r===44844||r===44872||r===44900||r===44928||r===44956||r===44984||r===45012||r===45040||r===45068||r===45096||r===45124||r===45152||r===45180||r===45208||r===45236||r===45264||r===45292||r===45320||r===45348||r===45376||r===45404||r===45432||r===45460||r===45488||r===45516||r===45544||r===45572||r===45600||r===45628||r===45656||r===45684||r===45712||r===45740||r===45768||r===45796||r===45824||r===45852||r===45880||r===45908||r===45936||r===45964||r===45992||r===46020||r===46048||r===46076||r===46104||r===46132||r===46160||r===46188||r===46216||r===46244||r===46272||r===46300||r===46328||r===46356||r===46384||r===46412||r===46440||r===46468||r===46496||r===46524||r===46552||r===46580||r===46608||r===46636||r===46664||r===46692||r===46720||r===46748||r===46776||r===46804||r===46832||r===46860||r===46888||r===46916||r===46944||r===46972||r===47e3||r===47028||r===47056||r===47084||r===47112||r===47140||r===47168||r===47196||r===47224||r===47252||r===47280||r===47308||r===47336||r===47364||r===47392||r===47420||r===47448||r===47476||r===47504||r===47532||r===47560||r===47588||r===47616||r===47644||r===47672||r===47700||r===47728||r===47756||r===47784||r===47812||r===47840||r===47868||r===47896||r===47924||r===47952||r===47980||r===48008||r===48036||r===48064||r===48092||r===48120||r===48148||r===48176||r===48204||r===48232||r===48260||r===48288||r===48316||r===48344||r===48372||r===48400||r===48428||r===48456||r===48484||r===48512||r===48540||r===48568||r===48596||r===48624||r===48652||r===48680||r===48708||r===48736||r===48764||r===48792||r===48820||r===48848||r===48876||r===48904||r===48932||r===48960||r===48988||r===49016||r===49044||r===49072||r===49100||r===49128||r===49156||r===49184||r===49212||r===49240||r===49268||r===49296||r===49324||r===49352||r===49380||r===49408||r===49436||r===49464||r===49492||r===49520||r===49548||r===49576||r===49604||r===49632||r===49660||r===49688||r===49716||r===49744||r===49772||r===49800||r===49828||r===49856||r===49884||r===49912||r===49940||r===49968||r===49996||r===50024||r===50052||r===50080||r===50108||r===50136||r===50164||r===50192||r===50220||r===50248||r===50276||r===50304||r===50332||r===50360||r===50388||r===50416||r===50444||r===50472||r===50500||r===50528||r===50556||r===50584||r===50612||r===50640||r===50668||r===50696||r===50724||r===50752||r===50780||r===50808||r===50836||r===50864||r===50892||r===50920||r===50948||r===50976||r===51004||r===51032||r===51060||r===51088||r===51116||r===51144||r===51172||r===51200||r===51228||r===51256||r===51284||r===51312||r===51340||r===51368||r===51396||r===51424||r===51452||r===51480||r===51508||r===51536||r===51564||r===51592||r===51620||r===51648||r===51676||r===51704||r===51732||r===51760||r===51788||r===51816||r===51844||r===51872||r===51900||r===51928||r===51956||r===51984||r===52012||r===52040||r===52068||r===52096||r===52124||r===52152||r===52180||r===52208||r===52236||r===52264||r===52292||r===52320||r===52348||r===52376||r===52404||r===52432||r===52460||r===52488||r===52516||r===52544||r===52572||r===52600||r===52628||r===52656||r===52684||r===52712||r===52740||r===52768||r===52796||r===52824||r===52852||r===52880||r===52908||r===52936||r===52964||r===52992||r===53020||r===53048||r===53076||r===53104||r===53132||r===53160||r===53188||r===53216||r===53244||r===53272||r===53300||r===53328||r===53356||r===53384||r===53412||r===53440||r===53468||r===53496||r===53524||r===53552||r===53580||r===53608||r===53636||r===53664||r===53692||r===53720||r===53748||r===53776||r===53804||r===53832||r===53860||r===53888||r===53916||r===53944||r===53972||r===54e3||r===54028||r===54056||r===54084||r===54112||r===54140||r===54168||r===54196||r===54224||r===54252||r===54280||r===54308||r===54336||r===54364||r===54392||r===54420||r===54448||r===54476||r===54504||r===54532||r===54560||r===54588||r===54616||r===54644||r===54672||r===54700||r===54728||r===54756||r===54784||r===54812||r===54840||r===54868||r===54896||r===54924||r===54952||r===54980||r===55008||r===55036||r===55064||r===55092||r===55120||r===55148||r===55176?m.LV:44033<=r&&r<=44059||44061<=r&&r<=44087||44089<=r&&r<=44115||44117<=r&&r<=44143||44145<=r&&r<=44171||44173<=r&&r<=44199||44201<=r&&r<=44227||44229<=r&&r<=44255||44257<=r&&r<=44283||44285<=r&&r<=44311||44313<=r&&r<=44339||44341<=r&&r<=44367||44369<=r&&r<=44395||44397<=r&&r<=44423||44425<=r&&r<=44451||44453<=r&&r<=44479||44481<=r&&r<=44507||44509<=r&&r<=44535||44537<=r&&r<=44563||44565<=r&&r<=44591||44593<=r&&r<=44619||44621<=r&&r<=44647||44649<=r&&r<=44675||44677<=r&&r<=44703||44705<=r&&r<=44731||44733<=r&&r<=44759||44761<=r&&r<=44787||44789<=r&&r<=44815||44817<=r&&r<=44843||44845<=r&&r<=44871||44873<=r&&r<=44899||44901<=r&&r<=44927||44929<=r&&r<=44955||44957<=r&&r<=44983||44985<=r&&r<=45011||45013<=r&&r<=45039||45041<=r&&r<=45067||45069<=r&&r<=45095||45097<=r&&r<=45123||45125<=r&&r<=45151||45153<=r&&r<=45179||45181<=r&&r<=45207||45209<=r&&r<=45235||45237<=r&&r<=45263||45265<=r&&r<=45291||45293<=r&&r<=45319||45321<=r&&r<=45347||45349<=r&&r<=45375||45377<=r&&r<=45403||45405<=r&&r<=45431||45433<=r&&r<=45459||45461<=r&&r<=45487||45489<=r&&r<=45515||45517<=r&&r<=45543||45545<=r&&r<=45571||45573<=r&&r<=45599||45601<=r&&r<=45627||45629<=r&&r<=45655||45657<=r&&r<=45683||45685<=r&&r<=45711||45713<=r&&r<=45739||45741<=r&&r<=45767||45769<=r&&r<=45795||45797<=r&&r<=45823||45825<=r&&r<=45851||45853<=r&&r<=45879||45881<=r&&r<=45907||45909<=r&&r<=45935||45937<=r&&r<=45963||45965<=r&&r<=45991||45993<=r&&r<=46019||46021<=r&&r<=46047||46049<=r&&r<=46075||46077<=r&&r<=46103||46105<=r&&r<=46131||46133<=r&&r<=46159||46161<=r&&r<=46187||46189<=r&&r<=46215||46217<=r&&r<=46243||46245<=r&&r<=46271||46273<=r&&r<=46299||46301<=r&&r<=46327||46329<=r&&r<=46355||46357<=r&&r<=46383||46385<=r&&r<=46411||46413<=r&&r<=46439||46441<=r&&r<=46467||46469<=r&&r<=46495||46497<=r&&r<=46523||46525<=r&&r<=46551||46553<=r&&r<=46579||46581<=r&&r<=46607||46609<=r&&r<=46635||46637<=r&&r<=46663||46665<=r&&r<=46691||46693<=r&&r<=46719||46721<=r&&r<=46747||46749<=r&&r<=46775||46777<=r&&r<=46803||46805<=r&&r<=46831||46833<=r&&r<=46859||46861<=r&&r<=46887||46889<=r&&r<=46915||46917<=r&&r<=46943||46945<=r&&r<=46971||46973<=r&&r<=46999||47001<=r&&r<=47027||47029<=r&&r<=47055||47057<=r&&r<=47083||47085<=r&&r<=47111||47113<=r&&r<=47139||47141<=r&&r<=47167||47169<=r&&r<=47195||47197<=r&&r<=47223||47225<=r&&r<=47251||47253<=r&&r<=47279||47281<=r&&r<=47307||47309<=r&&r<=47335||47337<=r&&r<=47363||47365<=r&&r<=47391||47393<=r&&r<=47419||47421<=r&&r<=47447||47449<=r&&r<=47475||47477<=r&&r<=47503||47505<=r&&r<=47531||47533<=r&&r<=47559||47561<=r&&r<=47587||47589<=r&&r<=47615||47617<=r&&r<=47643||47645<=r&&r<=47671||47673<=r&&r<=47699||47701<=r&&r<=47727||47729<=r&&r<=47755||47757<=r&&r<=47783||47785<=r&&r<=47811||47813<=r&&r<=47839||47841<=r&&r<=47867||47869<=r&&r<=47895||47897<=r&&r<=47923||47925<=r&&r<=47951||47953<=r&&r<=47979||47981<=r&&r<=48007||48009<=r&&r<=48035||48037<=r&&r<=48063||48065<=r&&r<=48091||48093<=r&&r<=48119||48121<=r&&r<=48147||48149<=r&&r<=48175||48177<=r&&r<=48203||48205<=r&&r<=48231||48233<=r&&r<=48259||48261<=r&&r<=48287||48289<=r&&r<=48315||48317<=r&&r<=48343||48345<=r&&r<=48371||48373<=r&&r<=48399||48401<=r&&r<=48427||48429<=r&&r<=48455||48457<=r&&r<=48483||48485<=r&&r<=48511||48513<=r&&r<=48539||48541<=r&&r<=48567||48569<=r&&r<=48595||48597<=r&&r<=48623||48625<=r&&r<=48651||48653<=r&&r<=48679||48681<=r&&r<=48707||48709<=r&&r<=48735||48737<=r&&r<=48763||48765<=r&&r<=48791||48793<=r&&r<=48819||48821<=r&&r<=48847||48849<=r&&r<=48875||48877<=r&&r<=48903||48905<=r&&r<=48931||48933<=r&&r<=48959||48961<=r&&r<=48987||48989<=r&&r<=49015||49017<=r&&r<=49043||49045<=r&&r<=49071||49073<=r&&r<=49099||49101<=r&&r<=49127||49129<=r&&r<=49155||49157<=r&&r<=49183||49185<=r&&r<=49211||49213<=r&&r<=49239||49241<=r&&r<=49267||49269<=r&&r<=49295||49297<=r&&r<=49323||49325<=r&&r<=49351||49353<=r&&r<=49379||49381<=r&&r<=49407||49409<=r&&r<=49435||49437<=r&&r<=49463||49465<=r&&r<=49491||49493<=r&&r<=49519||49521<=r&&r<=49547||49549<=r&&r<=49575||49577<=r&&r<=49603||49605<=r&&r<=49631||49633<=r&&r<=49659||49661<=r&&r<=49687||49689<=r&&r<=49715||49717<=r&&r<=49743||49745<=r&&r<=49771||49773<=r&&r<=49799||49801<=r&&r<=49827||49829<=r&&r<=49855||49857<=r&&r<=49883||49885<=r&&r<=49911||49913<=r&&r<=49939||49941<=r&&r<=49967||49969<=r&&r<=49995||49997<=r&&r<=50023||50025<=r&&r<=50051||50053<=r&&r<=50079||50081<=r&&r<=50107||50109<=r&&r<=50135||50137<=r&&r<=50163||50165<=r&&r<=50191||50193<=r&&r<=50219||50221<=r&&r<=50247||50249<=r&&r<=50275||50277<=r&&r<=50303||50305<=r&&r<=50331||50333<=r&&r<=50359||50361<=r&&r<=50387||50389<=r&&r<=50415||50417<=r&&r<=50443||50445<=r&&r<=50471||50473<=r&&r<=50499||50501<=r&&r<=50527||50529<=r&&r<=50555||50557<=r&&r<=50583||50585<=r&&r<=50611||50613<=r&&r<=50639||50641<=r&&r<=50667||50669<=r&&r<=50695||50697<=r&&r<=50723||50725<=r&&r<=50751||50753<=r&&r<=50779||50781<=r&&r<=50807||50809<=r&&r<=50835||50837<=r&&r<=50863||50865<=r&&r<=50891||50893<=r&&r<=50919||50921<=r&&r<=50947||50949<=r&&r<=50975||50977<=r&&r<=51003||51005<=r&&r<=51031||51033<=r&&r<=51059||51061<=r&&r<=51087||51089<=r&&r<=51115||51117<=r&&r<=51143||51145<=r&&r<=51171||51173<=r&&r<=51199||51201<=r&&r<=51227||51229<=r&&r<=51255||51257<=r&&r<=51283||51285<=r&&r<=51311||51313<=r&&r<=51339||51341<=r&&r<=51367||51369<=r&&r<=51395||51397<=r&&r<=51423||51425<=r&&r<=51451||51453<=r&&r<=51479||51481<=r&&r<=51507||51509<=r&&r<=51535||51537<=r&&r<=51563||51565<=r&&r<=51591||51593<=r&&r<=51619||51621<=r&&r<=51647||51649<=r&&r<=51675||51677<=r&&r<=51703||51705<=r&&r<=51731||51733<=r&&r<=51759||51761<=r&&r<=51787||51789<=r&&r<=51815||51817<=r&&r<=51843||51845<=r&&r<=51871||51873<=r&&r<=51899||51901<=r&&r<=51927||51929<=r&&r<=51955||51957<=r&&r<=51983||51985<=r&&r<=52011||52013<=r&&r<=52039||52041<=r&&r<=52067||52069<=r&&r<=52095||52097<=r&&r<=52123||52125<=r&&r<=52151||52153<=r&&r<=52179||52181<=r&&r<=52207||52209<=r&&r<=52235||52237<=r&&r<=52263||52265<=r&&r<=52291||52293<=r&&r<=52319||52321<=r&&r<=52347||52349<=r&&r<=52375||52377<=r&&r<=52403||52405<=r&&r<=52431||52433<=r&&r<=52459||52461<=r&&r<=52487||52489<=r&&r<=52515||52517<=r&&r<=52543||52545<=r&&r<=52571||52573<=r&&r<=52599||52601<=r&&r<=52627||52629<=r&&r<=52655||52657<=r&&r<=52683||52685<=r&&r<=52711||52713<=r&&r<=52739||52741<=r&&r<=52767||52769<=r&&r<=52795||52797<=r&&r<=52823||52825<=r&&r<=52851||52853<=r&&r<=52879||52881<=r&&r<=52907||52909<=r&&r<=52935||52937<=r&&r<=52963||52965<=r&&r<=52991||52993<=r&&r<=53019||53021<=r&&r<=53047||53049<=r&&r<=53075||53077<=r&&r<=53103||53105<=r&&r<=53131||53133<=r&&r<=53159||53161<=r&&r<=53187||53189<=r&&r<=53215||53217<=r&&r<=53243||53245<=r&&r<=53271||53273<=r&&r<=53299||53301<=r&&r<=53327||53329<=r&&r<=53355||53357<=r&&r<=53383||53385<=r&&r<=53411||53413<=r&&r<=53439||53441<=r&&r<=53467||53469<=r&&r<=53495||53497<=r&&r<=53523||53525<=r&&r<=53551||53553<=r&&r<=53579||53581<=r&&r<=53607||53609<=r&&r<=53635||53637<=r&&r<=53663||53665<=r&&r<=53691||53693<=r&&r<=53719||53721<=r&&r<=53747||53749<=r&&r<=53775||53777<=r&&r<=53803||53805<=r&&r<=53831||53833<=r&&r<=53859||53861<=r&&r<=53887||53889<=r&&r<=53915||53917<=r&&r<=53943||53945<=r&&r<=53971||53973<=r&&r<=53999||54001<=r&&r<=54027||54029<=r&&r<=54055||54057<=r&&r<=54083||54085<=r&&r<=54111||54113<=r&&r<=54139||54141<=r&&r<=54167||54169<=r&&r<=54195||54197<=r&&r<=54223||54225<=r&&r<=54251||54253<=r&&r<=54279||54281<=r&&r<=54307||54309<=r&&r<=54335||54337<=r&&r<=54363||54365<=r&&r<=54391||54393<=r&&r<=54419||54421<=r&&r<=54447||54449<=r&&r<=54475||54477<=r&&r<=54503||54505<=r&&r<=54531||54533<=r&&r<=54559||54561<=r&&r<=54587||54589<=r&&r<=54615||54617<=r&&r<=54643||54645<=r&&r<=54671||54673<=r&&r<=54699||54701<=r&&r<=54727||54729<=r&&r<=54755||54757<=r&&r<=54783||54785<=r&&r<=54811||54813<=r&&r<=54839||54841<=r&&r<=54867||54869<=r&&r<=54895||54897<=r&&r<=54923||54925<=r&&r<=54951||54953<=r&&r<=54979||54981<=r&&r<=55007||55009<=r&&r<=55035||55037<=r&&r<=55063||55065<=r&&r<=55091||55093<=r&&r<=55119||55121<=r&&r<=55147||55149<=r&&r<=55175||55177<=r&&r<=55203?m.LVT:r===8205?m.ZWJ:m.Other}Ox.exports=CC});var yr=n(function(e2,Gx){"use strict";var Y=require("@stdlib/utils/define-nonenumerable-read-only-property"),lC=N(),BC=Rx(),fC=_x(),gC=Ix(),_={};Y(_,"constants",lC);Y(_,"breakType",BC);Y(_,"emojiProperty",fC);Y(_,"breakProperty",gC);Gx.exports=_});var jx=n(function(F2,Wx){"use strict";var EC=require("@stdlib/assert/is-string").isPrimitive,pC=require("@stdlib/assert/is-integer").isPrimitive,kx=J(),DC=require("@stdlib/assert/has-utf16-surrogate-pair-at"),Tr=yr(),Mx=v(),AC=Tr.breakType,Ux=Tr.breakProperty,zx=Tr.emojiProperty;function mC(r,i){var t,x,a,u,s,e;if(!EC(r))throw new TypeError(Mx("invalid argument. First argument must be a string. Value: `%s`.",r));if(arguments.length>1){if(!pC(i))throw new TypeError(Mx("invalid argument. Second argument must be an integer. Value: `%s`.",i));u=i}else u=0;if(a=r.length,u<0&&(u+=a,u<0&&(u=0)),a===0||u>=a)return-1;for(t=[],x=[],s=kx(r,u),t.push(Ux(s)),x.push(zx(s)),e=u+1;e0))return e;return-1}Wx.exports=mC});var h=n(function(v2,$x){"use strict";var hC=jx();$x.exports=hC});var Zx=n(function(C2,Hx){"use strict";var qC=h();function wC(r,i){for(var t=0;i>0;)t=qC(r,t),i-=1;return r===""||t===-1?r:r.substring(0,t)}Hx.exports=wC});var Sr=n(function(l2,Xx){"use strict";var bC=Zx();Xx.exports=bC});var Jx=n(function(B2,Qx){"use strict";function yC(r,i,t){var x;for(x=0;x?`{}|~\/\\\[\]_#$*&^@%]+/g,jC=/([a-z0-9])([A-Z])/g;function $C(r){return r=Lr(r,WC," "),r=Lr(r,jC,"$1 $2"),r=UC(r),r=kC(r),r=MC(r),Lr(r,zC,"-")}nt.exports=$C});var Nr=n(function(q2,st){"use strict";var HC=ut();st.exports=HC});var Ft=n(function(w2,et){"use strict";var ZC=R(),XC=q();function QC(r){var i,t,x,a;for(i=[],a=0;a?`{}|~\/\\\[\]_#$*&^@%]+/g,dC=/([a-z0-9])([A-Z])/g;function rl(r){return r=_r(r,cC," "),r=_r(r,dC,"$1 $2"),r=KC(r),r=_r(r,oC,"-"),YC(r)}lt.exports=rl});var Or=n(function(T2,ft){"use strict";var il=Bt();ft.exports=il});var Et=n(function(S2,gt){"use strict";var xl=typeof String.prototype.repeat!="undefined";gt.exports=xl});var Dt=n(function(V2,pt){"use strict";function tl(r,i){var t,x;if(r.length===0||i===0)return"";for(t="",x=i;(x&1)===1&&(t+=r),x>>>=1,x!==0;)r+=r;return t}pt.exports=tl});var mt=n(function(P2,At){"use strict";var al=String.prototype.repeat;At.exports=al});var qt=n(function(R2,ht){"use strict";var nl=mt();function ul(r,i){return nl.call(r,i)}ht.exports=ul});var O=n(function(L2,wt){"use strict";var sl=Et(),el=Dt(),Fl=qt(),Ir;sl?Ir=Fl:Ir=el;wt.exports=Ir});var yt=n(function(N2,bt){"use strict";var vl=O(),Cl=require("@stdlib/math/base/special/ceil");function ll(r,i,t){var x=(i-r.length)/t.length;return x<=0?r:(x=Cl(x),vl(t,x)+r)}bt.exports=ll});var Gr=n(function(_2,Tt){"use strict";var Bl=yt();Tt.exports=Bl});var Vt=n(function(O2,St){"use strict";var fl=typeof String.prototype.trimLeft!="undefined";St.exports=fl});var Rt=n(function(I2,Pt){"use strict";var gl=A(),El=/^[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/;function pl(r){return gl(r,El,"")}Pt.exports=pl});var Nt=n(function(G2,Lt){"use strict";var Dl=String.prototype.trimLeft;Lt.exports=Dl});var Ot=n(function(k2,_t){"use strict";var Al=Nt();function ml(r){return Al.call(r)}_t.exports=ml});var Mr=n(function(M2,It){"use strict";var hl=Vt(),ql=Rt(),wl=Ot(),kr;hl?kr=wl:kr=ql;It.exports=kr});var kt=n(function(U2,Gt){"use strict";var bl=L(),yl=q(),o=A(),Tl=w(),Sl=/\s+/g,Vl=/[-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,Pl=/(?:\s|^)([^\s]+)(?=\s|$)/g,Rl=/([a-z0-9])([A-Z])/g;function Ll(r,i){return bl(yl(i))}function Nl(r){return r=o(r,Vl," "),r=o(r,Sl," "),r=o(r,Rl,"$1 $2"),r=Tl(r),o(r,Pl,Ll)}Gt.exports=Nl});var Ur=n(function(z2,Mt){"use strict";var _l=kt();Mt.exports=_l});var Wt=n(function(W2,zt){"use strict";var Ol=require("@stdlib/assert/is-string").isPrimitive,Il=v(),V=63,T=128,Gl=192,kl=224,Ml=240,Ut=1023,Ul=2048,zl=55296,Wl=57344,jl=65536;function $l(r){var i,t,x,a;if(!Ol(r))throw new TypeError(Il("invalid argument. Must provide a string. Value: `%s`.",r));for(x=r.length,t=[],a=0;a>6),t.push(T|i&V)):i=Wl?(t.push(kl|i>>12),t.push(T|i>>6&V),t.push(T|i&V)):(a+=1,i=jl+((i&Ut)<<10|r.charCodeAt(a)&Ut),t.push(Ml|i>>18),t.push(T|i>>12&V),t.push(T|i>>6&V),t.push(T|i&V));return t}zt.exports=$l});var zr=n(function(j2,jt){"use strict";var Hl=Wt();jt.exports=Hl});var Ht=n(function($2,$t){"use strict";var Zl=zr(),Xl=95,Ql=46,Jl=45,Yl=126,Kl=48,ol=57,cl=65,dl=90,rB=97,iB=122;function xB(r){var i,t,x,a,u;for(a=Zl(r),x=a.length,t="",u=0;u=Kl&&i<=ol||i>=cl&&i<=dl||i>=rB&&i<=iB||i===Jl||i===Ql||i===Xl||i===Yl?t+=r.charAt(u):t+="%"+i.toString(16).toUpperCase();return t}$t.exports=xB});var Wr=n(function(H2,Zt){"use strict";var tB=Ht();Zt.exports=tB});var Qt=n(function(Z2,Xt){"use strict";function aB(r,i){return r.substring(i,r.length)}Xt.exports=aB});var jr=n(function(X2,Jt){"use strict";var nB=Qt();Jt.exports=nB});var Kt=n(function(Q2,Yt){"use strict";var uB=/[\uDC00-\uDFFF]/,sB=/[\uD800-\uDBFF]/;function eB(r,i){var t,x,a,u,s;if(i===0)return r;for(t=r.length,u=0,s=0;s0;)t=vB(r,t),i-=1;return r===""||t===-1?"":r.substring(t,r.length)}ct.exports=CB});var Hr=n(function(K2,ra){"use strict";var lB=dt();ra.exports=lB});var xa=n(function(o2,ia){"use strict";function BB(r,i,t){var x=r.indexOf(i);return r===""||i===""||t===""||x<0?r:t+r.substring(x)}ia.exports=BB});var Zr=n(function(c2,ta){"use strict";var fB=xa();ta.exports=fB});var na=n(function(d2,aa){"use strict";var gB=O(),EB=require("@stdlib/math/base/special/ceil");function pB(r,i,t){var x=(i-r.length)/t.length;return x<=0?r:(x=EB(x),r+gB(t,x))}aa.exports=pB});var Xr=n(function(rm,ua){"use strict";var DB=na();ua.exports=DB});var ea=n(function(im,sa){"use strict";var AB=typeof String.prototype.trimRight!="undefined";sa.exports=AB});var va=n(function(xm,Fa){"use strict";var mB=A(),hB=/[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+$/;function qB(r){return mB(r,hB,"")}Fa.exports=qB});var la=n(function(tm,Ca){"use strict";var wB=String.prototype.trimRight;Ca.exports=wB});var fa=n(function(am,Ba){"use strict";var bB=la();function yB(r){return bB.call(r)}Ba.exports=yB});var Jr=n(function(nm,ga){"use strict";var TB=ea(),SB=va(),VB=fa(),Qr;TB?Qr=VB:Qr=SB;ga.exports=Qr});var pa=n(function(um,Ea){"use strict";var PB=q(),Yr=A(),RB=w(),LB=/\s+/g,NB=/[\-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,_B=/([a-z0-9])([A-Z])/g;function OB(r){return r=Yr(r,NB," "),r=Yr(r,_B,"$1 $2"),r=RB(r),r=Yr(r,LB,"_"),PB(r)}Ea.exports=OB});var Kr=n(function(sm,Da){"use strict";var IB=pa();Da.exports=IB});var ma=n(function(em,Aa){"use strict";var GB=typeof String.prototype.startsWith!="undefined";Aa.exports=GB});var qa=n(function(Fm,ha){"use strict";function kB(r,i,t){var x,a;if(t<0?x=r.length+t:x=t,i.length===0)return!0;if(x<0||x+i.length>r.length)return!1;for(a=0;ar.length?!1:UB.call(r,i,x)}ya.exports=zB});var cr=n(function(lm,Sa){"use strict";var WB=ma(),jB=qa(),$B=Ta(),or;WB?or=$B:or=jB;Sa.exports=or});var Pa=n(function(Bm,Va){"use strict";function HB(r){return r===""?"":r.charAt(0).toLowerCase()+r.slice(1)}Va.exports=HB});var dr=n(function(fm,Ra){"use strict";var ZB=Pa();Ra.exports=ZB});var Na=n(function(gm,La){"use strict";var p=require("@stdlib/utils/define-read-only-property"),E={};p(E,"camelcase",Er());p(E,"capitalize",L());p(E,"codePointAt",pr());p(E,"constantcase",Ar());p(E,"distances",ax());p(E,"dotcase",hr());p(E,"endsWith",X());p(E,"first",wr());p(E,"firstCodePoint",br());p(E,"firstGraphemeCluster",Sr());p(E,"forEach",Vr());p(E,"forEachCodePoint",Pr());p(E,"forEachGraphemeCluster",Rr());p(E,"formatInterpolate",Fr());p(E,"formatTokenize",vr());p(E,"headercase",Nr());p(E,"invcase",Ct());p(E,"kebabcase",Or());p(E,"lpad",Gr());p(E,"ltrim",Mr());p(E,"lowercase",q());p(E,"pascalcase",Ur());p(E,"percentEncode",Wr());p(E,"removeFirst",jr());p(E,"removeFirstCodePoint",$r());p(E,"removeFirstGraphemeCluster",Hr());p(E,"repeat",O());p(E,"replace",A());p(E,"replaceBefore",Zr());p(E,"rpad",Xr());p(E,"rtrim",Jr());p(E,"snakecase",Kr());p(E,"startcase",K());p(E,"startsWith",cr());p(E,"trim",w());p(E,"uncapitalize",dr());p(E,"uppercase",R());La.exports=E});var Oa=n(function(Em,_a){"use strict";var XB=require("@stdlib/assert/is-string").isPrimitive,QB=v(),JB=Er();function YB(r){if(!XB(r))throw new TypeError(QB("invalid argument. First argument must be a string. Value: `%s`.",r));return JB(r)}_a.exports=YB});var Ga=n(function(pm,Ia){"use strict";var KB=Oa();Ia.exports=KB});var Ma=n(function(Dm,ka){"use strict";var oB=require("@stdlib/assert/is-string").isPrimitive,cB=v(),dB=L();function rf(r){if(!oB(r))throw new TypeError(cB("invalid argument. First argument must be a string. Value: `%s`.",r));return dB(r)}ka.exports=rf});var za=n(function(Am,Ua){"use strict";var xf=Ma();Ua.exports=xf});var ja=n(function(mm,Wa){"use strict";var tf=require("@stdlib/assert/is-string").isPrimitive,af=v(),nf=Ar();function uf(r){if(!tf(r))throw new TypeError(af("invalid argument. Must provide a string. Value: `%s`.",r));return nf(r)}Wa.exports=uf});var Ha=n(function(hm,$a){"use strict";var sf=ja();$a.exports=sf});var Xa=n(function(qm,Za){"use strict";var ef=require("@stdlib/assert/is-string").isPrimitive,Ff=v(),vf=hr();function Cf(r){if(!ef(r))throw new TypeError(Ff("invalid argument. First argument must be a string. Value: `%s`.",r));return vf(r)}Za.exports=Cf});var Ja=n(function(wm,Qa){"use strict";var lf=Xa();Qa.exports=lf});var oa=n(function(bm,Ka){"use strict";var Bf=require("@stdlib/assert/is-integer").isPrimitive,Ya=require("@stdlib/assert/is-string").isPrimitive,r0=v(),ff=X();function gf(r,i,t){if(!Ya(r))throw new TypeError(r0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Ya(i))throw new TypeError(r0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!Bf(t))throw new TypeError(r0("invalid argument. Third argument must be an integer. Value: `%s`.",t))}else t=r.length;return ff(r,i,t)}Ka.exports=gf});var da=n(function(ym,ca){"use strict";var Ef=oa();ca.exports=Ef});var nn=n(function(Tm,an){"use strict";var pf=require("@stdlib/assert/is-string").isPrimitive,rn=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,xn=require("@stdlib/assert/is-plain-object"),Df=require("@stdlib/assert/has-own-property"),Af=require("@stdlib/array/base/assert/contains").factory,mf=wr(),hf=br(),qf=Sr(),I=v(),tn=["grapheme","code_point","code_unit"],wf={grapheme:qf,code_point:hf,code_unit:mf},bf=Af(tn);function yf(r){var i,t,x,a;if(!pf(r))throw new TypeError(I("invalid argument. First argument must be a string. Value: `%s`.",r));if(x={mode:"grapheme"},t=arguments.length,t===1)a=1;else if(t===2){if(a=arguments[1],xn(a))i=a,a=1;else if(!rn(a))throw new TypeError(I("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a))}else{if(a=arguments[1],!rn(a))throw new TypeError(I("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a));if(i=arguments[2],!xn(i))throw new TypeError(I("invalid argument. Options argument must be an object. Value: `%s`.",i))}if(i&&Df(i,"mode")&&(x.mode=i.mode,!bf(x.mode)))throw new TypeError(I('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",tn.join('", "'),x.mode));return wf[x.mode](r,a)}an.exports=yf});var sn=n(function(Sm,un){"use strict";var Tf=nn();un.exports=Tf});var Cn=n(function(Vm,vn){"use strict";var Sf=require("@stdlib/assert/is-function"),Vf=require("@stdlib/assert/is-string").isPrimitive,en=require("@stdlib/assert/is-plain-object"),Pf=require("@stdlib/assert/has-own-property"),Rf=require("@stdlib/array/base/assert/contains").factory,Lf=Vr(),Nf=Pr(),_f=Rr(),c=v(),Fn=["grapheme","code_point","code_unit"],Of={grapheme:_f,code_point:Nf,code_unit:Lf},If=Rf(Fn);function Gf(r,i,t){var x,a,u,s;if(!Vf(r))throw new TypeError(c("invalid argument. First argument must be a string. Value: `%s`.",r));if(u={mode:"grapheme"},a=arguments.length,a===2)s=i,i=null;else if(a===3)en(i)?s=t:(s=i,i=null,x=t);else{if(!en(i))throw new TypeError(c("invalid argument. Options argument must be an object. Value: `%s`.",i));s=t,x=arguments[3]}if(!Sf(s))throw new TypeError(c("invalid argument. Callback argument must be a function. Value: `%s`.",s));if(i&&Pf(i,"mode")&&(u.mode=i.mode,!If(u.mode)))throw new TypeError(c('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",Fn.join('", "'),u.mode));return Of[u.mode](r,s,x),r}vn.exports=Gf});var Bn=n(function(Pm,ln){"use strict";var kf=Cn();ln.exports=kf});var Dn=n(function(Rm,pn){"use strict";var Mf=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Uf=require("@stdlib/assert/is-collection"),fn=v(),gn=require("@stdlib/constants/unicode/max"),zf=require("@stdlib/constants/unicode/max-bmp"),En=String.fromCharCode,Wf=65536,jf=55296,$f=56320,Hf=1023;function Zf(r){var i,t,x,a,u,s,e;if(i=arguments.length,i===1&&Uf(r))x=arguments[0],i=x.length;else for(x=[],e=0;egn)throw new RangeError(fn("invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.",gn,s));s<=zf?t+=En(s):(s-=Wf,u=(s>>10)+jf,a=(s&Hf)+$f,t+=En(u,a))}return t}pn.exports=Zf});var mn=n(function(Lm,An){"use strict";var Xf=Dn();An.exports=Xf});var qn=n(function(Nm,hn){"use strict";var Qf=require("@stdlib/assert/is-string").isPrimitive,Jf=v(),Yf=Nr();function Kf(r){if(!Qf(r))throw new TypeError(Jf("invalid argument. First argument must be a string. Value: `%s`.",r));return Yf(r)}hn.exports=Kf});var bn=n(function(_m,wn){"use strict";var of=qn();wn.exports=of});var Tn=n(function(Om,yn){"use strict";var cf=require("@stdlib/assert/is-string").isPrimitive,df=v(),rg=Or();function ig(r){if(!cf(r))throw new TypeError(df("invalid argument. Must provide a string. Value: `%s`.",r));return rg(r)}yn.exports=ig});var Vn=n(function(Im,Sn){"use strict";var xg=Tn();Sn.exports=xg});var Ln=n(function(Gm,Rn){"use strict";var tg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Pn=require("@stdlib/assert/is-string").isPrimitive,d=v(),ag=require("@stdlib/constants/float64/max-safe-integer"),ng=Gr();function ug(r,i,t){var x;if(!Pn(r))throw new TypeError(d("invalid argument. First argument must be a string. Value: `%s`.",r));if(!tg(i))throw new TypeError(d("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(x=t,!Pn(x))throw new TypeError(d("invalid argument. Third argument must be a string. Value: `%s`.",x));if(x.length===0)throw new RangeError("invalid argument. Third argument must not be an empty string.")}else x=" ";if(i>ag)throw new RangeError(d("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));return ng(r,i,x)}Rn.exports=ug});var i0=n(function(km,Nn){"use strict";var sg=Ln();Nn.exports=sg});var On=n(function(Mm,_n){"use strict";var eg=require("@stdlib/assert/is-string").isPrimitive,Fg=v(),vg=Mr();function Cg(r){if(!eg(r))throw new TypeError(Fg("invalid argument. Must provide a string. Value: `%s`.",r));return vg(r)}_n.exports=Cg});var Gn=n(function(Um,In){"use strict";var lg=On();In.exports=lg});var Un=n(function(zm,Mn){"use strict";var Bg=require("@stdlib/assert/is-string").isPrimitive,kn=h(),fg=v();function gg(r){var i,t,x;if(!Bg(r))throw new TypeError(fg("invalid argument. Must provide a string. Value: `%s`.",r));if(i=0,x=[],r.length===0)return x;for(t=kn(r,i);t!==-1;)x.push(r.substring(i,t)),i=t,t=kn(r,i);return x.push(r.substring(i)),x}Mn.exports=gg});var rr=n(function(Wm,zn){"use strict";var Eg=Un();zn.exports=Eg});var Hn=n(function(jm,$n){"use strict";var Wn=require("@stdlib/assert/is-string").isPrimitive,pg=rr(),Dg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Ag=require("@stdlib/assert/is-string-array").primitives,mg=P(),jn=require("@stdlib/utils/escape-regexp-string"),x0=v(),hg=" \f\n\r \v\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF";function qg(r,i,t){var x,a,u,s,e;if(!Wn(r))throw new TypeError(x0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Dg(i))throw new TypeError(x0("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(u=Wn(t),!u&&!Ag(t))throw new TypeError(x0("invalid argument. Third argument must be a string or an array of strings. Value: `%s`.",t));for(u&&(t=pg(t)),x=t.length-1,a="",e=0;e0&&(t+="-"+a1[x],x=0);else{for(a=3;a0&&(i+=" "),i+=t,ir(x,i)}n1.exports=ir});var v1=n(function(om,F1){"use strict";var Mg=require("@stdlib/assert/is-plain-object"),Ug=require("@stdlib/assert/has-own-property"),zg=require("@stdlib/utils/index-of"),s1=v(),e1=["en","de"];function Wg(r,i){return Mg(i)?Ug(i,"lang")&&(r.lang=i.lang,zg(e1,r.lang)===-1)?new TypeError(s1('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"lang",e1.join('", "'),r.lang)):null:new TypeError(s1("invalid argument. Options argument must be an object. Value: `%s`.",i))}F1.exports=Wg});var l1=n(function(cm,C1){"use strict";function jg(r,i){var t,x,a;for(x=r.length,t="",a=0;a1&&(a=Qg(x,i),a))throw a;if(Hg(r))switch(x.lang){case"de":return n0(r,"");case"en":default:return u0(r,"")}if(!Zg(r))switch(x.lang){case"de":return r<0?"minus unendlich":"unendlich";case"en":default:return r<0?"negative infinity":"infinity"}switch(t=r.toString().split("."),x.lang){case"de":return n0(t[0],"")+" Komma "+B1(t[1],n0);case"en":default:return u0(t[0],"")+" point "+B1(t[1],u0)}}f1.exports=Jg});var p1=n(function(r3,E1){"use strict";var Yg=g1();E1.exports=Yg});var m1=n(function(i3,A1){"use strict";var Kg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,og=require("@stdlib/assert/is-string").isPrimitive,D1=v(),cg=O();function dg(r,i){if(!og(r))throw new TypeError(D1("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Kg(i))throw new TypeError(D1("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));return cg(r,i)}A1.exports=dg});var s0=n(function(x3,h1){"use strict";var rE=m1();h1.exports=rE});var b1=n(function(t3,w1){"use strict";var iE=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,q1=require("@stdlib/assert/is-string").isPrimitive,xr=v(),xE=require("@stdlib/constants/float64/max-safe-integer"),tE=Xr();function aE(r,i,t){var x;if(!q1(r))throw new TypeError(xr("invalid argument. First argument must be a string. Value: `%s`.",r));if(!iE(i))throw new TypeError(xr("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(x=t,!q1(x))throw new TypeError(xr("invalid argument. Third argument must be a string. Value: `%s`.",x));if(x.length===0)throw new RangeError("invalid argument. Pad string must not be an empty string.")}else x=" ";if(i>xE)throw new RangeError(xr("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));return tE(r,i,x)}w1.exports=aE});var e0=n(function(a3,y1){"use strict";var nE=b1();y1.exports=nE});var V1=n(function(n3,S1){"use strict";var uE=require("@stdlib/assert/is-plain-object"),F0=require("@stdlib/assert/has-own-property"),T1=require("@stdlib/assert/is-string").isPrimitive,sE=require("@stdlib/assert/is-boolean").isPrimitive,tr=v();function eE(r,i){return uE(i)?F0(i,"lpad")&&(r.lpad=i.lpad,!T1(r.lpad))?new TypeError(tr("invalid option. `%s` option must be a string. Option: `%s`.","lpad",r.lpad)):F0(i,"rpad")&&(r.rpad=i.rpad,!T1(r.rpad))?new TypeError(tr("invalid option. `%s` option must be a string. Option: `%s`.","rpad",r.rpad)):F0(i,"centerRight")&&(r.centerRight=i.centerRight,!sE(r.centerRight))?new TypeError(tr("invalid option. `%s` option must be a boolean. Option: `%s`.","centerRight",r.centerRight)):null:new TypeError(tr("invalid argument. Options argument must be an object. Value: `%s`.",i))}S1.exports=eE});var O1=n(function(u3,_1){"use strict";var FE=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,vE=require("@stdlib/assert/is-string").isPrimitive,P1=s0(),ar=v(),R1=require("@stdlib/math/base/special/floor"),L1=require("@stdlib/math/base/special/ceil"),CE=i0(),N1=e0(),lE=require("@stdlib/math/base/special/abs"),BE=require("@stdlib/constants/float64/max-safe-integer"),fE=V1();function gE(r,i,t){var x,a,u,s,e,F,f,D,g;if(!vE(r))throw new TypeError(ar("invalid argument. First argument must be a string. Value: `%s`.",r));if(!FE(i))throw new TypeError(ar("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(i>BE)throw new RangeError(ar("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));if(F={},arguments.length>2&&(f=fE(F,t),f))throw f;if(F.lpad&&F.rpad)return g=(i-r.length)/2,g===0?r:(D=R1(g),D!==g&&(u=!0),g<0?(g=R1(lE(g)),a=g,x=r.length-g,u&&(F.centerRight?x-=1:a+=1),r.substring(a,x)):(a=L1(g/F.lpad.length),e=P1(F.lpad,a),x=L1(g/F.rpad.length),s=P1(F.rpad,x),g=D,a=g,x=g,u&&(F.centerRight?a+=1:x+=1),e=e.substring(0,a),s=s.substring(0,x),e+r+s));if(F.lpad)return D=CE(r,i,F.lpad),D.substring(D.length-i);if(F.rpad)return N1(r,i,F.rpad).substring(0,i);if(F.rpad===void 0)return N1(r,i," ").substring(0,i);throw new RangeError(ar("invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.",F.lpad,F.rpad))}_1.exports=gE});var G1=n(function(s3,I1){"use strict";var EE=O1();I1.exports=EE});var M1=n(function(e3,k1){"use strict";var pE=require("@stdlib/assert/is-string").isPrimitive,DE=v(),AE=Ur();function mE(r){if(!pE(r))throw new TypeError(DE("invalid argument. First argument must be a string. Value: `%s`.",r));return AE(r)}k1.exports=mE});var z1=n(function(F3,U1){"use strict";var hE=M1();U1.exports=hE});var j1=n(function(v3,W1){"use strict";var qE=require("@stdlib/assert/is-string").isPrimitive,wE=v(),bE=Wr();function yE(r){if(!qE(r))throw new TypeError(wE("invalid argument. Must provide a string. Value: `%s`.",r));return bE(r)}W1.exports=yE});var H1=n(function(C3,$1){"use strict";var TE=j1();$1.exports=TE});var K1=n(function(l3,Y1){"use strict";var SE=require("@stdlib/assert/is-string").isPrimitive,VE=require("@stdlib/assert/is-integer"),Z1=J(),PE=require("@stdlib/assert/has-utf16-surrogate-pair-at"),v0=yr(),X1=v(),RE=v0.breakType,Q1=v0.breakProperty,J1=v0.emojiProperty;function LE(r,i){var t,x,a,u,s,e,F;if(!SE(r))throw new TypeError(X1("invalid argument. First argument must be a string. Value: `%s`.",r));if(u=r.length,arguments.length>1){if(!VE(i))throw new TypeError(X1("invalid argument. Second argument must be an integer. Value: `%s`.",i));s=i}else s=u-1;if(u===0||s<=0)return-1;for(s>=u&&(s=u-1),t=[],x=[],e=Z1(r,0),t.push(Q1(e)),x.push(J1(e)),a=-1,F=1;F<=s;F++){if(PE(r,F-1)){a=F-2,t.length=0,x.length=0;continue}if(e=Z1(r,F),t.push(Q1(e)),x.push(J1(e)),RE(t,x)>0){a=F-1,t.length=0,x.length=0;continue}}return a}Y1.exports=LE});var C0=n(function(B3,o1){"use strict";var NE=K1();o1.exports=NE});var xu=n(function(f3,iu){"use strict";var _E=require("@stdlib/assert/is-string").isPrimitive,c1=require("@stdlib/assert/is-plain-object"),OE=require("@stdlib/assert/has-own-property"),IE=require("@stdlib/array/base/assert/contains").factory,d1=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,GE=jr(),kE=$r(),ME=Hr(),U=v(),ru=["grapheme","code_point","code_unit"],UE={grapheme:ME,code_point:kE,code_unit:GE},zE=IE(ru);function WE(r){var i,t,x,a;if(!_E(r))throw new TypeError(U("invalid argument. First argument must be a string. Value: `%s`.",r));if(x={mode:"grapheme"},t=arguments.length,t===1)a=1;else if(t===2){if(a=arguments[1],c1(a))i=a,a=1;else if(!d1(a))throw new TypeError(U("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a))}else{if(a=arguments[1],!d1(a))throw new TypeError(U("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a));if(i=arguments[2],!c1(i))throw new TypeError(U("invalid argument. Options argument must be an object. Value: `%s`.",i))}if(i&&OE(i,"mode")&&(x.mode=i.mode,!zE(x.mode)))throw new TypeError(U('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",ru.join('", "'),x.mode));return UE[x.mode](r,a)}iu.exports=WE});var au=n(function(g3,tu){"use strict";var jE=xu();tu.exports=jE});var uu=n(function(E3,nu){"use strict";function $E(r,i){return r.substring(0,r.length-i)}nu.exports=$E});var eu=n(function(p3,su){"use strict";var HE=uu();su.exports=HE});var vu=n(function(D3,Fu){"use strict";var ZE=/[\uDC00-\uDFFF]/,XE=/[\uD800-\uDBFF]/;function QE(r,i){var t,x,a,u,s;if(i===0)return r;for(t=r.length,u=0,s=t-1;s>=0;s--){if(x=r[s],u+=1,ZE.test(x)){if(s===0)break;a=r[s-1],XE.test(a)&&(s-=1)}if(u===i)break}return r.substring(0,s)}Fu.exports=QE});var lu=n(function(A3,Cu){"use strict";var JE=vu();Cu.exports=JE});var fu=n(function(m3,Bu){"use strict";var YE=h(),KE=G();function oE(r,i){var t,x,a;if(i===0)return r;if(t=KE(r),r===""||t2&&!Ap(t))throw new TypeError(B0("invalid argument. Third argument must be a boolean. Value: `%s`.",t));if(x=hp(r,!0),F=i.length,e=[],t){for(u=i.slice(),f=0;f=0;t--)i+=r[t];return i}zu.exports=Sp});var $u=n(function(_3,ju){"use strict";var Vp=Wu();ju.exports=Vp});var Zu=n(function(O3,Hu){"use strict";var Pp=/[\uDC00-\uDFFF]/,Rp=/[\uD800-\uDBFF]/;function Lp(r){var i,t,x,a,u;for(i=r.length,t="",u=0;u1&&(i=arguments[1],!kp(i)))throw new TypeError(E0("invalid argument. Options argument must be an object. Value: `%s`.",i));if(i&&Mp(i,"mode")&&(x.mode=i.mode,!Hp(x.mode)))throw new TypeError(E0('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",cu.join('", "'),x.mode));return $p[x.mode](r)}du.exports=Zp});var xs=n(function(U3,is){"use strict";var Xp=rs();is.exports=Xp});var as=n(function(z3,ts){"use strict";var Qp=require("@stdlib/assert/is-string").isPrimitive,Jp=v(),Yp=Jr();function Kp(r){if(!Qp(r))throw new TypeError(Jp("invalid argument. Must provide a string. Value: `%s`.",r));return Yp(r)}ts.exports=Kp});var us=n(function(W3,ns){"use strict";var op=as();ns.exports=op});var vs=n(function(j3,Fs){"use strict";var ss=require("@stdlib/assert/is-string").isPrimitive,cp=rr(),dp=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,rD=require("@stdlib/assert/is-string-array").primitives,iD=P(),es=require("@stdlib/utils/escape-regexp-string"),p0=v(),xD=" \f\n\r \v\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF";function tD(r,i,t){var x,a,u,s,e;if(!ss(r))throw new TypeError(p0("invalid argument. Must provide a string. Value: `%s`.",r));if(!dp(i))throw new TypeError(p0("invalid argument. Must provide a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(u=ss(t),!u&&!rD(t))throw new TypeError(p0("invalid argument. Must provide a string or an array of strings. Value: `%s`.",t));for(u&&(t=cp(t)),x=t.length-1,a="",e=0;e2){if(!gD(t))throw new TypeError(D0("invalid argument. Third argument must be an integer. Value: `%s`.",t));x=t}else x=0;return ED(r,i,x)}qs.exports=pD});var ys=n(function(Y3,bs){"use strict";var DD=ws();bs.exports=DD});var Vs=n(function(K3,Ss){"use strict";var Ts=require("@stdlib/assert/is-string").isPrimitive,AD=require("@stdlib/assert/is-integer").isPrimitive,A0=v();function mD(r,i,t){var x;if(!Ts(r))throw new TypeError(A0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Ts(i))throw new TypeError(A0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!AD(t))throw new TypeError(A0("invalid argument. Third argument must be an integer. Value: `%s`.",t));x=r.indexOf(i,t)}else x=r.indexOf(i);return x===-1?"":r.substring(x+i.length)}Ss.exports=mD});var Rs=n(function(o3,Ps){"use strict";var hD=Vs();Ps.exports=hD});var _s=n(function(c3,Ns){"use strict";var qD=require("@stdlib/assert/is-integer").isPrimitive,Ls=require("@stdlib/assert/is-string").isPrimitive,m0=v();function wD(r,i,t){var x;if(!Ls(r))throw new TypeError(m0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Ls(i))throw new TypeError(m0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!qD(t))throw new TypeError(m0("invalid argument. Third argument must be a nonnegative integer. Value: `%s`.",t));x=r.lastIndexOf(i,t)}else x=r.lastIndexOf(i);return x===-1?"":r.substring(x+i.length)}Ns.exports=wD});var Is=n(function(d3,Os){"use strict";var bD=_s();Os.exports=bD});var Us=n(function(r6,Ms){"use strict";var Gs=require("@stdlib/assert/is-string").isPrimitive,ks=v();function yD(r,i){var t;if(!Gs(r))throw new TypeError(ks("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Gs(i))throw new TypeError(ks("invalid argument. Second argument must be a string. Value: `%s`.",i));return t=r.indexOf(i),t===-1?r:r.substring(0,t)}Ms.exports=yD});var Ws=n(function(i6,zs){"use strict";var TD=Us();zs.exports=TD});var Zs=n(function(x6,Hs){"use strict";var js=require("@stdlib/assert/is-string").isPrimitive,$s=v();function SD(r,i){var t;if(!js(r))throw new TypeError($s("invalid argument. First argument must be a string. Value: `%s`.",r));if(!js(i))throw new TypeError($s("invalid argument. Second argument must be a string. Value: `%s`.",i));return t=r.lastIndexOf(i),t===-1?r:r.substring(0,t)}Hs.exports=SD});var Qs=n(function(t6,Xs){"use strict";var VD=Zs();Xs.exports=VD});var cs=n(function(a6,os){"use strict";var nr=require("@stdlib/utils/define-nonenumerable-read-only-property"),PD=require("@stdlib/assert/is-function"),RD=require("@stdlib/assert/is-string").isPrimitive,Js=require("@stdlib/symbol/iterator"),Ys=h(),Ks=v();function h0(r){var i,t,x,a,u;if(!RD(r))throw new TypeError(Ks("invalid argument. First argument must be astring. Value: `%s`.",r));if(arguments.length>1){if(a=arguments[1],!PD(a))throw new TypeError(Ks("invalid argument. Second argument must be a function. Value: `%s`.",a));i=arguments[2]}return u=0,t={},a?nr(t,"next",s):nr(t,"next",e),nr(t,"return",F),Js&&nr(t,Js,f),t;function s(){var D,g;return x?{done:!0}:(g=Ys(r,u),g===-1?(x=!0,r.length?{value:a.call(i,r.substring(u),u,r),done:!1}:{done:!0}):(D=a.call(i,r.substring(u,g),u,r),u=g,{value:D,done:!1}))}function e(){var D,g;return x?{done:!0}:(g=Ys(r,u),g===-1?(x=!0,r.length?{value:r.substring(u),done:!1}:{done:!0}):(D=r.substring(u,g),u=g,{value:D,done:!1}))}function F(D){return x=!0,arguments.length?{value:D,done:!0}:{done:!0}}function f(){return a?h0(r,a,i):h0(r)}}os.exports=h0});var re=n(function(n6,ds){"use strict";var LD=cs();ds.exports=LD});var ne=n(function(u6,ae){"use strict";var ur=require("@stdlib/utils/define-nonenumerable-read-only-property"),ND=require("@stdlib/assert/is-function"),_D=require("@stdlib/assert/is-string").isPrimitive,ie=require("@stdlib/symbol/iterator"),xe=C0(),te=v();function q0(r){var i,t,x,a,u;if(!_D(r))throw new TypeError(te("invalid argument. First argument must be astring. Value: `%s`.",r));if(arguments.length>1){if(a=arguments[1],!ND(a))throw new TypeError(te("invalid argument. Second argument must be a function. Value: `%s`.",a));i=arguments[2]}return u=r.length-1,t={},a?ur(t,"next",s):ur(t,"next",e),ur(t,"return",F),ie&&ur(t,ie,f),t;function s(){var D,g;return x?{done:!0}:(g=xe(r,u),g===-1?(x=!0,r.length?{value:a.call(i,r.substring(g+1,u+1),g+1,r),done:!1}:{done:!0}):(D=a.call(i,r.substring(g+1,u+1),g+1,r),u=g,{value:D,done:!1}))}function e(){var D,g;return x?{done:!0}:(g=xe(r,u),g===-1?(x=!0,r.length?{value:r.substring(g+1,u+1),done:!1}:{done:!0}):(D=r.substring(g+1,u+1),u=g,{value:D,done:!1}))}function F(D){return x=!0,arguments.length?{value:D,done:!0}:{done:!0}}function f(){return a?q0(r,a,i):q0(r)}}ae.exports=q0});var se=n(function(s6,ue){"use strict";var OD=ne();ue.exports=OD});var Fe=n(function(e6,ee){"use strict";var ID=require("@stdlib/assert/is-string").isPrimitive,GD=v(),kD=w();function MD(r){if(!ID(r))throw new TypeError(GD("invalid argument. Must provide a string. Value: `%s`.",r));return kD(r)}ee.exports=MD});var Ce=n(function(F6,ve){"use strict";var UD=Fe();ve.exports=UD});var ge=n(function(v6,fe){"use strict";var le=require("@stdlib/assert/is-string").isPrimitive,zD=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Be=G(),WD=h(),w0=v();function jD(r,i,t){var x,a,u,s;if(!le(r))throw new TypeError(w0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!zD(i))throw new TypeError(w0("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2&&!le(t))throw new TypeError(w0("invalid argument. Third argument must be a string. Value: `%s`.",t));if(t=t||"...",x=Be(t),a=0,i>Be(r))return r;if(i-x<0)return t.slice(0,i);for(u=0;u2&&!De(t))throw new TypeError(b0("invalid argument. Third argument must be a string. Value: `%s`.",t));if(t=t||"...",x=Ae(t),u=Ae(r),a=0,i>u)return r;if(i-x<0)return t.slice(0,i);for(s=ZD((i-x)/2),F=u-XD((i-x)/2),e=0;e0&&(f=me(r,a),!(f>=F+a-e));)a=f,e+=1;return r.substring(0,D)+t+r.substring(f)}he.exports=QD});var be=n(function(B6,we){"use strict";var JD=qe();we.exports=JD});var Te=n(function(f6,ye){"use strict";var YD=require("@stdlib/assert/is-string").isPrimitive,KD=v(),oD=dr();function cD(r){if(!YD(r))throw new TypeError(KD("invalid argument. First argument must be a string. Value: `%s`.",r));return oD(r)}ye.exports=cD});var Ve=n(function(g6,Se){"use strict";var dD=Te();Se.exports=dD});var l=require("@stdlib/utils/define-read-only-property"),C={};l(C,"acronym",mi());l(C,"base",Na());l(C,"camelcase",Ga());l(C,"capitalize",za());l(C,"codePointAt",J());l(C,"constantcase",Ha());l(C,"dotcase",Ja());l(C,"endsWith",da());l(C,"first",sn());l(C,"forEach",Bn());l(C,"format",v());l(C,"fromCodePoint",mn());l(C,"headercase",bn());l(C,"kebabcase",Vn());l(C,"lpad",i0());l(C,"ltrim",Gn());l(C,"ltrimN",Xn());l(C,"lowercase",Kn());l(C,"nextGraphemeClusterBreak",h());l(C,"numGraphemeClusters",G());l(C,"num2words",p1());l(C,"pad",G1());l(C,"pascalcase",z1());l(C,"percentEncode",H1());l(C,"prevGraphemeClusterBreak",C0());l(C,"removeFirst",au());l(C,"removeLast",wu());l(C,"removePunctuation",Br());l(C,"removeUTF8BOM",Su());l(C,"removeWords",Iu());l(C,"repeat",s0());l(C,"replace",P());l(C,"replaceBefore",Uu());l(C,"reverseString",xs());l(C,"rpad",e0());l(C,"rtrim",us());l(C,"rtrimN",ls());l(C,"snakecase",Es());l(C,"splitGraphemeClusters",rr());l(C,"startcase",ms());l(C,"startsWith",ys());l(C,"substringAfter",Rs());l(C,"substringAfterLast",Is());l(C,"substringBefore",Ws());l(C,"substringBeforeLast",Qs());l(C,"graphemeClusters2iterator",re());l(C,"graphemeClusters2iteratorRight",se());l(C,"trim",Ce());l(C,"truncate",pe());l(C,"truncateMiddle",be());l(C,"uncapitalize",Ve());l(C,"uppercase",l0());l(C,"utf16ToUTF8Array",zr());module.exports=C; /** * @license Apache-2.0 * diff --git a/dist/index.js.map b/dist/index.js.map index ab8df490..636c150e 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../base/format-interpolate/lib/is_number.js", "../base/format-interpolate/lib/zero_pad.js", "../base/format-interpolate/lib/format_integer.js", "../base/format-interpolate/lib/is_string.js", "../base/format-interpolate/lib/format_double.js", "../base/format-interpolate/lib/space_pad.js", "../base/format-interpolate/lib/main.js", "../base/format-interpolate/lib/index.js", "../base/format-tokenize/lib/main.js", "../base/format-tokenize/lib/index.js", "../format/lib/is_string.js", "../format/lib/main.js", "../format/lib/index.js", "../base/replace/lib/main.js", "../base/replace/lib/index.js", "../replace/lib/main.js", "../replace/lib/index.js", "../remove-punctuation/lib/main.js", "../remove-punctuation/lib/index.js", "../base/uppercase/lib/main.js", "../base/uppercase/lib/index.js", "../base/lowercase/lib/main.js", "../base/lowercase/lib/index.js", "../acronym/lib/validate.js", "../acronym/lib/stopwords.json", "../acronym/lib/main.js", "../acronym/lib/index.js", "../base/capitalize/lib/main.js", "../base/capitalize/lib/index.js", "../base/trim/lib/has_builtin.js", "../base/trim/lib/builtin.js", "../base/trim/lib/check.js", "../base/trim/lib/polyfill.js", "../base/trim/lib/main.js", "../base/trim/lib/index.js", "../base/camelcase/lib/main.js", "../base/camelcase/lib/index.js", "../base/code-point-at/lib/main.js", "../base/code-point-at/lib/index.js", "../base/constantcase/lib/main.js", "../base/constantcase/lib/index.js", "../base/distances/levenshtein/lib/main.js", "../base/distances/levenshtein/lib/index.js", "../base/distances/lib/index.js", "../base/dotcase/lib/main.js", "../base/dotcase/lib/index.js", "../base/ends-with/lib/has_builtin.js", "../base/ends-with/lib/polyfill.js", "../base/ends-with/lib/builtin.js", "../base/ends-with/lib/main.js", "../base/ends-with/lib/index.js", "../base/first/lib/main.js", "../base/first/lib/index.js", "../base/first-code-point/lib/main.js", "../base/first-code-point/lib/index.js", "../code-point-at/lib/main.js", "../code-point-at/lib/index.js", "../tools/grapheme-cluster-break/lib/constants.js", "../tools/grapheme-cluster-break/lib/break_type.js", "../tools/grapheme-cluster-break/lib/emoji_property.js", "../tools/grapheme-cluster-break/lib/break_property.js", "../tools/grapheme-cluster-break/lib/index.js", "../next-grapheme-cluster-break/lib/main.js", "../next-grapheme-cluster-break/lib/index.js", "../base/first-grapheme-cluster/lib/main.js", "../base/first-grapheme-cluster/lib/index.js", "../base/for-each/lib/main.js", "../base/for-each/lib/index.js", "../base/for-each-code-point/lib/main.js", "../base/for-each-code-point/lib/index.js", "../base/for-each-grapheme-cluster/lib/main.js", "../base/for-each-grapheme-cluster/lib/index.js", "../base/startcase/lib/main.js", "../base/startcase/lib/index.js", "../base/headercase/lib/main.js", "../base/headercase/lib/index.js", "../base/invcase/lib/main.js", "../base/invcase/lib/index.js", "../base/kebabcase/lib/main.js", "../base/kebabcase/lib/index.js", "../base/repeat/lib/has_builtin.js", "../base/repeat/lib/polyfill.js", "../base/repeat/lib/builtin.js", "../base/repeat/lib/main.js", "../base/repeat/lib/index.js", "../base/left-pad/lib/main.js", "../base/left-pad/lib/index.js", "../base/left-trim/lib/has_builtin.js", "../base/left-trim/lib/polyfill.js", "../base/left-trim/lib/builtin.js", "../base/left-trim/lib/main.js", "../base/left-trim/lib/index.js", "../base/pascalcase/lib/main.js", "../base/pascalcase/lib/index.js", "../utf16-to-utf8-array/lib/main.js", "../utf16-to-utf8-array/lib/index.js", "../base/percent-encode/lib/main.js", "../base/percent-encode/lib/index.js", "../base/remove-first/lib/main.js", "../base/remove-first/lib/index.js", "../base/remove-first-code-point/lib/main.js", "../base/remove-first-code-point/lib/index.js", "../base/remove-first-grapheme-cluster/lib/main.js", "../base/remove-first-grapheme-cluster/lib/index.js", "../base/replace-before/lib/main.js", "../base/replace-before/lib/index.js", "../base/right-pad/lib/main.js", "../base/right-pad/lib/index.js", "../base/right-trim/lib/has_builtin.js", "../base/right-trim/lib/polyfill.js", "../base/right-trim/lib/builtin.js", "../base/right-trim/lib/main.js", "../base/right-trim/lib/index.js", "../base/snakecase/lib/main.js", "../base/snakecase/lib/index.js", "../base/starts-with/lib/has_builtin.js", "../base/starts-with/lib/polyfill.js", "../base/starts-with/lib/builtin.js", "../base/starts-with/lib/main.js", "../base/starts-with/lib/index.js", "../base/uncapitalize/lib/main.js", "../base/uncapitalize/lib/index.js", "../base/lib/index.js", "../camelcase/lib/main.js", "../camelcase/lib/index.js", "../capitalize/lib/main.js", "../capitalize/lib/index.js", "../constantcase/lib/main.js", "../constantcase/lib/index.js", "../dotcase/lib/main.js", "../dotcase/lib/index.js", "../ends-with/lib/main.js", "../ends-with/lib/index.js", "../first/lib/main.js", "../first/lib/index.js", "../for-each/lib/main.js", "../for-each/lib/index.js", "../from-code-point/lib/main.js", "../from-code-point/lib/index.js", "../headercase/lib/main.js", "../headercase/lib/index.js", "../kebabcase/lib/main.js", "../kebabcase/lib/index.js", "../left-pad/lib/main.js", "../left-pad/lib/index.js", "../left-trim/lib/main.js", "../left-trim/lib/index.js", "../split-grapheme-clusters/lib/main.js", "../split-grapheme-clusters/lib/index.js", "../left-trim-n/lib/main.js", "../left-trim-n/lib/index.js", "../lowercase/lib/main.js", "../lowercase/lib/index.js", "../num-grapheme-clusters/lib/main.js", "../num-grapheme-clusters/lib/index.js", "../num2words/lib/units.json", "../num2words/lib/int2words_de.js", "../num2words/lib/int2words_en.js", "../num2words/lib/validate.js", "../num2words/lib/decimals.js", "../num2words/lib/main.js", "../num2words/lib/index.js", "../repeat/lib/main.js", "../repeat/lib/index.js", "../right-pad/lib/main.js", "../right-pad/lib/index.js", "../pad/lib/validate.js", "../pad/lib/main.js", "../pad/lib/index.js", "../pascalcase/lib/main.js", "../pascalcase/lib/index.js", "../percent-encode/lib/main.js", "../percent-encode/lib/index.js", "../prev-grapheme-cluster-break/lib/main.js", "../prev-grapheme-cluster-break/lib/index.js", "../remove-first/lib/main.js", "../remove-first/lib/index.js", "../base/remove-last/lib/main.js", "../base/remove-last/lib/index.js", "../base/remove-last-code-point/lib/main.js", "../base/remove-last-code-point/lib/index.js", "../base/remove-last-grapheme-cluster/lib/main.js", "../base/remove-last-grapheme-cluster/lib/index.js", "../remove-last/lib/main.js", "../remove-last/lib/index.js", "../remove-utf8-bom/lib/main.js", "../remove-utf8-bom/lib/index.js", "../uppercase/lib/main.js", "../uppercase/lib/index.js", "../remove-words/lib/main.js", "../remove-words/lib/index.js", "../replace-before/lib/main.js", "../replace-before/lib/index.js", "../base/reverse/lib/main.js", "../base/reverse/lib/index.js", "../base/reverse-code-points/lib/main.js", "../base/reverse-code-points/lib/index.js", "../base/reverse-grapheme-clusters/lib/main.js", "../base/reverse-grapheme-clusters/lib/index.js", "../reverse/lib/main.js", "../reverse/lib/index.js", "../right-trim/lib/main.js", "../right-trim/lib/index.js", "../right-trim-n/lib/main.js", "../right-trim-n/lib/index.js", "../snakecase/lib/main.js", "../snakecase/lib/index.js", "../startcase/lib/main.js", "../startcase/lib/index.js", "../starts-with/lib/main.js", "../starts-with/lib/index.js", "../substring-after/lib/main.js", "../substring-after/lib/index.js", "../substring-after-last/lib/main.js", "../substring-after-last/lib/index.js", "../substring-before/lib/main.js", "../substring-before/lib/index.js", "../substring-before-last/lib/main.js", "../substring-before-last/lib/index.js", "../to-grapheme-cluster-iterator/lib/main.js", "../to-grapheme-cluster-iterator/lib/index.js", "../to-grapheme-cluster-iterator-right/lib/main.js", "../to-grapheme-cluster-iterator-right/lib/index.js", "../trim/lib/main.js", "../trim/lib/index.js", "../truncate/lib/main.js", "../truncate/lib/index.js", "../truncate-middle/lib/main.js", "../truncate-middle/lib/index.js", "../uncapitalize/lib/main.js", "../uncapitalize/lib/index.js", "../lib/index.js"], - "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a number primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a number primitive\n*\n* @example\n* var bool = isNumber( 3.14 );\n* // returns true\n*\n* @example\n* var bool = isNumber( NaN );\n* // returns true\n*\n* @example\n* var bool = isNumber( new Number( 3.14 ) );\n* // returns false\n*/\nfunction isNumber( value ) {\n\treturn ( typeof value === 'number' ); // NOTE: we inline the `isNumber.isPrimitive` function from `@stdlib/assert/is-number` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Tests if a string starts with a minus sign (`-`).\n*\n* @private\n* @param {string} str - input string\n* @returns {boolean} boolean indicating if a string starts with a minus sign (`-`)\n*/\nfunction startsWithMinus( str ) {\n\treturn str[ 0 ] === '-';\n}\n\n/**\n* Returns a string of `n` zeros.\n*\n* @private\n* @param {number} n - number of zeros\n* @returns {string} string of zeros\n*/\nfunction zeros( n ) {\n\tvar out = '';\n\tvar i;\n\tfor ( i = 0; i < n; i++ ) {\n\t\tout += '0';\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Pads a token with zeros to the specified width.\n*\n* @private\n* @param {string} str - token argument\n* @param {number} width - token width\n* @param {boolean} [right=false] - boolean indicating whether to pad to the right\n* @returns {string} padded token argument\n*/\nfunction zeroPad( str, width, right ) {\n\tvar negative = false;\n\tvar pad = width - str.length;\n\tif ( pad < 0 ) {\n\t\treturn str;\n\t}\n\tif ( startsWithMinus( str ) ) {\n\t\tnegative = true;\n\t\tstr = str.substr( 1 );\n\t}\n\tstr = ( right ) ?\n\t\tstr + zeros( pad ) :\n\t\tzeros( pad ) + str;\n\tif ( negative ) {\n\t\tstr = '-' + str;\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeroPad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( './is_number.js' );\nvar zeroPad = require( './zero_pad.js' );\n\n// NOTE: for the following, we explicitly avoid using stdlib packages in this particular package in order to avoid circular dependencies.\nvar lowercase = String.prototype.toLowerCase;\nvar uppercase = String.prototype.toUpperCase;\n\n\n// MAIN //\n\n/**\n* Formats a token object argument as an integer.\n*\n* @private\n* @param {Object} token - token object\n* @throws {Error} must provide a valid integer\n* @returns {string} formatted token argument\n*/\nfunction formatInteger( token ) {\n\tvar base;\n\tvar out;\n\tvar i;\n\n\tswitch ( token.specifier ) {\n\tcase 'b':\n\t\t// Case: %b (binary)\n\t\tbase = 2;\n\t\tbreak;\n\tcase 'o':\n\t\t// Case: %o (octal)\n\t\tbase = 8;\n\t\tbreak;\n\tcase 'x':\n\tcase 'X':\n\t\t// Case: %x, %X (hexadecimal)\n\t\tbase = 16;\n\t\tbreak;\n\tcase 'd':\n\tcase 'i':\n\tcase 'u':\n\tdefault:\n\t\t// Case: %d, %i, %u (decimal)\n\t\tbase = 10;\n\t\tbreak;\n\t}\n\tout = token.arg;\n\ti = parseInt( out, 10 );\n\tif ( !isFinite( i ) ) { // NOTE: We use the global `isFinite` function here instead of `@stdlib/math/base/assert/is-finite` in order to avoid circular dependencies.\n\t\tif ( !isNumber( out ) ) {\n\t\t\tthrow new Error( 'invalid integer. Value: ' + out );\n\t\t}\n\t\ti = 0;\n\t}\n\tif ( i < 0 && ( token.specifier === 'u' || base !== 10 ) ) {\n\t\ti = 0xffffffff + i + 1;\n\t}\n\tif ( i < 0 ) {\n\t\tout = ( -i ).toString( base );\n\t\tif ( token.precision ) {\n\t\t\tout = zeroPad( out, token.precision, token.padRight );\n\t\t}\n\t\tout = '-' + out;\n\t} else {\n\t\tout = i.toString( base );\n\t\tif ( !i && !token.precision ) {\n\t\t\tout = '';\n\t\t} else if ( token.precision ) {\n\t\t\tout = zeroPad( out, token.precision, token.padRight );\n\t\t}\n\t\tif ( token.sign ) {\n\t\t\tout = token.sign + out;\n\t\t}\n\t}\n\tif ( base === 16 ) {\n\t\tif ( token.alternate ) {\n\t\t\tout = '0x' + out;\n\t\t}\n\t\tout = ( token.specifier === uppercase.call( token.specifier ) ) ?\n\t\t\tuppercase.call( out ) :\n\t\t\tlowercase.call( out );\n\t}\n\tif ( base === 8 ) {\n\t\tif ( token.alternate && out.charAt( 0 ) !== '0' ) {\n\t\t\tout = '0' + out;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatInteger;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a string primitive\n*\n* @example\n* var bool = isString( 'beep' );\n* // returns true\n*\n* @example\n* var bool = isString( new String( 'beep' ) );\n* // returns false\n*/\nfunction isString( value ) {\n\treturn ( typeof value === 'string' ); // NOTE: we inline the `isString.isPrimitive` function from `@stdlib/assert/is-string` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( './is_number.js' );\n\n// NOTE: for the following, we explicitly avoid using stdlib packages in this particular package in order to avoid circular dependencies.\nvar abs = Math.abs; // eslint-disable-line stdlib/no-builtin-math\nvar lowercase = String.prototype.toLowerCase;\nvar uppercase = String.prototype.toUpperCase;\nvar replace = String.prototype.replace;\n\n\n// VARIABLES //\n\nvar RE_EXP_POS_DIGITS = /e\\+(\\d)$/;\nvar RE_EXP_NEG_DIGITS = /e-(\\d)$/;\nvar RE_ONLY_DIGITS = /^(\\d+)$/;\nvar RE_DIGITS_BEFORE_EXP = /^(\\d+)e/;\nvar RE_TRAILING_PERIOD_ZERO = /\\.0$/;\nvar RE_PERIOD_ZERO_EXP = /\\.0*e/;\nvar RE_ZERO_BEFORE_EXP = /(\\..*[^0])0*e/;\n\n\n// MAIN //\n\n/**\n* Formats a token object argument as a floating-point number.\n*\n* @private\n* @param {Object} token - token object\n* @throws {Error} must provide a valid floating-point number\n* @returns {string} formatted token argument\n*/\nfunction formatDouble( token ) {\n\tvar digits;\n\tvar out;\n\tvar f = parseFloat( token.arg );\n\tif ( !isFinite( f ) ) { // NOTE: We use the global `isFinite` function here instead of `@stdlib/math/base/assert/is-finite` in order to avoid circular dependencies.\n\t\tif ( !isNumber( token.arg ) ) {\n\t\t\tthrow new Error( 'invalid floating-point number. Value: ' + out );\n\t\t}\n\t\t// Case: NaN, Infinity, or -Infinity\n\t\tf = token.arg;\n\t}\n\tswitch ( token.specifier ) {\n\tcase 'e':\n\tcase 'E':\n\t\tout = f.toExponential( token.precision );\n\t\tbreak;\n\tcase 'f':\n\tcase 'F':\n\t\tout = f.toFixed( token.precision );\n\t\tbreak;\n\tcase 'g':\n\tcase 'G':\n\t\tif ( abs( f ) < 0.0001 ) {\n\t\t\tdigits = token.precision;\n\t\t\tif ( digits > 0 ) {\n\t\t\t\tdigits -= 1;\n\t\t\t}\n\t\t\tout = f.toExponential( digits );\n\t\t} else {\n\t\t\tout = f.toPrecision( token.precision );\n\t\t}\n\t\tif ( !token.alternate ) {\n\t\t\tout = replace.call( out, RE_ZERO_BEFORE_EXP, '$1e' );\n\t\t\tout = replace.call( out, RE_PERIOD_ZERO_EXP, 'e');\n\t\t\tout = replace.call( out, RE_TRAILING_PERIOD_ZERO, '' );\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tthrow new Error( 'invalid double notation. Value: ' + token.specifier );\n\t}\n\tout = replace.call( out, RE_EXP_POS_DIGITS, 'e+0$1' );\n\tout = replace.call( out, RE_EXP_NEG_DIGITS, 'e-0$1' );\n\tif ( token.alternate ) {\n\t\tout = replace.call( out, RE_ONLY_DIGITS, '$1.' );\n\t\tout = replace.call( out, RE_DIGITS_BEFORE_EXP, '$1.e' );\n\t}\n\tif ( f >= 0 && token.sign ) {\n\t\tout = token.sign + out;\n\t}\n\tout = ( token.specifier === uppercase.call( token.specifier ) ) ?\n\t\tuppercase.call( out ) :\n\t\tlowercase.call( out );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatDouble;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Returns `n` spaces.\n*\n* @private\n* @param {number} n - number of spaces\n* @returns {string} string of spaces\n*/\nfunction spaces( n ) {\n\tvar out = '';\n\tvar i;\n\tfor ( i = 0; i < n; i++ ) {\n\t\tout += ' ';\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Pads a token with spaces to the specified width.\n*\n* @private\n* @param {string} str - token argument\n* @param {number} width - token width\n* @param {boolean} [right=false] - boolean indicating whether to pad to the right\n* @returns {string} padded token argument\n*/\nfunction spacePad( str, width, right ) {\n\tvar pad = width - str.length;\n\tif ( pad < 0 ) {\n\t\treturn str;\n\t}\n\tstr = ( right ) ?\n\t\tstr + spaces( pad ) :\n\t\tspaces( pad ) + str;\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = spacePad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar formatInteger = require( './format_integer.js' );\nvar isString = require( './is_string.js' );\nvar formatDouble = require( './format_double.js' );\nvar spacePad = require( './space_pad.js' );\nvar zeroPad = require( './zero_pad.js' );\n\n\n// VARIABLES //\n\nvar fromCharCode = String.fromCharCode;\nvar isnan = isNaN; // NOTE: We use the global `isNaN` function here instead of `@stdlib/math/base/assert/is-nan` to avoid circular dependencies.\nvar isArray = Array.isArray; // NOTE: We use the global `Array.isArray` function here instead of `@stdlib/assert/is-array` to avoid circular dependencies.\n\n\n// FUNCTIONS //\n\n/**\n* Initializes token object with properties of supplied format identifier object or default values if not present.\n*\n* @private\n* @param {Object} token - format identifier object\n* @returns {Object} token object\n*/\nfunction initialize( token ) {\n\tvar out = {};\n\tout.specifier = token.specifier;\n\tout.precision = ( token.precision === void 0 ) ? 1 : token.precision;\n\tout.width = token.width;\n\tout.flags = token.flags || '';\n\tout.mapping = token.mapping;\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Generates string from a token array by interpolating values.\n*\n* @param {Array} tokens - string parts and format identifier objects\n* @param {Array} ...args - variable values\n* @throws {TypeError} first argument must be an array\n* @throws {Error} invalid flags\n* @returns {string} formatted string\n*\n* @example\n* var tokens = [ 'beep ', { 'specifier': 's' } ];\n* var out = formatInterpolate( tokens, 'boop' );\n* // returns 'beep boop'\n*/\nfunction formatInterpolate( tokens ) {\n\tvar hasPeriod;\n\tvar flags;\n\tvar token;\n\tvar flag;\n\tvar num;\n\tvar out;\n\tvar pos;\n\tvar i;\n\tvar j;\n\n\tif ( !isArray( tokens ) ) {\n\t\tthrow new TypeError( 'invalid argument. First argument must be an array. Value: `' + tokens + '`.' );\n\t}\n\tout = '';\n\tpos = 1;\n\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\ttoken = tokens[ i ];\n\t\tif ( isString( token ) ) {\n\t\t\tout += token;\n\t\t} else {\n\t\t\thasPeriod = token.precision !== void 0;\n\t\t\ttoken = initialize( token );\n\t\t\tif ( !token.specifier ) {\n\t\t\t\tthrow new TypeError( 'invalid argument. Token is missing `specifier` property. Index: `'+ i +'`. Value: `' + token + '`.' );\n\t\t\t}\n\t\t\tif ( token.mapping ) {\n\t\t\t\tpos = token.mapping;\n\t\t\t}\n\t\t\tflags = token.flags;\n\t\t\tfor ( j = 0; j < flags.length; j++ ) {\n\t\t\t\tflag = flags.charAt( j );\n\t\t\t\tswitch ( flag ) {\n\t\t\t\tcase ' ':\n\t\t\t\t\ttoken.sign = ' ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '+':\n\t\t\t\t\ttoken.sign = '+';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '-':\n\t\t\t\t\ttoken.padRight = true;\n\t\t\t\t\ttoken.padZeros = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '0':\n\t\t\t\t\ttoken.padZeros = flags.indexOf( '-' ) < 0; // NOTE: We use built-in `Array.prototype.indexOf` here instead of `@stdlib/assert/contains` in order to avoid circular dependencies.\n\t\t\t\t\tbreak;\n\t\t\t\tcase '#':\n\t\t\t\t\ttoken.alternate = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'invalid flag: ' + flag );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( token.width === '*' ) {\n\t\t\t\ttoken.width = parseInt( arguments[ pos ], 10 );\n\t\t\t\tpos += 1;\n\t\t\t\tif ( isnan( token.width ) ) {\n\t\t\t\t\tthrow new TypeError( 'the argument for * width at position ' + pos + ' is not a number. Value: `' + token.width + '`.' );\n\t\t\t\t}\n\t\t\t\tif ( token.width < 0 ) {\n\t\t\t\t\ttoken.padRight = true;\n\t\t\t\t\ttoken.width = -token.width;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( hasPeriod ) {\n\t\t\t\tif ( token.precision === '*' ) {\n\t\t\t\t\ttoken.precision = parseInt( arguments[ pos ], 10 );\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tif ( isnan( token.precision ) ) {\n\t\t\t\t\t\tthrow new TypeError( 'the argument for * precision at position ' + pos + ' is not a number. Value: `' + token.precision + '`.' );\n\t\t\t\t\t}\n\t\t\t\t\tif ( token.precision < 0 ) {\n\t\t\t\t\t\ttoken.precision = 1;\n\t\t\t\t\t\thasPeriod = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken.arg = arguments[ pos ];\n\t\t\tswitch ( token.specifier ) {\n\t\t\tcase 'b':\n\t\t\tcase 'o':\n\t\t\tcase 'x':\n\t\t\tcase 'X':\n\t\t\tcase 'd':\n\t\t\tcase 'i':\n\t\t\tcase 'u':\n\t\t\t\t// Case: %b (binary), %o (octal), %x, %X (hexadecimal), %d, %i (decimal), %u (unsigned decimal)\n\t\t\t\tif ( hasPeriod ) {\n\t\t\t\t\ttoken.padZeros = false;\n\t\t\t\t}\n\t\t\t\ttoken.arg = formatInteger( token );\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\t// Case: %s (string)\n\t\t\t\ttoken.maxWidth = ( hasPeriod ) ? token.precision : -1;\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\t// Case: %c (character)\n\t\t\t\tif ( !isnan( token.arg ) ) {\n\t\t\t\t\tnum = parseInt( token.arg, 10 );\n\t\t\t\t\tif ( num < 0 || num > 127 ) {\n\t\t\t\t\t\tthrow new Error( 'invalid character code. Value: ' + token.arg );\n\t\t\t\t\t}\n\t\t\t\t\ttoken.arg = ( isnan( num ) ) ?\n\t\t\t\t\t\tString( token.arg ) :\n\t\t\t\t\t\tfromCharCode( num );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'e':\n\t\t\tcase 'E':\n\t\t\tcase 'f':\n\t\t\tcase 'F':\n\t\t\tcase 'g':\n\t\t\tcase 'G':\n\t\t\t\t// Case: %e, %E (scientific notation), %f, %F (decimal floating point), %g, %G (uses the shorter of %e/E or %f/F)\n\t\t\t\tif ( !hasPeriod ) {\n\t\t\t\t\ttoken.precision = 6;\n\t\t\t\t}\n\t\t\t\ttoken.arg = formatDouble( token );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'invalid specifier: ' + token.specifier );\n\t\t\t}\n\t\t\t// Fit argument into field width...\n\t\t\tif ( token.maxWidth >= 0 && token.arg.length > token.maxWidth ) {\n\t\t\t\ttoken.arg = token.arg.substring( 0, token.maxWidth );\n\t\t\t}\n\t\t\tif ( token.padZeros ) {\n\t\t\t\ttoken.arg = zeroPad( token.arg, token.width || token.precision, token.padRight ); // eslint-disable-line max-len\n\t\t\t} else if ( token.width ) {\n\t\t\t\ttoken.arg = spacePad( token.arg, token.width, token.padRight );\n\t\t\t}\n\t\t\tout += token.arg || '';\n\t\t\tpos += 1;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatInterpolate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate string from a token array by interpolating values.\n*\n* @module @stdlib/string/base/format-interpolate\n*\n* @example\n* var formatInterpolate = require( '@stdlib/string/base/format-interpolate' );\n*\n* var tokens = ['Hello ', { 'specifier': 's' }, '!' ];\n* var out = formatInterpolate( tokens, 'World' );\n* // returns 'Hello World!'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE = /%(?:([1-9]\\d*)\\$)?([0 +\\-#]*)(\\*|\\d+)?(?:(\\.)(\\*|\\d+)?)?[hlL]?([%A-Za-z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Parses a delimiter.\n*\n* @private\n* @param {Array} match - regular expression match\n* @returns {Object} delimiter token object\n*/\nfunction parse( match ) {\n\tvar token = {\n\t\t'mapping': ( match[ 1 ] ) ? parseInt( match[ 1 ], 10 ) : void 0,\n\t\t'flags': match[ 2 ],\n\t\t'width': match[ 3 ],\n\t\t'precision': match[ 5 ],\n\t\t'specifier': match[ 6 ]\n\t};\n\tif ( match[ 4 ] === '.' && match[ 5 ] === void 0 ) {\n\t\ttoken.precision = '1';\n\t}\n\treturn token;\n}\n\n\n// MAIN //\n\n/**\n* Tokenizes a string into an array of string parts and format identifier objects.\n*\n* @param {string} str - input string\n* @returns {Array} tokens\n*\n* @example\n* var tokens = formatTokenize( 'Hello %s!' );\n* // returns [ 'Hello ', {...}, '!' ]\n*/\nfunction formatTokenize( str ) {\n\tvar content;\n\tvar tokens;\n\tvar match;\n\tvar prev;\n\n\ttokens = [];\n\tprev = 0;\n\tmatch = RE.exec( str );\n\twhile ( match ) {\n\t\tcontent = str.slice( prev, RE.lastIndex - match[ 0 ].length );\n\t\tif ( content.length ) {\n\t\t\ttokens.push( content );\n\t\t}\n\t\ttokens.push( parse( match ) );\n\t\tprev = RE.lastIndex;\n\t\tmatch = RE.exec( str );\n\t}\n\tcontent = str.slice( prev );\n\tif ( content.length ) {\n\t\ttokens.push( content );\n\t}\n\treturn tokens;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatTokenize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tokenize a string into an array of string parts and format identifier objects.\n*\n* @module @stdlib/string/base/format-tokenize\n*\n* @example\n* var formatTokenize = require( '@stdlib/string/base/format-tokenize' );\n*\n* var str = 'Hello %s!';\n* var tokens = formatTokenize( str );\n* // returns [ 'Hello ', {...}, '!' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a string primitive\n*\n* @example\n* var bool = isString( 'beep' );\n* // returns true\n*\n* @example\n* var bool = isString( new String( 'beep' ) );\n* // returns false\n*/\nfunction isString( value ) {\n\treturn ( typeof value === 'string' ); // NOTE: we inline the `isString.isPrimitive` function from `@stdlib/assert/is-string` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar interpolate = require( './../../base/format-interpolate' );\nvar tokenize = require( './../../base/format-tokenize' );\nvar isString = require( './is_string.js' );\n\n\n// MAIN //\n\n/**\n* Inserts supplied variable values into a format string.\n*\n* @param {string} str - input string\n* @param {Array} ...args - variable values\n* @throws {TypeError} first argument must be a string\n* @throws {Error} invalid flags\n* @returns {string} formatted string\n*\n* @example\n* var str = format( 'Hello %s!', 'world' );\n* // returns 'Hello world!'\n*\n* @example\n* var str = format( 'Pi: ~%.2f', 3.141592653589793 );\n* // returns 'Pi: ~3.14'\n*/\nfunction format( str ) {\n\tvar tokens;\n\tvar args;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\ttokens = tokenize( str );\n\targs = new Array( arguments.length );\n\targs[ 0 ] = tokens;\n\tfor ( i = 1; i < args.length; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\treturn interpolate.apply( null, args );\n}\n\n\n// EXPORTS //\n\nmodule.exports = format;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Insert supplied variable values into a format string.\n*\n* @module @stdlib/string/format\n*\n* @example\n* var format = require( '@stdlib/string/format' );\n*\n* var out = format( '%s %s!', 'Hello', 'World' );\n* // returns 'Hello World!'\n*\n* out = format( 'Pi: ~%.2f', 3.141592653589793 );\n* // returns 'Pi: ~3.14'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {RegExp} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string/base/capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer);\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\treturn str.replace( search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string/base/replace\n*\n* @example\n* var replace = require( '@stdlib/string/base/replace' );\n*\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isRegExp = require( '@stdlib/assert/is-regexp' );\nvar format = require( './../../format' );\nvar base = require( './../../base/replace' );\n\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {(string|RegExp)} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument argument must be a string or regular expression\n* @throws {TypeError} third argument must be a string or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'beep';\n* var out = replace( str, 'e', 'o' );\n* // returns 'boop'\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string/capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer);\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( isString( search ) ) {\n\t\tsearch = new RegExp( rescape( search ), 'g' );\n\t} else if ( !isRegExp( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string or regular expression. Value: `%s`.', search ) );\n\t}\n\tif ( !isString( newval ) && !isFunction( newval ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string or replacement function. Value: `%s`.', newval ) );\n\t}\n\treturn base( str, search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string/replace\n*\n* @example\n* var replace = require( '@stdlib/string/replace' );\n*\n* var str = 'beep';\n* var out = replace( str, 'e', 'o' );\n* // returns 'boop'\n*\n* str = 'Hello World';\n* out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar replace = require( './../../replace' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar RE = /[!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]]/g; // eslint-disable-line no-useless-escape\n\n\n// MAIN //\n\n/**\n* Removes punctuation characters from a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} output string\n*\n* @example\n* var str = 'Sun Tzu said: \"A leader leads by example not by force.\"';\n* var out = removePunctuation( str );\n* // returns 'Sun Tzu said A leader leads by example not by force'\n*\n* @example\n* var str = 'Double, double, toil and trouble; Fire burn, and cauldron bubble!';\n* var out = removePunctuation( str );\n* // returns 'Double double toil and trouble Fire burn and cauldron bubble'\n*\n* @example\n* var str = 'This module removes these characters: `{}[]:,!/<>().;~|?\\'\"';\n* var out = removePunctuation( str );\n* // returns 'This module removes these characters '\n*/\nfunction removePunctuation( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removePunctuation;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove punctuation characters from a string.\n*\n* @module @stdlib/string/remove-punctuation\n*\n* @example\n* var removePunctuation = require( '@stdlib/string/remove-punctuation' );\n*\n* var out = removePunctuation( 'Sun Tzu said: \"A leader leads by example not by force.\"' );\n* // returns 'Sun Tzu said A leader leads by example not by force'\n*\n* out = removePunctuation( 'Double, double, toil and trouble; Fire burn, and cauldron bubble!' ) );\n* // returns 'Double double toil and trouble Fire burn and cauldron bubble'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to uppercase.\n*\n* @param {string} str - string to convert\n* @returns {string} uppercase string\n*\n* @example\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\nfunction uppercase( str ) {\n\treturn str.toUpperCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = uppercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to uppercase.\n*\n* @module @stdlib/string/base/uppercase\n*\n* @example\n* var uppercase = require( '@stdlib/string/base/uppercase' );\n*\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\treturn str.toLowerCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string/base/lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string/base/lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar isEmptyArray = require( '@stdlib/assert/is-empty-array' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {StringArray} [options.stopwords] - array of custom stop words\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'stopwords': [ 'of' ]\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'stopwords' ) ) {\n\t\topts.stopwords = options.stopwords;\n\t\tif (\n\t\t\t!isStringArray( opts.stopwords ) &&\n\t\t\t!isEmptyArray( opts.stopwords )\n\t\t) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be an array of strings. Option: `%s`.', 'stopwords', opts.stopwords ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "[\n \"a\",\n \"all\",\n \"also\",\n \"although\",\n \"an\",\n \"and\",\n \"any\",\n \"are\",\n \"as\",\n \"at\",\n \"b\",\n \"be\",\n \"been\",\n \"but\",\n \"by\",\n \"c\",\n \"could\",\n \"d\",\n \"e\",\n \"each\",\n \"eg\",\n \"either\",\n \"even\",\n \"ever\",\n \"ex\",\n \"except\",\n \"f\",\n \"far\",\n \"few\",\n \"for\",\n \"from\",\n \"further\",\n \"g\",\n \"get\",\n \"gets\",\n \"given\",\n \"gives\",\n \"go\",\n \"going\",\n \"got\",\n \"h\",\n \"had\",\n \"has\",\n \"have\",\n \"having\",\n \"he\",\n \"her\",\n \"here\",\n \"herself\",\n \"him\",\n \"himself\",\n \"his\",\n \"how\",\n \"i\",\n \"ie\",\n \"if\",\n \"in\",\n \"into\",\n \"is\",\n \"it\",\n \"its\",\n \"itself\",\n \"j\",\n \"just\",\n \"k\",\n \"l\",\n \"less\",\n \"let\",\n \"m\",\n \"many\",\n \"may\",\n \"me\",\n \"might\",\n \"must\",\n \"my\",\n \"myself\",\n \"n\",\n \"need\",\n \"needs\",\n \"next\",\n \"no\",\n \"non\",\n \"not\",\n \"now\",\n \"o\",\n \"of\",\n \"off\",\n \"old\",\n \"on\",\n \"once\",\n \"only\",\n \"or\",\n \"our\",\n \"out\",\n \"p\",\n \"per\",\n \"put\",\n \"q\",\n \"r\",\n \"s\",\n \"same\",\n \"shall\",\n \"she\",\n \"should\",\n \"since\",\n \"so\",\n \"such\",\n \"sure\",\n \"t\",\n \"than\",\n \"that\",\n \"the\",\n \"their\",\n \"them\",\n \"then\",\n \"there\",\n \"these\",\n \"they\",\n \"this\",\n \"those\",\n \"though\",\n \"thus\",\n \"to\",\n \"too\",\n \"u\",\n \"us\",\n \"v\",\n \"w\",\n \"was\",\n \"we\",\n \"well\",\n \"went\",\n \"were\",\n \"what\",\n \"when\",\n \"where\",\n \"which\",\n \"who\",\n \"whose\",\n \"why\",\n \"will\",\n \"would\",\n \"x\",\n \"y\",\n \"yet\",\n \"z\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar removePunctuation = require( './../../remove-punctuation' );\nvar tokenize = require( '@stdlib/nlp/tokenize' );\nvar replace = require( './../../base/replace' );\nvar uppercase = require( './../../base/uppercase' );\nvar lowercase = require( './../../base/lowercase' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar format = require( './../../format' );\nvar validate = require( './validate.js' );\nvar STOPWORDS = require( './stopwords.json' );\n\n\n// VARIABLES //\n\nvar RE_HYPHEN = /-/g;\n\n\n// MAIN //\n\n/**\n* Generates an acronym for a given string.\n*\n* ## Notes\n*\n* - The acronym is generated by capitalizing the first letter of each word in the string.\n* - The function removes stop words from the string before generating the acronym.\n* - The function splits hyphenated words and uses the first character of each hyphenated part.\n*\n* @param {string} str - input string\n* @param {Options} [options] - function options\n* @param {StringArray} [options.stopwords] - custom stop words\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} must provide valid options\n* @returns {string} generated acronym\n*\n* @example\n* var out = acronym( 'the quick brown fox' );\n* // returns 'QBF'\n*\n* @example\n* var out = acronym( 'Hard-boiled eggs' );\n* // returns 'HBE'\n*\n* @example\n* var out = acronym( 'National Association of Securities Dealers Automated Quotation' );\n* // returns 'NASDAQ'\n*/\nfunction acronym( str, options ) {\n\tvar isStopWord;\n\tvar words;\n\tvar opts;\n\tvar err;\n\tvar out;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tisStopWord = contains( opts.stopwords || STOPWORDS );\n\tstr = removePunctuation( str );\n\tstr = replace( str, RE_HYPHEN, ' ' );\n\twords = tokenize( str );\n\tout = '';\n\tfor ( i = 0; i < words.length; i++ ) {\n\t\tif ( isStopWord( lowercase( words[ i ] ) ) === false ) {\n\t\t\tout += uppercase( words[ i ].charAt( 0 ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = acronym;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate an acronym for a given string.\n*\n* @module @stdlib/string/acronym\n*\n* @example\n* var acronym = require( '@stdlib/string/acronym' );\n*\n* var out = acronym( 'National Association of Securities Dealers Automated Quotation' );\n* // returns 'NASDAQ'\n*\n* out = acronym( 'To be determined...', {\n* 'stopwords': []\n* });\n* // returns 'TBD'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Capitalizes the first character in a string.\n*\n* @param {string} str - input string\n* @returns {string} capitalized string\n*\n* @example\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* @example\n* var out = capitalize( 'presidential election' );\n* // returns 'Presidential election'\n*\n* @example\n* var out = capitalize( 'javaScript' );\n* // returns 'JavaScript'\n*\n* @example\n* var out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures'\n*/\nfunction capitalize( str ) {\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = capitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first character in a string.\n*\n* @module @stdlib/string/base/capitalize\n*\n* @example\n* var capitalize = require( '@stdlib/string/base/capitalize' );\n*\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trim !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar trim = String.prototype.trim;\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar trim = require( './builtin.js' );\n\n\n// VARIABLES //\n\nvar str1 = ' \\n\\t\\r\\n\\f\\v\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar str2 = '\\u180e';\n\n\n// MAIN //\n\n/**\n* Tests the built-in `String.prototype.trim()` implementation when provided whitespace.\n*\n* ## Notes\n*\n* - For context, see . In short, we can only rely on the built-in `trim` method when it does not consider the Mongolian space separator as whitespace.\n*\n* @private\n* @returns {boolean} boolean indicating whether the built-in implementation returns the expected value\n*\n* @example\n* var b = test();\n* // returns \n*/\nfunction test() {\n\treturn ( trim.call( str1 ) === '' ) && ( trim.call( str2 ) === str2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = test;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*([\\S\\s]*?)[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn replace( str, RE, '$1' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string/base/trim\n*\n* @example\n* var trim = require( '@stdlib/string/base/trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar check = require( './check.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar trim;\nif ( HAS_BUILTIN && check() ) {\n\ttrim = main;\n} else {\n\ttrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar capitalize = require( './../../../base/capitalize' );\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_TO_CAMEL = /(?:\\s|^)([^\\s]+)(?=\\s|$)/g;\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Converts first capture group to uppercase.\n*\n* @private\n* @param {string} match - entire match\n* @param {string} p1 - first capture group\n* @param {number} offset - offset of the matched substring in entire string\n* @returns {string} uppercased capture group\n*/\nfunction replacer( match, p1, offset ) {\n\tp1 = lowercase( p1 );\n\treturn ( offset === 0 ) ? p1 : capitalize( p1 );\n}\n\n\n// MAIN //\n\n/**\n* Converts a string to camel case.\n*\n* @param {string} str - string to convert\n* @returns {string} camel-cased string\n*\n* @example\n* var out = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* @example\n* var out = camelcase( 'IS_MOBILE' );\n* // returns 'isMobile'\n*\n* @example\n* var out = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*\n* @example\n* var out = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*/\nfunction camelcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_WHITESPACE, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\treturn replace( str, RE_TO_CAMEL, replacer );\n}\n\n\n// EXPORTS //\n\nmodule.exports = camelcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to camel case.\n*\n* @module @stdlib/string/base/camelcase\n*\n* @example\n* var camelcase = require( '@stdlib/string/base/camelcase' );\n*\n* var str = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* str = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*\n* str = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\n// Factors for converting individual surrogates...\nvar Ox10000 = 0x10000|0; // 65536\nvar Ox400 = 0x400|0; // 1024\n\n// Range for a high surrogate\nvar OxD800 = 0xD800|0; // 55296\nvar OxDBFF = 0xDBFF|0; // 56319\n\n// Range for a low surrogate\nvar OxDC00 = 0xDC00|0; // 56320\nvar OxDFFF = 0xDFFF|0; // 57343\n\n\n// MAIN //\n\n/**\n* Returns a Unicode code point from a string at a specified position.\n*\n* ## Notes\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words: a high and a low surrogate.\n*\n* @param {string} str - input string\n* @param {integer} idx - position\n* @param {boolean} backward - backward iteration for low surrogates\n* @returns {NonNegativeInteger} code point\n*\n* @example\n* var out = codePointAt( 'last man standing', 4, false );\n* // returns 32\n*\n* @example\n* var out = codePointAt( 'presidential election', 8, true );\n* // returns 116\n*\n* @example\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2, false );\n* // returns 2369\n*\n* @example\n* var out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\nfunction codePointAt( str, idx, backward ) {\n\tvar code;\n\tvar low;\n\tvar hi;\n\n\tif ( idx < 0 ) {\n\t\tidx += str.length;\n\t}\n\tcode = str.charCodeAt( idx );\n\n\t// High surrogate\n\tif ( code >= OxD800 && code <= OxDBFF && idx < str.length - 1 ) {\n\t\thi = code;\n\t\tlow = str.charCodeAt( idx+1 );\n\t\tif ( OxDC00 <= low && low <= OxDFFF ) {\n\t\t\treturn ( ( hi - OxD800 ) * Ox400 ) + ( low - OxDC00 ) + Ox10000;\n\t\t}\n\t\treturn hi;\n\t}\n\t// Low surrogate - support only if backward iteration is desired\n\tif ( backward ) {\n\t\tif ( code >= OxDC00 && code <= OxDFFF && idx >= 1 ) {\n\t\t\thi = str.charCodeAt( idx-1 );\n\t\t\tlow = code;\n\t\t\tif ( OxD800 <= hi && hi <= OxDBFF ) {\n\t\t\t\treturn ( ( hi - OxD800 ) * Ox400 ) + ( low - OxDC00 ) + Ox10000;\n\t\t\t}\n\t\t\treturn low;\n\t\t}\n\t}\n\treturn code;\n}\n\n\n// EXPORTS //\n\nmodule.exports = codePointAt;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a Unicode code point from a string at a specified position.\n*\n* @module @stdlib/string/base/code-point-at\n*\n* @example\n* var codePointAt = require( '@stdlib/string/base/code-point-at' );\n*\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2, false );\n* // returns 2369\n*\n* out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar uppercase = require( './../../../base/uppercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to constant case.\n*\n* @param {string} str - string to convert\n* @returns {string} constant-cased string\n*\n* @example\n* var str = constantcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = constantcase( 'beep boop' );\n* // returns 'BEEP_BOOP'\n*\n* @example\n* var str = constantcase( 'isMobile' );\n* // returns 'IS_MOBILE'\n*\n* @example\n* var str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*/\nfunction constantcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '_' );\n\treturn uppercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = constantcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to constant case.\n*\n* @module @stdlib/string/base/constantcase\n*\n* @example\n* var constantcase = require( '@stdlib/string/base/constantcase' );\n*\n* var str = constantcase( 'aBcDeF' );\n* // returns 'ABCDEF'\n*\n* str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*\n* str = constantcase( 'I am a robot' );\n* // returns 'I_AM_A_ROBOT'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../../../format' );\nvar min = require( '@stdlib/math/base/special/min' );\n\n\n// MAIN //\n\n/**\n* Calculates the Levenshtein (edit) distance between two strings.\n*\n* @param {string} s1 - first string value\n* @param {string} s2 - second string value\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {NonNegativeInteger} Levenshtein distance\n*\n* @example\n* var distance = levenshteinDistance( 'algorithm', 'altruistic' );\n* // returns 6\n*/\nfunction levenshteinDistance( s1, s2 ) {\n\tvar temp;\n\tvar row;\n\tvar pre;\n\tvar m;\n\tvar n;\n\tvar i;\n\tvar j;\n\tvar k;\n\n\tif ( !isString( s1 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', s1 ) );\n\t}\n\tif ( !isString( s2 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', s2 ) );\n\t}\n\tn = s1.length;\n\tm = s2.length;\n\n\t// If either string is empty, the edit distance is equal to the number of characters in the non-empty string...\n\tif ( n === 0 ) {\n\t\treturn m;\n\t}\n\tif ( m === 0 ) {\n\t\treturn n;\n\t}\n\n\trow = [];\n\tfor ( i = 0; i <= m; i++ ) {\n\t\trow.push( i );\n\t}\n\n\tfor ( i = 0; i < n; i++ ) {\n\t\tpre = row[ 0 ];\n\t\trow[ 0 ] = i + 1;\n\t\tfor ( j = 0; j < m; j++ ) {\n\t\t\tk = j + 1;\n\t\t\ttemp = row[ k ];\n\t\t\tif ( s1[ i ] === s2[ j ] ) {\n\t\t\t\trow[ k ] = pre;\n\t\t\t} else {\n\t\t\t\trow[ k ] = min( pre, min( row[ j ], row[ k ] ) ) + 1;\n\t\t\t}\n\t\t\tpre = temp;\n\t\t}\n\t}\n\treturn row[ m ];\n}\n\n\n// EXPORTS //\n\nmodule.exports = levenshteinDistance;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Calculate the Levenshtein (edit) distance between two strings.\n*\n* @module @stdlib/string/base/distances/levenshtein\n*\n* @example\n* var levenshteinDistance = require( '@stdlib/string/base/distances/levenshtein' );\n*\n* var dist = levenshteinDistance( 'fly', 'ant' );\n* // returns 3\n*\n* dist = levenshteinDistance( 'frog', 'fog' );\n* // returns 1\n*\n* dist = levenshteinDistance( 'javascript', 'typescript' );\n* // returns 4\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name levenshteinDistance\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/distances/levenshtein}\n*/\nsetReadOnly( ns, 'levenshteinDistance', require( './../../../base/distances/levenshtein' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to dot case.\n*\n* @param {string} str - string to convert\n* @returns {string} dot-cased string\n*\n* @example\n* var str = dotcase( 'beep' );\n* // returns 'beep'\n*\n* @example\n* var str = dotcase( 'beep boop' );\n* // returns 'beep.boop'\n*\n* @example\n* var str = dotcase( 'isMobile' );\n* // returns 'is.mobile'\n*\n* @example\n* var str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*/\nfunction dotcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '.' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dotcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to dot case.\n*\n* @module @stdlib/string/base/dotcase\n*\n* @example\n* var dotcase = require( '@stdlib/string/base/dotcase' );\n*\n* var str = dotcase( 'aBcDeF' );\n* // returns 'abcdef'\n*\n* str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*\n* str = dotcase( 'I am a robot' );\n* // returns 'i.am.a.robot'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.endsWith !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests if a string ends with the characters of another string.\n*\n* ## Notes\n*\n* - The last parameter restricts the search to a substring within the input string beginning from the leftmost character. If provided a negative value, `len` indicates to ignore the last `len` characters, and is thus equivalent to `str.length + len`.\n*\n* @private\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} len - substring length\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tvar idx;\n\tvar N;\n\tvar i;\n\n\tN = search.length;\n\tif ( len === 0 ) {\n\t\treturn ( N === 0 );\n\t}\n\tif ( len < 0 ) {\n\t\tidx = str.length + len;\n\t} else {\n\t\tidx = len;\n\t}\n\tif ( N === 0 ) {\n\t\t// Based on the premise that every string can be \"surrounded\" by empty strings (e.g., \"\" + \"a\" + \"\" + \"b\" + \"\" === \"ab\"):\n\t\treturn true;\n\t}\n\tidx -= N;\n\tif ( idx < 0 ) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < N; i++) {\n\t\tif ( str.charCodeAt( idx + i ) !== search.charCodeAt( i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar endsWith = String.prototype.endsWith;\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Tests if a string ends with the characters of another string.\n*\n* ## Notes\n*\n* - The last parameter restricts the search to a substring within the input string beginning from the leftmost character. If provided a negative value, `len` indicates to ignore the last `len` characters, and is thus equivalent to `str.length + len`.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} len - substring length\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tvar idx;\n\tvar N;\n\n\tN = search.length;\n\tif ( len === 0 ) {\n\t\treturn ( N === 0 );\n\t}\n\tif ( len < 0 ) {\n\t\tidx = str.length + len;\n\t} else {\n\t\tidx = len;\n\t}\n\tif ( N === 0 ) {\n\t\t// Based on the premise that every string can be \"surrounded\" by empty strings (e.g., \"\" + \"a\" + \"\" + \"b\" + \"\" === \"ab\"):\n\t\treturn true;\n\t}\n\tif ( idx - N < 0 || idx > str.length ) {\n\t\treturn false;\n\t}\n\treturn builtin.call( str, search, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @module @stdlib/string/base/ends-with\n*\n* @example\n* var endsWith = require( '@stdlib/string/base/ends-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n*\n* var bool = endsWith( str, 'air', str.length );\n* // returns true\n*\n* bool = endsWith( str, 'fair', str.length );\n* // returns false\n*\n* bool = endsWith( str, 'fair', 30 );\n* // returns true\n*\n* bool = endsWith( str, 'fair', -34 );\n* // returns true\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar endsWith;\nif ( HAS_BUILTIN ) {\n\tendsWith = main;\n} else {\n\tendsWith = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the first `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*/\nfunction first( str, n ) {\n\treturn str.substring( 0, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/first\n*\n* @example\n* var first = require( '@stdlib/string/base/first' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar RE_UTF16_SURROGATE_PAIR = require( '@stdlib/regexp/utf16-surrogate-pair' ).REGEXP;\n\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Returns the first `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*/\nfunction first( str, n ) {\n\tvar len;\n\tvar out;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( str === '' || n === 0 ) {\n\t\treturn '';\n\t}\n\tif ( n === 1 ) {\n\t\tstr = str.substring( 0, 2 );\n\t\tif ( RE_UTF16_SURROGATE_PAIR.test( str ) ) {\n\t\t\treturn str;\n\t\t}\n\t\treturn str[ 0 ];\n\t}\n\tlen = str.length;\n\tout = '';\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tout += ch1;\n\t\tcnt += 1;\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tout += ch2;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/first-code-point\n*\n* @example\n* var first = require( '@stdlib/string/base/first-code-point' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/code-point-at' );\n\n\n// MAIN //\n\n/**\n* Returns a Unicode code point from a string at a specified position.\n*\n* @param {string} str - input string\n* @param {integer} idx - position\n* @param {boolean} [backward=false] - backward iteration for low surrogates\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @throws {TypeError} third argument must be a boolean\n* @throws {RangeError} position must be a valid index in string\n* @returns {NonNegativeInteger} code point\n*\n* @example\n* var out = codePointAt( 'last man standing', 4 );\n* // returns 32\n*\n* @example\n* var out = codePointAt( 'presidential election', 8, true );\n* // returns 116\n*\n* @example\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 2369\n*\n* @example\n* var out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\nfunction codePointAt( str, idx, backward ) {\n\tvar FLG;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += str.length;\n\t}\n\tif ( idx < 0 || idx >= str.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.', idx ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isBoolean( backward ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a boolean. Value: `%s`.', backward ) );\n\t\t}\n\t\tFLG = backward;\n\t} else {\n\t\tFLG = false;\n\t}\n\treturn base( str, idx, FLG );\n}\n\n\n// EXPORTS //\n\nmodule.exports = codePointAt;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a Unicode code point from a string at a specified position.\n*\n* @module @stdlib/string/code-point-at\n*\n* @example\n* var codePointAt = require( '@stdlib/string/code-point-at' );\n*\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 2369\n*\n* out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar consts = {\n\t'CR': 0,\n\t'LF': 1,\n\t'Control': 2,\n\t'Extend': 3,\n\t'RegionalIndicator': 4,\n\t'SpacingMark': 5,\n\t'L': 6,\n\t'V': 7,\n\t'T': 8,\n\t'LV': 9,\n\t'LVT': 10,\n\t'Other': 11,\n\t'Prepend': 12,\n\t'ZWJ': 13,\n\t'NotBreak': 0,\n\t'BreakStart': 1,\n\t'Break': 2,\n\t'BreakLastRegional': 3,\n\t'BreakPenultimateRegional': 4,\n\t'ExtendedPictographic': 101\n};\n\n\n// EXPORTS //\n\nmodule.exports = consts;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// FUNCTIONS //\n\n/**\n* Returns number of elements in array equal to a provided value.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - input value\n* @returns {NonNegativeInteger} number of elements in array equal to a provided value\n*/\nfunction count( arr, start, end, value ) {\n\tvar cnt;\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tcnt = 0;\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\tcnt += 1;\n\t\t}\n\t}\n\treturn cnt;\n}\n\n/**\n* Returns whether every indexed array element is equal to a provided value.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {boolean} boolean indicating whether all the values in array in the given range are equal to the provided value\n*/\nfunction every( arr, start, end, value ) {\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] !== value ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Returns the index of the first occurrence of a value in a provided array.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {integer} index of the first occurrence\n*/\nfunction indexOf( arr, start, end, value ) {\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n* Returns the index of the last occurrence of a value in a provided array.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index at which to start searching backwards (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {integer} index of the last occurrence\n*/\nfunction lastIndexOf( arr, start, end, value ) {\n\tvar i;\n\n\tif ( start >= arr.length-1 ) {\n\t\tstart = arr.length - 1;\n\t}\n\tfor ( i = start; i >= end; i-- ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n// MAIN //\n\n/**\n* Returns the break type between grapheme breaking classes according to _UAX #29 3.1.1 Grapheme Cluster Boundary Rules_ on extended grapheme clusters.\n*\n* @private\n* @param {Array} breaks - list of grapheme break properties\n* @param {Array} emoji - list of emoji properties\n* @returns {NonNegativeInteger} break type\n*\n* @example\n* var out = breakType( [ 11, 3, 11 ], [ 11, 11, 11 ] );\n* // returns 1\n*/\nfunction breakType( breaks, emoji ) {\n\tvar nextEmoji;\n\tvar next;\n\tvar prev;\n\tvar idx;\n\tvar N;\n\tvar M;\n\n\tN = breaks.length;\n\tM = N - 1;\n\n\tprev = breaks[ M-1 ];\n\tnext = breaks[ M ];\n\tnextEmoji = emoji[ M ];\n\n\tidx = lastIndexOf( breaks, M, 0, constants.RegionalIndicator );\n\tif (\n\t\tidx > 0 &&\n\t\tprev !== constants.Prepend &&\n\t\tprev !== constants.RegionalIndicator &&\n\t\tevery( breaks, 1, idx-1, constants.RegionalIndicator )\n\t) {\n\t\tif ( count( breaks, 0, M, constants.RegionalIndicator ) % 2 === 1 ) {\n\t\t\treturn constants.BreakLastRegional;\n\t\t}\n\t\treturn constants.BreakPenultimateRegional;\n\t}\n\t// GB3: CR \u00D7 LF\n\tif (\n\t\tprev === constants.CR &&\n\t\tnext === constants.LF\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB4: (Control|CR|LF) \u00F7\n\tif (\n\t\tprev === constants.Control ||\n\t\tprev === constants.CR ||\n\t\tprev === constants.LF\n\t) {\n\t\treturn constants.BreakStart;\n\t}\n\t// GB5: \u00F7 (Control|CR|LF)\n\tif (\n\t\tnext === constants.Control ||\n\t\tnext === constants.CR ||\n\t\tnext === constants.LF\n\t) {\n\t\treturn constants.BreakStart;\n\t}\n\t// GB6: L \u00D7 (L|V|LV|LVT)\n\tif (\n\t\tprev === constants.L &&\n\t\t(\n\t\t\tnext === constants.L ||\n\t\t\tnext === constants.V ||\n\t\t\tnext === constants.LV ||\n\t\t\tnext === constants.LVT\n\t\t)\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB7: (LV|V) \u00D7 (V|T)\n\tif (\n\t\t( prev === constants.LV || prev === constants.V ) &&\n\t\t( next === constants.V || next === constants.T )\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB8: (LVT|T) \u00D7 (T)\n\tif (\n\t\t( prev === constants.LVT || prev === constants.T ) &&\n\t\tnext === constants.T\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9: \u00D7 (Extend|ZWJ)\n\tif (\n\t\tnext === constants.Extend ||\n\t\tnext === constants.ZWJ\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9a: \u00D7 SpacingMark\n\tif ( next === constants.SpacingMark ) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9b: Prepend \u00D7\n\tif ( prev === constants.Prepend ) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB11: \\p{Extended_Pictographic} Extend* ZWJ \u00D7 \\p{Extended_Pictographic}\n\tidx = lastIndexOf( emoji, M-1, 0, constants.ExtendedPictographic );\n\tif (\n\t\tidx >= 0 &&\n\t\tprev === constants.ZWJ &&\n\t\tnextEmoji === constants.ExtendedPictographic &&\n\t\temoji[ idx ] === constants.ExtendedPictographic &&\n\t\tevery( breaks, idx+1, M-2, constants.Extend )\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB12: ^ (RI RI)* RI \u00D7 RI\n\t// GB13: [^RI] (RI RI)* RI \u00D7 RI\n\tif ( indexOf( breaks, 1, M-1, constants.RegionalIndicator ) >= 0 ) {\n\t\treturn constants.Break;\n\t}\n\tif (\n\t\tprev === constants.RegionalIndicator &&\n\t\tnext === constants.RegionalIndicator\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB999: Any ? Any\n\treturn constants.BreakStart;\n}\n\n\n// EXPORTS //\n\nmodule.exports = breakType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// MAIN //\n\n/**\n* Returns the emoji property from the [Unicode Standard][1].\n*\n* [1]: https://www.unicode.org/Public/13.0.0/ucd/emoji/emoji-data.txt\n*\n* @private\n* @param {NonNegativeInteger} code - Unicode code point\n* @returns {NonNegativeInteger} emoji property\n*\n* @example\n* var out = emojiProperty( 0x23EC );\n* // returns 101\n*\n* @example\n* var out = emojiProperty( 0x1FFFE );\n* // returns 11\n*/\nfunction emojiProperty( code ) {\n\tif (\n\t\tcode === 0x00A9 || // E0.6 [1] (\u00A9\uFE0F) copyright\n\t\tcode === 0x00AE || // E0.6 [1] (\u00AE\uFE0F) registered\n\t\tcode === 0x203C || // E0.6 [1] (\u203C\uFE0F) double exclamation mark\n\t\tcode === 0x2049 || // E0.6 [1] (\u2049\uFE0F) exclamation question mark\n\t\tcode === 0x2122 || // E0.6 [1] (\u2122\uFE0F) trade mark\n\t\tcode === 0x2139 || // E0.6 [1] (\u2139\uFE0F) information\n\t\t( 0x2194 <= code && code <= 0x2199 ) || // E0.6 [6] (\u2194\uFE0F..\u2199\uFE0F) left-right arrow..down-left arrow\n\t\t( 0x21A9 <= code && code <= 0x21AA ) || // E0.6 [2] (\u21A9\uFE0F..\u21AA\uFE0F) right arrow curving left..left arrow curving right\n\t\t( 0x231A <= code && code <= 0x231B ) || // E0.6 [2] (\u231A..\u231B) watch..hourglass done\n\t\tcode === 0x2328 || // E1.0 [1] (\u2328\uFE0F) keyboard\n\t\tcode === 0x2388 || // E0.0 [1] (\u2388) HELM SYMBOL\n\t\tcode === 0x23CF || // E1.0 [1] (\u23CF\uFE0F) eject button\n\t\t( 0x23E9 <= code && code <= 0x23EC ) || // E0.6 [4] (\u23E9..\u23EC) fast-forward button..fast down button\n\t\t( 0x23ED <= code && code <= 0x23EE ) || // E0.7 [2] (\u23ED\uFE0F..\u23EE\uFE0F) next track button..last track button\n\t\tcode === 0x23EF || // E1.0 [1] (\u23EF\uFE0F) play or pause button\n\t\tcode === 0x23F0 || // E0.6 [1] (\u23F0) alarm clock\n\t\t( 0x23F1 <= code && code <= 0x23F2 ) || // E1.0 [2] (\u23F1\uFE0F..\u23F2\uFE0F) stopwatch..timer clock\n\t\tcode === 0x23F3 || // E0.6 [1] (\u23F3) hourglass not done\n\t\t( 0x23F8 <= code && code <= 0x23FA ) || // E0.7 [3] (\u23F8\uFE0F..\u23FA\uFE0F) pause button..record button\n\t\tcode === 0x24C2 || // E0.6 [1] (\u24C2\uFE0F) circled M\n\t\t( 0x25AA <= code && code <= 0x25AB ) || // E0.6 [2] (\u25AA\uFE0F..\u25AB\uFE0F) black small square..white small square\n\t\tcode === 0x25B6 || // E0.6 [1] (\u25B6\uFE0F) play button\n\t\tcode === 0x25C0 || // E0.6 [1] (\u25C0\uFE0F) reverse button\n\t\t( 0x25FB <= code && code <= 0x25FE ) || // E0.6 [4] (\u25FB\uFE0F..\u25FE) white medium square..black medium-small square\n\t\t( 0x2600 <= code && code <= 0x2601 ) || // E0.6 [2] (\u2600\uFE0F..\u2601\uFE0F) sun..cloud\n\t\t( 0x2602 <= code && code <= 0x2603 ) || // E0.7 [2] (\u2602\uFE0F..\u2603\uFE0F) umbrella..snowman\n\t\tcode === 0x2604 || // E1.0 [1] (\u2604\uFE0F) comet\n\t\tcode === 0x2605 || // E0.0 [1] (\u2605) BLACK STAR\n\t\t( 0x2607 <= code && code <= 0x260D ) || // E0.0 [7] (\u2607..\u260D) LIGHTNING..OPPOSITION\n\t\tcode === 0x260E || // E0.6 [1] (\u260E\uFE0F) telephone\n\t\t( 0x260F <= code && code <= 0x2610 ) || // E0.0 [2] (\u260F..\u2610) WHITE TELEPHONE..BALLOT BOX\n\t\tcode === 0x2611 || // E0.6 [1] (\u2611\uFE0F) check box with check\n\t\tcode === 0x2612 || // E0.0 [1] (\u2612) BALLOT BOX WITH X\n\t\t( 0x2614 <= code && code <= 0x2615 ) || // E0.6 [2] (\u2614..\u2615) umbrella with rain drops..hot beverage\n\t\t( 0x2616 <= code && code <= 0x2617 ) || // E0.0 [2] (\u2616..\u2617) WHITE SHOGI PIECE..BLACK SHOGI PIECE\n\t\tcode === 0x2618 || // E1.0 [1] (\u2618\uFE0F) shamrock\n\t\t( 0x2619 <= code && code <= 0x261C ) || // E0.0 [4] (\u2619..\u261C) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX\n\t\tcode === 0x261D || // E0.6 [1] (\u261D\uFE0F) index pointing up\n\t\t( 0x261E <= code && code <= 0x261F ) || // E0.0 [2] (\u261E..\u261F) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX\n\t\tcode === 0x2620 || // E1.0 [1] (\u2620\uFE0F) skull and crossbones\n\t\tcode === 0x2621 || // E0.0 [1] (\u2621) CAUTION SIGN\n\t\t( 0x2622 <= code && code <= 0x2623 ) || // E1.0 [2] (\u2622\uFE0F..\u2623\uFE0F) radioactive..biohazard\n\t\t( 0x2624 <= code && code <= 0x2625 ) || // E0.0 [2] (\u2624..\u2625) CADUCEUS..ANKH\n\t\tcode === 0x2626 || // E1.0 [1] (\u2626\uFE0F) orthodox cross\n\t\t( 0x2627 <= code && code <= 0x2629 ) || // E0.0 [3] (\u2627..\u2629) CHI RHO..CROSS OF JERUSALEM\n\t\tcode === 0x262A || // E0.7 [1] (\u262A\uFE0F) star and crescent\n\t\t( 0x262B <= code && code <= 0x262D ) || // E0.0 [3] (\u262B..\u262D) FARSI SYMBOL..HAMMER AND SICKLE\n\t\tcode === 0x262E || // E1.0 [1] (\u262E\uFE0F) peace symbol\n\t\tcode === 0x262F || // E0.7 [1] (\u262F\uFE0F) yin yang\n\t\t( 0x2630 <= code && code <= 0x2637 ) || // E0.0 [8] (\u2630..\u2637) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH\n\t\t( 0x2638 <= code && code <= 0x2639 ) || // E0.7 [2] (\u2638\uFE0F..\u2639\uFE0F) wheel of dharma..frowning face\n\t\tcode === 0x263A || // E0.6 [1] (\u263A\uFE0F) smiling face\n\t\t( 0x263B <= code && code <= 0x263F ) || // E0.0 [5] (\u263B..\u263F) BLACK SMILING FACE..MERCURY\n\t\tcode === 0x2640 || // E4.0 [1] (\u2640\uFE0F) female sign\n\t\tcode === 0x2641 || // E0.0 [1] (\u2641) EARTH\n\t\tcode === 0x2642 || // E4.0 [1] (\u2642\uFE0F) male sign\n\t\t( 0x2643 <= code && code <= 0x2647 ) || // E0.0 [5] (\u2643..\u2647) JUPITER..PLUTO\n\t\t( 0x2648 <= code && code <= 0x2653 ) || // E0.6 [12] (\u2648..\u2653) Aries..Pisces\n\t\t( 0x2654 <= code && code <= 0x265E ) || // E0.0 [11] (\u2654..\u265E) WHITE CHESS KING..BLACK CHESS KNIGHT\n\t\tcode === 0x265F || // E11.0 [1] (\u265F\uFE0F) chess pawn\n\t\tcode === 0x2660 || // E0.6 [1] (\u2660\uFE0F) spade suit\n\t\t( 0x2661 <= code && code <= 0x2662 ) || // E0.0 [2] (\u2661..\u2662) WHITE HEART SUIT..WHITE DIAMOND SUIT\n\t\tcode === 0x2663 || // E0.6 [1] (\u2663\uFE0F) club suit\n\t\tcode === 0x2664 || // E0.0 [1] (\u2664) WHITE SPADE SUIT\n\t\t( 0x2665 <= code && code <= 0x2666 ) || // E0.6 [2] (\u2665\uFE0F..\u2666\uFE0F) heart suit..diamond suit\n\t\tcode === 0x2667 || // E0.0 [1] (\u2667) WHITE CLUB SUIT\n\t\tcode === 0x2668 || // E0.6 [1] (\u2668\uFE0F) hot springs\n\t\t( 0x2669 <= code && code <= 0x267A ) || // E0.0 [18] (\u2669..\u267A) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS\n\t\tcode === 0x267B || // E0.6 [1] (\u267B\uFE0F) recycling symbol\n\t\t( 0x267C <= code && code <= 0x267D ) || // E0.0 [2] (\u267C..\u267D) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL\n\t\tcode === 0x267E || // E11.0 [1] (\u267E\uFE0F) infinity\n\t\tcode === 0x267F || // E0.6 [1] (\u267F) wheelchair symbol\n\t\t( 0x2680 <= code && code <= 0x2685 ) || // E0.0 [6] (\u2680..\u2685) DIE FACE-1..DIE FACE-6\n\t\t( 0x2690 <= code && code <= 0x2691 ) || // E0.0 [2] (\u2690..\u2691) WHITE FLAG..BLACK FLAG\n\t\tcode === 0x2692 || // E1.0 [1] (\u2692\uFE0F) hammer and pick\n\t\tcode === 0x2693 || // E0.6 [1] (\u2693) anchor\n\t\tcode === 0x2694 || // E1.0 [1] (\u2694\uFE0F) crossed swords\n\t\tcode === 0x2695 || // E4.0 [1] (\u2695\uFE0F) medical symbol\n\t\t( 0x2696 <= code && code <= 0x2697 ) || // E1.0 [2] (\u2696\uFE0F..\u2697\uFE0F) balance scale..alembic\n\t\tcode === 0x2698 || // E0.0 [1] (\u2698) FLOWER\n\t\tcode === 0x2699 || // E1.0 [1] (\u2699\uFE0F) gear\n\t\tcode === 0x269A || // E0.0 [1] (\u269A) STAFF OF HERMES\n\t\t( 0x269B <= code && code <= 0x269C ) || // E1.0 [2] (\u269B\uFE0F..\u269C\uFE0F) atom symbol..fleur-de-lis\n\t\t( 0x269D <= code && code <= 0x269F ) || // E0.0 [3] (\u269D..\u269F) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT\n\t\t( 0x26A0 <= code && code <= 0x26A1 ) || // E0.6 [2] (\u26A0\uFE0F..\u26A1) warning..high voltage\n\t\t( 0x26A2 <= code && code <= 0x26A6 ) || // E0.0 [5] (\u26A2..\u26A6) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN\n\t\tcode === 0x26A7 || // E13.0 [1] (\u26A7\uFE0F) transgender symbol\n\t\t( 0x26A8 <= code && code <= 0x26A9 ) || // E0.0 [2] (\u26A8..\u26A9) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN\n\t\t( 0x26AA <= code && code <= 0x26AB ) || // E0.6 [2] (\u26AA..\u26AB) white circle..black circle\n\t\t( 0x26AC <= code && code <= 0x26AF ) || // E0.0 [4] (\u26AC..\u26AF) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL\n\t\t( 0x26B0 <= code && code <= 0x26B1 ) || // E1.0 [2] (\u26B0\uFE0F..\u26B1\uFE0F) coffin..funeral urn\n\t\t( 0x26B2 <= code && code <= 0x26BC ) || // E0.0 [11] (\u26B2..\u26BC) NEUTER..SESQUIQUADRATE\n\t\t( 0x26BD <= code && code <= 0x26BE ) || // E0.6 [2] (\u26BD..\u26BE) soccer ball..baseball\n\t\t( 0x26BF <= code && code <= 0x26C3 ) || // E0.0 [5] (\u26BF..\u26C3) SQUARED KEY..BLACK DRAUGHTS KING\n\t\t( 0x26C4 <= code && code <= 0x26C5 ) || // E0.6 [2] (\u26C4..\u26C5) snowman without snow..sun behind cloud\n\t\t( 0x26C6 <= code && code <= 0x26C7 ) || // E0.0 [2] (\u26C6..\u26C7) RAIN..BLACK SNOWMAN\n\t\tcode === 0x26C8 || // E0.7 [1] (\u26C8\uFE0F) cloud with lightning and rain\n\t\t( 0x26C9 <= code && code <= 0x26CD ) || // E0.0 [5] (\u26C9..\u26CD) TURNED WHITE SHOGI PIECE..DISABLED CAR\n\t\tcode === 0x26CE || // E0.6 [1] (\u26CE) Ophiuchus\n\t\tcode === 0x26CF || // E0.7 [1] (\u26CF\uFE0F) pick\n\t\tcode === 0x26D0 || // E0.0 [1] (\u26D0) CAR SLIDING\n\t\tcode === 0x26D1 || // E0.7 [1] (\u26D1\uFE0F) rescue worker\u2019s helmet\n\t\tcode === 0x26D2 || // E0.0 [1] (\u26D2) CIRCLED CROSSING LANES\n\t\tcode === 0x26D3 || // E0.7 [1] (\u26D3\uFE0F) chains\n\t\tcode === 0x26D4 || // E0.6 [1] (\u26D4) no entry\n\t\t( 0x26D5 <= code && code <= 0x26E8 ) || // E0.0 [20] (\u26D5..\u26E8) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD\n\t\tcode === 0x26E9 || // E0.7 [1] (\u26E9\uFE0F) shinto shrine\n\t\tcode === 0x26EA || // E0.6 [1] (\u26EA) church\n\t\t( 0x26EB <= code && code <= 0x26EF ) || // E0.0 [5] (\u26EB..\u26EF) CASTLE..MAP SYMBOL FOR LIGHTHOUSE\n\t\t( 0x26F0 <= code && code <= 0x26F1 ) || // E0.7 [2] (\u26F0\uFE0F..\u26F1\uFE0F) mountain..umbrella on ground\n\t\t( 0x26F2 <= code && code <= 0x26F3 ) || // E0.6 [2] (\u26F2..\u26F3) fountain..flag in hole\n\t\tcode === 0x26F4 || // E0.7 [1] (\u26F4\uFE0F) ferry\n\t\tcode === 0x26F5 || // E0.6 [1] (\u26F5) sailboat\n\t\tcode === 0x26F6 || // E0.0 [1] (\u26F6) SQUARE FOUR CORNERS\n\t\t( 0x26F7 <= code && code <= 0x26F9 ) || // E0.7 [3] (\u26F7\uFE0F..\u26F9\uFE0F) skier..person bouncing ball\n\t\tcode === 0x26FA || // E0.6 [1] (\u26FA) tent\n\t\t( 0x26FB <= code && code <= 0x26FC ) || // E0.0 [2] (\u26FB..\u26FC) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL\n\t\tcode === 0x26FD || // E0.6 [1] (\u26FD) fuel pump\n\t\t( 0x26FE <= code && code <= 0x2701 ) || // E0.0 [4] (\u26FE..\u2701) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS\n\t\tcode === 0x2702 || // E0.6 [1] (\u2702\uFE0F) scissors\n\t\t( 0x2703 <= code && code <= 0x2704 ) || // E0.0 [2] (\u2703..\u2704) LOWER BLADE SCISSORS..WHITE SCISSORS\n\t\tcode === 0x2705 || // E0.6 [1] (\u2705) check mark button\n\t\t( 0x2708 <= code && code <= 0x270C ) || // E0.6 [5] (\u2708\uFE0F..\u270C\uFE0F) airplane..victory hand\n\t\tcode === 0x270D || // E0.7 [1] (\u270D\uFE0F) writing hand\n\t\tcode === 0x270E || // E0.0 [1] (\u270E) LOWER RIGHT PENCIL\n\t\tcode === 0x270F || // E0.6 [1] (\u270F\uFE0F) pencil\n\t\t( 0x2710 <= code && code <= 0x2711 ) || // E0.0 [2] (\u2710..\u2711) UPPER RIGHT PENCIL..WHITE NIB\n\t\tcode === 0x2712 || // E0.6 [1] (\u2712\uFE0F) black nib\n\t\tcode === 0x2714 || // E0.6 [1] (\u2714\uFE0F) check mark\n\t\tcode === 0x2716 || // E0.6 [1] (\u2716\uFE0F) multiply\n\t\tcode === 0x271D || // E0.7 [1] (\u271D\uFE0F) latin cross\n\t\tcode === 0x2721 || // E0.7 [1] (\u2721\uFE0F) star of David\n\t\tcode === 0x2728 || // E0.6 [1] (\u2728) sparkles\n\t\t( 0x2733 <= code && code <= 0x2734 ) || // E0.6 [2] (\u2733\uFE0F..\u2734\uFE0F) eight-spoked asterisk..eight-pointed star\n\t\tcode === 0x2744 || // E0.6 [1] (\u2744\uFE0F) snowflake\n\t\tcode === 0x2747 || // E0.6 [1] (\u2747\uFE0F) sparkle\n\t\tcode === 0x274C || // E0.6 [1] (\u274C) cross mark\n\t\tcode === 0x274E || // E0.6 [1] (\u274E) cross mark button\n\t\t( 0x2753 <= code && code <= 0x2755 ) || // E0.6 [3] (\u2753..\u2755) question mark..white exclamation mark\n\t\tcode === 0x2757 || // E0.6 [1] (\u2757) exclamation mark\n\t\tcode === 0x2763 || // E1.0 [1] (\u2763\uFE0F) heart exclamation\n\t\tcode === 0x2764 || // E0.6 [1] (\u2764\uFE0F) red heart\n\t\t( 0x2765 <= code && code <= 0x2767 ) || // E0.0 [3] (\u2765..\u2767) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET\n\t\t( 0x2795 <= code && code <= 0x2797 ) || // E0.6 [3] (\u2795..\u2797) plus..divide\n\t\tcode === 0x27A1 || // E0.6 [1] (\u27A1\uFE0F) right arrow\n\t\tcode === 0x27B0 || // E0.6 [1] (\u27B0) curly loop\n\t\tcode === 0x27BF || // E1.0 [1] (\u27BF) double curly loop\n\t\t( 0x2934 <= code && code <= 0x2935 ) || // E0.6 [2] (\u2934\uFE0F..\u2935\uFE0F) right arrow curving up..right arrow curving down\n\t\t( 0x2B05 <= code && code <= 0x2B07 ) || // E0.6 [3] (\u2B05\uFE0F..\u2B07\uFE0F) left arrow..down arrow\n\t\t( 0x2B1B <= code && code <= 0x2B1C ) || // E0.6 [2] (\u2B1B..\u2B1C) black large square..white large square\n\t\tcode === 0x2B50 || // E0.6 [1] (\u2B50) star\n\t\tcode === 0x2B55 || // E0.6 [1] (\u2B55) hollow red circle\n\t\tcode === 0x3030 || // E0.6 [1] (\u3030\uFE0F) wavy dash\n\t\tcode === 0x303D || // E0.6 [1] (\u303D\uFE0F) part alternation mark\n\t\tcode === 0x3297 || // E0.6 [1] (\u3297\uFE0F) Japanese \u201Ccongratulations\u201D button\n\t\tcode === 0x3299 || // E0.6 [1] (\u3299\uFE0F) Japanese \u201Csecret\u201D button\n\t\t( 0x1F000 <= code && code <= 0x1F003 ) || // E0.0 [4] (\uD83C\uDC00..\uD83C\uDC03) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND\n\t\tcode === 0x1F004 || // E0.6 [1] (\uD83C\uDC04) mahjong red dragon\n\t\t( 0x1F005 <= code && code <= 0x1F0CE ) || // E0.0 [202] (\uD83C\uDC05..\uD83C\uDCCE) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS\n\t\tcode === 0x1F0CF || // E0.6 [1] (\uD83C\uDCCF) joker\n\t\t( 0x1F0D0 <= code && code <= 0x1F0FF ) || // E0.0 [48] (\uD83C\uDCD0..\uD83C\uDCFF) ..\n\t\t( 0x1F10D <= code && code <= 0x1F10F ) || // E0.0 [3] (\uD83C\uDD0D..\uD83C\uDD0F) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH\n\t\tcode === 0x1F12F || // E0.0 [1] (\uD83C\uDD2F) COPYLEFT SYMBOL\n\t\t( 0x1F16C <= code && code <= 0x1F16F ) || // E0.0 [4] (\uD83C\uDD6C..\uD83C\uDD6F) RAISED MR SIGN..CIRCLED HUMAN FIGURE\n\t\t( 0x1F170 <= code && code <= 0x1F171 ) || // E0.6 [2] (\uD83C\uDD70\uFE0F..\uD83C\uDD71\uFE0F) A button (blood type)..B button (blood type)\n\t\t( 0x1F17E <= code && code <= 0x1F17F ) || // E0.6 [2] (\uD83C\uDD7E\uFE0F..\uD83C\uDD7F\uFE0F) O button (blood type)..P button\n\t\tcode === 0x1F18E || // E0.6 [1] (\uD83C\uDD8E) AB button (blood type)\n\t\t( 0x1F191 <= code && code <= 0x1F19A ) || // E0.6 [10] (\uD83C\uDD91..\uD83C\uDD9A) CL button..VS button\n\t\t( 0x1F1AD <= code && code <= 0x1F1E5 ) || // E0.0 [57] (\uD83C\uDDAD..\uD83C\uDDE5) MASK WORK SYMBOL..\n\t\t( 0x1F201 <= code && code <= 0x1F202 ) || // E0.6 [2] (\uD83C\uDE01..\uD83C\uDE02\uFE0F) Japanese \u201Chere\u201D button..Japanese \u201Cservice charge\u201D button\n\t\t( 0x1F203 <= code && code <= 0x1F20F ) || // E0.0 [13] (\uD83C\uDE03..\uD83C\uDE0F) ..\n\t\tcode === 0x1F21A || // E0.6 [1] (\uD83C\uDE1A) Japanese \u201Cfree of charge\u201D button\n\t\tcode === 0x1F22F || // E0.6 [1] (\uD83C\uDE2F) Japanese \u201Creserved\u201D button\n\t\t( 0x1F232 <= code && code <= 0x1F23A ) || // E0.6 [9] (\uD83C\uDE32..\uD83C\uDE3A) Japanese \u201Cprohibited\u201D button..Japanese \u201Copen for business\u201D button\n\t\t( 0x1F23C <= code && code <= 0x1F23F ) || // E0.0 [4] (\uD83C\uDE3C..\uD83C\uDE3F) ..\n\t\t( 0x1F249 <= code && code <= 0x1F24F ) || // E0.0 [7] (\uD83C\uDE49..\uD83C\uDE4F) ..\n\t\t( 0x1F250 <= code && code <= 0x1F251 ) || // E0.6 [2] (\uD83C\uDE50..\uD83C\uDE51) Japanese \u201Cbargain\u201D button..Japanese \u201Cacceptable\u201D button\n\t\t( 0x1F252 <= code && code <= 0x1F2FF ) || // E0.0 [174] (\uD83C\uDE52..\uD83C\uDEFF) ..\n\t\t( 0x1F300 <= code && code <= 0x1F30C ) || // E0.6 [13] (\uD83C\uDF00..\uD83C\uDF0C) cyclone..milky way\n\t\t( 0x1F30D <= code && code <= 0x1F30E ) || // E0.7 [2] (\uD83C\uDF0D..\uD83C\uDF0E) globe showing Europe-Africa..globe showing Americas\n\t\tcode === 0x1F30F || // E0.6 [1] (\uD83C\uDF0F) globe showing Asia-Australia\n\t\tcode === 0x1F310 || // E1.0 [1] (\uD83C\uDF10) globe with meridians\n\t\tcode === 0x1F311 || // E0.6 [1] (\uD83C\uDF11) new moon\n\t\tcode === 0x1F312 || // E1.0 [1] (\uD83C\uDF12) waxing crescent moon\n\t\t( 0x1F313 <= code && code <= 0x1F315 ) || // E0.6 [3] (\uD83C\uDF13..\uD83C\uDF15) first quarter moon..full moon\n\t\t( 0x1F316 <= code && code <= 0x1F318 ) || // E1.0 [3] (\uD83C\uDF16..\uD83C\uDF18) waning gibbous moon..waning crescent moon\n\t\tcode === 0x1F319 || // E0.6 [1] (\uD83C\uDF19) crescent moon\n\t\tcode === 0x1F31A || // E1.0 [1] (\uD83C\uDF1A) new moon face\n\t\tcode === 0x1F31B || // E0.6 [1] (\uD83C\uDF1B) first quarter moon face\n\t\tcode === 0x1F31C || // E0.7 [1] (\uD83C\uDF1C) last quarter moon face\n\t\t( 0x1F31D <= code && code <= 0x1F31E ) || // E1.0 [2] (\uD83C\uDF1D..\uD83C\uDF1E) full moon face..sun with face\n\t\t( 0x1F31F <= code && code <= 0x1F320 ) || // E0.6 [2] (\uD83C\uDF1F..\uD83C\uDF20) glowing star..shooting star\n\t\tcode === 0x1F321 || // E0.7 [1] (\uD83C\uDF21\uFE0F) thermometer\n\t\t( 0x1F322 <= code && code <= 0x1F323 ) || // E0.0 [2] (\uD83C\uDF22..\uD83C\uDF23) BLACK DROPLET..WHITE SUN\n\t\t( 0x1F324 <= code && code <= 0x1F32C ) || // E0.7 [9] (\uD83C\uDF24\uFE0F..\uD83C\uDF2C\uFE0F) sun behind small cloud..wind face\n\t\t( 0x1F32D <= code && code <= 0x1F32F ) || // E1.0 [3] (\uD83C\uDF2D..\uD83C\uDF2F) hot dog..burrito\n\t\t( 0x1F330 <= code && code <= 0x1F331 ) || // E0.6 [2] (\uD83C\uDF30..\uD83C\uDF31) chestnut..seedling\n\t\t( 0x1F332 <= code && code <= 0x1F333 ) || // E1.0 [2] (\uD83C\uDF32..\uD83C\uDF33) evergreen tree..deciduous tree\n\t\t( 0x1F334 <= code && code <= 0x1F335 ) || // E0.6 [2] (\uD83C\uDF34..\uD83C\uDF35) palm tree..cactus\n\t\tcode === 0x1F336 || // E0.7 [1] (\uD83C\uDF36\uFE0F) hot pepper\n\t\t( 0x1F337 <= code && code <= 0x1F34A ) || // E0.6 [20] (\uD83C\uDF37..\uD83C\uDF4A) tulip..tangerine\n\t\tcode === 0x1F34B || // E1.0 [1] (\uD83C\uDF4B) lemon\n\t\t( 0x1F34C <= code && code <= 0x1F34F ) || // E0.6 [4] (\uD83C\uDF4C..\uD83C\uDF4F) banana..green apple\n\t\tcode === 0x1F350 || // E1.0 [1] (\uD83C\uDF50) pear\n\t\t( 0x1F351 <= code && code <= 0x1F37B ) || // E0.6 [43] (\uD83C\uDF51..\uD83C\uDF7B) peach..clinking beer mugs\n\t\tcode === 0x1F37C || // E1.0 [1] (\uD83C\uDF7C) baby bottle\n\t\tcode === 0x1F37D || // E0.7 [1] (\uD83C\uDF7D\uFE0F) fork and knife with plate\n\t\t( 0x1F37E <= code && code <= 0x1F37F ) || // E1.0 [2] (\uD83C\uDF7E..\uD83C\uDF7F) bottle with popping cork..popcorn\n\t\t( 0x1F380 <= code && code <= 0x1F393 ) || // E0.6 [20] (\uD83C\uDF80..\uD83C\uDF93) ribbon..graduation cap\n\t\t( 0x1F394 <= code && code <= 0x1F395 ) || // E0.0 [2] (\uD83C\uDF94..\uD83C\uDF95) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS\n\t\t( 0x1F396 <= code && code <= 0x1F397 ) || // E0.7 [2] (\uD83C\uDF96\uFE0F..\uD83C\uDF97\uFE0F) military medal..reminder ribbon\n\t\tcode === 0x1F398 || // E0.0 [1] (\uD83C\uDF98) MUSICAL KEYBOARD WITH JACKS\n\t\t( 0x1F399 <= code && code <= 0x1F39B ) || // E0.7 [3] (\uD83C\uDF99\uFE0F..\uD83C\uDF9B\uFE0F) studio microphone..control knobs\n\t\t( 0x1F39C <= code && code <= 0x1F39D ) || // E0.0 [2] (\uD83C\uDF9C..\uD83C\uDF9D) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES\n\t\t( 0x1F39E <= code && code <= 0x1F39F ) || // E0.7 [2] (\uD83C\uDF9E\uFE0F..\uD83C\uDF9F\uFE0F) film frames..admission tickets\n\t\t( 0x1F3A0 <= code && code <= 0x1F3C4 ) || // E0.6 [37] (\uD83C\uDFA0..\uD83C\uDFC4) carousel horse..person surfing\n\t\tcode === 0x1F3C5 || // E1.0 [1] (\uD83C\uDFC5) sports medal\n\t\tcode === 0x1F3C6 || // E0.6 [1] (\uD83C\uDFC6) trophy\n\t\tcode === 0x1F3C7 || // E1.0 [1] (\uD83C\uDFC7) horse racing\n\t\tcode === 0x1F3C8 || // E0.6 [1] (\uD83C\uDFC8) american football\n\t\tcode === 0x1F3C9 || // E1.0 [1] (\uD83C\uDFC9) rugby football\n\t\tcode === 0x1F3CA || // E0.6 [1] (\uD83C\uDFCA) person swimming\n\t\t( 0x1F3CB <= code && code <= 0x1F3CE ) || // E0.7 [4] (\uD83C\uDFCB\uFE0F..\uD83C\uDFCE\uFE0F) person lifting weights..racing car\n\t\t( 0x1F3CF <= code && code <= 0x1F3D3 ) || // E1.0 [5] (\uD83C\uDFCF..\uD83C\uDFD3) cricket game..ping pong\n\t\t( 0x1F3D4 <= code && code <= 0x1F3DF ) || // E0.7 [12] (\uD83C\uDFD4\uFE0F..\uD83C\uDFDF\uFE0F) snow-capped mountain..stadium\n\t\t( 0x1F3E0 <= code && code <= 0x1F3E3 ) || // E0.6 [4] (\uD83C\uDFE0..\uD83C\uDFE3) house..Japanese post office\n\t\tcode === 0x1F3E4 || // E1.0 [1] (\uD83C\uDFE4) post office\n\t\t( 0x1F3E5 <= code && code <= 0x1F3F0 ) || // E0.6 [12] (\uD83C\uDFE5..\uD83C\uDFF0) hospital..castle\n\t\t( 0x1F3F1 <= code && code <= 0x1F3F2 ) || // E0.0 [2] (\uD83C\uDFF1..\uD83C\uDFF2) WHITE PENNANT..BLACK PENNANT\n\t\tcode === 0x1F3F3 || // E0.7 [1] (\uD83C\uDFF3\uFE0F) white flag\n\t\tcode === 0x1F3F4 || // E1.0 [1] (\uD83C\uDFF4) black flag\n\t\tcode === 0x1F3F5 || // E0.7 [1] (\uD83C\uDFF5\uFE0F) rosette\n\t\tcode === 0x1F3F6 || // E0.0 [1] (\uD83C\uDFF6) BLACK ROSETTE\n\t\tcode === 0x1F3F7 || // E0.7 [1] (\uD83C\uDFF7\uFE0F) label\n\t\t( 0x1F3F8 <= code && code <= 0x1F3FA ) || // E1.0 [3] (\uD83C\uDFF8..\uD83C\uDFFA) badminton..amphora\n\t\t( 0x1F400 <= code && code <= 0x1F407 ) || // E1.0 [8] (\uD83D\uDC00..\uD83D\uDC07) rat..rabbit\n\t\tcode === 0x1F408 || // E0.7 [1] (\uD83D\uDC08) cat\n\t\t( 0x1F409 <= code && code <= 0x1F40B ) || // E1.0 [3] (\uD83D\uDC09..\uD83D\uDC0B) dragon..whale\n\t\t( 0x1F40C <= code && code <= 0x1F40E ) || // E0.6 [3] (\uD83D\uDC0C..\uD83D\uDC0E) snail..horse\n\t\t( 0x1F40F <= code && code <= 0x1F410 ) || // E1.0 [2] (\uD83D\uDC0F..\uD83D\uDC10) ram..goat\n\t\t( 0x1F411 <= code && code <= 0x1F412 ) || // E0.6 [2] (\uD83D\uDC11..\uD83D\uDC12) ewe..monkey\n\t\tcode === 0x1F413 || // E1.0 [1] (\uD83D\uDC13) rooster\n\t\tcode === 0x1F414 || // E0.6 [1] (\uD83D\uDC14) chicken\n\t\tcode === 0x1F415 || // E0.7 [1] (\uD83D\uDC15) dog\n\t\tcode === 0x1F416 || // E1.0 [1] (\uD83D\uDC16) pig\n\t\t( 0x1F417 <= code && code <= 0x1F429 ) || // E0.6 [19] (\uD83D\uDC17..\uD83D\uDC29) boar..poodle\n\t\tcode === 0x1F42A || // E1.0 [1] (\uD83D\uDC2A) camel\n\t\t( 0x1F42B <= code && code <= 0x1F43E ) || // E0.6 [20] (\uD83D\uDC2B..\uD83D\uDC3E) two-hump camel..paw prints\n\t\tcode === 0x1F43F || // E0.7 [1] (\uD83D\uDC3F\uFE0F) chipmunk\n\t\tcode === 0x1F440 || // E0.6 [1] (\uD83D\uDC40) eyes\n\t\tcode === 0x1F441 || // E0.7 [1] (\uD83D\uDC41\uFE0F) eye\n\t\t( 0x1F442 <= code && code <= 0x1F464 ) || // E0.6 [35] (\uD83D\uDC42..\uD83D\uDC64) ear..bust in silhouette\n\t\tcode === 0x1F465 || // E1.0 [1] (\uD83D\uDC65) busts in silhouette\n\t\t( 0x1F466 <= code && code <= 0x1F46B ) || // E0.6 [6] (\uD83D\uDC66..\uD83D\uDC6B) boy..woman and man holding hands\n\t\t( 0x1F46C <= code && code <= 0x1F46D ) || // E1.0 [2] (\uD83D\uDC6C..\uD83D\uDC6D) men holding hands..women holding hands\n\t\t( 0x1F46E <= code && code <= 0x1F4AC ) || // E0.6 [63] (\uD83D\uDC6E..\uD83D\uDCAC) police officer..speech balloon\n\t\tcode === 0x1F4AD || // E1.0 [1] (\uD83D\uDCAD) thought balloon\n\t\t( 0x1F4AE <= code && code <= 0x1F4B5 ) || // E0.6 [8] (\uD83D\uDCAE..\uD83D\uDCB5) white flower..dollar banknote\n\t\t( 0x1F4B6 <= code && code <= 0x1F4B7 ) || // E1.0 [2] (\uD83D\uDCB6..\uD83D\uDCB7) euro banknote..pound banknote\n\t\t( 0x1F4B8 <= code && code <= 0x1F4EB ) || // E0.6 [52] (\uD83D\uDCB8..\uD83D\uDCEB) money with wings..closed mailbox with raised flag\n\t\t( 0x1F4EC <= code && code <= 0x1F4ED ) || // E0.7 [2] (\uD83D\uDCEC..\uD83D\uDCED) open mailbox with raised flag..open mailbox with lowered flag\n\t\tcode === 0x1F4EE || // E0.6 [1] (\uD83D\uDCEE) postbox\n\t\tcode === 0x1F4EF || // E1.0 [1] (\uD83D\uDCEF) postal horn\n\t\t( 0x1F4F0 <= code && code <= 0x1F4F4 ) || // E0.6 [5] (\uD83D\uDCF0..\uD83D\uDCF4) newspaper..mobile phone off\n\t\tcode === 0x1F4F5 || // E1.0 [1] (\uD83D\uDCF5) no mobile phones\n\t\t( 0x1F4F6 <= code && code <= 0x1F4F7 ) || // E0.6 [2] (\uD83D\uDCF6..\uD83D\uDCF7) antenna bars..camera\n\t\tcode === 0x1F4F8 || // E1.0 [1] (\uD83D\uDCF8) camera with flash\n\t\t( 0x1F4F9 <= code && code <= 0x1F4FC ) || // E0.6 [4] (\uD83D\uDCF9..\uD83D\uDCFC) video camera..videocassette\n\t\tcode === 0x1F4FD || // E0.7 [1] (\uD83D\uDCFD\uFE0F) film projector\n\t\tcode === 0x1F4FE || // E0.0 [1] (\uD83D\uDCFE) PORTABLE STEREO\n\t\t( 0x1F4FF <= code && code <= 0x1F502 ) || // E1.0 [4] (\uD83D\uDCFF..\uD83D\uDD02) prayer beads..repeat single button\n\t\tcode === 0x1F503 || // E0.6 [1] (\uD83D\uDD03) clockwise vertical arrows\n\t\t( 0x1F504 <= code && code <= 0x1F507 ) || // E1.0 [4] (\uD83D\uDD04..\uD83D\uDD07) counterclockwise arrows button..muted speaker\n\t\tcode === 0x1F508 || // E0.7 [1] (\uD83D\uDD08) speaker low volume\n\t\tcode === 0x1F509 || // E1.0 [1] (\uD83D\uDD09) speaker medium volume\n\t\t( 0x1F50A <= code && code <= 0x1F514 ) || // E0.6 [11] (\uD83D\uDD0A..\uD83D\uDD14) speaker high volume..bell\n\t\tcode === 0x1F515 || // E1.0 [1] (\uD83D\uDD15) bell with slash\n\t\t( 0x1F516 <= code && code <= 0x1F52B ) || // E0.6 [22] (\uD83D\uDD16..\uD83D\uDD2B) bookmark..pistol\n\t\t( 0x1F52C <= code && code <= 0x1F52D ) || // E1.0 [2] (\uD83D\uDD2C..\uD83D\uDD2D) microscope..telescope\n\t\t( 0x1F52E <= code && code <= 0x1F53D ) || // E0.6 [16] (\uD83D\uDD2E..\uD83D\uDD3D) crystal ball..downwards button\n\t\t( 0x1F546 <= code && code <= 0x1F548 ) || // E0.0 [3] (\uD83D\uDD46..\uD83D\uDD48) WHITE LATIN CROSS..CELTIC CROSS\n\t\t( 0x1F549 <= code && code <= 0x1F54A ) || // E0.7 [2] (\uD83D\uDD49\uFE0F..\uD83D\uDD4A\uFE0F) om..dove\n\t\t( 0x1F54B <= code && code <= 0x1F54E ) || // E1.0 [4] (\uD83D\uDD4B..\uD83D\uDD4E) kaaba..menorah\n\t\tcode === 0x1F54F || // E0.0 [1] (\uD83D\uDD4F) BOWL OF HYGIEIA\n\t\t( 0x1F550 <= code && code <= 0x1F55B ) || // E0.6 [12] (\uD83D\uDD50..\uD83D\uDD5B) one o\u2019clock..twelve o\u2019clock\n\t\t( 0x1F55C <= code && code <= 0x1F567 ) || // E0.7 [12] (\uD83D\uDD5C..\uD83D\uDD67) one-thirty..twelve-thirty\n\t\t( 0x1F568 <= code && code <= 0x1F56E ) || // E0.0 [7] (\uD83D\uDD68..\uD83D\uDD6E) RIGHT SPEAKER..BOOK\n\t\t( 0x1F56F <= code && code <= 0x1F570 ) || // E0.7 [2] (\uD83D\uDD6F\uFE0F..\uD83D\uDD70\uFE0F) candle..mantelpiece clock\n\t\t( 0x1F571 <= code && code <= 0x1F572 ) || // E0.0 [2] (\uD83D\uDD71..\uD83D\uDD72) BLACK SKULL AND CROSSBONES..NO PIRACY\n\t\t( 0x1F573 <= code && code <= 0x1F579 ) || // E0.7 [7] (\uD83D\uDD73\uFE0F..\uD83D\uDD79\uFE0F) hole..joystick\n\t\tcode === 0x1F57A || // E3.0 [1] (\uD83D\uDD7A) man dancing\n\t\t( 0x1F57B <= code && code <= 0x1F586 ) || // E0.0 [12] (\uD83D\uDD7B..\uD83D\uDD86) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE\n\t\tcode === 0x1F587 || // E0.7 [1] (\uD83D\uDD87\uFE0F) linked paperclips\n\t\t( 0x1F588 <= code && code <= 0x1F589 ) || // E0.0 [2] (\uD83D\uDD88..\uD83D\uDD89) BLACK PUSHPIN..LOWER LEFT PENCIL\n\t\t( 0x1F58A <= code && code <= 0x1F58D ) || // E0.7 [4] (\uD83D\uDD8A\uFE0F..\uD83D\uDD8D\uFE0F) pen..crayon\n\t\t( 0x1F58E <= code && code <= 0x1F58F ) || // E0.0 [2] (\uD83D\uDD8E..\uD83D\uDD8F) LEFT WRITING HAND..TURNED OK HAND SIGN\n\t\tcode === 0x1F590 || // E0.7 [1] (\uD83D\uDD90\uFE0F) hand with fingers splayed\n\t\t( 0x1F591 <= code && code <= 0x1F594 ) || // E0.0 [4] (\uD83D\uDD91..\uD83D\uDD94) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND\n\t\t( 0x1F595 <= code && code <= 0x1F596 ) || // E1.0 [2] (\uD83D\uDD95..\uD83D\uDD96) middle finger..vulcan salute\n\t\t( 0x1F597 <= code && code <= 0x1F5A3 ) || // E0.0 [13] (\uD83D\uDD97..\uD83D\uDDA3) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX\n\t\tcode === 0x1F5A4 || // E3.0 [1] (\uD83D\uDDA4) black heart\n\t\tcode === 0x1F5A5 || // E0.7 [1] (\uD83D\uDDA5\uFE0F) desktop computer\n\t\t( 0x1F5A6 <= code && code <= 0x1F5A7 ) || // E0.0 [2] (\uD83D\uDDA6..\uD83D\uDDA7) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS\n\t\tcode === 0x1F5A8 || // E0.7 [1] (\uD83D\uDDA8\uFE0F) printer\n\t\t( 0x1F5A9 <= code && code <= 0x1F5B0 ) || // E0.0 [8] (\uD83D\uDDA9..\uD83D\uDDB0) POCKET CALCULATOR..TWO BUTTON MOUSE\n\t\t( 0x1F5B1 <= code && code <= 0x1F5B2 ) || // E0.7 [2] (\uD83D\uDDB1\uFE0F..\uD83D\uDDB2\uFE0F) computer mouse..trackball\n\t\t( 0x1F5B3 <= code && code <= 0x1F5BB ) || // E0.0 [9] (\uD83D\uDDB3..\uD83D\uDDBB) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE\n\t\tcode === 0x1F5BC || // E0.7 [1] (\uD83D\uDDBC\uFE0F) framed picture\n\t\t( 0x1F5BD <= code && code <= 0x1F5C1 ) || // E0.0 [5] (\uD83D\uDDBD..\uD83D\uDDC1) FRAME WITH TILES..OPEN FOLDER\n\t\t( 0x1F5C2 <= code && code <= 0x1F5C4 ) || // E0.7 [3] (\uD83D\uDDC2\uFE0F..\uD83D\uDDC4\uFE0F) card index dividers..file cabinet\n\t\t( 0x1F5C5 <= code && code <= 0x1F5D0 ) || // E0.0 [12] (\uD83D\uDDC5..\uD83D\uDDD0) EMPTY NOTE..PAGES\n\t\t( 0x1F5D1 <= code && code <= 0x1F5D3 ) || // E0.7 [3] (\uD83D\uDDD1\uFE0F..\uD83D\uDDD3\uFE0F) wastebasket..spiral calendar\n\t\t( 0x1F5D4 <= code && code <= 0x1F5DB ) || // E0.0 [8] (\uD83D\uDDD4..\uD83D\uDDDB) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL\n\t\t( 0x1F5DC <= code && code <= 0x1F5DE ) || // E0.7 [3] (\uD83D\uDDDC\uFE0F..\uD83D\uDDDE\uFE0F) clamp..rolled-up newspaper\n\t\t( 0x1F5DF <= code && code <= 0x1F5E0 ) || // E0.0 [2] (\uD83D\uDDDF..\uD83D\uDDE0) PAGE WITH CIRCLED TEXT..STOCK CHART\n\t\tcode === 0x1F5E1 || // E0.7 [1] (\uD83D\uDDE1\uFE0F) dagger\n\t\tcode === 0x1F5E2 || // E0.0 [1] (\uD83D\uDDE2) LIPS\n\t\tcode === 0x1F5E3 || // E0.7 [1] (\uD83D\uDDE3\uFE0F) speaking head\n\t\t( 0x1F5E4 <= code && code <= 0x1F5E7 ) || // E0.0 [4] (\uD83D\uDDE4..\uD83D\uDDE7) THREE RAYS ABOVE..THREE RAYS RIGHT\n\t\tcode === 0x1F5E8 || // E2.0 [1] (\uD83D\uDDE8\uFE0F) left speech bubble\n\t\t( 0x1F5E9 <= code && code <= 0x1F5EE ) || // E0.0 [6] (\uD83D\uDDE9..\uD83D\uDDEE) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE\n\t\tcode === 0x1F5EF || // E0.7 [1] (\uD83D\uDDEF\uFE0F) right anger bubble\n\t\t( 0x1F5F0 <= code && code <= 0x1F5F2 ) || // E0.0 [3] (\uD83D\uDDF0..\uD83D\uDDF2) MOOD BUBBLE..LIGHTNING MOOD\n\t\tcode === 0x1F5F3 || // E0.7 [1] (\uD83D\uDDF3\uFE0F) ballot box with ballot\n\t\t( 0x1F5F4 <= code && code <= 0x1F5F9 ) || // E0.0 [6] (\uD83D\uDDF4..\uD83D\uDDF9) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK\n\t\tcode === 0x1F5FA || // E0.7 [1] (\uD83D\uDDFA\uFE0F) world map\n\t\t( 0x1F5FB <= code && code <= 0x1F5FF ) || // E0.6 [5] (\uD83D\uDDFB..\uD83D\uDDFF) mount fuji..moai\n\t\tcode === 0x1F600 || // E1.0 [1] (\uD83D\uDE00) grinning face\n\t\t( 0x1F601 <= code && code <= 0x1F606 ) || // E0.6 [6] (\uD83D\uDE01..\uD83D\uDE06) beaming face with smiling eyes..grinning squinting face\n\t\t( 0x1F607 <= code && code <= 0x1F608 ) || // E1.0 [2] (\uD83D\uDE07..\uD83D\uDE08) smiling face with halo..smiling face with horns\n\t\t( 0x1F609 <= code && code <= 0x1F60D ) || // E0.6 [5] (\uD83D\uDE09..\uD83D\uDE0D) winking face..smiling face with heart-eyes\n\t\tcode === 0x1F60E || // E1.0 [1] (\uD83D\uDE0E) smiling face with sunglasses\n\t\tcode === 0x1F60F || // E0.6 [1] (\uD83D\uDE0F) smirking face\n\t\tcode === 0x1F610 || // E0.7 [1] (\uD83D\uDE10) neutral face\n\t\tcode === 0x1F611 || // E1.0 [1] (\uD83D\uDE11) expressionless face\n\t\t( 0x1F612 <= code && code <= 0x1F614 ) || // E0.6 [3] (\uD83D\uDE12..\uD83D\uDE14) unamused face..pensive face\n\t\tcode === 0x1F615 || // E1.0 [1] (\uD83D\uDE15) confused face\n\t\tcode === 0x1F616 || // E0.6 [1] (\uD83D\uDE16) confounded face\n\t\tcode === 0x1F617 || // E1.0 [1] (\uD83D\uDE17) kissing face\n\t\tcode === 0x1F618 || // E0.6 [1] (\uD83D\uDE18) face blowing a kiss\n\t\tcode === 0x1F619 || // E1.0 [1] (\uD83D\uDE19) kissing face with smiling eyes\n\t\tcode === 0x1F61A || // E0.6 [1] (\uD83D\uDE1A) kissing face with closed eyes\n\t\tcode === 0x1F61B || // E1.0 [1] (\uD83D\uDE1B) face with tongue\n\t\t( 0x1F61C <= code && code <= 0x1F61E ) || // E0.6 [3] (\uD83D\uDE1C..\uD83D\uDE1E) winking face with tongue..disappointed face\n\t\tcode === 0x1F61F || // E1.0 [1] (\uD83D\uDE1F) worried face\n\t\t( 0x1F620 <= code && code <= 0x1F625 ) || // E0.6 [6] (\uD83D\uDE20..\uD83D\uDE25) angry face..sad but relieved face\n\t\t( 0x1F626 <= code && code <= 0x1F627 ) || // E1.0 [2] (\uD83D\uDE26..\uD83D\uDE27) frowning face with open mouth..anguished face\n\t\t( 0x1F628 <= code && code <= 0x1F62B ) || // E0.6 [4] (\uD83D\uDE28..\uD83D\uDE2B) fearful face..tired face\n\t\tcode === 0x1F62C || // E1.0 [1] (\uD83D\uDE2C) grimacing face\n\t\tcode === 0x1F62D || // E0.6 [1] (\uD83D\uDE2D) loudly crying face\n\t\t( 0x1F62E <= code && code <= 0x1F62F ) || // E1.0 [2] (\uD83D\uDE2E..\uD83D\uDE2F) face with open mouth..hushed face\n\t\t( 0x1F630 <= code && code <= 0x1F633 ) || // E0.6 [4] (\uD83D\uDE30..\uD83D\uDE33) anxious face with sweat..flushed face\n\t\tcode === 0x1F634 || // E1.0 [1] (\uD83D\uDE34) sleeping face\n\t\tcode === 0x1F635 || // E0.6 [1] (\uD83D\uDE35) dizzy face\n\t\tcode === 0x1F636 || // E1.0 [1] (\uD83D\uDE36) face without mouth\n\t\t( 0x1F637 <= code && code <= 0x1F640 ) || // E0.6 [10] (\uD83D\uDE37..\uD83D\uDE40) face with medical mask..weary cat\n\t\t( 0x1F641 <= code && code <= 0x1F644 ) || // E1.0 [4] (\uD83D\uDE41..\uD83D\uDE44) slightly frowning face..face with rolling eyes\n\t\t( 0x1F645 <= code && code <= 0x1F64F ) || // E0.6 [11] (\uD83D\uDE45..\uD83D\uDE4F) person gesturing NO..folded hands\n\t\tcode === 0x1F680 || // E0.6 [1] (\uD83D\uDE80) rocket\n\t\t( 0x1F681 <= code && code <= 0x1F682 ) || // E1.0 [2] (\uD83D\uDE81..\uD83D\uDE82) helicopter..locomotive\n\t\t( 0x1F683 <= code && code <= 0x1F685 ) || // E0.6 [3] (\uD83D\uDE83..\uD83D\uDE85) railway car..bullet train\n\t\tcode === 0x1F686 || // E1.0 [1] (\uD83D\uDE86) train\n\t\tcode === 0x1F687 || // E0.6 [1] (\uD83D\uDE87) metro\n\t\tcode === 0x1F688 || // E1.0 [1] (\uD83D\uDE88) light rail\n\t\tcode === 0x1F689 || // E0.6 [1] (\uD83D\uDE89) station\n\t\t( 0x1F68A <= code && code <= 0x1F68B ) || // E1.0 [2] (\uD83D\uDE8A..\uD83D\uDE8B) tram..tram car\n\t\tcode === 0x1F68C || // E0.6 [1] (\uD83D\uDE8C) bus\n\t\tcode === 0x1F68D || // E0.7 [1] (\uD83D\uDE8D) oncoming bus\n\t\tcode === 0x1F68E || // E1.0 [1] (\uD83D\uDE8E) trolleybus\n\t\tcode === 0x1F68F || // E0.6 [1] (\uD83D\uDE8F) bus stop\n\t\tcode === 0x1F690 || // E1.0 [1] (\uD83D\uDE90) minibus\n\t\t( 0x1F691 <= code && code <= 0x1F693 ) || // E0.6 [3] (\uD83D\uDE91..\uD83D\uDE93) ambulance..police car\n\t\tcode === 0x1F694 || // E0.7 [1] (\uD83D\uDE94) oncoming police car\n\t\tcode === 0x1F695 || // E0.6 [1] (\uD83D\uDE95) taxi\n\t\tcode === 0x1F696 || // E1.0 [1] (\uD83D\uDE96) oncoming taxi\n\t\tcode === 0x1F697 || // E0.6 [1] (\uD83D\uDE97) automobile\n\t\tcode === 0x1F698 || // E0.7 [1] (\uD83D\uDE98) oncoming automobile\n\t\t( 0x1F699 <= code && code <= 0x1F69A ) || // E0.6 [2] (\uD83D\uDE99..\uD83D\uDE9A) sport utility vehicle..delivery truck\n\t\t( 0x1F69B <= code && code <= 0x1F6A1 ) || // E1.0 [7] (\uD83D\uDE9B..\uD83D\uDEA1) articulated lorry..aerial tramway\n\t\tcode === 0x1F6A2 || // E0.6 [1] (\uD83D\uDEA2) ship\n\t\tcode === 0x1F6A3 || // E1.0 [1] (\uD83D\uDEA3) person rowing boat\n\t\t( 0x1F6A4 <= code && code <= 0x1F6A5 ) || // E0.6 [2] (\uD83D\uDEA4..\uD83D\uDEA5) speedboat..horizontal traffic light\n\t\tcode === 0x1F6A6 || // E1.0 [1] (\uD83D\uDEA6) vertical traffic light\n\t\t( 0x1F6A7 <= code && code <= 0x1F6AD ) || // E0.6 [7] (\uD83D\uDEA7..\uD83D\uDEAD) construction..no smoking\n\t\t( 0x1F6AE <= code && code <= 0x1F6B1 ) || // E1.0 [4] (\uD83D\uDEAE..\uD83D\uDEB1) litter in bin sign..non-potable water\n\t\tcode === 0x1F6B2 || // E0.6 [1] (\uD83D\uDEB2) bicycle\n\t\t( 0x1F6B3 <= code && code <= 0x1F6B5 ) || // E1.0 [3] (\uD83D\uDEB3..\uD83D\uDEB5) no bicycles..person mountain biking\n\t\tcode === 0x1F6B6 || // E0.6 [1] (\uD83D\uDEB6) person walking\n\t\t( 0x1F6B7 <= code && code <= 0x1F6B8 ) || // E1.0 [2] (\uD83D\uDEB7..\uD83D\uDEB8) no pedestrians..children crossing\n\t\t( 0x1F6B9 <= code && code <= 0x1F6BE ) || // E0.6 [6] (\uD83D\uDEB9..\uD83D\uDEBE) men\u2019s room..water closet\n\t\tcode === 0x1F6BF || // E1.0 [1] (\uD83D\uDEBF) shower\n\t\tcode === 0x1F6C0 || // E0.6 [1] (\uD83D\uDEC0) person taking bath\n\t\t( 0x1F6C1 <= code && code <= 0x1F6C5 ) || // E1.0 [5] (\uD83D\uDEC1..\uD83D\uDEC5) bathtub..left luggage\n\t\t( 0x1F6C6 <= code && code <= 0x1F6CA ) || // E0.0 [5] (\uD83D\uDEC6..\uD83D\uDECA) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL\n\t\tcode === 0x1F6CB || // E0.7 [1] (\uD83D\uDECB\uFE0F) couch and lamp\n\t\tcode === 0x1F6CC || // E1.0 [1] (\uD83D\uDECC) person in bed\n\t\t( 0x1F6CD <= code && code <= 0x1F6CF ) || // E0.7 [3] (\uD83D\uDECD\uFE0F..\uD83D\uDECF\uFE0F) shopping bags..bed\n\t\tcode === 0x1F6D0 || // E1.0 [1] (\uD83D\uDED0) place of worship\n\t\t( 0x1F6D1 <= code && code <= 0x1F6D2 ) || // E3.0 [2] (\uD83D\uDED1..\uD83D\uDED2) stop sign..shopping cart\n\t\t( 0x1F6D3 <= code && code <= 0x1F6D4 ) || // E0.0 [2] (\uD83D\uDED3..\uD83D\uDED4) STUPA..PAGODA\n\t\tcode === 0x1F6D5 || // E12.0 [1] (\uD83D\uDED5) hindu temple\n\t\t( 0x1F6D6 <= code && code <= 0x1F6D7 ) || // E13.0 [2] (\uD83D\uDED6..\uD83D\uDED7) hut..elevator\n\t\t( 0x1F6D8 <= code && code <= 0x1F6DF ) || // E0.0 [8] (\uD83D\uDED8..\uD83D\uDEDF) ..\n\t\t( 0x1F6E0 <= code && code <= 0x1F6E5 ) || // E0.7 [6] (\uD83D\uDEE0\uFE0F..\uD83D\uDEE5\uFE0F) hammer and wrench..motor boat\n\t\t( 0x1F6E6 <= code && code <= 0x1F6E8 ) || // E0.0 [3] (\uD83D\uDEE6..\uD83D\uDEE8) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE\n\t\tcode === 0x1F6E9 || // E0.7 [1] (\uD83D\uDEE9\uFE0F) small airplane\n\t\tcode === 0x1F6EA || // E0.0 [1] (\uD83D\uDEEA) NORTHEAST-POINTING AIRPLANE\n\t\t( 0x1F6EB <= code && code <= 0x1F6EC ) || // E1.0 [2] (\uD83D\uDEEB..\uD83D\uDEEC) airplane departure..airplane arrival\n\t\t( 0x1F6ED <= code && code <= 0x1F6EF ) || // E0.0 [3] (\uD83D\uDEED..\uD83D\uDEEF) ..\n\t\tcode === 0x1F6F0 || // E0.7 [1] (\uD83D\uDEF0\uFE0F) satellite\n\t\t( 0x1F6F1 <= code && code <= 0x1F6F2 ) || // E0.0 [2] (\uD83D\uDEF1..\uD83D\uDEF2) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE\n\t\tcode === 0x1F6F3 || // E0.7 [1] (\uD83D\uDEF3\uFE0F) passenger ship\n\t\t( 0x1F6F4 <= code && code <= 0x1F6F6 ) || // E3.0 [3] (\uD83D\uDEF4..\uD83D\uDEF6) kick scooter..canoe\n\t\t( 0x1F6F7 <= code && code <= 0x1F6F8 ) || // E5.0 [2] (\uD83D\uDEF7..\uD83D\uDEF8) sled..flying saucer\n\t\tcode === 0x1F6F9 || // E11.0 [1] (\uD83D\uDEF9) skateboard\n\t\tcode === 0x1F6FA || // E12.0 [1] (\uD83D\uDEFA) auto rickshaw\n\t\t( 0x1F6FB <= code && code <= 0x1F6FC ) || // E13.0 [2] (\uD83D\uDEFB..\uD83D\uDEFC) pickup truck..roller skate\n\t\t( 0x1F6FD <= code && code <= 0x1F6FF ) || // E0.0 [3] (\uD83D\uDEFD..\uD83D\uDEFF) ..\n\t\t( 0x1F774 <= code && code <= 0x1F77F ) || // E0.0 [12] (\uD83D\uDF74..\uD83D\uDF7F) ..\n\t\t( 0x1F7D5 <= code && code <= 0x1F7DF ) || // E0.0 [11] (\uD83D\uDFD5..\uD83D\uDFDF) CIRCLED TRIANGLE..\n\t\t( 0x1F7E0 <= code && code <= 0x1F7EB ) || // E12.0 [12] (\uD83D\uDFE0..\uD83D\uDFEB) orange circle..brown square\n\t\t( 0x1F7EC <= code && code <= 0x1F7FF ) || // E0.0 [20] (\uD83D\uDFEC..\uD83D\uDFFF) ..\n\t\t( 0x1F80C <= code && code <= 0x1F80F ) || // E0.0 [4] (\uD83E\uDC0C..\uD83E\uDC0F) ..\n\t\t( 0x1F848 <= code && code <= 0x1F84F ) || // E0.0 [8] (\uD83E\uDC48..\uD83E\uDC4F) ..\n\t\t( 0x1F85A <= code && code <= 0x1F85F ) || // E0.0 [6] (\uD83E\uDC5A..\uD83E\uDC5F) ..\n\t\t( 0x1F888 <= code && code <= 0x1F88F ) || // E0.0 [8] (\uD83E\uDC88..\uD83E\uDC8F) ..\n\t\t( 0x1F8AE <= code && code <= 0x1F8FF ) || // E0.0 [82] (\uD83E\uDCAE..\uD83E\uDCFF) ..\n\t\tcode === 0x1F90C || // E13.0 [1] (\uD83E\uDD0C) pinched fingers\n\t\t( 0x1F90D <= code && code <= 0x1F90F ) || // E12.0 [3] (\uD83E\uDD0D..\uD83E\uDD0F) white heart..pinching hand\n\t\t( 0x1F910 <= code && code <= 0x1F918 ) || // E1.0 [9] (\uD83E\uDD10..\uD83E\uDD18) zipper-mouth face..sign of the horns\n\t\t( 0x1F919 <= code && code <= 0x1F91E ) || // E3.0 [6] (\uD83E\uDD19..\uD83E\uDD1E) call me hand..crossed fingers\n\t\tcode === 0x1F91F || // E5.0 [1] (\uD83E\uDD1F) love-you gesture\n\t\t( 0x1F920 <= code && code <= 0x1F927 ) || // E3.0 [8] (\uD83E\uDD20..\uD83E\uDD27) cowboy hat face..sneezing face\n\t\t( 0x1F928 <= code && code <= 0x1F92F ) || // E5.0 [8] (\uD83E\uDD28..\uD83E\uDD2F) face with raised eyebrow..exploding head\n\t\tcode === 0x1F930 || // E3.0 [1] (\uD83E\uDD30) pregnant woman\n\t\t( 0x1F931 <= code && code <= 0x1F932 ) || // E5.0 [2] (\uD83E\uDD31..\uD83E\uDD32) breast-feeding..palms up together\n\t\t( 0x1F933 <= code && code <= 0x1F93A ) || // E3.0 [8] (\uD83E\uDD33..\uD83E\uDD3A) selfie..person fencing\n\t\t( 0x1F93C <= code && code <= 0x1F93E ) || // E3.0 [3] (\uD83E\uDD3C..\uD83E\uDD3E) people wrestling..person playing handball\n\t\tcode === 0x1F93F || // E12.0 [1] (\uD83E\uDD3F) diving mask\n\t\t( 0x1F940 <= code && code <= 0x1F945 ) || // E3.0 [6] (\uD83E\uDD40..\uD83E\uDD45) wilted flower..goal net\n\t\t( 0x1F947 <= code && code <= 0x1F94B ) || // E3.0 [5] (\uD83E\uDD47..\uD83E\uDD4B) 1st place medal..martial arts uniform\n\t\tcode === 0x1F94C || // E5.0 [1] (\uD83E\uDD4C) curling stone\n\t\t( 0x1F94D <= code && code <= 0x1F94F ) || // E11.0 [3] (\uD83E\uDD4D..\uD83E\uDD4F) lacrosse..flying disc\n\t\t( 0x1F950 <= code && code <= 0x1F95E ) || // E3.0 [15] (\uD83E\uDD50..\uD83E\uDD5E) croissant..pancakes\n\t\t( 0x1F95F <= code && code <= 0x1F96B ) || // E5.0 [13] (\uD83E\uDD5F..\uD83E\uDD6B) dumpling..canned food\n\t\t( 0x1F96C <= code && code <= 0x1F970 ) || // E11.0 [5] (\uD83E\uDD6C..\uD83E\uDD70) leafy green..smiling face with hearts\n\t\tcode === 0x1F971 || // E12.0 [1] (\uD83E\uDD71) yawning face\n\t\tcode === 0x1F972 || // E13.0 [1] (\uD83E\uDD72) smiling face with tear\n\t\t( 0x1F973 <= code && code <= 0x1F976 ) || // E11.0 [4] (\uD83E\uDD73..\uD83E\uDD76) partying face..cold face\n\t\t( 0x1F977 <= code && code <= 0x1F978 ) || // E13.0 [2] (\uD83E\uDD77..\uD83E\uDD78) ninja..disguised face\n\t\tcode === 0x1F979 || // E0.0 [1] (\uD83E\uDD79) \n\t\tcode === 0x1F97A || // E11.0 [1] (\uD83E\uDD7A) pleading face\n\t\tcode === 0x1F97B || // E12.0 [1] (\uD83E\uDD7B) sari\n\t\t( 0x1F97C <= code && code <= 0x1F97F ) || // E11.0 [4] (\uD83E\uDD7C..\uD83E\uDD7F) lab coat..flat shoe\n\t\t( 0x1F980 <= code && code <= 0x1F984 ) || // E1.0 [5] (\uD83E\uDD80..\uD83E\uDD84) crab..unicorn\n\t\t( 0x1F985 <= code && code <= 0x1F991 ) || // E3.0 [13] (\uD83E\uDD85..\uD83E\uDD91) eagle..squid\n\t\t( 0x1F992 <= code && code <= 0x1F997 ) || // E5.0 [6] (\uD83E\uDD92..\uD83E\uDD97) giraffe..cricket\n\t\t( 0x1F998 <= code && code <= 0x1F9A2 ) || // E11.0 [11] (\uD83E\uDD98..\uD83E\uDDA2) kangaroo..swan\n\t\t( 0x1F9A3 <= code && code <= 0x1F9A4 ) || // E13.0 [2] (\uD83E\uDDA3..\uD83E\uDDA4) mammoth..dodo\n\t\t( 0x1F9A5 <= code && code <= 0x1F9AA ) || // E12.0 [6] (\uD83E\uDDA5..\uD83E\uDDAA) sloth..oyster\n\t\t( 0x1F9AB <= code && code <= 0x1F9AD ) || // E13.0 [3] (\uD83E\uDDAB..\uD83E\uDDAD) beaver..seal\n\t\t( 0x1F9AE <= code && code <= 0x1F9AF ) || // E12.0 [2] (\uD83E\uDDAE..\uD83E\uDDAF) guide dog..white cane\n\t\t( 0x1F9B0 <= code && code <= 0x1F9B9 ) || // E11.0 [10] (\uD83E\uDDB0..\uD83E\uDDB9) red hair..supervillain\n\t\t( 0x1F9BA <= code && code <= 0x1F9BF ) || // E12.0 [6] (\uD83E\uDDBA..\uD83E\uDDBF) safety vest..mechanical leg\n\t\tcode === 0x1F9C0 || // E1.0 [1] (\uD83E\uDDC0) cheese wedge\n\t\t( 0x1F9C1 <= code && code <= 0x1F9C2 ) || // E11.0 [2] (\uD83E\uDDC1..\uD83E\uDDC2) cupcake..salt\n\t\t( 0x1F9C3 <= code && code <= 0x1F9CA ) || // E12.0 [8] (\uD83E\uDDC3..\uD83E\uDDCA) beverage box..ice\n\t\tcode === 0x1F9CB || // E13.0 [1] (\uD83E\uDDCB) bubble tea\n\t\tcode === 0x1F9CC || // E0.0 [1] (\uD83E\uDDCC) \n\t\t( 0x1F9CD <= code && code <= 0x1F9CF ) || // E12.0 [3] (\uD83E\uDDCD..\uD83E\uDDCF) person standing..deaf person\n\t\t( 0x1F9D0 <= code && code <= 0x1F9E6 ) || // E5.0 [23] (\uD83E\uDDD0..\uD83E\uDDE6) face with monocle..socks\n\t\t( 0x1F9E7 <= code && code <= 0x1F9FF ) || // E11.0 [25] (\uD83E\uDDE7..\uD83E\uDDFF) red envelope..nazar amulet\n\t\t( 0x1FA00 <= code && code <= 0x1FA6F ) || // E0.0 [112] (\uD83E\uDE00..\uD83E\uDE6F) NEUTRAL CHESS KING..\n\t\t( 0x1FA70 <= code && code <= 0x1FA73 ) || // E12.0 [4] (\uD83E\uDE70..\uD83E\uDE73) ballet shoes..shorts\n\t\tcode === 0x1FA74 || // E13.0 [1] (\uD83E\uDE74) thong sandal\n\t\t( 0x1FA75 <= code && code <= 0x1FA77 ) || // E0.0 [3] (\uD83E\uDE75..\uD83E\uDE77) ..\n\t\t( 0x1FA78 <= code && code <= 0x1FA7A ) || // E12.0 [3] (\uD83E\uDE78..\uD83E\uDE7A) drop of blood..stethoscope\n\t\t( 0x1FA7B <= code && code <= 0x1FA7F ) || // E0.0 [5] (\uD83E\uDE7B..\uD83E\uDE7F) ..\n\t\t( 0x1FA80 <= code && code <= 0x1FA82 ) || // E12.0 [3] (\uD83E\uDE80..\uD83E\uDE82) yo-yo..parachute\n\t\t( 0x1FA83 <= code && code <= 0x1FA86 ) || // E13.0 [4] (\uD83E\uDE83..\uD83E\uDE86) boomerang..nesting dolls\n\t\t( 0x1FA87 <= code && code <= 0x1FA8F ) || // E0.0 [9] (\uD83E\uDE87..\uD83E\uDE8F) ..\n\t\t( 0x1FA90 <= code && code <= 0x1FA95 ) || // E12.0 [6] (\uD83E\uDE90..\uD83E\uDE95) ringed planet..banjo\n\t\t( 0x1FA96 <= code && code <= 0x1FAA8 ) || // E13.0 [19] (\uD83E\uDE96..\uD83E\uDEA8) military helmet..rock\n\t\t( 0x1FAA9 <= code && code <= 0x1FAAF ) || // E0.0 [7] (\uD83E\uDEA9..\uD83E\uDEAF) ..\n\t\t( 0x1FAB0 <= code && code <= 0x1FAB6 ) || // E13.0 [7] (\uD83E\uDEB0..\uD83E\uDEB6) fly..feather\n\t\t( 0x1FAB7 <= code && code <= 0x1FABF ) || // E0.0 [9] (\uD83E\uDEB7..\uD83E\uDEBF) ..\n\t\t( 0x1FAC0 <= code && code <= 0x1FAC2 ) || // E13.0 [3] (\uD83E\uDEC0..\uD83E\uDEC2) anatomical heart..people hugging\n\t\t( 0x1FAC3 <= code && code <= 0x1FACF ) || // E0.0 [13] (\uD83E\uDEC3..\uD83E\uDECF) ..\n\t\t( 0x1FAD0 <= code && code <= 0x1FAD6 ) || // E13.0 [7] (\uD83E\uDED0..\uD83E\uDED6) blueberries..teapot\n\t\t( 0x1FAD7 <= code && code <= 0x1FAFF ) || // E0.0 [41] (\uD83E\uDED7..\uD83E\uDEFF) ..\n\t\t( 0x1FC00 <= code && code <= 0x1FFFD ) // E0.0[1022] (\uD83F\uDC00..\uD83F\uDFFD) ..\n\t) {\n\t\treturn constants.ExtendedPictographic;\n\t}\n\treturn constants.Other;\n}\n\n\n// EXPORTS //\n\nmodule.exports = emojiProperty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// MAIN //\n\n/**\n* Returns the grapheme break property from the [Unicode Standard][1].\n*\n* [1]: https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt\n*\n* @private\n* @param {NonNegativeInteger} code - Unicode code point\n* @returns {NonNegativeInteger} grapheme break property\n*\n* @example\n* var out = graphemeBreakProperty( 0x008f );\n* // returns 2\n*\n* @example\n* var out = graphemeBreakProperty( 0x111C2 );\n* // returns 12\n*\n* @example\n* var out = graphemeBreakProperty( 0x1F3FC );\n* // returns 3\n*/\nfunction graphemeBreakProperty( code ) {\n\tif (\n\t\t( 0x0600 <= code && code <= 0x0605 ) || // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\n\t\tcode === 0x06DD || // Cf ARABIC END OF AYAH\n\t\tcode === 0x070F || // Cf SYRIAC ABBREVIATION MARK\n\t\tcode === 0x08E2 || // Cf ARABIC DISPUTED END OF AYAH\n\t\tcode === 0x0D4E || // Lo MALAYALAM LETTER DOT REPH\n\t\tcode === 0x110BD || // Cf KAITHI NUMBER SIGN\n\t\tcode === 0x110CD || // Cf KAITHI NUMBER SIGN ABOVE\n\t\t( 0x111C2 <= code && code <= 0x111C3 ) || // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\n\t\tcode === 0x1193F || // Lo DIVES AKURU PREFIXED NASAL SIGN\n\t\tcode === 0x11941 || // Lo DIVES AKURU INITIAL RA\n\t\tcode === 0x11A3A || // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\n\t\t( 0x11A84 <= code && code <= 0x11A89 ) || // Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA\n\t\tcode === 0x11D46 // Lo MASARAM GONDI REPHA\n\t) {\n\t\treturn constants.Prepend;\n\t}\n\tif (\n\t\tcode === 0x000D // Cc \n\t) {\n\t\treturn constants.CR;\n\t}\n\tif (\n\t\tcode === 0x000A // Cc \n\t) {\n\t\treturn constants.LF;\n\t}\n\tif (\n\t\t( 0x0000 <= code && code <= 0x0009 ) || // Cc [10] ..\n\t\t( 0x000B <= code && code <= 0x000C ) || // Cc [2] ..\n\t\t( 0x000E <= code && code <= 0x001F ) || // Cc [18] ..\n\t\t( 0x007F <= code && code <= 0x009F ) || // Cc [33] ..\n\t\tcode === 0x00AD || // Cf SOFT HYPHEN\n\t\tcode === 0x061C || // Cf ARABIC LETTER MARK\n\t\tcode === 0x180E || // Cf MONGOLIAN VOWEL SEPARATOR\n\t\tcode === 0x200B || // Cf ZERO WIDTH SPACE\n\t\t( 0x200E <= code && code <= 0x200F ) || // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\n\t\tcode === 0x2028 || // Zl LINE SEPARATOR\n\t\tcode === 0x2029 || // Zp PARAGRAPH SEPARATOR\n\t\t( 0x202A <= code && code <= 0x202E ) || // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\n\t\t( 0x2060 <= code && code <= 0x2064 ) || // Cf [5] WORD JOINER..INVISIBLE PLUS\n\t\tcode === 0x2065 || // Cn \n\t\t( 0x2066 <= code && code <= 0x206F ) || // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\n\t\tcode === 0xFEFF || // Cf ZERO WIDTH NO-BREAK SPACE\n\t\t( 0xFFF0 <= code && code <= 0xFFF8 ) || // Cn [9] ..\n\t\t( 0xFFF9 <= code && code <= 0xFFFB ) || // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\n\t\t( 0x13430 <= code && code <= 0x13438 ) || // Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT\n\t\t( 0x1BCA0 <= code && code <= 0x1BCA3 ) || // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\n\t\t( 0x1D173 <= code && code <= 0x1D17A ) || // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\n\t\tcode === 0xE0000 || // Cn \n\t\tcode === 0xE0001 || // Cf LANGUAGE TAG\n\t\t( 0xE0002 <= code && code <= 0xE001F ) || // Cn [30] ..\n\t\t( 0xE0080 <= code && code <= 0xE00FF ) || // Cn [128] ..\n\t\t( 0xE01F0 <= code && code <= 0xE0FFF ) // Cn [3600] ..\n\t) {\n\t\treturn constants.Control;\n\t}\n\tif (\n\t\t( 0x0300 <= code && code <= 0x036F ) || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\n\t\t( 0x0483 <= code && code <= 0x0487 ) || // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\n\t\t( 0x0488 <= code && code <= 0x0489 ) || // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\n\t\t( 0x0591 <= code && code <= 0x05BD ) || // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\n\t\tcode === 0x05BF || // Mn HEBREW POINT RAFE\n\t\t( 0x05C1 <= code && code <= 0x05C2 ) || // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\n\t\t( 0x05C4 <= code && code <= 0x05C5 ) || // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\n\t\tcode === 0x05C7 || // Mn HEBREW POINT QAMATS QATAN\n\t\t( 0x0610 <= code && code <= 0x061A ) || // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\n\t\t( 0x064B <= code && code <= 0x065F ) || // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\n\t\tcode === 0x0670 || // Mn ARABIC LETTER SUPERSCRIPT ALEF\n\t\t( 0x06D6 <= code && code <= 0x06DC ) || // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\n\t\t( 0x06DF <= code && code <= 0x06E4 ) || // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\n\t\t( 0x06E7 <= code && code <= 0x06E8 ) || // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\n\t\t( 0x06EA <= code && code <= 0x06ED ) || // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\n\t\tcode === 0x0711 || // Mn SYRIAC LETTER SUPERSCRIPT ALAPH\n\t\t( 0x0730 <= code && code <= 0x074A ) || // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\n\t\t( 0x07A6 <= code && code <= 0x07B0 ) || // Mn [11] THAANA ABAFILI..THAANA SUKUN\n\t\t( 0x07EB <= code && code <= 0x07F3 ) || // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\n\t\tcode === 0x07FD || // Mn NKO DANTAYALAN\n\t\t( 0x0816 <= code && code <= 0x0819 ) || // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\n\t\t( 0x081B <= code && code <= 0x0823 ) || // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\n\t\t( 0x0825 <= code && code <= 0x0827 ) || // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\n\t\t( 0x0829 <= code && code <= 0x082D ) || // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\n\t\t( 0x0859 <= code && code <= 0x085B ) || // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\n\t\t( 0x08D3 <= code && code <= 0x08E1 ) || // Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA\n\t\t( 0x08E3 <= code && code <= 0x0902 ) || // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\n\t\tcode === 0x093A || // Mn DEVANAGARI VOWEL SIGN OE\n\t\tcode === 0x093C || // Mn DEVANAGARI SIGN NUKTA\n\t\t( 0x0941 <= code && code <= 0x0948 ) || // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\n\t\tcode === 0x094D || // Mn DEVANAGARI SIGN VIRAMA\n\t\t( 0x0951 <= code && code <= 0x0957 ) || // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\n\t\t( 0x0962 <= code && code <= 0x0963 ) || // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0981 || // Mn BENGALI SIGN CANDRABINDU\n\t\tcode === 0x09BC || // Mn BENGALI SIGN NUKTA\n\t\tcode === 0x09BE || // Mc BENGALI VOWEL SIGN AA\n\t\t( 0x09C1 <= code && code <= 0x09C4 ) || // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\n\t\tcode === 0x09CD || // Mn BENGALI SIGN VIRAMA\n\t\tcode === 0x09D7 || // Mc BENGALI AU LENGTH MARK\n\t\t( 0x09E2 <= code && code <= 0x09E3 ) || // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\n\t\tcode === 0x09FE || // Mn BENGALI SANDHI MARK\n\t\t( 0x0A01 <= code && code <= 0x0A02 ) || // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\n\t\tcode === 0x0A3C || // Mn GURMUKHI SIGN NUKTA\n\t\t( 0x0A41 <= code && code <= 0x0A42 ) || // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\n\t\t( 0x0A47 <= code && code <= 0x0A48 ) || // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\n\t\t( 0x0A4B <= code && code <= 0x0A4D ) || // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\n\t\tcode === 0x0A51 || // Mn GURMUKHI SIGN UDAAT\n\t\t( 0x0A70 <= code && code <= 0x0A71 ) || // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK\n\t\tcode === 0x0A75 || // Mn GURMUKHI SIGN YAKASH\n\t\t( 0x0A81 <= code && code <= 0x0A82 ) || // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\n\t\tcode === 0x0ABC || // Mn GUJARATI SIGN NUKTA\n\t\t( 0x0AC1 <= code && code <= 0x0AC5 ) || // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\n\t\t( 0x0AC7 <= code && code <= 0x0AC8 ) || // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\n\t\tcode === 0x0ACD || // Mn GUJARATI SIGN VIRAMA\n\t\t( 0x0AE2 <= code && code <= 0x0AE3 ) || // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\n\t\t( 0x0AFA <= code && code <= 0x0AFF ) || // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\n\t\tcode === 0x0B01 || // Mn ORIYA SIGN CANDRABINDU\n\t\tcode === 0x0B3C || // Mn ORIYA SIGN NUKTA\n\t\tcode === 0x0B3E || // Mc ORIYA VOWEL SIGN AA\n\t\tcode === 0x0B3F || // Mn ORIYA VOWEL SIGN I\n\t\t( 0x0B41 <= code && code <= 0x0B44 ) || // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\n\t\tcode === 0x0B4D || // Mn ORIYA SIGN VIRAMA\n\t\t( 0x0B55 <= code && code <= 0x0B56 ) || // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK\n\t\tcode === 0x0B57 || // Mc ORIYA AU LENGTH MARK\n\t\t( 0x0B62 <= code && code <= 0x0B63 ) || // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0B82 || // Mn TAMIL SIGN ANUSVARA\n\t\tcode === 0x0BBE || // Mc TAMIL VOWEL SIGN AA\n\t\tcode === 0x0BC0 || // Mn TAMIL VOWEL SIGN II\n\t\tcode === 0x0BCD || // Mn TAMIL SIGN VIRAMA\n\t\tcode === 0x0BD7 || // Mc TAMIL AU LENGTH MARK\n\t\tcode === 0x0C00 || // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE\n\t\tcode === 0x0C04 || // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE\n\t\t( 0x0C3E <= code && code <= 0x0C40 ) || // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\n\t\t( 0x0C46 <= code && code <= 0x0C48 ) || // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\n\t\t( 0x0C4A <= code && code <= 0x0C4D ) || // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\n\t\t( 0x0C55 <= code && code <= 0x0C56 ) || // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\n\t\t( 0x0C62 <= code && code <= 0x0C63 ) || // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0C81 || // Mn KANNADA SIGN CANDRABINDU\n\t\tcode === 0x0CBC || // Mn KANNADA SIGN NUKTA\n\t\tcode === 0x0CBF || // Mn KANNADA VOWEL SIGN I\n\t\tcode === 0x0CC2 || // Mc KANNADA VOWEL SIGN UU\n\t\tcode === 0x0CC6 || // Mn KANNADA VOWEL SIGN E\n\t\t( 0x0CCC <= code && code <= 0x0CCD ) || // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\n\t\t( 0x0CD5 <= code && code <= 0x0CD6 ) || // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\n\t\t( 0x0CE2 <= code && code <= 0x0CE3 ) || // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\n\t\t( 0x0D00 <= code && code <= 0x0D01 ) || // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\n\t\t( 0x0D3B <= code && code <= 0x0D3C ) || // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\n\t\tcode === 0x0D3E || // Mc MALAYALAM VOWEL SIGN AA\n\t\t( 0x0D41 <= code && code <= 0x0D44 ) || // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\n\t\tcode === 0x0D4D || // Mn MALAYALAM SIGN VIRAMA\n\t\tcode === 0x0D57 || // Mc MALAYALAM AU LENGTH MARK\n\t\t( 0x0D62 <= code && code <= 0x0D63 ) || // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0D81 || // Mn SINHALA SIGN CANDRABINDU\n\t\tcode === 0x0DCA || // Mn SINHALA SIGN AL-LAKUNA\n\t\tcode === 0x0DCF || // Mc SINHALA VOWEL SIGN AELA-PILLA\n\t\t( 0x0DD2 <= code && code <= 0x0DD4 ) || // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\n\t\tcode === 0x0DD6 || // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA\n\t\tcode === 0x0DDF || // Mc SINHALA VOWEL SIGN GAYANUKITTA\n\t\tcode === 0x0E31 || // Mn THAI CHARACTER MAI HAN-AKAT\n\t\t( 0x0E34 <= code && code <= 0x0E3A ) || // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\n\t\t( 0x0E47 <= code && code <= 0x0E4E ) || // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\n\t\tcode === 0x0EB1 || // Mn LAO VOWEL SIGN MAI KAN\n\t\t( 0x0EB4 <= code && code <= 0x0EBC ) || // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO\n\t\t( 0x0EC8 <= code && code <= 0x0ECD ) || // Mn [6] LAO TONE MAI EK..LAO NIGGAHITA\n\t\t( 0x0F18 <= code && code <= 0x0F19 ) || // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\n\t\tcode === 0x0F35 || // Mn TIBETAN MARK NGAS BZUNG NYI ZLA\n\t\tcode === 0x0F37 || // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS\n\t\tcode === 0x0F39 || // Mn TIBETAN MARK TSA -PHRU\n\t\t( 0x0F71 <= code && code <= 0x0F7E ) || // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\n\t\t( 0x0F80 <= code && code <= 0x0F84 ) || // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\n\t\t( 0x0F86 <= code && code <= 0x0F87 ) || // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\n\t\t( 0x0F8D <= code && code <= 0x0F97 ) || // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\n\t\t( 0x0F99 <= code && code <= 0x0FBC ) || // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\n\t\tcode === 0x0FC6 || // Mn TIBETAN SYMBOL PADMA GDAN\n\t\t( 0x102D <= code && code <= 0x1030 ) || // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\n\t\t( 0x1032 <= code && code <= 0x1037 ) || // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\n\t\t( 0x1039 <= code && code <= 0x103A ) || // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\n\t\t( 0x103D <= code && code <= 0x103E ) || // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\n\t\t( 0x1058 <= code && code <= 0x1059 ) || // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\n\t\t( 0x105E <= code && code <= 0x1060 ) || // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\n\t\t( 0x1071 <= code && code <= 0x1074 ) || // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\n\t\tcode === 0x1082 || // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA\n\t\t( 0x1085 <= code && code <= 0x1086 ) || // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\n\t\tcode === 0x108D || // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\n\t\tcode === 0x109D || // Mn MYANMAR VOWEL SIGN AITON AI\n\t\t( 0x135D <= code && code <= 0x135F ) || // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\n\t\t( 0x1712 <= code && code <= 0x1714 ) || // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\n\t\t( 0x1732 <= code && code <= 0x1734 ) || // Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD\n\t\t( 0x1752 <= code && code <= 0x1753 ) || // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\n\t\t( 0x1772 <= code && code <= 0x1773 ) || // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\n\t\t( 0x17B4 <= code && code <= 0x17B5 ) || // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\n\t\t( 0x17B7 <= code && code <= 0x17BD ) || // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\n\t\tcode === 0x17C6 || // Mn KHMER SIGN NIKAHIT\n\t\t( 0x17C9 <= code && code <= 0x17D3 ) || // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\n\t\tcode === 0x17DD || // Mn KHMER SIGN ATTHACAN\n\t\t( 0x180B <= code && code <= 0x180D ) || // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\n\t\t( 0x1885 <= code && code <= 0x1886 ) || // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\n\t\tcode === 0x18A9 || // Mn MONGOLIAN LETTER ALI GALI DAGALGA\n\t\t( 0x1920 <= code && code <= 0x1922 ) || // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\n\t\t( 0x1927 <= code && code <= 0x1928 ) || // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\n\t\tcode === 0x1932 || // Mn LIMBU SMALL LETTER ANUSVARA\n\t\t( 0x1939 <= code && code <= 0x193B ) || // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\n\t\t( 0x1A17 <= code && code <= 0x1A18 ) || // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\n\t\tcode === 0x1A1B || // Mn BUGINESE VOWEL SIGN AE\n\t\tcode === 0x1A56 || // Mn TAI THAM CONSONANT SIGN MEDIAL LA\n\t\t( 0x1A58 <= code && code <= 0x1A5E ) || // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\n\t\tcode === 0x1A60 || // Mn TAI THAM SIGN SAKOT\n\t\tcode === 0x1A62 || // Mn TAI THAM VOWEL SIGN MAI SAT\n\t\t( 0x1A65 <= code && code <= 0x1A6C ) || // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\n\t\t( 0x1A73 <= code && code <= 0x1A7C ) || // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\n\t\tcode === 0x1A7F || // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT\n\t\t( 0x1AB0 <= code && code <= 0x1ABD ) || // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\n\t\tcode === 0x1ABE || // Me COMBINING PARENTHESES OVERLAY\n\t\t( 0x1ABF <= code && code <= 0x1AC0 ) || // Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW\n\t\t( 0x1B00 <= code && code <= 0x1B03 ) || // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\n\t\tcode === 0x1B34 || // Mn BALINESE SIGN REREKAN\n\t\tcode === 0x1B35 || // Mc BALINESE VOWEL SIGN TEDUNG\n\t\t( 0x1B36 <= code && code <= 0x1B3A) || // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\n\t\tcode === 0x1B3C || // Mn BALINESE VOWEL SIGN LA LENGA\n\t\tcode === 0x1B42 || // Mn BALINESE VOWEL SIGN PEPET\n\t\t( 0x1B6B <= code && code <= 0x1B73 ) || // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\n\t\t( 0x1B80 <= code && code <= 0x1B81 ) || // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\n\t\t( 0x1BA2 <= code && code <= 0x1BA5 ) || // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\n\t\t( 0x1BA8 <= code && code <= 0x1BA9 ) || // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\n\t\t( 0x1BAB <= code && code <= 0x1BAD ) || // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\n\t\tcode === 0x1BE6 || // Mn BATAK SIGN TOMPI\n\t\t( 0x1BE8 <= code && code <= 0x1BE9) || // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\n\t\tcode === 0x1BED || // Mn BATAK VOWEL SIGN KARO O\n\t\t( 0x1BEF <= code && code <= 0x1BF1 ) || // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\n\t\t( 0x1C2C <= code && code <= 0x1C33 ) || // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\n\t\t( 0x1C36 <= code && code <= 0x1C37 ) || // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\n\t\t( 0x1CD0 <= code && code <= 0x1CD2 ) || // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\n\t\t( 0x1CD4 <= code && code <= 0x1CE0 ) || // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\n\t\t( 0x1CE2 <= code && code <= 0x1CE8 ) || // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\n\t\tcode === 0x1CED || // Mn VEDIC SIGN TIRYAK\n\t\tcode === 0x1CF4 || // Mn VEDIC TONE CANDRA ABOVE\n\t\t( 0x1CF8 <= code && code <= 0x1CF9 ) || // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\n\t\t( 0x1DC0 <= code && code <= 0x1DF9 ) || // Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW\n\t\t( 0x1DFB <= code && code <= 0x1DFF ) || // Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\n\t\tcode === 0x200C || // Cf ZERO WIDTH NON-JOINER\n\t\t( 0x20D0 <= code && code <= 0x20DC ) || // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\n\t\t( 0x20DD <= code && code <= 0x20E0 ) || // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\n\t\tcode === 0x20E1 || // Mn COMBINING LEFT RIGHT ARROW ABOVE\n\t\t( 0x20E2 <= code && code <= 0x20E4 ) || // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\n\t\t( 0x20E5 <= code && code <= 0x20F0 ) || // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\n\t\t( 0x2CEF <= code && code <= 0x2CF1 ) || // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\n\t\tcode === 0x2D7F || // Mn TIFINAGH CONSONANT JOINER\n\t\t( 0x2DE0 <= code && code <= 0x2DFF ) || // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\n\t\t( 0x302A <= code && code <= 0x302D ) || // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\n\t\t( 0x302E <= code && code <= 0x302F ) || // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\n\t\t( 0x3099 <= code && code <= 0x309A ) || // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\n\t\tcode === 0xA66F || // Mn COMBINING CYRILLIC VZMET\n\t\t( 0xA670 <= code && code <= 0xA672 ) || // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\n\t\t( 0xA674 <= code && code <= 0xA67D ) || // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\n\t\t( 0xA69E <= code && code <= 0xA69F ) || // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\n\t\t( 0xA6F0 <= code && code <= 0xA6F1 ) || // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\n\t\tcode === 0xA802 || // Mn SYLOTI NAGRI SIGN DVISVARA\n\t\tcode === 0xA806 || // Mn SYLOTI NAGRI SIGN HASANTA\n\t\tcode === 0xA80B || // Mn SYLOTI NAGRI SIGN ANUSVARA\n\t\t( 0xA825 <= code && code <= 0xA826 ) || // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\n\t\tcode === 0xA82C || // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA\n\t\t( 0xA8C4 <= code && code <= 0xA8C5 ) || // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\n\t\t( 0xA8E0 <= code && code <= 0xA8F1 ) || // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\n\t\tcode === 0xA8FF || // Mn DEVANAGARI VOWEL SIGN AY\n\t\t( 0xA926 <= code && code <= 0xA92D ) || // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\n\t\t( 0xA947 <= code && code <= 0xA951 ) || // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\n\t\t( 0xA980 <= code && code <= 0xA982 ) || // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\n\t\tcode === 0xA9B3 || // Mn JAVANESE SIGN CECAK TELU\n\t\t( 0xA9B6 <= code && code <= 0xA9B9 ) || // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\n\t\t( 0xA9BC <= code && code <= 0xA9BD ) || // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET\n\t\tcode === 0xA9E5 || // Mn MYANMAR SIGN SHAN SAW\n\t\t( 0xAA29 <= code && code <= 0xAA2E ) || // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\n\t\t( 0xAA31 <= code && code <= 0xAA32 ) || // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\n\t\t( 0xAA35 <= code && code <= 0xAA36 ) || // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\n\t\tcode === 0xAA43 || // Mn CHAM CONSONANT SIGN FINAL NG\n\t\tcode === 0xAA4C || // Mn CHAM CONSONANT SIGN FINAL M\n\t\tcode === 0xAA7C || // Mn MYANMAR SIGN TAI LAING TONE-2\n\t\tcode === 0xAAB0 || // Mn TAI VIET MAI KANG\n\t\t( 0xAAB2 <= code && code <= 0xAAB4 ) || // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U\n\t\t( 0xAAB7 <= code && code <= 0xAAB8 ) || // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\n\t\t( 0xAABE <= code && code <= 0xAABF ) || // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\n\t\tcode === 0xAAC1 || // Mn TAI VIET TONE MAI THO\n\t\t( 0xAAEC <= code && code <= 0xAAED ) || // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\n\t\tcode === 0xAAF6 || // Mn MEETEI MAYEK VIRAMA\n\t\tcode === 0xABE5 || // Mn MEETEI MAYEK VOWEL SIGN ANAP\n\t\tcode === 0xABE8 || // Mn MEETEI MAYEK VOWEL SIGN UNAP\n\t\tcode === 0xABED || // Mn MEETEI MAYEK APUN IYEK\n\t\tcode === 0xFB1E || // Mn HEBREW POINT JUDEO-SPANISH VARIKA\n\t\t( 0xFE00 <= code && code <= 0xFE0F ) || // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\n\t\t( 0xFE20 <= code && code <= 0xFE2F ) || // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\n\t\t( 0xFF9E <= code && code <= 0xFF9F ) || // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\n\t\tcode === 0x101FD || // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\n\t\tcode === 0x102E0 || // Mn COPTIC EPACT THOUSANDS MARK\n\t\t( 0x10376 <= code && code <= 0x1037A ) || // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\n\t\t( 0x10A01 <= code && code <= 0x10A03 ) || // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\n\t\t( 0x10A05 <= code && code <= 0x10A06 ) || // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\n\t\t( 0x10A0C <= code && code <= 0x10A0F ) || // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\n\t\t( 0x10A38 <= code && code <= 0x10A3A ) || // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\n\t\tcode === 0x10A3F || // Mn KHAROSHTHI VIRAMA\n\t\t( 0x10AE5 <= code && code <= 0x10AE6 ) || // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\n\t\t( 0x10D24 <= code && code <= 0x10D27 ) || // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI\n\t\t( 0x10EAB <= code && code <= 0x10EAC ) || // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK\n\t\t( 0x10F46 <= code && code <= 0x10F50 ) || // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW\n\t\tcode === 0x11001 || // Mn BRAHMI SIGN ANUSVARA\n\t\t( 0x11038 <= code && code <= 0x11046 ) || // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\n\t\t( 0x1107F <= code && code <= 0x11081 ) || // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\n\t\t( 0x110B3 <= code && code <= 0x110B6 ) || // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\n\t\t( 0x110B9 <= code && code <= 0x110BA ) || // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\n\t\t( 0x11100 <= code && code <= 0x11102 ) || // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\n\t\t( 0x11127 <= code && code <= 0x1112B ) || // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\n\t\t( 0x1112D <= code && code <= 0x11134 ) || // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\n\t\tcode === 0x11173 || // Mn MAHAJANI SIGN NUKTA\n\t\t( 0x11180 <= code && code <= 0x11181 ) || // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\n\t\t( 0x111B6 <= code && code <= 0x111BE ) || // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\n\t\t( 0x111C9 <= code && code <= 0x111CC ) || // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK\n\t\tcode === 0x111CF || // Mn SHARADA SIGN INVERTED CANDRABINDU\n\t\t( 0x1122F <= code && code <= 0x11231 ) || // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\n\t\tcode === 0x11234 || // Mn KHOJKI SIGN ANUSVARA\n\t\t( 0x11236 <= code && code <= 0x11237 ) || // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\n\t\tcode === 0x1123E || // Mn KHOJKI SIGN SUKUN\n\t\tcode === 0x112DF || // Mn KHUDAWADI SIGN ANUSVARA\n\t\t( 0x112E3 <= code && code <= 0x112EA ) || // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\n\t\t( 0x11300 <= code && code <= 0x11301 ) || // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\n\t\t( 0x1133B <= code && code <= 0x1133C ) || // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA\n\t\tcode === 0x1133E || // Mc GRANTHA VOWEL SIGN AA\n\t\tcode === 0x11340 || // Mn GRANTHA VOWEL SIGN II\n\t\tcode === 0x11357 || // Mc GRANTHA AU LENGTH MARK\n\t\t( 0x11366 <= code && code <= 0x1136C ) || // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\n\t\t( 0x11370 <= code && code <= 0x11374 ) || // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\n\t\t( 0x11438 <= code && code <= 0x1143F ) || // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\n\t\t( 0x11442 <= code && code <= 0x11444 ) || // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\n\t\tcode === 0x11446 || // Mn NEWA SIGN NUKTA\n\t\tcode === 0x1145E || // Mn NEWA SANDHI MARK\n\t\tcode === 0x114B0 || // Mc TIRHUTA VOWEL SIGN AA\n\t\t( 0x114B3 <= code && code <= 0x114B8 ) || // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\n\t\tcode === 0x114BA || // Mn TIRHUTA VOWEL SIGN SHORT E\n\t\tcode === 0x114BD || // Mc TIRHUTA VOWEL SIGN SHORT O\n\t\t( 0x114BF <= code && code <= 0x114C0 ) || // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\n\t\t( 0x114C2 <= code && code <= 0x114C3 ) || // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\n\t\tcode === 0x115AF || // Mc SIDDHAM VOWEL SIGN AA\n\t\t( 0x115B2 <= code && code <= 0x115B5 ) || // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\n\t\t( 0x115BC <= code && code <= 0x115BD ) || // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\n\t\t( 0x115BF <= code && code <= 0x115C0 ) || // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\n\t\t( 0x115DC <= code && code <= 0x115DD ) || // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\n\t\t( 0x11633 <= code && code <= 0x1163A ) || // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\n\t\tcode === 0x1163D || // Mn MODI SIGN ANUSVARA\n\t\t( 0x1163F <= code && code <= 0x11640 ) || // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\n\t\tcode === 0x116AB || // Mn TAKRI SIGN ANUSVARA\n\t\tcode === 0x116AD || // Mn TAKRI VOWEL SIGN AA\n\t\t( 0x116B0 <= code && code <= 0x116B5 ) || // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\n\t\tcode === 0x116B7 || // Mn TAKRI SIGN NUKTA\n\t\t( 0x1171D <= code && code <= 0x1171F ) || // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\n\t\t( 0x11722 <= code && code <= 0x11725 ) || // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\n\t\t( 0x11727 <= code && code <= 0x1172B ) || // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\n\t\t( 0x1182F <= code && code <= 0x11837 ) || // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA\n\t\t( 0x11839 <= code && code <= 0x1183A ) || // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA\n\t\tcode === 0x11930 || // Mc DIVES AKURU VOWEL SIGN AA\n\t\t( 0x1193B <= code && code <= 0x1193C ) || // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU\n\t\tcode === 0x1193E || // Mn DIVES AKURU VIRAMA\n\t\tcode === 0x11943 || // Mn DIVES AKURU SIGN NUKTA\n\t\t( 0x119D4 <= code && code <= 0x119D7 ) || // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR\n\t\t( 0x119DA <= code && code <= 0x119DB ) || // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI\n\t\tcode === 0x119E0 || // Mn NANDINAGARI SIGN VIRAMA\n\t\t( 0x11A01 <= code && code <= 0x11A0A ) || // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK\n\t\t( 0x11A33 <= code && code <= 0x11A38 ) || // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\n\t\t( 0x11A3B <= code && code <= 0x11A3E ) || // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\n\t\tcode === 0x11A47 || // Mn ZANABAZAR SQUARE SUBJOINER\n\t\t( 0x11A51 <= code && code <= 0x11A56 ) || // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\n\t\t( 0x11A59 <= code && code <= 0x11A5B ) || // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\n\t\t( 0x11A8A <= code && code <= 0x11A96 ) || // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\n\t\t( 0x11A98 <= code && code <= 0x11A99 ) || // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\n\t\t( 0x11C30 <= code && code <= 0x11C36 ) || // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\n\t\t( 0x11C38 <= code && code <= 0x11C3D ) || // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\n\t\tcode === 0x11C3F || // Mn BHAIKSUKI SIGN VIRAMA\n\t\t( 0x11C92 <= code && code <= 0x11CA7 ) || // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\n\t\t( 0x11CAA <= code && code <= 0x11CB0 ) || // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\n\t\t( 0x11CB2 <= code && code <= 0x11CB3 ) || // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\n\t\t( 0x11CB5 <= code && code <= 0x11CB6 ) || // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\n\t\t( 0x11D31 <= code && code <= 0x11D36 ) || // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\n\t\tcode === 0x11D3A || // Mn MASARAM GONDI VOWEL SIGN E\n\t\t( 0x11D3C <= code && code <= 0x11D3D ) || // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\n\t\t( 0x11D3F <= code && code <= 0x11D45 ) || // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\n\t\tcode === 0x11D47 || // Mn MASARAM GONDI RA-KARA\n\t\t( 0x11D90 <= code && code <= 0x11D91 ) || // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI\n\t\tcode === 0x11D95 || // Mn GUNJALA GONDI SIGN ANUSVARA\n\t\tcode === 0x11D97 || // Mn GUNJALA GONDI VIRAMA\n\t\t( 0x11EF3 <= code && code <= 0x11EF4 ) || // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U\n\t\t( 0x16AF0 <= code && code <= 0x16AF4 ) || // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\n\t\t( 0x16B30 <= code && code <= 0x16B36 ) || // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\n\t\tcode === 0x16F4F || // Mn MIAO SIGN CONSONANT MODIFIER BAR\n\t\t( 0x16F8F <= code && code <= 0x16F92 ) || // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW\n\t\tcode === 0x16FE4 || // Mn KHITAN SMALL SCRIPT FILLER\n\t\t( 0x1BC9D <= code && code <= 0x1BC9E ) || // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\n\t\tcode === 0x1D165 || // Mc MUSICAL SYMBOL COMBINING STEM\n\t\t( 0x1D167 <= code && code <= 0x1D169 ) || // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\n\t\t( 0x1D16E <= code && code <= 0x1D172 ) || // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\n\t\t( 0x1D17B <= code && code <= 0x1D182 ) || // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\n\t\t( 0x1D185 <= code && code <= 0x1D18B ) || // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\n\t\t( 0x1D1AA <= code && code <= 0x1D1AD ) || // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\n\t\t( 0x1D242 <= code && code <= 0x1D244 ) || // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\n\t\t( 0x1DA00 <= code && code <= 0x1DA36 ) || // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\n\t\t( 0x1DA3B <= code && code <= 0x1DA6C ) || // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\n\t\tcode === 0x1DA75 || // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\n\t\tcode === 0x1DA84 || // Mn SIGNWRITING LOCATION HEAD NECK\n\t\t( 0x1DA9B <= code && code <= 0x1DA9F ) || // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\n\t\t( 0x1DAA1 <= code && code <= 0x1DAAF ) || // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\n\t\t( 0x1E000 <= code && code <= 0x1E006 ) || // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\n\t\t( 0x1E008 <= code && code <= 0x1E018 ) || // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\n\t\t( 0x1E01B <= code && code <= 0x1E021 ) || // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\n\t\t( 0x1E023 <= code && code <= 0x1E024 ) || // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\n\t\t( 0x1E026 <= code && code <= 0x1E02A ) || // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\n\t\t( 0x1E130 <= code && code <= 0x1E136 ) || // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D\n\t\t( 0x1E2EC <= code && code <= 0x1E2EF ) || // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI\n\t\t( 0x1E8D0 <= code && code <= 0x1E8D6 ) || // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\n\t\t( 0x1E944 <= code && code <= 0x1E94A ) || // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\n\t\t( 0x1F3FB <= code && code <= 0x1F3FF ) || // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\n\t\t( 0xE0020 <= code && code <= 0xE007F ) || // Cf [96] TAG SPACE..CANCEL TAG\n\t\t( 0xE0100 <= code && code <= 0xE01EF ) // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\n\t) {\n\t\treturn constants.Extend;\n\t}\n\tif (\n\t\t( 0x1F1E6 <= code && code <= 0x1F1FF ) // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\n\t) {\n\t\treturn constants.RegionalIndicator;\n\t}\n\tif (\n\t\tcode === 0x0903 || // Mc DEVANAGARI SIGN VISARGA\n\t\tcode === 0x093B || // Mc DEVANAGARI VOWEL SIGN OOE\n\t\t( 0x093E <= code && code <= 0x0940 ) || // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\n\t\t( 0x0949 <= code && code <= 0x094C ) || // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\n\t\t( 0x094E <= code && code <= 0x094F ) || // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\n\t\t( 0x0982 <= code && code <= 0x0983 ) || // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\n\t\t( 0x09BF <= code && code <= 0x09C0 ) || // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\n\t\t( 0x09C7 <= code && code <= 0x09C8 ) || // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\n\t\t( 0x09CB <= code && code <= 0x09CC ) || // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\n\t\tcode === 0x0A03 || // Mc GURMUKHI SIGN VISARGA\n\t\t( 0x0A3E <= code && code <= 0x0A40 ) || // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\n\t\tcode === 0x0A83 || // Mc GUJARATI SIGN VISARGA\n\t\t( 0x0ABE <= code && code <= 0x0AC0 ) || // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\n\t\tcode === 0x0AC9 || // Mc GUJARATI VOWEL SIGN CANDRA O\n\t\t( 0x0ACB <= code && code <= 0x0ACC ) || // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\n\t\t( 0x0B02 <= code && code <= 0x0B03 ) || // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\n\t\tcode === 0x0B40 || // Mc ORIYA VOWEL SIGN II\n\t\t( 0x0B47 <= code && code <= 0x0B48 ) || // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\n\t\t( 0x0B4B <= code && code <= 0x0B4C ) || // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\n\t\tcode === 0x0BBF || // Mc TAMIL VOWEL SIGN I\n\t\t( 0x0BC1 <= code && code <= 0x0BC2 ) || // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\n\t\t( 0x0BC6 <= code && code <= 0x0BC8 ) || // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\n\t\t( 0x0BCA <= code && code <= 0x0BCC ) || // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\n\t\t( 0x0C01 <= code && code <= 0x0C03 ) || // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\n\t\t( 0x0C41 <= code && code <= 0x0C44 ) || // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\n\t\t( 0x0C82 <= code && code <= 0x0C83 ) || // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\n\t\tcode === 0x0CBE || // Mc KANNADA VOWEL SIGN AA\n\t\t( 0x0CC0 <= code && code <= 0x0CC1 ) || // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\n\t\t( 0x0CC3 <= code && code <= 0x0CC4 ) || // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\n\t\t( 0x0CC7 <= code && code <= 0x0CC8 ) || // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\n\t\t( 0x0CCA <= code && code <= 0x0CCB ) || // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\n\t\t( 0x0D02 <= code && code <= 0x0D03 ) || // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\n\t\t( 0x0D3F <= code && code <= 0x0D40 ) || // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\n\t\t( 0x0D46 <= code && code <= 0x0D48 ) || // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\n\t\t( 0x0D4A <= code && code <= 0x0D4C ) || // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\n\t\t( 0x0D82 <= code && code <= 0x0D83 ) || // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\n\t\t( 0x0DD0 <= code && code <= 0x0DD1 ) || // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\n\t\t( 0x0DD8 <= code && code <= 0x0DDE ) || // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\n\t\t( 0x0DF2 <= code && code <= 0x0DF3 ) || // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\n\t\tcode === 0x0E33 || // Lo THAI CHARACTER SARA AM\n\t\tcode === 0x0EB3 || // Lo LAO VOWEL SIGN AM\n\t\t( 0x0F3E <= code && code <= 0x0F3F ) || // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\n\t\tcode === 0x0F7F || // Mc TIBETAN SIGN RNAM BCAD\n\t\tcode === 0x1031 || // Mc MYANMAR VOWEL SIGN E\n\t\t( 0x103B <= code && code <= 0x103C ) || // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\n\t\t( 0x1056 <= code && code <= 0x1057 ) || // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\n\t\tcode === 0x1084 || // Mc MYANMAR VOWEL SIGN SHAN E\n\t\tcode === 0x17B6 || // Mc KHMER VOWEL SIGN AA\n\t\t( 0x17BE <= code && code <= 0x17C5 ) || // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\n\t\t( 0x17C7 <= code && code <= 0x17C8 ) || // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\n\t\t( 0x1923 <= code && code <= 0x1926 ) || // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\n\t\t( 0x1929 <= code && code <= 0x192B ) || // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\n\t\t( 0x1930 <= code && code <= 0x1931 ) || // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\n\t\t( 0x1933 <= code && code <= 0x1938 ) || // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\n\t\t( 0x1A19 <= code && code <= 0x1A1A ) || // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\n\t\tcode === 0x1A55 || // Mc TAI THAM CONSONANT SIGN MEDIAL RA\n\t\tcode === 0x1A57 || // Mc TAI THAM CONSONANT SIGN LA TANG LAI\n\t\t( 0x1A6D <= code && code <= 0x1A72 ) || // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\n\t\tcode === 0x1B04 || // Mc BALINESE SIGN BISAH\n\t\tcode === 0x1B3B || // Mc BALINESE VOWEL SIGN RA REPA TEDUNG\n\t\t( 0x1B3D <= code && code <= 0x1B41 ) || // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\n\t\t( 0x1B43 <= code && code <= 0x1B44 ) || // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\n\t\tcode === 0x1B82 || // Mc SUNDANESE SIGN PANGWISAD\n\t\tcode === 0x1BA1 || // Mc SUNDANESE CONSONANT SIGN PAMINGKAL\n\t\t( 0x1BA6 <= code && code <= 0x1BA7 ) || // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\n\t\tcode === 0x1BAA || // Mc SUNDANESE SIGN PAMAAEH\n\t\tcode === 0x1BE7 || // Mc BATAK VOWEL SIGN E\n\t\t( 0x1BEA <= code && code <= 0x1BEC ) || // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\n\t\tcode === 0x1BEE || // Mc BATAK VOWEL SIGN U\n\t\t( 0x1BF2 <= code && code <= 0x1BF3 ) || // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN\n\t\t( 0x1C24 <= code && code <= 0x1C2B ) || // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\n\t\t( 0x1C34 <= code && code <= 0x1C35 ) || // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\n\t\tcode === 0x1CE1 || // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\n\t\tcode === 0x1CF7 || // Mc VEDIC SIGN ATIKRAMA\n\t\t( 0xA823 <= code && code <= 0xA824 ) || // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\n\t\tcode === 0xA827 || // Mc SYLOTI NAGRI VOWEL SIGN OO\n\t\t( 0xA880 <= code && code <= 0xA881 ) || // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\n\t\t( 0xA8B4 <= code && code <= 0xA8C3 ) || // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\n\t\t( 0xA952 <= code && code <= 0xA953 ) || // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\n\t\tcode === 0xA983 || // Mc JAVANESE SIGN WIGNYAN\n\t\t( 0xA9B4 <= code && code <= 0xA9B5 ) || // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\n\t\t( 0xA9BA <= code && code <= 0xA9BB ) || // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\n\t\t( 0xA9BE <= code && code <= 0xA9C0 ) || // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON\n\t\t( 0xAA2F <= code && code <= 0xAA30 ) || // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\n\t\t( 0xAA33 <= code && code <= 0xAA34 ) || // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\n\t\tcode === 0xAA4D || // Mc CHAM CONSONANT SIGN FINAL H\n\t\tcode === 0xAAEB || // Mc MEETEI MAYEK VOWEL SIGN II\n\t\t( 0xAAEE <= code && code <= 0xAAEF ) || // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\n\t\tcode === 0xAAF5 || // Mc MEETEI MAYEK VOWEL SIGN VISARGA\n\t\t( 0xABE3 <= code && code <= 0xABE4 ) || // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\n\t\t( 0xABE6 <= code && code <= 0xABE7 ) || // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\n\t\t( 0xABE9 <= code && code <= 0xABEA ) || // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\n\t\tcode === 0xABEC || // Mc MEETEI MAYEK LUM IYEK\n\t\tcode === 0x11000 || // Mc BRAHMI SIGN CANDRABINDU\n\t\tcode === 0x11002 || // Mc BRAHMI SIGN VISARGA\n\t\tcode === 0x11082 || // Mc KAITHI SIGN VISARGA\n\t\t( 0x110B0 <= code && code <= 0x110B2 ) || // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\n\t\t( 0x110B7 <= code && code <= 0x110B8 ) || // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\n\t\tcode === 0x1112C || // Mc CHAKMA VOWEL SIGN E\n\t\t( 0x11145 <= code && code <= 0x11146 ) || // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI\n\t\tcode === 0x11182 || // Mc SHARADA SIGN VISARGA\n\t\t( 0x111B3 <= code && code <= 0x111B5 ) || // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\n\t\t( 0x111BF <= code && code <= 0x111C0 ) || // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\n\t\tcode === 0x111CE || // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E\n\t\t( 0x1122C <= code && code <= 0x1122E ) || // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\n\t\t( 0x11232 <= code && code <= 0x11233 ) || // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\n\t\tcode === 0x11235 || // Mc KHOJKI SIGN VIRAMA\n\t\t( 0x112E0 <= code && code <= 0x112E2 ) || // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\n\t\t( 0x11302 <= code && code <= 0x11303 ) || // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\n\t\tcode === 0x1133F || // Mc GRANTHA VOWEL SIGN I\n\t\t( 0x11341 <= code && code <= 0x11344 ) || // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\n\t\t( 0x11347 <= code && code <= 0x11348 ) || // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\n\t\t( 0x1134B <= code && code <= 0x1134D ) || // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\n\t\t( 0x11362 <= code && code <= 0x11363 ) || // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\n\t\t( 0x11435 <= code && code <= 0x11437 ) || // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\n\t\t( 0x11440 <= code && code <= 0x11441 ) || // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\n\t\tcode === 0x11445 || // Mc NEWA SIGN VISARGA\n\t\t( 0x114B1 <= code && code <= 0x114B2 ) || // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\n\t\tcode === 0x114B9 || // Mc TIRHUTA VOWEL SIGN E\n\t\t( 0x114BB <= code && code <= 0x114BC ) || // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\n\t\tcode === 0x114BE || // Mc TIRHUTA VOWEL SIGN AU\n\t\tcode === 0x114C1 || // Mc TIRHUTA SIGN VISARGA\n\t\t( 0x115B0 <= code && code <= 0x115B1 ) || // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\n\t\t( 0x115B8 <= code && code <= 0x115BB ) || // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\n\t\tcode === 0x115BE || // Mc SIDDHAM SIGN VISARGA\n\t\t( 0x11630 <= code && code <= 0x11632 ) || // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\n\t\t( 0x1163B <= code && code <= 0x1163C ) || // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\n\t\tcode === 0x1163E || // Mc MODI SIGN VISARGA\n\t\tcode === 0x116AC || // Mc TAKRI SIGN VISARGA\n\t\t( 0x116AE <= code && code <= 0x116AF ) || // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\n\t\tcode === 0x116B6 || // Mc TAKRI SIGN VIRAMA\n\t\t( 0x11720 <= code && code <= 0x11721 ) || // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA\n\t\tcode === 0x11726 || // Mc AHOM VOWEL SIGN E\n\t\t( 0x1182C <= code && code <= 0x1182E ) || // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II\n\t\tcode === 0x11838 || // Mc DOGRA SIGN VISARGA\n\t\t( 0x11931 <= code && code <= 0x11935 ) || // Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E\n\t\t( 0x11937 <= code && code <= 0x11938 ) || // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O\n\t\tcode === 0x1193D || // Mc DIVES AKURU SIGN HALANTA\n\t\tcode === 0x11940 || // Mc DIVES AKURU MEDIAL YA\n\t\tcode === 0x11942 || // Mc DIVES AKURU MEDIAL RA\n\t\t( 0x119D1 <= code && code <= 0x119D3 ) || // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II\n\t\t( 0x119DC <= code && code <= 0x119DF ) || // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA\n\t\tcode === 0x119E4 || // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E\n\t\tcode === 0x11A39 || // Mc ZANABAZAR SQUARE SIGN VISARGA\n\t\t( 0x11A57 <= code && code <= 0x11A58 ) || // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\n\t\tcode === 0x11A97 || // Mc SOYOMBO SIGN VISARGA\n\t\tcode === 0x11C2F || // Mc BHAIKSUKI VOWEL SIGN AA\n\t\tcode === 0x11C3E || // Mc BHAIKSUKI SIGN VISARGA\n\t\tcode === 0x11CA9 || // Mc MARCHEN SUBJOINED LETTER YA\n\t\tcode === 0x11CB1 || // Mc MARCHEN VOWEL SIGN I\n\t\tcode === 0x11CB4 || // Mc MARCHEN VOWEL SIGN O\n\t\t( 0x11D8A <= code && code <= 0x11D8E ) || // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU\n\t\t( 0x11D93 <= code && code <= 0x11D94 ) || // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU\n\t\tcode === 0x11D96 || // Mc GUNJALA GONDI SIGN VISARGA\n\t\t( 0x11EF5 <= code && code <= 0x11EF6 ) || // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O\n\t\t( 0x16F51 <= code && code <= 0x16F87 ) || // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI\n\t\t( 0x16FF0 <= code && code <= 0x16FF1 ) || // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY\n\t\tcode === 0x1D166 || // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\n\t\tcode === 0x1D16D // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT\n\t) {\n\t\treturn constants.SpacingMark;\n\t}\n\tif (\n\t\t( 0x1100 <= code && code <= 0x115F ) || // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\n\t\t( 0xA960 <= code && code <= 0xA97C ) // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\n\t) {\n\t\treturn constants.L;\n\t}\n\tif (\n\t\t( 0x1160 <= code && code <= 0x11A7 ) || // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\n\t\t( 0xD7B0 <= code && code <= 0xD7C6 ) // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\n\t) {\n\t\treturn constants.V;\n\t}\n\tif (\n\t\t( 0x11A8 <= code && code <= 0x11FF ) || // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\n\t\t( 0xD7CB <= code && code <= 0xD7FB ) // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\n\t) {\n\t\treturn constants.T;\n\t}\n\tif (\n\t\tcode === 0xAC00 || // Lo HANGUL SYLLABLE GA\n\t\tcode === 0xAC1C || // Lo HANGUL SYLLABLE GAE\n\t\tcode === 0xAC38 || // Lo HANGUL SYLLABLE GYA\n\t\tcode === 0xAC54 || // Lo HANGUL SYLLABLE GYAE\n\t\tcode === 0xAC70 || // Lo HANGUL SYLLABLE GEO\n\t\tcode === 0xAC8C || // Lo HANGUL SYLLABLE GE\n\t\tcode === 0xACA8 || // Lo HANGUL SYLLABLE GYEO\n\t\tcode === 0xACC4 || // Lo HANGUL SYLLABLE GYE\n\t\tcode === 0xACE0 || // Lo HANGUL SYLLABLE GO\n\t\tcode === 0xACFC || // Lo HANGUL SYLLABLE GWA\n\t\tcode === 0xAD18 || // Lo HANGUL SYLLABLE GWAE\n\t\tcode === 0xAD34 || // Lo HANGUL SYLLABLE GOE\n\t\tcode === 0xAD50 || // Lo HANGUL SYLLABLE GYO\n\t\tcode === 0xAD6C || // Lo HANGUL SYLLABLE GU\n\t\tcode === 0xAD88 || // Lo HANGUL SYLLABLE GWEO\n\t\tcode === 0xADA4 || // Lo HANGUL SYLLABLE GWE\n\t\tcode === 0xADC0 || // Lo HANGUL SYLLABLE GWI\n\t\tcode === 0xADDC || // Lo HANGUL SYLLABLE GYU\n\t\tcode === 0xADF8 || // Lo HANGUL SYLLABLE GEU\n\t\tcode === 0xAE14 || // Lo HANGUL SYLLABLE GYI\n\t\tcode === 0xAE30 || // Lo HANGUL SYLLABLE GI\n\t\tcode === 0xAE4C || // Lo HANGUL SYLLABLE GGA\n\t\tcode === 0xAE68 || // Lo HANGUL SYLLABLE GGAE\n\t\tcode === 0xAE84 || // Lo HANGUL SYLLABLE GGYA\n\t\tcode === 0xAEA0 || // Lo HANGUL SYLLABLE GGYAE\n\t\tcode === 0xAEBC || // Lo HANGUL SYLLABLE GGEO\n\t\tcode === 0xAED8 || // Lo HANGUL SYLLABLE GGE\n\t\tcode === 0xAEF4 || // Lo HANGUL SYLLABLE GGYEO\n\t\tcode === 0xAF10 || // Lo HANGUL SYLLABLE GGYE\n\t\tcode === 0xAF2C || // Lo HANGUL SYLLABLE GGO\n\t\tcode === 0xAF48 || // Lo HANGUL SYLLABLE GGWA\n\t\tcode === 0xAF64 || // Lo HANGUL SYLLABLE GGWAE\n\t\tcode === 0xAF80 || // Lo HANGUL SYLLABLE GGOE\n\t\tcode === 0xAF9C || // Lo HANGUL SYLLABLE GGYO\n\t\tcode === 0xAFB8 || // Lo HANGUL SYLLABLE GGU\n\t\tcode === 0xAFD4 || // Lo HANGUL SYLLABLE GGWEO\n\t\tcode === 0xAFF0 || // Lo HANGUL SYLLABLE GGWE\n\t\tcode === 0xB00C || // Lo HANGUL SYLLABLE GGWI\n\t\tcode === 0xB028 || // Lo HANGUL SYLLABLE GGYU\n\t\tcode === 0xB044 || // Lo HANGUL SYLLABLE GGEU\n\t\tcode === 0xB060 || // Lo HANGUL SYLLABLE GGYI\n\t\tcode === 0xB07C || // Lo HANGUL SYLLABLE GGI\n\t\tcode === 0xB098 || // Lo HANGUL SYLLABLE NA\n\t\tcode === 0xB0B4 || // Lo HANGUL SYLLABLE NAE\n\t\tcode === 0xB0D0 || // Lo HANGUL SYLLABLE NYA\n\t\tcode === 0xB0EC || // Lo HANGUL SYLLABLE NYAE\n\t\tcode === 0xB108 || // Lo HANGUL SYLLABLE NEO\n\t\tcode === 0xB124 || // Lo HANGUL SYLLABLE NE\n\t\tcode === 0xB140 || // Lo HANGUL SYLLABLE NYEO\n\t\tcode === 0xB15C || // Lo HANGUL SYLLABLE NYE\n\t\tcode === 0xB178 || // Lo HANGUL SYLLABLE NO\n\t\tcode === 0xB194 || // Lo HANGUL SYLLABLE NWA\n\t\tcode === 0xB1B0 || // Lo HANGUL SYLLABLE NWAE\n\t\tcode === 0xB1CC || // Lo HANGUL SYLLABLE NOE\n\t\tcode === 0xB1E8 || // Lo HANGUL SYLLABLE NYO\n\t\tcode === 0xB204 || // Lo HANGUL SYLLABLE NU\n\t\tcode === 0xB220 || // Lo HANGUL SYLLABLE NWEO\n\t\tcode === 0xB23C || // Lo HANGUL SYLLABLE NWE\n\t\tcode === 0xB258 || // Lo HANGUL SYLLABLE NWI\n\t\tcode === 0xB274 || // Lo HANGUL SYLLABLE NYU\n\t\tcode === 0xB290 || // Lo HANGUL SYLLABLE NEU\n\t\tcode === 0xB2AC || // Lo HANGUL SYLLABLE NYI\n\t\tcode === 0xB2C8 || // Lo HANGUL SYLLABLE NI\n\t\tcode === 0xB2E4 || // Lo HANGUL SYLLABLE DA\n\t\tcode === 0xB300 || // Lo HANGUL SYLLABLE DAE\n\t\tcode === 0xB31C || // Lo HANGUL SYLLABLE DYA\n\t\tcode === 0xB338 || // Lo HANGUL SYLLABLE DYAE\n\t\tcode === 0xB354 || // Lo HANGUL SYLLABLE DEO\n\t\tcode === 0xB370 || // Lo HANGUL SYLLABLE DE\n\t\tcode === 0xB38C || // Lo HANGUL SYLLABLE DYEO\n\t\tcode === 0xB3A8 || // Lo HANGUL SYLLABLE DYE\n\t\tcode === 0xB3C4 || // Lo HANGUL SYLLABLE DO\n\t\tcode === 0xB3E0 || // Lo HANGUL SYLLABLE DWA\n\t\tcode === 0xB3FC || // Lo HANGUL SYLLABLE DWAE\n\t\tcode === 0xB418 || // Lo HANGUL SYLLABLE DOE\n\t\tcode === 0xB434 || // Lo HANGUL SYLLABLE DYO\n\t\tcode === 0xB450 || // Lo HANGUL SYLLABLE DU\n\t\tcode === 0xB46C || // Lo HANGUL SYLLABLE DWEO\n\t\tcode === 0xB488 || // Lo HANGUL SYLLABLE DWE\n\t\tcode === 0xB4A4 || // Lo HANGUL SYLLABLE DWI\n\t\tcode === 0xB4C0 || // Lo HANGUL SYLLABLE DYU\n\t\tcode === 0xB4DC || // Lo HANGUL SYLLABLE DEU\n\t\tcode === 0xB4F8 || // Lo HANGUL SYLLABLE DYI\n\t\tcode === 0xB514 || // Lo HANGUL SYLLABLE DI\n\t\tcode === 0xB530 || // Lo HANGUL SYLLABLE DDA\n\t\tcode === 0xB54C || // Lo HANGUL SYLLABLE DDAE\n\t\tcode === 0xB568 || // Lo HANGUL SYLLABLE DDYA\n\t\tcode === 0xB584 || // Lo HANGUL SYLLABLE DDYAE\n\t\tcode === 0xB5A0 || // Lo HANGUL SYLLABLE DDEO\n\t\tcode === 0xB5BC || // Lo HANGUL SYLLABLE DDE\n\t\tcode === 0xB5D8 || // Lo HANGUL SYLLABLE DDYEO\n\t\tcode === 0xB5F4 || // Lo HANGUL SYLLABLE DDYE\n\t\tcode === 0xB610 || // Lo HANGUL SYLLABLE DDO\n\t\tcode === 0xB62C || // Lo HANGUL SYLLABLE DDWA\n\t\tcode === 0xB648 || // Lo HANGUL SYLLABLE DDWAE\n\t\tcode === 0xB664 || // Lo HANGUL SYLLABLE DDOE\n\t\tcode === 0xB680 || // Lo HANGUL SYLLABLE DDYO\n\t\tcode === 0xB69C || // Lo HANGUL SYLLABLE DDU\n\t\tcode === 0xB6B8 || // Lo HANGUL SYLLABLE DDWEO\n\t\tcode === 0xB6D4 || // Lo HANGUL SYLLABLE DDWE\n\t\tcode === 0xB6F0 || // Lo HANGUL SYLLABLE DDWI\n\t\tcode === 0xB70C || // Lo HANGUL SYLLABLE DDYU\n\t\tcode === 0xB728 || // Lo HANGUL SYLLABLE DDEU\n\t\tcode === 0xB744 || // Lo HANGUL SYLLABLE DDYI\n\t\tcode === 0xB760 || // Lo HANGUL SYLLABLE DDI\n\t\tcode === 0xB77C || // Lo HANGUL SYLLABLE RA\n\t\tcode === 0xB798 || // Lo HANGUL SYLLABLE RAE\n\t\tcode === 0xB7B4 || // Lo HANGUL SYLLABLE RYA\n\t\tcode === 0xB7D0 || // Lo HANGUL SYLLABLE RYAE\n\t\tcode === 0xB7EC || // Lo HANGUL SYLLABLE REO\n\t\tcode === 0xB808 || // Lo HANGUL SYLLABLE RE\n\t\tcode === 0xB824 || // Lo HANGUL SYLLABLE RYEO\n\t\tcode === 0xB840 || // Lo HANGUL SYLLABLE RYE\n\t\tcode === 0xB85C || // Lo HANGUL SYLLABLE RO\n\t\tcode === 0xB878 || // Lo HANGUL SYLLABLE RWA\n\t\tcode === 0xB894 || // Lo HANGUL SYLLABLE RWAE\n\t\tcode === 0xB8B0 || // Lo HANGUL SYLLABLE ROE\n\t\tcode === 0xB8CC || // Lo HANGUL SYLLABLE RYO\n\t\tcode === 0xB8E8 || // Lo HANGUL SYLLABLE RU\n\t\tcode === 0xB904 || // Lo HANGUL SYLLABLE RWEO\n\t\tcode === 0xB920 || // Lo HANGUL SYLLABLE RWE\n\t\tcode === 0xB93C || // Lo HANGUL SYLLABLE RWI\n\t\tcode === 0xB958 || // Lo HANGUL SYLLABLE RYU\n\t\tcode === 0xB974 || // Lo HANGUL SYLLABLE REU\n\t\tcode === 0xB990 || // Lo HANGUL SYLLABLE RYI\n\t\tcode === 0xB9AC || // Lo HANGUL SYLLABLE RI\n\t\tcode === 0xB9C8 || // Lo HANGUL SYLLABLE MA\n\t\tcode === 0xB9E4 || // Lo HANGUL SYLLABLE MAE\n\t\tcode === 0xBA00 || // Lo HANGUL SYLLABLE MYA\n\t\tcode === 0xBA1C || // Lo HANGUL SYLLABLE MYAE\n\t\tcode === 0xBA38 || // Lo HANGUL SYLLABLE MEO\n\t\tcode === 0xBA54 || // Lo HANGUL SYLLABLE ME\n\t\tcode === 0xBA70 || // Lo HANGUL SYLLABLE MYEO\n\t\tcode === 0xBA8C || // Lo HANGUL SYLLABLE MYE\n\t\tcode === 0xBAA8 || // Lo HANGUL SYLLABLE MO\n\t\tcode === 0xBAC4 || // Lo HANGUL SYLLABLE MWA\n\t\tcode === 0xBAE0 || // Lo HANGUL SYLLABLE MWAE\n\t\tcode === 0xBAFC || // Lo HANGUL SYLLABLE MOE\n\t\tcode === 0xBB18 || // Lo HANGUL SYLLABLE MYO\n\t\tcode === 0xBB34 || // Lo HANGUL SYLLABLE MU\n\t\tcode === 0xBB50 || // Lo HANGUL SYLLABLE MWEO\n\t\tcode === 0xBB6C || // Lo HANGUL SYLLABLE MWE\n\t\tcode === 0xBB88 || // Lo HANGUL SYLLABLE MWI\n\t\tcode === 0xBBA4 || // Lo HANGUL SYLLABLE MYU\n\t\tcode === 0xBBC0 || // Lo HANGUL SYLLABLE MEU\n\t\tcode === 0xBBDC || // Lo HANGUL SYLLABLE MYI\n\t\tcode === 0xBBF8 || // Lo HANGUL SYLLABLE MI\n\t\tcode === 0xBC14 || // Lo HANGUL SYLLABLE BA\n\t\tcode === 0xBC30 || // Lo HANGUL SYLLABLE BAE\n\t\tcode === 0xBC4C || // Lo HANGUL SYLLABLE BYA\n\t\tcode === 0xBC68 || // Lo HANGUL SYLLABLE BYAE\n\t\tcode === 0xBC84 || // Lo HANGUL SYLLABLE BEO\n\t\tcode === 0xBCA0 || // Lo HANGUL SYLLABLE BE\n\t\tcode === 0xBCBC || // Lo HANGUL SYLLABLE BYEO\n\t\tcode === 0xBCD8 || // Lo HANGUL SYLLABLE BYE\n\t\tcode === 0xBCF4 || // Lo HANGUL SYLLABLE BO\n\t\tcode === 0xBD10 || // Lo HANGUL SYLLABLE BWA\n\t\tcode === 0xBD2C || // Lo HANGUL SYLLABLE BWAE\n\t\tcode === 0xBD48 || // Lo HANGUL SYLLABLE BOE\n\t\tcode === 0xBD64 || // Lo HANGUL SYLLABLE BYO\n\t\tcode === 0xBD80 || // Lo HANGUL SYLLABLE BU\n\t\tcode === 0xBD9C || // Lo HANGUL SYLLABLE BWEO\n\t\tcode === 0xBDB8 || // Lo HANGUL SYLLABLE BWE\n\t\tcode === 0xBDD4 || // Lo HANGUL SYLLABLE BWI\n\t\tcode === 0xBDF0 || // Lo HANGUL SYLLABLE BYU\n\t\tcode === 0xBE0C || // Lo HANGUL SYLLABLE BEU\n\t\tcode === 0xBE28 || // Lo HANGUL SYLLABLE BYI\n\t\tcode === 0xBE44 || // Lo HANGUL SYLLABLE BI\n\t\tcode === 0xBE60 || // Lo HANGUL SYLLABLE BBA\n\t\tcode === 0xBE7C || // Lo HANGUL SYLLABLE BBAE\n\t\tcode === 0xBE98 || // Lo HANGUL SYLLABLE BBYA\n\t\tcode === 0xBEB4 || // Lo HANGUL SYLLABLE BBYAE\n\t\tcode === 0xBED0 || // Lo HANGUL SYLLABLE BBEO\n\t\tcode === 0xBEEC || // Lo HANGUL SYLLABLE BBE\n\t\tcode === 0xBF08 || // Lo HANGUL SYLLABLE BBYEO\n\t\tcode === 0xBF24 || // Lo HANGUL SYLLABLE BBYE\n\t\tcode === 0xBF40 || // Lo HANGUL SYLLABLE BBO\n\t\tcode === 0xBF5C || // Lo HANGUL SYLLABLE BBWA\n\t\tcode === 0xBF78 || // Lo HANGUL SYLLABLE BBWAE\n\t\tcode === 0xBF94 || // Lo HANGUL SYLLABLE BBOE\n\t\tcode === 0xBFB0 || // Lo HANGUL SYLLABLE BBYO\n\t\tcode === 0xBFCC || // Lo HANGUL SYLLABLE BBU\n\t\tcode === 0xBFE8 || // Lo HANGUL SYLLABLE BBWEO\n\t\tcode === 0xC004 || // Lo HANGUL SYLLABLE BBWE\n\t\tcode === 0xC020 || // Lo HANGUL SYLLABLE BBWI\n\t\tcode === 0xC03C || // Lo HANGUL SYLLABLE BBYU\n\t\tcode === 0xC058 || // Lo HANGUL SYLLABLE BBEU\n\t\tcode === 0xC074 || // Lo HANGUL SYLLABLE BBYI\n\t\tcode === 0xC090 || // Lo HANGUL SYLLABLE BBI\n\t\tcode === 0xC0AC || // Lo HANGUL SYLLABLE SA\n\t\tcode === 0xC0C8 || // Lo HANGUL SYLLABLE SAE\n\t\tcode === 0xC0E4 || // Lo HANGUL SYLLABLE SYA\n\t\tcode === 0xC100 || // Lo HANGUL SYLLABLE SYAE\n\t\tcode === 0xC11C || // Lo HANGUL SYLLABLE SEO\n\t\tcode === 0xC138 || // Lo HANGUL SYLLABLE SE\n\t\tcode === 0xC154 || // Lo HANGUL SYLLABLE SYEO\n\t\tcode === 0xC170 || // Lo HANGUL SYLLABLE SYE\n\t\tcode === 0xC18C || // Lo HANGUL SYLLABLE SO\n\t\tcode === 0xC1A8 || // Lo HANGUL SYLLABLE SWA\n\t\tcode === 0xC1C4 || // Lo HANGUL SYLLABLE SWAE\n\t\tcode === 0xC1E0 || // Lo HANGUL SYLLABLE SOE\n\t\tcode === 0xC1FC || // Lo HANGUL SYLLABLE SYO\n\t\tcode === 0xC218 || // Lo HANGUL SYLLABLE SU\n\t\tcode === 0xC234 || // Lo HANGUL SYLLABLE SWEO\n\t\tcode === 0xC250 || // Lo HANGUL SYLLABLE SWE\n\t\tcode === 0xC26C || // Lo HANGUL SYLLABLE SWI\n\t\tcode === 0xC288 || // Lo HANGUL SYLLABLE SYU\n\t\tcode === 0xC2A4 || // Lo HANGUL SYLLABLE SEU\n\t\tcode === 0xC2C0 || // Lo HANGUL SYLLABLE SYI\n\t\tcode === 0xC2DC || // Lo HANGUL SYLLABLE SI\n\t\tcode === 0xC2F8 || // Lo HANGUL SYLLABLE SSA\n\t\tcode === 0xC314 || // Lo HANGUL SYLLABLE SSAE\n\t\tcode === 0xC330 || // Lo HANGUL SYLLABLE SSYA\n\t\tcode === 0xC34C || // Lo HANGUL SYLLABLE SSYAE\n\t\tcode === 0xC368 || // Lo HANGUL SYLLABLE SSEO\n\t\tcode === 0xC384 || // Lo HANGUL SYLLABLE SSE\n\t\tcode === 0xC3A0 || // Lo HANGUL SYLLABLE SSYEO\n\t\tcode === 0xC3BC || // Lo HANGUL SYLLABLE SSYE\n\t\tcode === 0xC3D8 || // Lo HANGUL SYLLABLE SSO\n\t\tcode === 0xC3F4 || // Lo HANGUL SYLLABLE SSWA\n\t\tcode === 0xC410 || // Lo HANGUL SYLLABLE SSWAE\n\t\tcode === 0xC42C || // Lo HANGUL SYLLABLE SSOE\n\t\tcode === 0xC448 || // Lo HANGUL SYLLABLE SSYO\n\t\tcode === 0xC464 || // Lo HANGUL SYLLABLE SSU\n\t\tcode === 0xC480 || // Lo HANGUL SYLLABLE SSWEO\n\t\tcode === 0xC49C || // Lo HANGUL SYLLABLE SSWE\n\t\tcode === 0xC4B8 || // Lo HANGUL SYLLABLE SSWI\n\t\tcode === 0xC4D4 || // Lo HANGUL SYLLABLE SSYU\n\t\tcode === 0xC4F0 || // Lo HANGUL SYLLABLE SSEU\n\t\tcode === 0xC50C || // Lo HANGUL SYLLABLE SSYI\n\t\tcode === 0xC528 || // Lo HANGUL SYLLABLE SSI\n\t\tcode === 0xC544 || // Lo HANGUL SYLLABLE A\n\t\tcode === 0xC560 || // Lo HANGUL SYLLABLE AE\n\t\tcode === 0xC57C || // Lo HANGUL SYLLABLE YA\n\t\tcode === 0xC598 || // Lo HANGUL SYLLABLE YAE\n\t\tcode === 0xC5B4 || // Lo HANGUL SYLLABLE EO\n\t\tcode === 0xC5D0 || // Lo HANGUL SYLLABLE E\n\t\tcode === 0xC5EC || // Lo HANGUL SYLLABLE YEO\n\t\tcode === 0xC608 || // Lo HANGUL SYLLABLE YE\n\t\tcode === 0xC624 || // Lo HANGUL SYLLABLE O\n\t\tcode === 0xC640 || // Lo HANGUL SYLLABLE WA\n\t\tcode === 0xC65C || // Lo HANGUL SYLLABLE WAE\n\t\tcode === 0xC678 || // Lo HANGUL SYLLABLE OE\n\t\tcode === 0xC694 || // Lo HANGUL SYLLABLE YO\n\t\tcode === 0xC6B0 || // Lo HANGUL SYLLABLE U\n\t\tcode === 0xC6CC || // Lo HANGUL SYLLABLE WEO\n\t\tcode === 0xC6E8 || // Lo HANGUL SYLLABLE WE\n\t\tcode === 0xC704 || // Lo HANGUL SYLLABLE WI\n\t\tcode === 0xC720 || // Lo HANGUL SYLLABLE YU\n\t\tcode === 0xC73C || // Lo HANGUL SYLLABLE EU\n\t\tcode === 0xC758 || // Lo HANGUL SYLLABLE YI\n\t\tcode === 0xC774 || // Lo HANGUL SYLLABLE I\n\t\tcode === 0xC790 || // Lo HANGUL SYLLABLE JA\n\t\tcode === 0xC7AC || // Lo HANGUL SYLLABLE JAE\n\t\tcode === 0xC7C8 || // Lo HANGUL SYLLABLE JYA\n\t\tcode === 0xC7E4 || // Lo HANGUL SYLLABLE JYAE\n\t\tcode === 0xC800 || // Lo HANGUL SYLLABLE JEO\n\t\tcode === 0xC81C || // Lo HANGUL SYLLABLE JE\n\t\tcode === 0xC838 || // Lo HANGUL SYLLABLE JYEO\n\t\tcode === 0xC854 || // Lo HANGUL SYLLABLE JYE\n\t\tcode === 0xC870 || // Lo HANGUL SYLLABLE JO\n\t\tcode === 0xC88C || // Lo HANGUL SYLLABLE JWA\n\t\tcode === 0xC8A8 || // Lo HANGUL SYLLABLE JWAE\n\t\tcode === 0xC8C4 || // Lo HANGUL SYLLABLE JOE\n\t\tcode === 0xC8E0 || // Lo HANGUL SYLLABLE JYO\n\t\tcode === 0xC8FC || // Lo HANGUL SYLLABLE JU\n\t\tcode === 0xC918 || // Lo HANGUL SYLLABLE JWEO\n\t\tcode === 0xC934 || // Lo HANGUL SYLLABLE JWE\n\t\tcode === 0xC950 || // Lo HANGUL SYLLABLE JWI\n\t\tcode === 0xC96C || // Lo HANGUL SYLLABLE JYU\n\t\tcode === 0xC988 || // Lo HANGUL SYLLABLE JEU\n\t\tcode === 0xC9A4 || // Lo HANGUL SYLLABLE JYI\n\t\tcode === 0xC9C0 || // Lo HANGUL SYLLABLE JI\n\t\tcode === 0xC9DC || // Lo HANGUL SYLLABLE JJA\n\t\tcode === 0xC9F8 || // Lo HANGUL SYLLABLE JJAE\n\t\tcode === 0xCA14 || // Lo HANGUL SYLLABLE JJYA\n\t\tcode === 0xCA30 || // Lo HANGUL SYLLABLE JJYAE\n\t\tcode === 0xCA4C || // Lo HANGUL SYLLABLE JJEO\n\t\tcode === 0xCA68 || // Lo HANGUL SYLLABLE JJE\n\t\tcode === 0xCA84 || // Lo HANGUL SYLLABLE JJYEO\n\t\tcode === 0xCAA0 || // Lo HANGUL SYLLABLE JJYE\n\t\tcode === 0xCABC || // Lo HANGUL SYLLABLE JJO\n\t\tcode === 0xCAD8 || // Lo HANGUL SYLLABLE JJWA\n\t\tcode === 0xCAF4 || // Lo HANGUL SYLLABLE JJWAE\n\t\tcode === 0xCB10 || // Lo HANGUL SYLLABLE JJOE\n\t\tcode === 0xCB2C || // Lo HANGUL SYLLABLE JJYO\n\t\tcode === 0xCB48 || // Lo HANGUL SYLLABLE JJU\n\t\tcode === 0xCB64 || // Lo HANGUL SYLLABLE JJWEO\n\t\tcode === 0xCB80 || // Lo HANGUL SYLLABLE JJWE\n\t\tcode === 0xCB9C || // Lo HANGUL SYLLABLE JJWI\n\t\tcode === 0xCBB8 || // Lo HANGUL SYLLABLE JJYU\n\t\tcode === 0xCBD4 || // Lo HANGUL SYLLABLE JJEU\n\t\tcode === 0xCBF0 || // Lo HANGUL SYLLABLE JJYI\n\t\tcode === 0xCC0C || // Lo HANGUL SYLLABLE JJI\n\t\tcode === 0xCC28 || // Lo HANGUL SYLLABLE CA\n\t\tcode === 0xCC44 || // Lo HANGUL SYLLABLE CAE\n\t\tcode === 0xCC60 || // Lo HANGUL SYLLABLE CYA\n\t\tcode === 0xCC7C || // Lo HANGUL SYLLABLE CYAE\n\t\tcode === 0xCC98 || // Lo HANGUL SYLLABLE CEO\n\t\tcode === 0xCCB4 || // Lo HANGUL SYLLABLE CE\n\t\tcode === 0xCCD0 || // Lo HANGUL SYLLABLE CYEO\n\t\tcode === 0xCCEC || // Lo HANGUL SYLLABLE CYE\n\t\tcode === 0xCD08 || // Lo HANGUL SYLLABLE CO\n\t\tcode === 0xCD24 || // Lo HANGUL SYLLABLE CWA\n\t\tcode === 0xCD40 || // Lo HANGUL SYLLABLE CWAE\n\t\tcode === 0xCD5C || // Lo HANGUL SYLLABLE COE\n\t\tcode === 0xCD78 || // Lo HANGUL SYLLABLE CYO\n\t\tcode === 0xCD94 || // Lo HANGUL SYLLABLE CU\n\t\tcode === 0xCDB0 || // Lo HANGUL SYLLABLE CWEO\n\t\tcode === 0xCDCC || // Lo HANGUL SYLLABLE CWE\n\t\tcode === 0xCDE8 || // Lo HANGUL SYLLABLE CWI\n\t\tcode === 0xCE04 || // Lo HANGUL SYLLABLE CYU\n\t\tcode === 0xCE20 || // Lo HANGUL SYLLABLE CEU\n\t\tcode === 0xCE3C || // Lo HANGUL SYLLABLE CYI\n\t\tcode === 0xCE58 || // Lo HANGUL SYLLABLE CI\n\t\tcode === 0xCE74 || // Lo HANGUL SYLLABLE KA\n\t\tcode === 0xCE90 || // Lo HANGUL SYLLABLE KAE\n\t\tcode === 0xCEAC || // Lo HANGUL SYLLABLE KYA\n\t\tcode === 0xCEC8 || // Lo HANGUL SYLLABLE KYAE\n\t\tcode === 0xCEE4 || // Lo HANGUL SYLLABLE KEO\n\t\tcode === 0xCF00 || // Lo HANGUL SYLLABLE KE\n\t\tcode === 0xCF1C || // Lo HANGUL SYLLABLE KYEO\n\t\tcode === 0xCF38 || // Lo HANGUL SYLLABLE KYE\n\t\tcode === 0xCF54 || // Lo HANGUL SYLLABLE KO\n\t\tcode === 0xCF70 || // Lo HANGUL SYLLABLE KWA\n\t\tcode === 0xCF8C || // Lo HANGUL SYLLABLE KWAE\n\t\tcode === 0xCFA8 || // Lo HANGUL SYLLABLE KOE\n\t\tcode === 0xCFC4 || // Lo HANGUL SYLLABLE KYO\n\t\tcode === 0xCFE0 || // Lo HANGUL SYLLABLE KU\n\t\tcode === 0xCFFC || // Lo HANGUL SYLLABLE KWEO\n\t\tcode === 0xD018 || // Lo HANGUL SYLLABLE KWE\n\t\tcode === 0xD034 || // Lo HANGUL SYLLABLE KWI\n\t\tcode === 0xD050 || // Lo HANGUL SYLLABLE KYU\n\t\tcode === 0xD06C || // Lo HANGUL SYLLABLE KEU\n\t\tcode === 0xD088 || // Lo HANGUL SYLLABLE KYI\n\t\tcode === 0xD0A4 || // Lo HANGUL SYLLABLE KI\n\t\tcode === 0xD0C0 || // Lo HANGUL SYLLABLE TA\n\t\tcode === 0xD0DC || // Lo HANGUL SYLLABLE TAE\n\t\tcode === 0xD0F8 || // Lo HANGUL SYLLABLE TYA\n\t\tcode === 0xD114 || // Lo HANGUL SYLLABLE TYAE\n\t\tcode === 0xD130 || // Lo HANGUL SYLLABLE TEO\n\t\tcode === 0xD14C || // Lo HANGUL SYLLABLE TE\n\t\tcode === 0xD168 || // Lo HANGUL SYLLABLE TYEO\n\t\tcode === 0xD184 || // Lo HANGUL SYLLABLE TYE\n\t\tcode === 0xD1A0 || // Lo HANGUL SYLLABLE TO\n\t\tcode === 0xD1BC || // Lo HANGUL SYLLABLE TWA\n\t\tcode === 0xD1D8 || // Lo HANGUL SYLLABLE TWAE\n\t\tcode === 0xD1F4 || // Lo HANGUL SYLLABLE TOE\n\t\tcode === 0xD210 || // Lo HANGUL SYLLABLE TYO\n\t\tcode === 0xD22C || // Lo HANGUL SYLLABLE TU\n\t\tcode === 0xD248 || // Lo HANGUL SYLLABLE TWEO\n\t\tcode === 0xD264 || // Lo HANGUL SYLLABLE TWE\n\t\tcode === 0xD280 || // Lo HANGUL SYLLABLE TWI\n\t\tcode === 0xD29C || // Lo HANGUL SYLLABLE TYU\n\t\tcode === 0xD2B8 || // Lo HANGUL SYLLABLE TEU\n\t\tcode === 0xD2D4 || // Lo HANGUL SYLLABLE TYI\n\t\tcode === 0xD2F0 || // Lo HANGUL SYLLABLE TI\n\t\tcode === 0xD30C || // Lo HANGUL SYLLABLE PA\n\t\tcode === 0xD328 || // Lo HANGUL SYLLABLE PAE\n\t\tcode === 0xD344 || // Lo HANGUL SYLLABLE PYA\n\t\tcode === 0xD360 || // Lo HANGUL SYLLABLE PYAE\n\t\tcode === 0xD37C || // Lo HANGUL SYLLABLE PEO\n\t\tcode === 0xD398 || // Lo HANGUL SYLLABLE PE\n\t\tcode === 0xD3B4 || // Lo HANGUL SYLLABLE PYEO\n\t\tcode === 0xD3D0 || // Lo HANGUL SYLLABLE PYE\n\t\tcode === 0xD3EC || // Lo HANGUL SYLLABLE PO\n\t\tcode === 0xD408 || // Lo HANGUL SYLLABLE PWA\n\t\tcode === 0xD424 || // Lo HANGUL SYLLABLE PWAE\n\t\tcode === 0xD440 || // Lo HANGUL SYLLABLE POE\n\t\tcode === 0xD45C || // Lo HANGUL SYLLABLE PYO\n\t\tcode === 0xD478 || // Lo HANGUL SYLLABLE PU\n\t\tcode === 0xD494 || // Lo HANGUL SYLLABLE PWEO\n\t\tcode === 0xD4B0 || // Lo HANGUL SYLLABLE PWE\n\t\tcode === 0xD4CC || // Lo HANGUL SYLLABLE PWI\n\t\tcode === 0xD4E8 || // Lo HANGUL SYLLABLE PYU\n\t\tcode === 0xD504 || // Lo HANGUL SYLLABLE PEU\n\t\tcode === 0xD520 || // Lo HANGUL SYLLABLE PYI\n\t\tcode === 0xD53C || // Lo HANGUL SYLLABLE PI\n\t\tcode === 0xD558 || // Lo HANGUL SYLLABLE HA\n\t\tcode === 0xD574 || // Lo HANGUL SYLLABLE HAE\n\t\tcode === 0xD590 || // Lo HANGUL SYLLABLE HYA\n\t\tcode === 0xD5AC || // Lo HANGUL SYLLABLE HYAE\n\t\tcode === 0xD5C8 || // Lo HANGUL SYLLABLE HEO\n\t\tcode === 0xD5E4 || // Lo HANGUL SYLLABLE HE\n\t\tcode === 0xD600 || // Lo HANGUL SYLLABLE HYEO\n\t\tcode === 0xD61C || // Lo HANGUL SYLLABLE HYE\n\t\tcode === 0xD638 || // Lo HANGUL SYLLABLE HO\n\t\tcode === 0xD654 || // Lo HANGUL SYLLABLE HWA\n\t\tcode === 0xD670 || // Lo HANGUL SYLLABLE HWAE\n\t\tcode === 0xD68C || // Lo HANGUL SYLLABLE HOE\n\t\tcode === 0xD6A8 || // Lo HANGUL SYLLABLE HYO\n\t\tcode === 0xD6C4 || // Lo HANGUL SYLLABLE HU\n\t\tcode === 0xD6E0 || // Lo HANGUL SYLLABLE HWEO\n\t\tcode === 0xD6FC || // Lo HANGUL SYLLABLE HWE\n\t\tcode === 0xD718 || // Lo HANGUL SYLLABLE HWI\n\t\tcode === 0xD734 || // Lo HANGUL SYLLABLE HYU\n\t\tcode === 0xD750 || // Lo HANGUL SYLLABLE HEU\n\t\tcode === 0xD76C || // Lo HANGUL SYLLABLE HYI\n\t\tcode === 0xD788 // Lo HANGUL SYLLABLE HI\n\t) {\n\t\treturn constants.LV;\n\t}\n\tif (\n\t\t( 0xAC01 <= code && code <= 0xAC1B ) || // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\n\t\t( 0xAC1D <= code && code <= 0xAC37 ) || // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\n\t\t( 0xAC39 <= code && code <= 0xAC53 ) || // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\n\t\t( 0xAC55 <= code && code <= 0xAC6F ) || // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\n\t\t( 0xAC71 <= code && code <= 0xAC8B ) || // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\n\t\t( 0xAC8D <= code && code <= 0xACA7 ) || // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\n\t\t( 0xACA9 <= code && code <= 0xACC3 ) || // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\n\t\t( 0xACC5 <= code && code <= 0xACDF ) || // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\n\t\t( 0xACE1 <= code && code <= 0xACFB ) || // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\n\t\t( 0xACFD <= code && code <= 0xAD17 ) || // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\n\t\t( 0xAD19 <= code && code <= 0xAD33 ) || // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\n\t\t( 0xAD35 <= code && code <= 0xAD4F ) || // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\n\t\t( 0xAD51 <= code && code <= 0xAD6B ) || // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\n\t\t( 0xAD6D <= code && code <= 0xAD87 ) || // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\n\t\t( 0xAD89 <= code && code <= 0xADA3 ) || // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\n\t\t( 0xADA5 <= code && code <= 0xADBF ) || // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\n\t\t( 0xADC1 <= code && code <= 0xADDB ) || // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\n\t\t( 0xADDD <= code && code <= 0xADF7 ) || // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\n\t\t( 0xADF9 <= code && code <= 0xAE13 ) || // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\n\t\t( 0xAE15 <= code && code <= 0xAE2F ) || // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\n\t\t( 0xAE31 <= code && code <= 0xAE4B ) || // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\n\t\t( 0xAE4D <= code && code <= 0xAE67 ) || // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\n\t\t( 0xAE69 <= code && code <= 0xAE83 ) || // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\n\t\t( 0xAE85 <= code && code <= 0xAE9F ) || // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\n\t\t( 0xAEA1 <= code && code <= 0xAEBB ) || // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\n\t\t( 0xAEBD <= code && code <= 0xAED7 ) || // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\n\t\t( 0xAED9 <= code && code <= 0xAEF3 ) || // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\n\t\t( 0xAEF5 <= code && code <= 0xAF0F ) || // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\n\t\t( 0xAF11 <= code && code <= 0xAF2B ) || // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\n\t\t( 0xAF2D <= code && code <= 0xAF47 ) || // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\n\t\t( 0xAF49 <= code && code <= 0xAF63 ) || // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\n\t\t( 0xAF65 <= code && code <= 0xAF7F ) || // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\n\t\t( 0xAF81 <= code && code <= 0xAF9B ) || // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\n\t\t( 0xAF9D <= code && code <= 0xAFB7 ) || // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\n\t\t( 0xAFB9 <= code && code <= 0xAFD3 ) || // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\n\t\t( 0xAFD5 <= code && code <= 0xAFEF ) || // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\n\t\t( 0xAFF1 <= code && code <= 0xB00B ) || // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\n\t\t( 0xB00D <= code && code <= 0xB027 ) || // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\n\t\t( 0xB029 <= code && code <= 0xB043 ) || // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\n\t\t( 0xB045 <= code && code <= 0xB05F ) || // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\n\t\t( 0xB061 <= code && code <= 0xB07B ) || // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\n\t\t( 0xB07D <= code && code <= 0xB097 ) || // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\n\t\t( 0xB099 <= code && code <= 0xB0B3 ) || // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\n\t\t( 0xB0B5 <= code && code <= 0xB0CF ) || // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\n\t\t( 0xB0D1 <= code && code <= 0xB0EB ) || // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\n\t\t( 0xB0ED <= code && code <= 0xB107 ) || // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\n\t\t( 0xB109 <= code && code <= 0xB123 ) || // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\n\t\t( 0xB125 <= code && code <= 0xB13F ) || // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\n\t\t( 0xB141 <= code && code <= 0xB15B ) || // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\n\t\t( 0xB15D <= code && code <= 0xB177 ) || // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\n\t\t( 0xB179 <= code && code <= 0xB193 ) || // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\n\t\t( 0xB195 <= code && code <= 0xB1AF ) || // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\n\t\t( 0xB1B1 <= code && code <= 0xB1CB ) || // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\n\t\t( 0xB1CD <= code && code <= 0xB1E7 ) || // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\n\t\t( 0xB1E9 <= code && code <= 0xB203 ) || // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\n\t\t( 0xB205 <= code && code <= 0xB21F ) || // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\n\t\t( 0xB221 <= code && code <= 0xB23B ) || // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\n\t\t( 0xB23D <= code && code <= 0xB257 ) || // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\n\t\t( 0xB259 <= code && code <= 0xB273 ) || // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\n\t\t( 0xB275 <= code && code <= 0xB28F ) || // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\n\t\t( 0xB291 <= code && code <= 0xB2AB ) || // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\n\t\t( 0xB2AD <= code && code <= 0xB2C7 ) || // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\n\t\t( 0xB2C9 <= code && code <= 0xB2E3 ) || // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\n\t\t( 0xB2E5 <= code && code <= 0xB2FF ) || // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\n\t\t( 0xB301 <= code && code <= 0xB31B ) || // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\n\t\t( 0xB31D <= code && code <= 0xB337 ) || // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\n\t\t( 0xB339 <= code && code <= 0xB353 ) || // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\n\t\t( 0xB355 <= code && code <= 0xB36F ) || // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\n\t\t( 0xB371 <= code && code <= 0xB38B ) || // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\n\t\t( 0xB38D <= code && code <= 0xB3A7 ) || // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\n\t\t( 0xB3A9 <= code && code <= 0xB3C3 ) || // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\n\t\t( 0xB3C5 <= code && code <= 0xB3DF ) || // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\n\t\t( 0xB3E1 <= code && code <= 0xB3FB ) || // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\n\t\t( 0xB3FD <= code && code <= 0xB417 ) || // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\n\t\t( 0xB419 <= code && code <= 0xB433 ) || // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\n\t\t( 0xB435 <= code && code <= 0xB44F ) || // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\n\t\t( 0xB451 <= code && code <= 0xB46B ) || // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\n\t\t( 0xB46D <= code && code <= 0xB487 ) || // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\n\t\t( 0xB489 <= code && code <= 0xB4A3 ) || // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\n\t\t( 0xB4A5 <= code && code <= 0xB4BF ) || // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\n\t\t( 0xB4C1 <= code && code <= 0xB4DB ) || // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\n\t\t( 0xB4DD <= code && code <= 0xB4F7 ) || // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\n\t\t( 0xB4F9 <= code && code <= 0xB513 ) || // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\n\t\t( 0xB515 <= code && code <= 0xB52F ) || // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\n\t\t( 0xB531 <= code && code <= 0xB54B ) || // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\n\t\t( 0xB54D <= code && code <= 0xB567 ) || // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\n\t\t( 0xB569 <= code && code <= 0xB583 ) || // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\n\t\t( 0xB585 <= code && code <= 0xB59F ) || // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\n\t\t( 0xB5A1 <= code && code <= 0xB5BB ) || // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\n\t\t( 0xB5BD <= code && code <= 0xB5D7 ) || // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\n\t\t( 0xB5D9 <= code && code <= 0xB5F3 ) || // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\n\t\t( 0xB5F5 <= code && code <= 0xB60F ) || // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\n\t\t( 0xB611 <= code && code <= 0xB62B ) || // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\n\t\t( 0xB62D <= code && code <= 0xB647 ) || // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\n\t\t( 0xB649 <= code && code <= 0xB663 ) || // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\n\t\t( 0xB665 <= code && code <= 0xB67F ) || // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\n\t\t( 0xB681 <= code && code <= 0xB69B ) || // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\n\t\t( 0xB69D <= code && code <= 0xB6B7 ) || // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\n\t\t( 0xB6B9 <= code && code <= 0xB6D3 ) || // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\n\t\t( 0xB6D5 <= code && code <= 0xB6EF ) || // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\n\t\t( 0xB6F1 <= code && code <= 0xB70B ) || // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\n\t\t( 0xB70D <= code && code <= 0xB727 ) || // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\n\t\t( 0xB729 <= code && code <= 0xB743 ) || // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\n\t\t( 0xB745 <= code && code <= 0xB75F ) || // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\n\t\t( 0xB761 <= code && code <= 0xB77B ) || // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\n\t\t( 0xB77D <= code && code <= 0xB797 ) || // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\n\t\t( 0xB799 <= code && code <= 0xB7B3 ) || // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\n\t\t( 0xB7B5 <= code && code <= 0xB7CF ) || // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\n\t\t( 0xB7D1 <= code && code <= 0xB7EB ) || // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\n\t\t( 0xB7ED <= code && code <= 0xB807 ) || // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\n\t\t( 0xB809 <= code && code <= 0xB823 ) || // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\n\t\t( 0xB825 <= code && code <= 0xB83F ) || // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\n\t\t( 0xB841 <= code && code <= 0xB85B ) || // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\n\t\t( 0xB85D <= code && code <= 0xB877 ) || // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\n\t\t( 0xB879 <= code && code <= 0xB893 ) || // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\n\t\t( 0xB895 <= code && code <= 0xB8AF ) || // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\n\t\t( 0xB8B1 <= code && code <= 0xB8CB ) || // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\n\t\t( 0xB8CD <= code && code <= 0xB8E7 ) || // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\n\t\t( 0xB8E9 <= code && code <= 0xB903 ) || // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\n\t\t( 0xB905 <= code && code <= 0xB91F ) || // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\n\t\t( 0xB921 <= code && code <= 0xB93B ) || // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\n\t\t( 0xB93D <= code && code <= 0xB957 ) || // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\n\t\t( 0xB959 <= code && code <= 0xB973 ) || // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\n\t\t( 0xB975 <= code && code <= 0xB98F ) || // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\n\t\t( 0xB991 <= code && code <= 0xB9AB ) || // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\n\t\t( 0xB9AD <= code && code <= 0xB9C7 ) || // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\n\t\t( 0xB9C9 <= code && code <= 0xB9E3 ) || // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\n\t\t( 0xB9E5 <= code && code <= 0xB9FF ) || // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\n\t\t( 0xBA01 <= code && code <= 0xBA1B ) || // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\n\t\t( 0xBA1D <= code && code <= 0xBA37 ) || // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\n\t\t( 0xBA39 <= code && code <= 0xBA53 ) || // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\n\t\t( 0xBA55 <= code && code <= 0xBA6F ) || // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\n\t\t( 0xBA71 <= code && code <= 0xBA8B ) || // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\n\t\t( 0xBA8D <= code && code <= 0xBAA7 ) || // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\n\t\t( 0xBAA9 <= code && code <= 0xBAC3 ) || // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\n\t\t( 0xBAC5 <= code && code <= 0xBADF ) || // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\n\t\t( 0xBAE1 <= code && code <= 0xBAFB ) || // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\n\t\t( 0xBAFD <= code && code <= 0xBB17 ) || // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\n\t\t( 0xBB19 <= code && code <= 0xBB33 ) || // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\n\t\t( 0xBB35 <= code && code <= 0xBB4F ) || // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\n\t\t( 0xBB51 <= code && code <= 0xBB6B ) || // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\n\t\t( 0xBB6D <= code && code <= 0xBB87 ) || // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\n\t\t( 0xBB89 <= code && code <= 0xBBA3 ) || // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\n\t\t( 0xBBA5 <= code && code <= 0xBBBF ) || // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\n\t\t( 0xBBC1 <= code && code <= 0xBBDB ) || // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\n\t\t( 0xBBDD <= code && code <= 0xBBF7 ) || // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\n\t\t( 0xBBF9 <= code && code <= 0xBC13 ) || // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\n\t\t( 0xBC15 <= code && code <= 0xBC2F ) || // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\n\t\t( 0xBC31 <= code && code <= 0xBC4B ) || // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\n\t\t( 0xBC4D <= code && code <= 0xBC67 ) || // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\n\t\t( 0xBC69 <= code && code <= 0xBC83 ) || // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\n\t\t( 0xBC85 <= code && code <= 0xBC9F ) || // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\n\t\t( 0xBCA1 <= code && code <= 0xBCBB ) || // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\n\t\t( 0xBCBD <= code && code <= 0xBCD7 ) || // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\n\t\t( 0xBCD9 <= code && code <= 0xBCF3 ) || // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\n\t\t( 0xBCF5 <= code && code <= 0xBD0F ) || // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\n\t\t( 0xBD11 <= code && code <= 0xBD2B ) || // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\n\t\t( 0xBD2D <= code && code <= 0xBD47 ) || // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\n\t\t( 0xBD49 <= code && code <= 0xBD63 ) || // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\n\t\t( 0xBD65 <= code && code <= 0xBD7F ) || // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\n\t\t( 0xBD81 <= code && code <= 0xBD9B ) || // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\n\t\t( 0xBD9D <= code && code <= 0xBDB7 ) || // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\n\t\t( 0xBDB9 <= code && code <= 0xBDD3 ) || // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\n\t\t( 0xBDD5 <= code && code <= 0xBDEF ) || // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\n\t\t( 0xBDF1 <= code && code <= 0xBE0B ) || // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\n\t\t( 0xBE0D <= code && code <= 0xBE27 ) || // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\n\t\t( 0xBE29 <= code && code <= 0xBE43 ) || // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\n\t\t( 0xBE45 <= code && code <= 0xBE5F ) || // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\n\t\t( 0xBE61 <= code && code <= 0xBE7B ) || // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\n\t\t( 0xBE7D <= code && code <= 0xBE97 ) || // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\n\t\t( 0xBE99 <= code && code <= 0xBEB3 ) || // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\n\t\t( 0xBEB5 <= code && code <= 0xBECF ) || // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\n\t\t( 0xBED1 <= code && code <= 0xBEEB ) || // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\n\t\t( 0xBEED <= code && code <= 0xBF07 ) || // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\n\t\t( 0xBF09 <= code && code <= 0xBF23 ) || // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\n\t\t( 0xBF25 <= code && code <= 0xBF3F ) || // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\n\t\t( 0xBF41 <= code && code <= 0xBF5B ) || // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\n\t\t( 0xBF5D <= code && code <= 0xBF77 ) || // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\n\t\t( 0xBF79 <= code && code <= 0xBF93 ) || // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\n\t\t( 0xBF95 <= code && code <= 0xBFAF ) || // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\n\t\t( 0xBFB1 <= code && code <= 0xBFCB ) || // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\n\t\t( 0xBFCD <= code && code <= 0xBFE7 ) || // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\n\t\t( 0xBFE9 <= code && code <= 0xC003 ) || // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\n\t\t( 0xC005 <= code && code <= 0xC01F ) || // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\n\t\t( 0xC021 <= code && code <= 0xC03B ) || // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\n\t\t( 0xC03D <= code && code <= 0xC057 ) || // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\n\t\t( 0xC059 <= code && code <= 0xC073 ) || // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\n\t\t( 0xC075 <= code && code <= 0xC08F ) || // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\n\t\t( 0xC091 <= code && code <= 0xC0AB ) || // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\n\t\t( 0xC0AD <= code && code <= 0xC0C7 ) || // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\n\t\t( 0xC0C9 <= code && code <= 0xC0E3 ) || // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\n\t\t( 0xC0E5 <= code && code <= 0xC0FF ) || // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\n\t\t( 0xC101 <= code && code <= 0xC11B ) || // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\n\t\t( 0xC11D <= code && code <= 0xC137 ) || // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\n\t\t( 0xC139 <= code && code <= 0xC153 ) || // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\n\t\t( 0xC155 <= code && code <= 0xC16F ) || // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\n\t\t( 0xC171 <= code && code <= 0xC18B ) || // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\n\t\t( 0xC18D <= code && code <= 0xC1A7 ) || // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\n\t\t( 0xC1A9 <= code && code <= 0xC1C3 ) || // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\n\t\t( 0xC1C5 <= code && code <= 0xC1DF ) || // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\n\t\t( 0xC1E1 <= code && code <= 0xC1FB ) || // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\n\t\t( 0xC1FD <= code && code <= 0xC217 ) || // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\n\t\t( 0xC219 <= code && code <= 0xC233 ) || // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\n\t\t( 0xC235 <= code && code <= 0xC24F ) || // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\n\t\t( 0xC251 <= code && code <= 0xC26B ) || // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\n\t\t( 0xC26D <= code && code <= 0xC287 ) || // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\n\t\t( 0xC289 <= code && code <= 0xC2A3 ) || // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\n\t\t( 0xC2A5 <= code && code <= 0xC2BF ) || // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\n\t\t( 0xC2C1 <= code && code <= 0xC2DB ) || // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\n\t\t( 0xC2DD <= code && code <= 0xC2F7 ) || // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\n\t\t( 0xC2F9 <= code && code <= 0xC313 ) || // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\n\t\t( 0xC315 <= code && code <= 0xC32F ) || // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\n\t\t( 0xC331 <= code && code <= 0xC34B ) || // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\n\t\t( 0xC34D <= code && code <= 0xC367 ) || // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\n\t\t( 0xC369 <= code && code <= 0xC383 ) || // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\n\t\t( 0xC385 <= code && code <= 0xC39F ) || // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\n\t\t( 0xC3A1 <= code && code <= 0xC3BB ) || // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\n\t\t( 0xC3BD <= code && code <= 0xC3D7 ) || // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\n\t\t( 0xC3D9 <= code && code <= 0xC3F3 ) || // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\n\t\t( 0xC3F5 <= code && code <= 0xC40F ) || // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\n\t\t( 0xC411 <= code && code <= 0xC42B ) || // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\n\t\t( 0xC42D <= code && code <= 0xC447 ) || // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\n\t\t( 0xC449 <= code && code <= 0xC463 ) || // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\n\t\t( 0xC465 <= code && code <= 0xC47F ) || // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\n\t\t( 0xC481 <= code && code <= 0xC49B ) || // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\n\t\t( 0xC49D <= code && code <= 0xC4B7 ) || // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\n\t\t( 0xC4B9 <= code && code <= 0xC4D3 ) || // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\n\t\t( 0xC4D5 <= code && code <= 0xC4EF ) || // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\n\t\t( 0xC4F1 <= code && code <= 0xC50B ) || // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\n\t\t( 0xC50D <= code && code <= 0xC527 ) || // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\n\t\t( 0xC529 <= code && code <= 0xC543 ) || // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\n\t\t( 0xC545 <= code && code <= 0xC55F ) || // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\n\t\t( 0xC561 <= code && code <= 0xC57B ) || // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\n\t\t( 0xC57D <= code && code <= 0xC597 ) || // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\n\t\t( 0xC599 <= code && code <= 0xC5B3 ) || // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\n\t\t( 0xC5B5 <= code && code <= 0xC5CF ) || // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\n\t\t( 0xC5D1 <= code && code <= 0xC5EB ) || // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\n\t\t( 0xC5ED <= code && code <= 0xC607 ) || // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\n\t\t( 0xC609 <= code && code <= 0xC623 ) || // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\n\t\t( 0xC625 <= code && code <= 0xC63F ) || // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\n\t\t( 0xC641 <= code && code <= 0xC65B ) || // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\n\t\t( 0xC65D <= code && code <= 0xC677 ) || // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\n\t\t( 0xC679 <= code && code <= 0xC693 ) || // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\n\t\t( 0xC695 <= code && code <= 0xC6AF ) || // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\n\t\t( 0xC6B1 <= code && code <= 0xC6CB ) || // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\n\t\t( 0xC6CD <= code && code <= 0xC6E7 ) || // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\n\t\t( 0xC6E9 <= code && code <= 0xC703 ) || // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\n\t\t( 0xC705 <= code && code <= 0xC71F ) || // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\n\t\t( 0xC721 <= code && code <= 0xC73B ) || // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\n\t\t( 0xC73D <= code && code <= 0xC757 ) || // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\n\t\t( 0xC759 <= code && code <= 0xC773 ) || // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\n\t\t( 0xC775 <= code && code <= 0xC78F ) || // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\n\t\t( 0xC791 <= code && code <= 0xC7AB ) || // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\n\t\t( 0xC7AD <= code && code <= 0xC7C7 ) || // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\n\t\t( 0xC7C9 <= code && code <= 0xC7E3 ) || // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\n\t\t( 0xC7E5 <= code && code <= 0xC7FF ) || // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\n\t\t( 0xC801 <= code && code <= 0xC81B ) || // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\n\t\t( 0xC81D <= code && code <= 0xC837 ) || // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\n\t\t( 0xC839 <= code && code <= 0xC853 ) || // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\n\t\t( 0xC855 <= code && code <= 0xC86F ) || // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\n\t\t( 0xC871 <= code && code <= 0xC88B ) || // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\n\t\t( 0xC88D <= code && code <= 0xC8A7 ) || // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\n\t\t( 0xC8A9 <= code && code <= 0xC8C3 ) || // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\n\t\t( 0xC8C5 <= code && code <= 0xC8DF ) || // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\n\t\t( 0xC8E1 <= code && code <= 0xC8FB ) || // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\n\t\t( 0xC8FD <= code && code <= 0xC917 ) || // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\n\t\t( 0xC919 <= code && code <= 0xC933 ) || // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\n\t\t( 0xC935 <= code && code <= 0xC94F ) || // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\n\t\t( 0xC951 <= code && code <= 0xC96B ) || // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\n\t\t( 0xC96D <= code && code <= 0xC987 ) || // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\n\t\t( 0xC989 <= code && code <= 0xC9A3 ) || // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\n\t\t( 0xC9A5 <= code && code <= 0xC9BF ) || // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\n\t\t( 0xC9C1 <= code && code <= 0xC9DB ) || // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\n\t\t( 0xC9DD <= code && code <= 0xC9F7 ) || // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\n\t\t( 0xC9F9 <= code && code <= 0xCA13 ) || // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\n\t\t( 0xCA15 <= code && code <= 0xCA2F ) || // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\n\t\t( 0xCA31 <= code && code <= 0xCA4B ) || // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\n\t\t( 0xCA4D <= code && code <= 0xCA67 ) || // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\n\t\t( 0xCA69 <= code && code <= 0xCA83 ) || // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\n\t\t( 0xCA85 <= code && code <= 0xCA9F ) || // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\n\t\t( 0xCAA1 <= code && code <= 0xCABB ) || // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\n\t\t( 0xCABD <= code && code <= 0xCAD7 ) || // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\n\t\t( 0xCAD9 <= code && code <= 0xCAF3 ) || // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\n\t\t( 0xCAF5 <= code && code <= 0xCB0F ) || // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\n\t\t( 0xCB11 <= code && code <= 0xCB2B ) || // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\n\t\t( 0xCB2D <= code && code <= 0xCB47 ) || // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\n\t\t( 0xCB49 <= code && code <= 0xCB63 ) || // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\n\t\t( 0xCB65 <= code && code <= 0xCB7F ) || // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\n\t\t( 0xCB81 <= code && code <= 0xCB9B ) || // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\n\t\t( 0xCB9D <= code && code <= 0xCBB7 ) || // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\n\t\t( 0xCBB9 <= code && code <= 0xCBD3 ) || // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\n\t\t( 0xCBD5 <= code && code <= 0xCBEF ) || // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\n\t\t( 0xCBF1 <= code && code <= 0xCC0B ) || // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\n\t\t( 0xCC0D <= code && code <= 0xCC27 ) || // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\n\t\t( 0xCC29 <= code && code <= 0xCC43 ) || // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\n\t\t( 0xCC45 <= code && code <= 0xCC5F ) || // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\n\t\t( 0xCC61 <= code && code <= 0xCC7B ) || // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\n\t\t( 0xCC7D <= code && code <= 0xCC97 ) || // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\n\t\t( 0xCC99 <= code && code <= 0xCCB3 ) || // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\n\t\t( 0xCCB5 <= code && code <= 0xCCCF ) || // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\n\t\t( 0xCCD1 <= code && code <= 0xCCEB ) || // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\n\t\t( 0xCCED <= code && code <= 0xCD07 ) || // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\n\t\t( 0xCD09 <= code && code <= 0xCD23 ) || // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\n\t\t( 0xCD25 <= code && code <= 0xCD3F ) || // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\n\t\t( 0xCD41 <= code && code <= 0xCD5B ) || // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\n\t\t( 0xCD5D <= code && code <= 0xCD77 ) || // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\n\t\t( 0xCD79 <= code && code <= 0xCD93 ) || // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\n\t\t( 0xCD95 <= code && code <= 0xCDAF ) || // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\n\t\t( 0xCDB1 <= code && code <= 0xCDCB ) || // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\n\t\t( 0xCDCD <= code && code <= 0xCDE7 ) || // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\n\t\t( 0xCDE9 <= code && code <= 0xCE03 ) || // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\n\t\t( 0xCE05 <= code && code <= 0xCE1F ) || // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\n\t\t( 0xCE21 <= code && code <= 0xCE3B ) || // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\n\t\t( 0xCE3D <= code && code <= 0xCE57 ) || // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\n\t\t( 0xCE59 <= code && code <= 0xCE73 ) || // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\n\t\t( 0xCE75 <= code && code <= 0xCE8F ) || // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\n\t\t( 0xCE91 <= code && code <= 0xCEAB ) || // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\n\t\t( 0xCEAD <= code && code <= 0xCEC7 ) || // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\n\t\t( 0xCEC9 <= code && code <= 0xCEE3 ) || // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\n\t\t( 0xCEE5 <= code && code <= 0xCEFF ) || // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\n\t\t( 0xCF01 <= code && code <= 0xCF1B ) || // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\n\t\t( 0xCF1D <= code && code <= 0xCF37 ) || // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\n\t\t( 0xCF39 <= code && code <= 0xCF53 ) || // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\n\t\t( 0xCF55 <= code && code <= 0xCF6F ) || // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\n\t\t( 0xCF71 <= code && code <= 0xCF8B ) || // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\n\t\t( 0xCF8D <= code && code <= 0xCFA7 ) || // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\n\t\t( 0xCFA9 <= code && code <= 0xCFC3 ) || // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\n\t\t( 0xCFC5 <= code && code <= 0xCFDF ) || // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\n\t\t( 0xCFE1 <= code && code <= 0xCFFB ) || // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\n\t\t( 0xCFFD <= code && code <= 0xD017 ) || // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\n\t\t( 0xD019 <= code && code <= 0xD033 ) || // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\n\t\t( 0xD035 <= code && code <= 0xD04F ) || // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\n\t\t( 0xD051 <= code && code <= 0xD06B ) || // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\n\t\t( 0xD06D <= code && code <= 0xD087 ) || // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\n\t\t( 0xD089 <= code && code <= 0xD0A3 ) || // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\n\t\t( 0xD0A5 <= code && code <= 0xD0BF ) || // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\n\t\t( 0xD0C1 <= code && code <= 0xD0DB ) || // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\n\t\t( 0xD0DD <= code && code <= 0xD0F7 ) || // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\n\t\t( 0xD0F9 <= code && code <= 0xD113 ) || // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\n\t\t( 0xD115 <= code && code <= 0xD12F ) || // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\n\t\t( 0xD131 <= code && code <= 0xD14B ) || // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\n\t\t( 0xD14D <= code && code <= 0xD167 ) || // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\n\t\t( 0xD169 <= code && code <= 0xD183 ) || // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\n\t\t( 0xD185 <= code && code <= 0xD19F ) || // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\n\t\t( 0xD1A1 <= code && code <= 0xD1BB ) || // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\n\t\t( 0xD1BD <= code && code <= 0xD1D7 ) || // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\n\t\t( 0xD1D9 <= code && code <= 0xD1F3 ) || // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\n\t\t( 0xD1F5 <= code && code <= 0xD20F ) || // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\n\t\t( 0xD211 <= code && code <= 0xD22B ) || // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\n\t\t( 0xD22D <= code && code <= 0xD247 ) || // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\n\t\t( 0xD249 <= code && code <= 0xD263 ) || // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\n\t\t( 0xD265 <= code && code <= 0xD27F ) || // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\n\t\t( 0xD281 <= code && code <= 0xD29B ) || // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\n\t\t( 0xD29D <= code && code <= 0xD2B7 ) || // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\n\t\t( 0xD2B9 <= code && code <= 0xD2D3 ) || // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\n\t\t( 0xD2D5 <= code && code <= 0xD2EF ) || // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\n\t\t( 0xD2F1 <= code && code <= 0xD30B ) || // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\n\t\t( 0xD30D <= code && code <= 0xD327 ) || // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\n\t\t( 0xD329 <= code && code <= 0xD343 ) || // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\n\t\t( 0xD345 <= code && code <= 0xD35F ) || // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\n\t\t( 0xD361 <= code && code <= 0xD37B ) || // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\n\t\t( 0xD37D <= code && code <= 0xD397 ) || // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\n\t\t( 0xD399 <= code && code <= 0xD3B3 ) || // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\n\t\t( 0xD3B5 <= code && code <= 0xD3CF ) || // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\n\t\t( 0xD3D1 <= code && code <= 0xD3EB ) || // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\n\t\t( 0xD3ED <= code && code <= 0xD407 ) || // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\n\t\t( 0xD409 <= code && code <= 0xD423 ) || // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\n\t\t( 0xD425 <= code && code <= 0xD43F ) || // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\n\t\t( 0xD441 <= code && code <= 0xD45B ) || // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\n\t\t( 0xD45D <= code && code <= 0xD477 ) || // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\n\t\t( 0xD479 <= code && code <= 0xD493 ) || // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\n\t\t( 0xD495 <= code && code <= 0xD4AF ) || // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\n\t\t( 0xD4B1 <= code && code <= 0xD4CB ) || // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\n\t\t( 0xD4CD <= code && code <= 0xD4E7 ) || // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\n\t\t( 0xD4E9 <= code && code <= 0xD503 ) || // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\n\t\t( 0xD505 <= code && code <= 0xD51F ) || // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\n\t\t( 0xD521 <= code && code <= 0xD53B ) || // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\n\t\t( 0xD53D <= code && code <= 0xD557 ) || // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\n\t\t( 0xD559 <= code && code <= 0xD573 ) || // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\n\t\t( 0xD575 <= code && code <= 0xD58F ) || // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\n\t\t( 0xD591 <= code && code <= 0xD5AB ) || // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\n\t\t( 0xD5AD <= code && code <= 0xD5C7 ) || // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\n\t\t( 0xD5C9 <= code && code <= 0xD5E3 ) || // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\n\t\t( 0xD5E5 <= code && code <= 0xD5FF ) || // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\n\t\t( 0xD601 <= code && code <= 0xD61B ) || // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\n\t\t( 0xD61D <= code && code <= 0xD637 ) || // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\n\t\t( 0xD639 <= code && code <= 0xD653 ) || // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\n\t\t( 0xD655 <= code && code <= 0xD66F ) || // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\n\t\t( 0xD671 <= code && code <= 0xD68B ) || // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\n\t\t( 0xD68D <= code && code <= 0xD6A7 ) || // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\n\t\t( 0xD6A9 <= code && code <= 0xD6C3 ) || // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\n\t\t( 0xD6C5 <= code && code <= 0xD6DF ) || // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\n\t\t( 0xD6E1 <= code && code <= 0xD6FB ) || // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\n\t\t( 0xD6FD <= code && code <= 0xD717 ) || // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\n\t\t( 0xD719 <= code && code <= 0xD733 ) || // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\n\t\t( 0xD735 <= code && code <= 0xD74F ) || // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\n\t\t( 0xD751 <= code && code <= 0xD76B ) || // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\n\t\t( 0xD76D <= code && code <= 0xD787 ) || // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\n\t\t( 0xD789 <= code && code <= 0xD7A3 ) // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\n\t) {\n\t\treturn constants.LVT;\n\t}\n\tif (\n\t\tcode === 0x200D // Cf ZERO WIDTH JOINER\n\t) {\n\t\treturn constants.ZWJ;\n\t}\n\t// All unlisted characters have a grapheme break property of \"Other\":\n\treturn constants.Other;\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeBreakProperty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Grapheme cluster break tooling.\n*\n* @module @stdlib/string/tools/grapheme-cluster-break\n*\n* @example\n* var grapheme = require( '@stdlib/string/tools/grapheme-cluster-break' );\n*\n* var out = grapheme.emojiProperty( 0x23EC );\n* // returns 101\n*\n* out = grapheme.breakProperty( 0x008f );\n* // returns 2\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar constants = require( './constants.js' );\nvar breakType = require( './break_type.js' );\nvar emojiProperty = require( './emoji_property.js' );\nvar breakProperty = require( './break_property.js' );\n\n\n// MAIN //\n\nvar main = {};\nsetReadOnly( main, 'constants', constants );\nsetReadOnly( main, 'breakType', breakType );\nsetReadOnly( main, 'emojiProperty', emojiProperty );\nsetReadOnly( main, 'breakProperty', breakProperty );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar codePointAt = require( './../../code-point-at' );\nvar hasUTF16SurrogatePairAt = require( '@stdlib/assert/has-utf16-surrogate-pair-at' );\nvar grapheme = require( './../../tools/grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar breakType = grapheme.breakType;\nvar breakProperty = grapheme.breakProperty;\nvar emojiProperty = grapheme.emojiProperty;\n\n\n// MAIN //\n\n/**\n* Returns the next extended grapheme cluster break in a string after a specified position.\n*\n* @param {string} str - input string\n* @param {integer} [fromIndex=0] - position\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @returns {NonNegativeInteger} next grapheme break position\n*\n* @example\n* var out = nextGraphemeClusterBreak( 'last man standing', 4 );\n* // returns 5\n*\n* @example\n* var out = nextGraphemeClusterBreak( 'presidential election', 8 );\n* // returns 9\n*\n* @example\n* var out = nextGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 1 );\n* // returns 3\n*\n* @example\n* var out = nextGraphemeClusterBreak( '\uD83C\uDF37' );\n* // returns -1\n*/\nfunction nextGraphemeClusterBreak( str, fromIndex ) {\n\tvar breaks;\n\tvar emoji;\n\tvar len;\n\tvar idx;\n\tvar cp;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = fromIndex;\n\t} else {\n\t\tidx = 0;\n\t}\n\tlen = str.length;\n\tif ( idx < 0 ) {\n\t\tidx += len;\n\t\tif ( idx < 0 ) {\n\t\t\tidx = 0;\n\t\t}\n\t}\n\tif ( len === 0 || idx >= len ) {\n\t\treturn -1;\n\t}\n\t// Initialize caches for storing grapheme break and emoji properties:\n\tbreaks = [];\n\temoji = [];\n\n\t// Get the code point for the starting index:\n\tcp = codePointAt( str, idx );\n\n\t// Get the corresponding grapheme break and emoji properties:\n\tbreaks.push( breakProperty( cp ) );\n\temoji.push( emojiProperty( cp ) );\n\n\t// Begin searching for the next grapheme cluster break...\n\tfor ( i = idx+1; i < len; i++ ) {\n\t\t// If the current character is part of a surrogate pair, move along...\n\t\tif ( hasUTF16SurrogatePairAt( str, i-1 ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Get the next code point:\n\t\tcp = codePointAt( str, i );\n\n\t\t// Get the corresponding grapheme break and emoji properties:\n\t\tbreaks.push( breakProperty( cp ) );\n\t\temoji.push( emojiProperty( cp ) );\n\n\t\t// Determine if we've encountered a grapheme cluster break...\n\t\tif ( breakType( breaks, emoji ) > 0 ) {\n\t\t\t// We've found a break!\n\t\t\treturn i;\n\t\t}\n\t}\n\t// Unable to find a grapheme cluster break:\n\treturn -1;\n}\n\n\n// EXPORTS //\n\nmodule.exports = nextGraphemeClusterBreak;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the next extended grapheme cluster break in a string after a specified position.\n*\n* @module @stdlib/string/next-grapheme-cluster-break\n*\n* @example\n* var nextGraphemeClusterBreak = require( '@stdlib/string/next-grapheme-cluster-break' );\n*\n* var out = nextGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 1 );\n* // returns 3\n*\n* out = nextGraphemeClusterBreak( '\uD83C\uDF37', 0 );\n* // returns -1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Returns the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*\n* @example\n* var out = first( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E'\n*\n* @example\n* var out = first( 'foo bar', 5 );\n* // returns 'foo b'\n*/\nfunction first( str, n ) {\n\tvar i = 0;\n\twhile ( n > 0 ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tn -= 1;\n\t}\n\t// Value of `i` will be -1 if and only if `str` is an empty string or `str` has only 1 extended grapheme cluster...\n\tif ( str === '' || i === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/first-grapheme-cluster\n*\n* @example\n* var first = require( '@stdlib/string/base/first-grapheme-cluster' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*\n* out = first( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Invokes a function for each UTF-16 code unit in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tclbk.call( thisArg, str[ i ], i, str );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each UTF-16 code unit in a string.\n*\n* @module @stdlib/string/base/for-each\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Invokes a function for each Unicode code point in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar idx;\n\tvar ch;\n\tvar i;\n\n\tlen = str.length;\n\n\t// Process the string one Unicode code unit at a time and handle UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tidx = i;\n\t\tch = ch1;\n\n\t\t// Check for a UTF-16 surrogate pair...\n\t\tif ( i < len-1 && RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tch += ch2;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Note: `ch` may be a lone surrogate (e.g., a low surrogate without a preceding high surrogate or a high surrogate at the end of the input string).\n\n\t\t// Invoke the callback with the code point:\n\t\tclbk.call( thisArg, ch, idx, str );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each Unicode code point in a string.\n*\n* @module @stdlib/string/base/for-each-code-point\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each-code-point' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Invokes a function for each grapheme cluster (i.e., user-perceived character) in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar len;\n\tvar idx;\n\tvar brk;\n\n\tlen = str.length;\n\tidx = 0;\n\twhile ( idx < len ) {\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t\tif ( brk === -1 ) {\n\t\t\tbrk = len;\n\t\t}\n\t\tclbk.call( thisArg, str.substring( idx, brk ), idx, str );\n\t\tidx = brk;\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each grapheme cluster (i.e., user-perceived character) in a string.\n*\n* @module @stdlib/string/base/for-each-grapheme-cluster\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each-grapheme-cluster' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar reWhitespace = require( '@stdlib/regexp/whitespace' ).REGEXP;\n\n\n// MAIN //\n\n/**\n* Capitalizes the first letter of each word in an input string.\n*\n* @param {string} str - string to convert\n* @returns {string} start case string\n*\n* @example\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\nfunction startcase( str ) {\n\tvar cap;\n\tvar out;\n\tvar ch;\n\tvar i;\n\n\tcap = true;\n\tout = '';\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tch = str.charAt( i );\n\t\tif ( reWhitespace.test( ch ) ) {\n\t\t\tcap = true;\n\t\t} else if ( cap ) {\n\t\t\tch = ch.toUpperCase();\n\t\t\tcap = false;\n\t\t}\n\t\tout += ch;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first letter of each word in an input string.\n*\n* @module @stdlib/string/base/startcase\n*\n* @example\n* var startcase = require( '@stdlib/string/base/startcase' );\n*\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar startcase = require( './../../../base/startcase' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to HTTP header case.\n*\n* @param {string} str - string to convert\n* @returns {string} HTTP header-cased string\n*\n* @example\n* var out = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* @example\n* var out = headercase( 'IS_MOBILE' );\n* // returns 'Is-Mobile'\n*\n* @example\n* var out = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*\n* @example\n* var out = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*/\nfunction headercase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = lowercase( str );\n\tstr = startcase( str );\n\treturn replace( str, RE_WHITESPACE, '-' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = headercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to HTTP header case.\n*\n* @module @stdlib/string/base/headercase\n*\n* @example\n* var headercase = require( '@stdlib/string/base/headercase' );\n*\n* var str = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar uppercase = require( './../../../base/uppercase' );\nvar lowercase = require( './../../../base/lowercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to inverse case.\n*\n* @param {string} str - string to convert\n* @returns {string} inverse-cased string\n*\n* @example\n* var str = invcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = invcase( 'beep BOOP' );\n* // returns 'BEEP boop'\n*\n* @example\n* var str = invcase( 'isMobile' );\n* // returns 'ISmOBILE'\n*\n* @example\n* var str = invcase( 'HeLlO wOrLd!' );\n* // returns 'hElLo WoRlD!'\n*/\nfunction invcase( str ) {\n\tvar out;\n\tvar ch;\n\tvar s;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tch = str[ i ];\n\t\ts = uppercase( ch );\n\t\tif ( s === ch ) {\n\t\t\ts = lowercase( ch );\n\t\t}\n\t\tout.push( s );\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = invcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to inverse case.\n*\n* @module @stdlib/string/base/invcase\n*\n* @example\n* var invcase = require( '@stdlib/string/base/invcase' );\n*\n* var str = invcase( 'aBcDeF' );\n* // returns 'AbCdEf'\n*\n* str = invcase( 'Hello World!' );\n* // returns 'hELLO wORLD!'\n*\n* str = invcase( 'I am a robot' );\n* // returns 'i AM A ROBOT'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '-' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string/base/kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string/base/kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.repeat !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* ## Method\n*\n* The algorithmic trick used in the implementation is to treat string concatenation the same as binary addition (i.e., any natural number (nonnegative integer) can be expressed as a sum of powers of two).\n*\n* For example,\n*\n* ```text\n* n = 10 => 1010 => 2^3 + 2^0 + 2^1 + 2^0\n* ```\n*\n* We can produce a 10-repeat string by \"adding\" the results of a 8-repeat string and a 2-repeat string.\n*\n* The implementation is then as follows:\n*\n* 1. Let `s` be the string to be repeated and `o` be an output string.\n*\n* 2. Initialize an output string `o`.\n*\n* 3. Check the least significant bit to determine if the current `s` string should be \"added\" to the output \"total\".\n*\n* - if the bit is a one, add\n* - otherwise, move on\n*\n* 4. Double the string `s` by adding `s` to `s`.\n*\n* 5. Right-shift the bits of `n`.\n*\n* 6. Check if we have shifted off all bits.\n*\n* - if yes, done.\n* - otherwise, move on\n*\n* 7. Repeat 3-6.\n*\n* The result is that, as the string is repeated, we continually check to see if the doubled string is one which we want to add to our \"total\".\n*\n* The algorithm runs in `O(log_2(n))` compared to `O(n)`.\n*\n* @private\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\tvar rpt;\n\tvar cnt;\n\tif ( str.length === 0 || n === 0 ) {\n\t\treturn '';\n\t}\n\trpt = '';\n\tcnt = n;\n\tfor ( ; ; ) {\n\t\t// If the count is odd, append the current concatenated string:\n\t\tif ( (cnt&1) === 1 ) {\n\t\t\trpt += str;\n\t\t}\n\t\t// Right-shift the bits:\n\t\tcnt >>>= 1;\n\t\tif ( cnt === 0 ) {\n\t\t\tbreak;\n\t\t}\n\t\t// Double the string:\n\t\tstr += str;\n\t}\n\treturn rpt;\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar repeat = String.prototype.repeat;\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\treturn builtin.call( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Repeat a string a specified number of times and return the concatenated result.\n*\n* @module @stdlib/string/base/repeat\n*\n* @example\n* var replace = require( '@stdlib/string/base/repeat' );\n*\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* str = repeat( '', 100 );\n* // returns ''\n*\n* str = repeat( 'beep', 0 );\n* // returns ''\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar repeat;\nif ( HAS_BUILTIN ) {\n\trepeat = main;\n} else {\n\trepeat = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar repeat = require( './../../../base/repeat' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Left pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} pad - string used to pad\n* @returns {string} padded string\n*\n* @example\n* var str = lpad( 'a', 5, ' ' );\n* // returns ' a'\n*\n* @example\n* var str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* @example\n* var str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\nfunction lpad( str, len, pad ) {\n\tvar n = ( len - str.length ) / pad.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn repeat( pad, n ) + str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Left pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/base/left-pad\n*\n* @example\n* var lpad = require( '@stdlib/string/base/left-pad' );\n*\n* var str = lpad( 'a', 5, ' ' );\n* // returns ' a'\n*\n* str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trimLeft !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ltrim = String.prototype.trimLeft;\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning of a string.\n*\n* @module @stdlib/string/base/left-trim\n*\n* @example\n* var ltrim = require( '@stdlib/string/base/left-trim' );\n*\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar ltrim;\nif ( HAS_BUILTIN ) {\n\tltrim = main;\n} else {\n\tltrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar capitalize = require( './../../../base/capitalize' );\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_TO_PASCAL = /(?:\\s|^)([^\\s]+)(?=\\s|$)/g;\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Callback invoked upon a match.\n*\n* @private\n* @param {string} match - entire match\n* @param {string} p1 - first capture group\n* @returns {string} capitalized capture group\n*/\nfunction replacer( match, p1 ) {\n\treturn capitalize( lowercase( p1 ) );\n}\n\n\n// MAIN //\n\n/**\n* Converts a string to Pascal case.\n*\n* @param {string} str - string to convert\n* @returns {string} Pascal-cased string\n*\n* @example\n* var out = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* @example\n* var out = pascalcase( 'IS_MOBILE' );\n* // returns 'IsMobile'\n*\n* @example\n* var out = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*\n* @example\n* var out = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*/\nfunction pascalcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_WHITESPACE, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\treturn replace( str, RE_TO_PASCAL, replacer );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pascalcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to Pascal case.\n*\n* @module @stdlib/string/base/pascalcase\n*\n* @example\n* var pascalcase = require( '@stdlib/string/base/pascalcase' );\n*\n* var str = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* str = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*\n* str = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\n// 2^6-1 = 63 => 0x3f => 00111111\nvar Ox3F = 63|0;\n\n// 2^7 = 128 => 0x80 => 10000000\nvar Ox80 = 128|0;\n\n// 192 => 0xc0 => 11000000\nvar OxC0 = 192|0;\n\n// 224 => 0xe0 => 11100000\nvar OxE0 = 224|0;\n\n// 240 => 0xf0 => 11110000\nvar OxF0 = 240|0;\n\n// 2^10-1 = 1023 => 0x3ff => 00000011 11111111\nvar Ox3FF = 1023|0;\n\n// 2^11 = 2048 => 0x800 => 00001000 00000000\nvar Ox800 = 2048|0;\n\n// 55296 => 11011000 00000000\nvar OxD800 = 55296|0;\n\n// 57344 => 11100000 00000000\nvar OxE000 = 57344|0;\n\n// 2^16 = 65536 => 00000000 00000001 00000000 00000000\nvar Ox10000 = 65536|0;\n\n\n// MAIN //\n\n/**\n* Converts a UTF-16 encoded string to an array of integers using UTF-8 encoding.\n*\n* ## Method\n*\n* - UTF-8 is defined to encode code points in one to four bytes, depending on the number of significant bits in the numerical value of the code point.\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n*\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words.\n*\n* - Let `N` be the number of significant bits.\n*\n* - If `N <= 7` (i.e., U+0000 to U+007F), a code point is encoded in a single byte.\n*\n* ```text\n* 0xxxxxxx\n* ```\n*\n* where an `x` refers to a code point bit.\n*\n* - If `N <= 11` (i.e., U+0080 to U+07FF; ASCII characters), a code point is encoded in two bytes (5+6 bits).\n*\n* ```text\n* 110xxxxx 10xxxxxx\n* ```\n*\n* - If `N <= 16` (i.e., U+0800 to U+FFFF), a code point is encoded in three bytes (4+6+6 bits).\n*\n* ```text\n* 1110xxxx 10xxxxxx 10xxxxxx\n* ```\n*\n* - If `N <= 21` (i.e., U+10000 to U+10FFFF), a code point is encoded in four bytes (3+6+6+6 bits).\n*\n* ```text\n* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n* ```\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {Array} array of integers\n* @see [UTF-8]{@link https://en.wikipedia.org/wiki/UTF-8}\n* @see [Stack Overflow]{@link https://stackoverflow.com/questions/6240055/manually-converting-unicode-codepoints-into-utf-8-and-utf-16}\n*\n* @example\n* var str = '\u2603';\n* var out = utf16ToUTF8Array( str );\n* // returns [ 226, 152, 131 ]\n*/\nfunction utf16ToUTF8Array( str ) {\n\tvar code;\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tlen = str.length;\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tcode = str.charCodeAt( i );\n\n\t\t// ASCII...\n\t\tif ( code < Ox80 ) {\n\t\t\tout.push( code );\n\t\t}\n\t\t// UTF-16 non-surrogate pair...\n\t\telse if ( code < Ox800 ) {\n\t\t\tout.push( OxC0 | (code>>6) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t\telse if ( code < OxD800 || code >= OxE000 ) {\n\t\t\tout.push( OxE0 | (code>>12) );\n\t\t\tout.push( Ox80 | ((code>>6) & Ox3F) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t\t// UTF-16 surrogate pair...\n\t\telse {\n\t\t\ti += 1;\n\n\t\t\t// eslint-disable-next-line max-len\n\t\t\tcode = Ox10000 + (((code & Ox3FF)<<10) | (str.charCodeAt(i) & Ox3FF));\n\n\t\t\tout.push( OxF0 | (code>>18) );\n\t\t\tout.push( Ox80 | ((code>>12) & Ox3F) );\n\t\t\tout.push( Ox80 | ((code>>6) & Ox3F) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = utf16ToUTF8Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a UTF-16 encoded string to an array of integers using UTF-8 encoding.\n*\n* @module @stdlib/string/utf16-to-utf8-array\n*\n* @example\n* var utf16ToUTF8Array = require( '@stdlib/string/utf16-to-utf8-array' );\n*\n* var str = '\u2603';\n* var out = utf16ToUTF8Array( str );\n* // returns [ 226, 152, 131 ]\n*/\n\n// MODULES //\n\nvar utf16ToUTF8Array = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = utf16ToUTF8Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar utf16ToUTF8Array = require( './../../../utf16-to-utf8-array' );\n\n\n// VARIABLES //\n\n// Character codes:\nvar UNDERSCORE = 95|0;\nvar PERIOD = 46|0;\nvar HYPHEN = 45|0;\nvar TILDE = 126|0;\nvar ZERO = 48|0;\nvar NINE = 57|0;\nvar A = 65|0;\nvar Z = 90|0;\nvar a = 97|0;\nvar z = 122|0;\n\n\n// MAIN //\n\n/**\n* Percent-encodes a UTF-16 encoded string according to [RFC 3986][1].\n*\n* [1]: https://tools.ietf.org/html/rfc3986#section-2.1\n*\n* @param {string} str - string to percent-encode\n* @returns {string} percent-encoded string\n*\n* @example\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\nfunction percentEncode( str ) {\n\tvar byte;\n\tvar out;\n\tvar len;\n\tvar buf;\n\tvar i;\n\n\t// Convert to an array of octets using UTF-8 encoding (see https://tools.ietf.org/html/rfc3986#section-2.5):\n\tbuf = utf16ToUTF8Array( str );\n\n\t// Encode the string...\n\tlen = buf.length;\n\tout = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tbyte = buf[ i ];\n\t\tif (\n\t\t\t// ASCII Digits:\n\t\t\t( byte >= ZERO && byte <= NINE ) ||\n\n\t\t\t// ASCII uppercase letters:\n\t\t\t( byte >= A && byte <= Z ) ||\n\n\t\t\t// ASCII lowercase letters:\n\t\t\t( byte >= a && byte <= z ) ||\n\n\t\t\t// ASCII unreserved characters (see https://tools.ietf.org/html/rfc3986#section-2.3):\n\t\t\tbyte === HYPHEN ||\n\t\t\tbyte === PERIOD ||\n\t\t\tbyte === UNDERSCORE ||\n\t\t\tbyte === TILDE\n\t\t) {\n\t\t\tout += str.charAt( i );\n\t\t} else {\n\t\t\t// Convert an octet to hexadecimal and uppercase according to the RFC (see https://tools.ietf.org/html/rfc3986#section-2.1):\n\t\t\tout += '%' + byte.toString( 16 ).toUpperCase();\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = percentEncode;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Percent-encode a UTF-16 encoded string according to RFC 3986.\n*\n* @module @stdlib/string/base/percent-encode\n*\n* @example\n* var percentEncode = require( '@stdlib/string/base/percent-encode' );\n*\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Removes the first `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*/\nfunction removeFirst( str, n ) {\n\treturn str.substring( n, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/remove-first\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Removes the first `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*/\nfunction removeFirst( str, n ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\tlen = str.length;\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tcnt += 1;\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn str.substring( i + 1, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/remove-first-code-point\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first-code-point' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Removes the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*\n* @example\n* var out = removeFirst( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38'\n*\n* @example\n* var out = removeFirst( 'foo bar', 5 );\n* // returns 'ar'\n*/\nfunction removeFirst( str, n ) {\n\tvar i = 0;\n\twhile ( n > 0 ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tn -= 1;\n\t}\n\t// Value of `i` will be -1 if and only if `str` is an empty string or `str` has only 1 extended grapheme cluster...\n\tif ( str === '' || i === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( i, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/remove-first-grapheme-cluster\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first-grapheme-cluster' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*\n* out = removeFirst( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC38\uD83D\uDC35'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces the substring before the first occurrence of a specified search string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {string} replacement - replacement string\n* @returns {string} string\n*\n* @example\n* var out = replaceBefore( 'beep boop', ' ', 'foo' );\n* // returns 'foo boop'\n*\n* @example\n* var out = replaceBefore( 'beep boop', 'p', 'foo' );\n* // returns 'foop boop'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', '', 'foo' );\n* // returns 'Hello World!'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );\n* // returns 'Hello World!'\n*/\nfunction replaceBefore( str, search, replacement ) {\n\tvar idx = str.indexOf( search );\n\tif ( str === '' || search === '' || replacement === '' || idx < 0 ) {\n\t\treturn str;\n\t}\n\treturn replacement + str.substring( idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replaceBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace the substring before the first occurrence of a specified search string.\n*\n* @module @stdlib/string/base/replace-before\n*\n* @example\n* var replaceBefore = require( '@stdlib/string/base/replace-before' );\n*\n* var str = 'beep boop';\n*\n* var out = replaceBefore( str, ' ', 'foo' );\n* // returns 'foo boop'\n*\n* out = replaceBefore( str, 'o', 'bar' );\n* // returns 'baroop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar repeat = require( './../../../base/repeat' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Right pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} pad - string used to pad\n* @returns {string} padded string\n*\n* @example\n* var str = rpad( 'a', 5, ' ' );\n* // returns 'a '\n*\n* @example\n* var str = rpad( 'beep', 10, 'b' );\n* // returns 'beepbbbbbb'\n*\n* @example\n* var str = rpad( 'boop', 12, 'beep' );\n* // returns 'boopbeepbeep'\n*/\nfunction rpad( str, len, pad ) {\n\tvar n = ( len - str.length ) / pad.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn str + repeat( pad, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Right pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/base/right-pad\n*\n* @example\n* var rpad = require( '@stdlib/string/base/right-pad' );\n*\n* var str = rpad( 'a', 5, ' ' );\n* // returns 'a '\n*\n* str = rpad( 'beep', 10, 'b' );\n* // returns 'beepbbbbbb'\n*\n* str = rpad( 'boop', 12, 'beep' );\n* // returns 'boopbeepbeep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trimRight !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar rtrim = String.prototype.trimRight;\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the end of a string.\n*\n* @module @stdlib/string/base/right-trim\n*\n* @example\n* var rtrim = require( '@stdlib/string/base/right-trim' );\n*\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar rtrim;\nif ( HAS_BUILTIN ) {\n\trtrim = main;\n} else {\n\trtrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to snake case.\n*\n* @param {string} str - string to convert\n* @returns {string} snake-cased string\n*\n* @example\n* var str = snakecase( 'Hello World!' );\n* // returns 'hello_world'\n*\n* @example\n* var str = snakecase( 'foo bar' );\n* // returns 'foo_bar'\n*\n* @example\n* var str = snakecase( 'I am a tiny little teapot' );\n* // returns 'i_am_a_tiny_little_teapot'\n*\n* @example\n* var str = snakecase( 'BEEP boop' );\n* // returns 'beep_boop'\n*\n* @example\n* var str = snakecase( 'isMobile' );\n* // returns 'is_mobile'\n*/\nfunction snakecase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '_' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = snakecase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to snake case.\n*\n* @module @stdlib/string/base/snakecase\n*\n* @example\n* var snakecase = require( '@stdlib/string/base/snakecase' );\n*\n* var str = snakecase( 'Foo Bar' );\n* // returns 'foo_bar'\n*\n* str = snakecase( 'I am a tiny little house' );\n* // returns 'i_am_a_tiny_little_house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.startsWith !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @private\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} position - position at which to start searching\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tvar i;\n\tif ( position < 0 ) {\n\t\tpos = str.length + position;\n\t} else {\n\t\tpos = position;\n\t}\n\tif ( search.length === 0 ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tpos < 0 ||\n\t\tpos + search.length > str.length\n\t) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < search.length; i++ ) {\n\t\tif ( str.charCodeAt( pos + i ) !== search.charCodeAt( i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar startsWith = String.prototype.startsWith;\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} position - position at which to start searching\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tif ( position < 0 ) {\n\t\tpos = str.length + position;\n\t} else {\n\t\tpos = position;\n\t}\n\tif ( search.length === 0 ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tpos < 0 ||\n\t\tpos + search.length > str.length\n\t) {\n\t\treturn false;\n\t}\n\treturn builtin.call( str, search, pos );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string starts with the characters of another string.\n*\n* @module @stdlib/string/base/starts-with\n*\n* @example\n* var startsWith = require( '@stdlib/string/base/starts-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n* var bool = startsWith( str, 'Fair', 0 );\n* // returns true\n*\n* bool = startsWith( str, 'fair', 0 );\n* // returns false\n*\n* bool = startsWith( str, 'foul', 8 );\n* // returns true\n*\n* bool = startsWith( str, 'filthy', -10 );\n* // returns true\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar startsWith;\nif ( HAS_BUILTIN ) {\n\tstartsWith = main;\n} else {\n\tstartsWith = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Uncapitalizes the first character of a string.\n*\n* @param {string} str - input string\n* @returns {string} input string with first character converted to lowercase\n*\n* @example\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* @example\n* var out = uncapitalize( 'Presidential election' );\n* // returns 'presidential election'\n*\n* @example\n* var out = uncapitalize( 'JavaScript' );\n* // returns 'javaScript'\n*\n* @example\n* var out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures'\n*/\nfunction uncapitalize( str ) {\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\treturn str.charAt( 0 ).toLowerCase() + str.slice( 1 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = uncapitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Uncapitalize the first character of a string.\n*\n* @module @stdlib/string/base/uncapitalize\n*\n* @example\n* var uncapitalize = require( '@stdlib/string/base/uncapitalize' );\n*\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name camelcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/camelcase}\n*/\nsetReadOnly( ns, 'camelcase', require( './../../base/camelcase' ) );\n\n/**\n* @name capitalize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/capitalize}\n*/\nsetReadOnly( ns, 'capitalize', require( './../../base/capitalize' ) );\n\n/**\n* @name codePointAt\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/code-point-at}\n*/\nsetReadOnly( ns, 'codePointAt', require( './../../base/code-point-at' ) );\n\n/**\n* @name constantcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/constantcase}\n*/\nsetReadOnly( ns, 'constantcase', require( './../../base/constantcase' ) );\n\n/**\n* @name distances\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/string/base/distances}\n*/\nsetReadOnly( ns, 'distances', require( './../../base/distances' ) );\n\n/**\n* @name dotcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/dotcase}\n*/\nsetReadOnly( ns, 'dotcase', require( './../../base/dotcase' ) );\n\n/**\n* @name endsWith\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/ends-with}\n*/\nsetReadOnly( ns, 'endsWith', require( './../../base/ends-with' ) );\n\n/**\n* @name first\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first}\n*/\nsetReadOnly( ns, 'first', require( './../../base/first' ) );\n\n/**\n* @name firstCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first-code-point}\n*/\nsetReadOnly( ns, 'firstCodePoint', require( './../../base/first-code-point' ) );\n\n/**\n* @name firstGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first-grapheme-cluster}\n*/\nsetReadOnly( ns, 'firstGraphemeCluster', require( './../../base/first-grapheme-cluster' ) );\n\n/**\n* @name forEach\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each}\n*/\nsetReadOnly( ns, 'forEach', require( './../../base/for-each' ) );\n\n/**\n* @name forEachCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each-code-point}\n*/\nsetReadOnly( ns, 'forEachCodePoint', require( './../../base/for-each-code-point' ) );\n\n/**\n* @name forEachGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each-grapheme-cluster}\n*/\nsetReadOnly( ns, 'forEachGraphemeCluster', require( './../../base/for-each-grapheme-cluster' ) );\n\n/**\n* @name formatInterpolate\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/format-interpolate}\n*/\nsetReadOnly( ns, 'formatInterpolate', require( './../../base/format-interpolate' ) );\n\n/**\n* @name formatTokenize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/format-tokenize}\n*/\nsetReadOnly( ns, 'formatTokenize', require( './../../base/format-tokenize' ) );\n\n/**\n* @name headercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/headercase}\n*/\nsetReadOnly( ns, 'headercase', require( './../../base/headercase' ) );\n\n/**\n* @name invcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/invcase}\n*/\nsetReadOnly( ns, 'invcase', require( './../../base/invcase' ) );\n\n/**\n* @name kebabcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/kebabcase}\n*/\nsetReadOnly( ns, 'kebabcase', require( './../../base/kebabcase' ) );\n\n/**\n* @name lpad\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/left-pad}\n*/\nsetReadOnly( ns, 'lpad', require( './../../base/left-pad' ) );\n\n/**\n* @name ltrim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/left-trim}\n*/\nsetReadOnly( ns, 'ltrim', require( './../../base/left-trim' ) );\n\n/**\n* @name lowercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/lowercase}\n*/\nsetReadOnly( ns, 'lowercase', require( './../../base/lowercase' ) );\n\n/**\n* @name pascalcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/pascalcase}\n*/\nsetReadOnly( ns, 'pascalcase', require( './../../base/pascalcase' ) );\n\n/**\n* @name percentEncode\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/percent-encode}\n*/\nsetReadOnly( ns, 'percentEncode', require( './../../base/percent-encode' ) );\n\n/**\n* @name removeFirst\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first}\n*/\nsetReadOnly( ns, 'removeFirst', require( './../../base/remove-first' ) );\n\n/**\n* @name removeFirstCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first-code-point}\n*/\nsetReadOnly( ns, 'removeFirstCodePoint', require( './../../base/remove-first-code-point' ) );\n\n/**\n* @name removeFirstGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first-grapheme-cluster}\n*/\nsetReadOnly( ns, 'removeFirstGraphemeCluster', require( './../../base/remove-first-grapheme-cluster' ) );\n\n/**\n* @name repeat\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/repeat}\n*/\nsetReadOnly( ns, 'repeat', require( './../../base/repeat' ) );\n\n/**\n* @name replace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/replace}\n*/\nsetReadOnly( ns, 'replace', require( './../../base/replace' ) );\n\n/**\n* @name replaceBefore\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/replace-before}\n*/\nsetReadOnly( ns, 'replaceBefore', require( './../../base/replace-before' ) );\n\n/**\n* @name rpad\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/right-pad}\n*/\nsetReadOnly( ns, 'rpad', require( './../../base/right-pad' ) );\n\n/**\n* @name rtrim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/right-trim}\n*/\nsetReadOnly( ns, 'rtrim', require( './../../base/right-trim' ) );\n\n/**\n* @name snakecase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/snakecase}\n*/\nsetReadOnly( ns, 'snakecase', require( './../../base/snakecase' ) );\n\n/**\n* @name startcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/startcase}\n*/\nsetReadOnly( ns, 'startcase', require( './../../base/startcase' ) );\n\n/**\n* @name startsWith\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/starts-with}\n*/\nsetReadOnly( ns, 'startsWith', require( './../../base/starts-with' ) );\n\n/**\n* @name trim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/trim}\n*/\nsetReadOnly( ns, 'trim', require( './../../base/trim' ) );\n\n/**\n* @name uncapitalize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/uncapitalize}\n*/\nsetReadOnly( ns, 'uncapitalize', require( './../../base/uncapitalize' ) );\n\n/**\n* @name uppercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/uppercase}\n*/\nsetReadOnly( ns, 'uppercase', require( './../../base/uppercase' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/camelcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to camel case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} camel-cased string\n*\n* @example\n* var out = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* @example\n* var out = camelcase( 'IS_MOBILE' );\n* // returns 'isMobile'\n*\n* @example\n* var out = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*\n* @example\n* var out = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*/\nfunction camelcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = camelcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to camel case.\n*\n* @module @stdlib/string/camelcase\n*\n* @example\n* var camelcase = require( '@stdlib/string/camelcase' );\n*\n* var str = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* str = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*\n* str = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/capitalize' );\n\n\n// MAIN //\n\n/**\n* Capitalizes the first character in a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} capitalized string\n*\n* @example\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* @example\n* var out = capitalize( 'presidential election' );\n* // returns 'Presidential election'\n*\n* @example\n* var out = capitalize( 'javaScript' );\n* // returns 'JavaScript'\n*\n* @example\n* var out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures'\n*/\nfunction capitalize( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = capitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first character in a string.\n*\n* @module @stdlib/string/capitalize\n*\n* @example\n* var capitalize = require( '@stdlib/string/capitalize' );\n*\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/constantcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to constant case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} constant-cased string\n*\n* @example\n* var str = constantcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = constantcase( 'beep boop' );\n* // returns 'BEEP_BOOP'\n*\n* @example\n* var str = constantcase( 'isMobile' );\n* // returns 'IS_MOBILE'\n*\n* @example\n* var str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*/\nfunction constantcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = constantcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to constant case.\n*\n* @module @stdlib/string/constantcase\n*\n* @example\n* var constantcase = require( '@stdlib/string/constantcase' );\n*\n* var str = constantcase( 'aBcDeF' );\n* // returns 'ABCDEF'\n*\n* str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*\n* str = constantcase( 'I am a robot' );\n* // returns 'I_AM_A_ROBOT'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/dotcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to dot case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} dot-cased string\n*\n* @example\n* var out = dotcase( 'foo bar' );\n* // returns 'foo.bar'\n*\n* @example\n* var out = dotcase( 'IS_MOBILE' );\n* // returns 'is.mobile'\n*\n* @example\n* var out = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*\n* @example\n* var out = dotcase( '--foo-bar--' );\n* // returns 'foo.bar'\n*/\nfunction dotcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dotcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to dot case.\n*\n* @module @stdlib/string/dotcase\n*\n* @example\n* var dotcase = require( '@stdlib/string/dotcase' );\n*\n* var str = dotcase( 'foo bar' );\n* // returns 'foo.bar'\n*\n* str = dotcase( '--foo-bar--' );\n* // returns 'foo.bar'\n*\n* str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/ends-with' );\n\n\n// MAIN //\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [len=str.length] - substring length\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'Remember the story I used to tell you when you were a boy?', 'boy?' );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'Remember the story I used to tell you when you were a boy?', 'Boy?' );\n* // returns false\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be' );\n* // returns false\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( len ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', len ) );\n\t\t}\n\t} else {\n\t\tlen = str.length;\n\t}\n\treturn base( str, search, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @module @stdlib/string/ends-with\n*\n* @example\n* var endsWith = require( '@stdlib/string/ends-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n*\n* var bool = endsWith( str, 'air' );\n* // returns true\n*\n* bool = endsWith( str, 'fair' );\n* // returns false\n*\n* bool = endsWith( str, 'fair', 30 );\n* // returns true\n*\n* bool = endsWith( str, 'fair', -34 );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar firstCodeUnit = require( './../../base/first' );\nvar firstCodePoint = require( './../../base/first-code-point' );\nvar firstGraphemeCluster = require( './../../base/first-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': firstGraphemeCluster,\n\t'code_point': firstCodePoint,\n\t'code_unit': firstCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Returns the first character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of characters to return\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing' );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election' );\n* // returns 'p'\n*\n* @example\n* var out = first( 'javaScript' );\n* // returns 'j'\n*\n* @example\n* var out = first( 'Hidden Treasures' );\n* // returns 'H'\n*\n* @example\n* var out = first( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E'\n*\n* @example\n* var out = first( 'foo bar', 5 );\n* // returns 'foo b'\n*/\nfunction first( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first character(s) of a string.\n*\n* @module @stdlib/string/first\n*\n* @example\n* var first = require( '@stdlib/string/first' );\n*\n* var out = first( 'last man standing' );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures' );\n* // returns 'H';\n*\n* out = first( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar forEachCodeUnit = require( './../../base/for-each' );\nvar forEachCodePoint = require( './../../base/for-each-code-point' );\nvar forEachGraphemeCluster = require( './../../base/for-each-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': forEachGraphemeCluster,\n\t'code_point': forEachCodePoint,\n\t'code_unit': forEachCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Invokes a function for each character in a string.\n*\n* @param {string} str - input string\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" over which to iterate (must be either `grapheme`, `code_point`, or `code_unit`)\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} callback argument must be a function\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, options, clbk ) {\n\tvar thisArg;\n\tvar nargs;\n\tvar opts;\n\tvar cb;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 2 ) {\n\t\tcb = options;\n\t\toptions = null;\n\t} else if ( nargs === 3 ) {\n\t\tif ( isPlainObject( options ) ) {\n\t\t\tcb = clbk;\n\t\t} else {\n\t\t\tcb = options;\n\t\t\toptions = null;\n\t\t\tthisArg = clbk;\n\t\t}\n\t} else { // nargs === 4\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t\tcb = clbk;\n\t\tthisArg = arguments[ 3 ];\n\t}\n\tif ( !isFunction( cb ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', cb ) );\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\tFCNS[ opts.mode ]( str, cb, thisArg );\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each character in a string.\n*\n* @module @stdlib/string/for-each\n*\n* @example\n* var forEach = require( '@stdlib/string/for-each' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar format = require( './../../format' );\nvar UNICODE_MAX = require( '@stdlib/constants/unicode/max' );\nvar UNICODE_MAX_BMP = require( '@stdlib/constants/unicode/max-bmp' );\n\n\n// VARIABLES //\n\nvar fromCharCode = String.fromCharCode;\n\n// Factor to rescale a code point from a supplementary plane:\nvar Ox10000 = 0x10000|0; // 65536\n\n// Factor added to obtain a high surrogate:\nvar OxD800 = 0xD800|0; // 55296\n\n// Factor added to obtain a low surrogate:\nvar OxDC00 = 0xDC00|0; // 56320\n\n// 10-bit mask: 2^10-1 = 1023 => 0x3ff => 00000000 00000000 00000011 11111111\nvar Ox3FF = 1023|0;\n\n\n// MAIN //\n\n/**\n* Creates a string from a sequence of Unicode code points.\n*\n* ## Notes\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words: a high and a low surrogate.\n*\n* @param {...NonNegativeInteger} args - sequence of code points\n* @throws {Error} must provide either an array-like object of code points or one or more code points as separate arguments\n* @throws {TypeError} a code point must be a nonnegative integer\n* @throws {RangeError} must provide a valid Unicode code point\n* @returns {string} created string\n*\n* @example\n* var str = fromCodePoint( 9731 );\n* // returns '\u2603'\n*/\nfunction fromCodePoint( args ) {\n\tvar len;\n\tvar str;\n\tvar arr;\n\tvar low;\n\tvar hi;\n\tvar pt;\n\tvar i;\n\n\tlen = arguments.length;\n\tif ( len === 1 && isCollection( args ) ) {\n\t\tarr = arguments[ 0 ];\n\t\tlen = arr.length;\n\t} else {\n\t\tarr = [];\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tarr.push( arguments[ i ] );\n\t\t}\n\t}\n\tif ( len === 0 ) {\n\t\tthrow new Error( 'insufficient arguments. Must provide either an array of code points or one or more code points as separate arguments.' );\n\t}\n\tstr = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tpt = arr[ i ];\n\t\tif ( !isNonNegativeInteger( pt ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide valid code points (i.e., nonnegative integers). Value: `%s`.', pt ) );\n\t\t}\n\t\tif ( pt > UNICODE_MAX ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.', UNICODE_MAX, pt ) );\n\t\t}\n\t\tif ( pt <= UNICODE_MAX_BMP ) {\n\t\t\tstr += fromCharCode( pt );\n\t\t} else {\n\t\t\t// Code point from a supplementary plane. Split into two 16-bit code units (surrogate pair).\n\t\t\tpt -= Ox10000;\n\t\t\thi = (pt >> 10) + OxD800;\n\t\t\tlow = (pt & Ox3FF) + OxDC00;\n\t\t\tstr += fromCharCode( hi, low );\n\t\t}\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromCodePoint;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a string from a sequence of Unicode code points.\n*\n* @module @stdlib/string/from-code-point\n*\n* @example\n* var fromCodePoint = require( '@stdlib/string/from-code-point' );\n*\n* var str = fromCodePoint( 9731 );\n* // returns '\u2603'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/headercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to HTTP header case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} HTTP header-cased string\n*\n* @example\n* var out = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* @example\n* var out = headercase( 'IS_MOBILE' );\n* // returns 'Is-Mobile'\n*\n* @example\n* var out = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*\n* @example\n* var out = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*/\nfunction headercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = headercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to HTTP header case.\n*\n* @module @stdlib/string/headercase\n*\n* @example\n* var headercase = require( '@stdlib/string/headercase' );\n*\n* var str = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/kebabcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string/kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string/kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar base = require( './../../base/left-pad' );\n\n\n// MAIN //\n\n/**\n* Left pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} [pad=' '] - string used to pad\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @throws {RangeError} padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = lpad( 'a', 5 );\n* // returns ' a'\n*\n* @example\n* var str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* @example\n* var str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\nfunction lpad( str, len, pad ) {\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', p ) );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid argument. Third argument must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\treturn base( str, len, p );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Left pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/left-pad\n*\n* @example\n* var lpad = require( '@stdlib/string/left-pad' );\n*\n* var str = lpad( 'a', 5 );\n* // returns ' a'\n*\n* str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/left-trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning of a string.\n*\n* @module @stdlib/string/left-trim\n*\n* @example\n* var ltrim = require( '@stdlib/string/left-trim' );\n*\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Splits a string by its grapheme cluster breaks.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {StringArray} array of grapheme clusters\n*\n* @example\n* var out = splitGraphemeClusters( 'caf\u00E9' );\n* // returns [ 'c', 'a', 'f', '\u00E9' ]\n*\n* @example\n* var out = splitGraphemeClusters( '\uD83C\uDF55\uD83C\uDF55\uD83C\uDF55' );\n* // returns [ '\uD83C\uDF55', '\uD83C\uDF55', '\uD83C\uDF55' ]\n*/\nfunction splitGraphemeClusters( str ) {\n\tvar idx;\n\tvar brk;\n\tvar out;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tidx = 0;\n\tout = [];\n\tif ( str.length === 0 ) {\n\t\treturn out;\n\t}\n\tbrk = nextGraphemeClusterBreak( str, idx );\n\twhile ( brk !== -1 ) {\n\t\tout.push( str.substring( idx, brk ) );\n\t\tidx = brk;\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t}\n\tout.push( str.substring( idx ) );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = splitGraphemeClusters;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split a string by its grapheme cluster breaks.\n*\n* @module @stdlib/string/split-grapheme-clusters\n*\n* @example\n* var splitGraphemeClusters = require( '@stdlib/string/split-grapheme-clusters' );\n*\n* var out = splitGraphemeClusters( 'caf\u00E9' );\n* // returns [ 'c', 'a', 'f', '\u00E9' ]\n*\n* out = splitGraphemeClusters( '\uD83C\uDF55\uD83C\uDF55\uD83C\uDF55' );\n* // returns [ '\uD83C\uDF55', '\uD83C\uDF55', '\uD83C\uDF55' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar splitGraphemeClusters = require( './../../split-grapheme-clusters' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar replace = require( './../../replace' );\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar WHITESPACE_CHARS = '\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\n\n\n// MAIN //\n\n/**\n* Trims `n` characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of characters to trim\n* @param {(string|StringArray)} [chars] - characters to trim (defaults to whitespace characters)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string or an array of strings\n* @returns {string} trimmed string\n*\n* @example\n* var str = ' abc ';\n* var out = ltrimN( str, 2 );\n* // returns ' abc '\n*\n* @example\n* var str = ' abc ';\n* var out = ltrimN( str, str.length );\n* // returns 'abc '\n*\n* @example\n* var str = '~~abc!~~';\n* var out = ltrimN( str, str.length, [ '~', '!' ] );\n* // returns 'abc!~~'\n*\n* @example\n* var str = '\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8';\n* var out = ltrimN( str, str.length, '\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16' );\n* // returns ''\n*/\nfunction ltrimN( str, n, chars ) {\n\tvar nElems;\n\tvar reStr;\n\tvar isStr;\n\tvar RE;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tisStr = isString( chars );\n\t\tif ( !isStr && !isStringArray( chars ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string or an array of strings. Value: `%s`.', chars ) );\n\t\t}\n\t\tif ( isStr ) {\n\t\t\tchars = splitGraphemeClusters( chars );\n\t\t}\n\t\tnElems = chars.length - 1;\n\t\treStr = '';\n\t\tfor ( i = 0; i < nElems; i++ ) {\n\t\t\treStr += rescape( chars[ i ] );\n\t\t\treStr += '|';\n\t\t}\n\t\treStr += rescape( chars[ nElems ] );\n\n\t\t// Case: Trim a specific set of characters from the beginning of a string..\n\t\tRE = new RegExp( '^(?:' + reStr + '){0,'+n+'}' );\n\t} else {\n\t\t// Case: Trim `n` whitespace characters from the beginning of a string...\n\t\tRE = new RegExp( '^[' + WHITESPACE_CHARS + ']{0,'+n+'}' );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrimN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim `n` characters from the beginning of a string.\n*\n* @module @stdlib/string/left-trim-n\n*\n* @example\n* var ltrimN = require( '@stdlib/string/left-trim-n' );\n*\n* var str = 'foo ';\n* var out = ltrimN( str, str.length );\n* // returns 'foo '\n*\n* str = '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36';\n* out = ltrimN( str, 4, [ '\uD83D\uDC36', ' ' ] );\n* // returns 'Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/lowercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string/lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string/lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the number of grapheme clusters in a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {NonNegativeInteger} number of grapheme clusters\n*\n* @example\n* var out = numGraphemeClusters( 'last man standing' );\n* // returns 17\n*\n* @example\n* var out = numGraphemeClusters( 'presidential election' );\n* // returns 21\n*\n* @example\n* var out = numGraphemeClusters( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926' );\n* // returns 5\n*\n* @example\n* var out = numGraphemeClusters( '\uD83C\uDF37' );\n* // returns 1\n*/\nfunction numGraphemeClusters( str ) {\n\tvar count;\n\tvar idx;\n\tvar brk;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tcount = 0;\n\tidx = 0;\n\n\tbrk = nextGraphemeClusterBreak( str, idx );\n\twhile ( brk !== -1 ) {\n\t\tcount += 1;\n\t\tidx = brk;\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t}\n\tif ( idx < str.length ) {\n\t\tcount += 1;\n\t}\n\treturn count;\n}\n\n\n// EXPORTS //\n\nmodule.exports = numGraphemeClusters;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the number of grapheme clusters in a string.\n*\n* @module @stdlib/string/num-grapheme-clusters\n*\n* @example\n* var numGraphemeClusters = require( '@stdlib/string/num-grapheme-clusters' );\n*\n* var out = numGraphemeClusters( 'last man standing' );\n* // returns 17\n*\n* out = numGraphemeClusters( '\uD83C\uDF37' );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t{ \"VAL\": 1e0, \"EN\": \"zero\", \"DE\": \"null\" },\n\t{ \"VAL\": 1e1, \"EN\": \"ten\", \"DE\": \"zehn\" },\n\t{ \"VAL\": 1e2, \"EN\": \"hundred\", \"DE\": \"hundert\" },\n\t{ \"VAL\": 1e3, \"EN\": \"thousand\", \"DE\": \"tausend\" },\n\t{ \"VAL\": 1e6, \"EN\": \"million\", \"DE\": \"Million\" },\n\t{ \"VAL\": 1e9, \"EN\": \"billion\", \"DE\": \"Milliarde\" },\n\t{ \"VAL\": 1e12, \"EN\": \"trillion\", \"DE\": \"Billion\" },\n\t{ \"VAL\": 1e15, \"EN\": \"quadrillion\", \"DE\": \"Billiarde\" },\n\t{ \"VAL\": 1e18, \"EN\": \"quintillion\", \"DE\": \"Trillion\" },\n\t{ \"VAL\": 1e21, \"EN\": \"sextillion\", \"DE\": \"Trilliarde\" },\n\t{ \"VAL\": 1e24, \"EN\": \"septillion\", \"DE\": \"Quadrillion\" },\n\t{ \"VAL\": 1e27, \"EN\": \"octillion\", \"DE\": \"Quadrilliarde\" },\n\t{ \"VAL\": 1e30, \"EN\": \"nonillion\", \"DE\": \"Quintillion\" },\n\t{ \"VAL\": 1e33, \"EN\": \"decillion\", \"DE\": \"Quintilliarde\" },\n\t{ \"VAL\": 1e36, \"EN\": \"undecillion\", \"DE\": \"Sextillion\" },\n\t{ \"VAL\": 1e39, \"EN\": \"duodecillion\", \"DE\": \"Sextilliarde\" },\n\t{ \"VAL\": 1e42, \"EN\": \"tredecillion\", \"DE\": \"Septillion\" },\n\t{ \"VAL\": 1e45, \"EN\": \"quattuordecillion\", \"DE\": \"Septilliarde\" },\n\t{ \"VAL\": 1e48, \"EN\": \"quindecillion\", \"DE\": \"Octillion\" },\n\t{ \"VAL\": 1e51, \"EN\": \"sedecillion\", \"DE\": \"Octilliarde\" },\n\t{ \"VAL\": 1e54, \"EN\": \"septendecillion\", \"DE\": \"Nonillion\" },\n\t{ \"VAL\": 1e57, \"EN\": \"octodecillion\", \"DE\": \"Nonilliarde\" },\n\t{ \"VAL\": 1e60, \"EN\": \"novendecillion\", \"DE\": \"Decillion\" },\n\t{ \"VAL\": 1e63, \"EN\": \"vigintillion\", \"DE\": \"Decilliarde\" },\n\t{ \"VAL\": 1e66, \"EN\": \"unvigintillion\", \"DE\": \"Undecillion\" },\n\t{ \"VAL\": 1e69, \"EN\": \"duovigintillion\", \"DE\": \"Undecilliarde\" },\n\t{ \"VAL\": 1e72, \"EN\": \"tresvigintillion\", \"DE\": \"Duodecillion\" },\n\t{ \"VAL\": 1e75, \"EN\": \"quattuorvigintillion\", \"DE\": \"Duodecilliarde\" },\n\t{ \"VAL\": 1e78, \"EN\": \"quinquavigintillion\", \"DE\": \"Tredecillion\" },\n\t{ \"VAL\": 1e81, \"EN\": \"sesvigintillion\", \"DE\": \"Tredecilliarde\" },\n\t{ \"VAL\": 1e84, \"EN\": \"septemvigintillion\", \"DE\": \"Quattuordecillion\" },\n\t{ \"VAL\": 1e87, \"EN\": \"octovigintillion\", \"DE\": \"Quattuordecilliarde\" },\n\t{ \"VAL\": 1e90, \"EN\": \"novemvigintillion\", \"DE\": \"Quindecillion\" },\n\t{ \"VAL\": 1e93, \"EN\": \"trigintillion\", \"DE\": \"Quindecilliarde\" },\n\t{ \"VAL\": 1e96, \"EN\": \"untrigintillion\", \"DE\": \"Sedecillion\" },\n\t{ \"VAL\": 1e99, \"EN\": \"duotrigintillion\", \"DE\": \"Sedecilliarde\" },\n\t{ \"VAL\": 1e102, \"EN\": \"trestrigintillion\", \"DE\": \"Septendecillion\" },\n\t{ \"VAL\": 1e105, \"EN\": \"quattuortrigintillion\", \"DE\": \"Septendecilliarde\" },\n\t{ \"VAL\": 1e108, \"EN\": \"quinquatrigintillion\", \"DE\": \"Octodecillion\" },\n\t{ \"VAL\": 1e111, \"EN\": \"sestrigintillion\", \"DE\": \"Octodecilliarde\" },\n\t{ \"VAL\": 1e114, \"EN\": \"septentrigintillion\", \"DE\": \"Novendecillion\" },\n\t{ \"VAL\": 1e117, \"EN\": \"octotrigintillion\", \"DE\": \"Novendecilliarde\" },\n\t{ \"VAL\": 1e120, \"EN\": \"noventrigintillion\", \"DE\": \"Vigintillion\" },\n\t{ \"VAL\": 1e123, \"EN\": \"quadragintillion\", \"DE\": \"Vigintilliarde\" },\n\t{ \"VAL\": 1e153, \"EN\": \"quinquagintillion\", \"DE\": \"Quinvigintilliarde\" },\n\t{ \"VAL\": 1e183, \"EN\": \"sexagintillion\", \"DE\": \"Trigintilliarde\" },\n\t{ \"VAL\": 1e213, \"EN\": \"septuagintillion\", \"DE\": \"Quintrigintilliarde\" },\n\t{ \"VAL\": 1e243, \"EN\": \"octogintillion\", \"DE\": \"Quadragintilliarde\" },\n\t{ \"VAL\": 1e273, \"EN\": \"nonagintillion\", \"DE\": \"Quin\u00ADquadra\u00ADgint\u00ADilliarde\" },\n\t{ \"VAL\": 1e303, \"EN\": \"centillion\", \"DE\": \"Quinquagintilliarde\" },\n\t{ \"VAL\": 1e306, \"EN\": \"uncentillion\", \"DE\": \"Unquinquagintillione\" }\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar endsWith = require( './../../base/ends-with' );\nvar UNITS = require( './units.json' );\n\n\n// VARIABLES //\n\nvar ONES = [ 'null', 'eins', 'zwei', 'drei', 'vier', 'f\u00FCnf', 'sechs', 'sieben', 'acht', 'neun', 'zehn', 'elf', 'zw\u00F6lf', 'dreizehn', 'vierzehn', 'f\u00FCnfzehn', 'sechzehn', 'siebzehn', 'achtzehn', 'neunzehn' ];\nvar TENS = [ 'null', 'zehn', 'zwanzig', 'drei\u00DFig', 'vierzig', 'f\u00FCnfzig', 'sechzig', 'siebzig', 'achtzig', 'neunzig' ];\n\n\n// FUNCTIONS //\n\n/**\n* Pluralizes a word by adding a 'n' or 'en' suffix.\n*\n* @private\n* @param {string} word - word to pluralize\n* @returns {string} pluralized word\n*/\nfunction pluralize( word ) {\n\tif ( endsWith( word, 'e' ) ) {\n\t\treturn word + 'n';\n\t}\n\treturn word + 'en';\n}\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation in German.\n*\n* @private\n* @param {number} num - number to convert\n* @param {string} out - output string\n* @returns {string} word representation\n*\n* @example\n* var words = int2wordsDE( 1243, '' );\n* // returns 'eintausendzweihundertdreiundvierzig'\n*\n* @example\n* var words = int2wordsDE( 387, '' );\n* // returns 'dreihundertsiebenundachtzig'\n*\n* @example\n* var words = int2wordsDE( 100, '' );\n* // returns 'einhundert'\n*\n* @example\n* var words = int2wordsDE( 1421, '' );\n* // returns 'eintausendvierhunderteinundzwanzig'\n*\n* @example\n* var words = int2wordsDE( 100381, '' );\n* // returns 'einhunderttausenddreihunderteinundachtzig'\n*\n* @example\n* var words = int2wordsDE( -13, '' );\n* // returns 'minus dreizehn'\n*/\nfunction int2wordsDE( num, out ) {\n\tvar word;\n\tvar rem;\n\tvar i;\n\tif ( num === 0 ) {\n\t\t// Case: We have reached the end of the number and the number is zero.\n\t\treturn out || 'null';\n\t}\n\tif ( num < 0 ) {\n\t\tout += 'minus ';\n\t\tnum *= -1;\n\t}\n\tif ( num < 20 ) {\n\t\trem = 0;\n\t\tif ( num === 1 && out.length === 0 ) {\n\t\t\tword = 'ein';\n\t\t} else {\n\t\t\tword = ONES[ num ];\n\t\t}\n\t}\n\telse if ( num < 100 ) {\n\t\trem = num % 10;\n\t\tword = TENS[ floor( num / 10 ) ];\n\t\tif ( rem ) {\n\t\t\tword = ( ( rem === 1 ) ? 'ein' : ONES[ rem ] ) + 'und' + word;\n\t\t\trem = 0;\n\t\t}\n\t}\n\telse if ( num < 1e3 ) {\n\t\trem = num % 100;\n\t\tword = int2wordsDE( floor( num / 100 ), '' ) + 'hundert';\n\t}\n\telse if ( num < 1e6 ) {\n\t\trem = num % 1e3;\n\t\tword = int2wordsDE( floor( num / 1e3 ), '' ) + 'tausend';\n\t}\n\telse {\n\t\tfor ( i = 5; i < UNITS.length; i++ ) {\n\t\t\tif ( num < UNITS[ i ].VAL ) {\n\t\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\t\tif ( floor( num / UNITS[ i-1 ].VAL ) === 1 ) {\n\t\t\t\t\tword = 'eine ' + UNITS[ i-1 ].DE;\n\t\t\t\t} else {\n\t\t\t\t\tword = int2wordsDE( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + pluralize( UNITS[ i-1 ].DE );\n\t\t\t\t}\n\t\t\t\tif ( rem ) {\n\t\t\t\t\tword += ' ';\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tout += word;\n\treturn int2wordsDE( rem, out );\n}\n\n\n// EXPORTS //\n\nmodule.exports = int2wordsDE;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar UNITS = require( './units.json' );\n\n\n// VARIABLES //\n\nvar ONES = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ];\nvar TENS = [ 'zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ];\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation in English.\n*\n* @private\n* @param {number} num - number to convert\n* @param {string} out - output string\n* @returns {string} word representation\n*\n* @example\n* var words = int2wordsEN( 1234, '' );\n* // returns 'one thousand two hundred thirty-four'\n*\n* @example\n* var words = int2wordsEN( -129, '' );\n* // returns 'minus one hundred twenty-nine'\n*\n* @example\n* var words = int2wordsEN( 0, '' );\n* // returns 'zero'\n*/\nfunction int2wordsEN( num, out ) {\n\tvar word;\n\tvar rem;\n\tvar i;\n\tif ( num === 0 ) {\n\t\t// Case: We have reached the end of the number and the number is zero.\n\t\treturn out || 'zero';\n\t}\n\tif ( num < 0 ) {\n\t\tout += 'minus';\n\t\tnum *= -1;\n\t}\n\tif ( num < 20 ) {\n\t\trem = 0;\n\t\tword = ONES[ num ];\n\t}\n\telse if ( num < 100 ) {\n\t\trem = num % 10;\n\t\tword = TENS[ floor( num / 10 ) ];\n\t\tif ( rem > 0 ) {\n\t\t\tword += '-' + ONES[ rem ];\n\t\t\trem = 0;\n\t\t}\n\t}\n\telse {\n\t\tfor ( i = 3; i < UNITS.length - 1; i++ ) {\n\t\t\tif ( num < UNITS[ i ].VAL ) {\n\t\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\t\tword = int2wordsEN( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + UNITS[ i-1 ].EN;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( i === UNITS.length - 1 ) {\n\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\tword = int2wordsEN( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + UNITS[ i-1 ].EN;\n\t\t}\n\t}\n\tif ( out.length > 0 ) {\n\t\tout += ' ';\n\t}\n\tout += word;\n\treturn int2wordsEN( rem, out );\n}\n\n\n// EXPORTS //\n\nmodule.exports = int2wordsEN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar indexOf = require( '@stdlib/utils/index-of' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar LANGUAGE_CODES = [ 'en', 'de' ];\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {string} [options.lang] - language code\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'lang': 'es'\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'lang' ) ) {\n\t\topts.lang = options.lang;\n\t\tif ( indexOf( LANGUAGE_CODES, opts.lang ) === -1 ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'lang', LANGUAGE_CODES.join( '\", \"' ), opts.lang ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Processes a string of decimal numbers and applies a function mapping decimal numbers to words to each character.\n*\n* @private\n* @param {string} x - string of decimal numbers\n* @param {Function} fcn - function mapping decimal numbers to words\n* @returns {string} string of words\n*/\nfunction decimals( x, fcn ) {\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tlen = x.length;\n\tout = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout += fcn( x[ i ], '' );\n\t\tif ( i < len-1 ) {\n\t\t\tout += ' ';\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = decimals;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isfinite = require( '@stdlib/math/base/assert/is-finite' );\nvar format = require( './../../format' );\nvar int2wordsDE = require( './int2words_de.js' );\nvar int2wordsEN = require( './int2words_en.js' );\nvar validate = require( './validate.js' );\nvar decimals = require( './decimals.js' );\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation.\n*\n* @param {number} num - number to convert\n* @param {Object} [options] - options\n* @param {string} [options.lang='en'] - language code\n* @throws {TypeError} must provide valid options\n* @returns {string} word representation of number\n*\n* @example\n* var out = num2words( 12 );\n* // returns 'twelve'\n*\n* @example\n* var out = num2words( 21.8 );\n* // returns 'twenty-one point eight'\n*\n* @example\n* var out = num2words( 1234 );\n* // returns 'one thousand two hundred thirty-four'\n*\n* @example\n* var out = num2words( 100381 );\n* // returns 'one hundred thousand three hundred eighty-one'\n*/\nfunction num2words( num, options ) {\n\tvar parts;\n\tvar opts;\n\tvar err;\n\n\tif ( !isNumber( num ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a number. Value: `%s`.', num ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( isInteger( num ) ) {\n\t\tswitch ( opts.lang ) {\n\t\tcase 'de':\n\t\t\treturn int2wordsDE( num, '' );\n\t\tcase 'en':\n\t\tdefault:\n\t\t\treturn int2wordsEN( num, '' );\n\t\t}\n\t}\n\tif ( !isfinite( num ) ) {\n\t\tswitch ( opts.lang ) {\n\t\tcase 'de':\n\t\t\treturn ( num < 0 ) ? 'minus unendlich' : 'unendlich';\n\t\tcase 'en':\n\t\tdefault:\n\t\t\treturn ( num < 0 ) ? 'negative infinity' : 'infinity';\n\t\t}\n\t}\n\tparts = num.toString().split( '.' );\n\tswitch ( opts.lang ) {\n\tcase 'de':\n\t\treturn int2wordsDE( parts[ 0 ], '' ) + ' Komma ' + decimals( parts[ 1 ], int2wordsDE );\n\tcase 'en':\n\tdefault:\n\t\treturn int2wordsEN( parts[ 0 ], '' ) + ' point ' + decimals( parts[ 1 ], int2wordsEN );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = num2words;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a number to a word representation.\n*\n* @module @stdlib/string/num2words\n*\n* @example\n* var num2words = require( '@stdlib/string/num2words' );\n*\n* var out = num2words( 29 );\n* // returns 'twenty-nine'\n*\n* out = num2words( 13072 );\n* // returns 'thirteen thousand seventy-two'\n*\n* out = num2words( 183, { 'lang': 'de' } );\n* // returns 'einhundertdreiundachtzig'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/repeat' );\n\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {RangeError} output string length must not exceed maximum allowed string length\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\treturn base( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Repeat a string a specified number of times and return the concatenated result.\n*\n* @module @stdlib/string/repeat\n*\n* @example\n* var replace = require( '@stdlib/string/repeat' );\n*\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* str = repeat( '', 100 );\n* // returns ''\n*\n* str = repeat( 'beep', 0 );\n* // returns ''\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar base = require( './../../base/right-pad' );\n\n\n// MAIN //\n\n/**\n* Right pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} [pad=' '] - string used to pad\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @throws {RangeError} padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = rpad( 'a', 5 );\n* // returns 'a '\n*\n* @example\n* var str = rpad( 'beep', 10, 'p' );\n* // returns 'beeppppppp'\n*\n* @example\n* var str = rpad( 'beep', 12, 'boop' );\n* // returns 'beepboopboop'\n*/\nfunction rpad( str, len, pad ) {\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', p ) );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid argument. Pad string must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\treturn base( str, len, p );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Right pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/right-pad\n*\n* @example\n* var rpad = require( '@stdlib/string/right-pad' );\n*\n* var str = rpad( 'a', 5 );\n* // returns 'a '\n*\n* str = rpad( 'beep', 10, 'p' );\n* // returns 'beeppppppp'\n*\n* str = rpad( 'beep', 12, 'boop' );\n* // returns 'beepboopboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {string} [options.lpad] - string used to left pad\n* @param {string} [options.rpad] - string used to right pad\n* @param {boolean} [options.centerRight] - boolean indicating whether to center right in the event of a tie\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'lpad': 'a',\n* 'rpad': 'b'\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'lpad' ) ) {\n\t\topts.lpad = options.lpad;\n\t\tif ( !isString( opts.lpad ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'lpad', opts.lpad ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'rpad' ) ) {\n\t\topts.rpad = options.rpad;\n\t\tif ( !isString( opts.rpad ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'rpad', opts.rpad ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'centerRight' ) ) {\n\t\topts.centerRight = options.centerRight;\n\t\tif ( !isBoolean( opts.centerRight ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a boolean. Option: `%s`.', 'centerRight', opts.centerRight ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar repeat = require( './../../repeat' );\nvar format = require( './../../format' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\nvar lpad = require( './../../left-pad' );\nvar rpad = require( './../../right-pad' );\nvar abs = require( '@stdlib/math/base/special/abs' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar validate = require( './validate.js' );\n\n\n// MAIN //\n\n/**\n* Pads a string such that the padded string has a length of `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - string length\n* @param {Options} [options] - function options\n* @param {string} [options.lpad=''] - string used to left pad\n* @param {string} [options.rpad=' '] - string used to right pad\n* @param {boolean} [options.centerRight=false] - boolean indicating whether to center right in the event of a tie\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {RangeError} at least one padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = pad( 'a', 5 );\n* // returns 'a '\n*\n* @example\n* var str = pad( 'a', 10, {\n* 'lpad': 'b'\n* });\n* // returns 'bbbbbbbbba'\n*\n* @example\n* var str = pad( 'a', 12, {\n* 'rpad': 'b'\n* });\n* // returns 'abbbbbbbbbbb'\n*\n* @example\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c'\n* };\n* var str = pad( 'b', 10, opts );\n* // returns 'aaaabccccc'\n*\n* @example\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c',\n* 'centerRight': true\n* };\n* var str = pad( 'b', 10, opts );\n* // returns 'aaaaabcccc'\n*/\nfunction pad( str, len, options ) {\n\tvar nright;\n\tvar nleft;\n\tvar isodd;\n\tvar right;\n\tvar left;\n\tvar opts;\n\tvar err;\n\tvar tmp;\n\tvar n;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 2 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( opts.lpad && opts.rpad ) {\n\t\tn = ( len-str.length ) / 2;\n\t\tif ( n === 0 ) {\n\t\t\treturn str;\n\t\t}\n\t\ttmp = floor( n );\n\t\tif ( tmp !== n ) {\n\t\t\tisodd = true;\n\t\t}\n\t\tif ( n < 0 ) {\n\t\t\tn = floor( abs( n ) );\n\t\t\tnleft = n;\n\t\t\tnright = str.length - n;\n\n\t\t\t// If |len-str.length| is an odd number, take away an additional character from one side...\n\t\t\tif ( isodd ) {\n\t\t\t\tif ( opts.centerRight ) {\n\t\t\t\t\tnright -= 1;\n\t\t\t\t} else {\n\t\t\t\t\tnleft += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn str.substring( nleft, nright );\n\t\t}\n\t\tnleft = ceil( n / opts.lpad.length );\n\t\tleft = repeat( opts.lpad, nleft );\n\n\t\tnright = ceil( n / opts.rpad.length );\n\t\tright = repeat( opts.rpad, nright );\n\n\t\t// If (len-str.length) is an odd number, give one side one extra character...\n\t\tn = tmp;\n\t\tnleft = n;\n\t\tnright = n;\n\t\tif ( isodd ) {\n\t\t\tif ( opts.centerRight ) {\n\t\t\t\tnleft += 1;\n\t\t\t} else {\n\t\t\t\tnright += 1;\n\t\t\t}\n\t\t}\n\t\tleft = left.substring( 0, nleft );\n\t\tright = right.substring( 0, nright );\n\t\treturn left + str + right;\n\t}\n\tif ( opts.lpad ) {\n\t\ttmp = lpad( str, len, opts.lpad );\n\t\treturn tmp.substring( tmp.length-len );\n\t}\n\tif ( opts.rpad ) {\n\t\treturn ( rpad( str, len, opts.rpad ) ).substring( 0, len );\n\t}\n\tif ( opts.rpad === void 0 ) {\n\t\treturn ( rpad( str, len, ' ' ) ).substring( 0, len );\n\t}\n\tthrow new RangeError( format( 'invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.', opts.lpad, opts.rpad ) );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Pad a string.\n*\n* @module @stdlib/string/pad\n*\n* @example\n* var pad = require( '@stdlib/string/pad' );\n*\n* var str = pad( 'a', 5 );\n* // returns 'a '\n*\n* str = pad( 'a', 10, {\n* 'lpad': 'b'\n* });\n* // returns 'bbbbbbbbba'\n*\n* str = pad( 'a', 12, {\n* 'rpad': 'b'\n* });\n* // returns 'abbbbbbbbbbb'\n*\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c'\n* };\n* str = pad( 'b', 10, opts );\n* // returns 'aaaabccccc'\n*\n* opts = {\n* 'lpad': 'a',\n* 'rpad': 'c',\n* 'centerRight': true\n* };\n* str = pad( 'b', 10, opts );\n* // returns 'aaaaabcccc'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/pascalcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to Pascal case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} Pascal-cased string\n*\n* @example\n* var out = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* @example\n* var out = pascalcase( 'IS_MOBILE' );\n* // returns 'IsMobile'\n*\n* @example\n* var out = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*\n* @example\n* var out = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*/\nfunction pascalcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pascalcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to Pascal case.\n*\n* @module @stdlib/string/pascalcase\n*\n* @example\n* var pascalcase = require( '@stdlib/string/pascalcase' );\n*\n* var str = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* str = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*\n* str = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/percent-encode' );\n\n\n// MAIN //\n\n/**\n* Percent-encodes a UTF-16 encoded string according to [RFC 3986][1].\n*\n* [1]: https://tools.ietf.org/html/rfc3986#section-2.1\n*\n* @param {string} str - string to percent-encode\n* @throws {TypeError} must provide a string\n* @returns {string} percent-encoded string\n*\n* @example\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\nfunction percentEncode( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = percentEncode;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Percent-encode a UTF-16 encoded string according to RFC 3986.\n*\n* @module @stdlib/string/percent-encode\n*\n* @example\n* var percentEncode = require( '@stdlib/string/percent-encode' );\n*\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' );\nvar codePointAt = require( './../../code-point-at' );\nvar hasUTF16SurrogatePairAt = require( '@stdlib/assert/has-utf16-surrogate-pair-at' );\nvar grapheme = require( './../../tools/grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar breakType = grapheme.breakType;\nvar breakProperty = grapheme.breakProperty;\nvar emojiProperty = grapheme.emojiProperty;\n\n\n// MAIN //\n\n/**\n* Returns the previous extended grapheme cluster break in a string before a specified position.\n*\n* @param {string} str - input string\n* @param {integer} [fromIndex=str.length-1] - position\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @returns {NonNegativeInteger} previous grapheme break position\n*\n* @example\n* var out = prevGraphemeClusterBreak( 'last man standing', 4 );\n* // returns 3\n*\n* @example\n* var out = prevGraphemeClusterBreak( 'presidential election', 8 );\n* // returns 7\n*\n* @example\n* var out = prevGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 0\n*\n* @example\n* var out = prevGraphemeClusterBreak( '\uD83C\uDF37', 1 );\n* // returns -1\n*/\nfunction prevGraphemeClusterBreak( str, fromIndex ) {\n\tvar breaks;\n\tvar emoji;\n\tvar ans;\n\tvar len;\n\tvar idx;\n\tvar cp;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tlen = str.length;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = fromIndex;\n\t} else {\n\t\tidx = len - 1;\n\t}\n\tif ( len === 0 || idx <= 0 ) {\n\t\treturn -1;\n\t}\n\tif ( idx >= len ) {\n\t\tidx = len - 1;\n\t}\n\n\t// Initialize caches for storing grapheme break and emoji properties:\n\tbreaks = [];\n\temoji = [];\n\n\t// Get the code point for the starting index:\n\tcp = codePointAt( str, 0 );\n\n\t// Get the corresponding grapheme break and emoji properties:\n\tbreaks.push( breakProperty( cp ) );\n\temoji.push( emojiProperty( cp ) );\n\n\tans = -1;\n\tfor ( i = 1; i <= idx; i++ ) {\n\t\t// If the current character is part of a surrogate pair, move along...\n\t\tif ( hasUTF16SurrogatePairAt( str, i-1 ) ) {\n\t\t\tans = i-2;\n\t\t\tbreaks.length = 0;\n\t\t\temoji.length = 0;\n\t\t\tcontinue;\n\t\t}\n\t\tcp = codePointAt( str, i );\n\n\t\t// Get the corresponding grapheme break and emoji properties:\n\t\tbreaks.push( breakProperty( cp ) );\n\t\temoji.push( emojiProperty( cp ) );\n\n\t\t// Determine if we've encountered a grapheme cluster break...\n\t\tif ( breakType( breaks, emoji ) > 0 ) {\n\t\t\tans = i-1;\n\t\t\tbreaks.length = 0;\n\t\t\temoji.length = 0;\n\t\t\tcontinue;\n\t\t}\n\t}\n\treturn ans;\n}\n\n\n// EXPORTS //\n\nmodule.exports = prevGraphemeClusterBreak;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the prev extended grapheme cluster break in a string before a specified position.\n*\n* @module @stdlib/string/prev-grapheme-cluster-break\n*\n* @example\n* var prevGraphemeClusterBreak = require( '@stdlib/string/prev-grapheme-cluster-break' );\n*\n* var out = prevGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 0\n*\n* out = prevGraphemeClusterBreak( '\uD83C\uDF37', 1 );\n* // returns -1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar removeFirstCodeUnit = require( './../../base/remove-first' );\nvar removeFirstCodePoint = require( './../../base/remove-first-code-point' );\nvar removeFirstGraphemeCluster = require( './../../base/remove-first-grapheme-cluster' ); // eslint-disable-line id-length\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': removeFirstGraphemeCluster,\n\t'code_point': removeFirstCodePoint,\n\t'code_unit': removeFirstCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Removes the first character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of characters to remove\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} updated string\n*\n* @example\n* var out = removeFirst( 'last man standing' );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election' );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript' );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures' );\n* // returns 'idden Treasures'\n*\n* @example\n* var out = removeFirst( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38'\n*\n* @example\n* var out = removeFirst( 'foo bar', 4 );\n* // returns 'bar'\n*/\nfunction removeFirst( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first character(s) of a string.\n*\n* @module @stdlib/string/remove-first\n*\n* @example\n* var removeFirst = require( '@stdlib/string/remove-first' );\n*\n* var out = removeFirst( 'last man standing' );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures' );\n* // returns 'idden Treasures';\n*\n* out = removeFirst( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC38\uD83D\uDC35\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Removes the last `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*/\nfunction removeLast( str, n ) {\n\treturn str.substring( 0, str.length - n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/remove-last\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Removes the last `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*/\nfunction removeLast( str, n ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\tlen = str.length;\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = len - 1; i >= 0; i-- ) {\n\t\tch1 = str[ i ];\n\t\tcnt += 1;\n\n\t\t// Check for a low UTF-16 surrogate...\n\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === 0 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i-1 ];\n\t\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\ti -= 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/remove-last-code-point\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last-code-point' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require('./../../../next-grapheme-cluster-break');\nvar numGraphemeClusters = require( './../../../num-grapheme-clusters' );\n\n\n// MAIN //\n\n/**\n* Removes the last `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*\n* @example\n* var out = removeLast( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37'\n*\n* @example\n* var out = removeLast( 'foo bar', 5 );\n* // returns 'fo'\n*/\nfunction removeLast( str, n ) {\n\tvar total;\n\tvar num;\n\tvar i;\n\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\n\ttotal = numGraphemeClusters( str );\n\tif ( str === '' || total < n ) {\n\t\treturn '';\n\t}\n\n\ti = 0;\n\tnum = 0;\n\twhile ( num < total - n ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tnum += 1;\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/remove-last-grapheme-cluster\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last-grapheme-cluster' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*\n* out = removeLast( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar removeLastCodeUnit = require( './../../base/remove-last' );\nvar removeLastCodePoint = require( './../../base/remove-last-code-point' );\nvar removeLastGraphemeCluster = require( './../../base/remove-last-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': removeLastGraphemeCluster,\n\t'code_point': removeLastCodePoint,\n\t'code_unit': removeLastCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Removes the last character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of character to remove\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} updated string\n*\n* @example\n* var out = removeLast( 'last man standing' );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election' );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'javaScript' );\n* // returns 'javaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures' );\n* // returns 'Hidden Treasure'\n*\n* @example\n* var out = removeLast( 'leader', 2 );\n* // returns 'lead'\n*/\nfunction removeLast( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last character(s) of a string.\n*\n* @module @stdlib/string/remove-last\n*\n* @example\n* var removeLast = require( '@stdlib/string/remove-last' );\n*\n* var out = removeLast( 'last man standing' );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures' );\n* // returns 'Hidden Treasure';\n*\n* out = removeLast( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 ) );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\n// '\\ufeff' => 1111111011111111 => 0xFEFF => 65279\nvar BOM = 65279;\n\n\n// MAIN //\n\n/**\n* Removes a UTF-8 byte order mark (BOM) from the beginning of a string.\n*\n* ## Notes\n*\n* - A UTF-8 byte order mark ([BOM][1]) is the byte sequence `0xEF,0xBB,0xBF`.\n* - To convert a UTF-8 encoded `Buffer` to a `string`, the `Buffer` must be converted to [UTF-16][2]. The BOM thus gets converted to the single 16-bit code point `'\\ufeff'` (UTF-16 BOM).\n*\n* [1]: https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n* [2]: http://es5.github.io/#x4.3.16\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} string with BOM removed\n*\n* @example\n* var str = removeUTF8BOM( '\\ufeffbeep' );\n* // returns 'beep'\n*/\nfunction removeUTF8BOM( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tif ( str.charCodeAt( 0 ) === BOM ) {\n\t\treturn str.slice( 1 );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeUTF8BOM;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove a UTF-8 byte order mark (BOM) from the beginning of a string.\n*\n* @module @stdlib/string/remove-utf8-bom\n*\n* @example\n* var removeUTF8BOM = require( '@stdlib/string/remove-utf8-bom' );\n*\n* var str = removeUTF8BOM( '\\ufeffbeep' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar removeUTF8BOM = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = removeUTF8BOM;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Converts a string to uppercase.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} uppercase string\n*\n* @example\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\nfunction uppercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn str.toUpperCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = uppercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to uppercase.\n*\n* @module @stdlib/string/uppercase\n*\n* @example\n* var uppercase = require( '@stdlib/string/uppercase' );\n*\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isStringArray = require( '@stdlib/assert/is-string-array' );\nvar uppercase = require( './../../uppercase' );\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar tokenize = require( '@stdlib/nlp/tokenize' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Removes a list of words from a string.\n*\n* @param {string} str - input string\n* @param {StringArray} words - array of words to be removed\n* @param {boolean} [ignoreCase=false] - boolean indicating whether to perform a case-insensitive operation\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an array of strings\n* @throws {TypeError} third argument must be a boolean\n* @returns {string} output string\n*\n* @example\n* var str = 'beep boop Foo bar';\n* var out = removeWords( str, [ 'boop', 'foo' ] );\n* // returns 'beep Foo bar'\n*\n* @example\n* var str = 'beep boop Foo bar';\n* var out = removeWords( str, [ 'boop', 'foo' ], true );\n* // returns 'beep bar'\n*/\nfunction removeWords( str, words, ignoreCase ) {\n\tvar tokens;\n\tvar token;\n\tvar list;\n\tvar flg;\n\tvar out;\n\tvar N;\n\tvar i;\n\tvar j;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isStringArray( words ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an array of strings. Value: `%s`.', words ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isBoolean( ignoreCase ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a boolean. Value: `%s`.', ignoreCase ) );\n\t\t}\n\t}\n\ttokens = tokenize( str, true );\n\tN = words.length;\n\tout = [];\n\tif ( ignoreCase ) {\n\t\tlist = words.slice();\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tlist[ i ] = uppercase( list[ i ] );\n\t\t}\n\t\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\t\tflg = true;\n\t\t\ttoken = uppercase( tokens[ i ] );\n\t\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\t\tif ( list[ j ] === token ) {\n\t\t\t\t\tflg = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( flg ) {\n\t\t\t\tout.push( tokens[ i ] );\n\t\t\t}\n\t\t}\n\t\treturn out.join( '' );\n\t}\n\t// Case: case-sensitive\n\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\ttoken = tokens[ i ];\n\t\tflg = true;\n\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\tif ( words[ j ] === token ) {\n\t\t\t\tflg = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( flg ) {\n\t\t\tout.push( token );\n\t\t}\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeWords;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove a list of words from a string.\n*\n* @module @stdlib/string/remove-words\n*\n* @example\n* var removeWords = require( '@stdlib/string/remove-words' );\n*\n* var str = 'beep boop Foo bar';\n* var words = [ 'boop', 'foo' ];\n*\n* var out = removeWords( str, words );\n* // returns 'beep Foo bar'\n*\n* // Case-insensitive:\n* out = removeWords( str, words, true )\n* //returns 'beep bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/replace-before' );\n\n\n// MAIN //\n\n/**\n* Replaces the substring before the first occurrence of a specified search string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {string} replacement - replacement string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be a string\n* @returns {string} output string\n*\n* @example\n* var out = replaceBefore( 'beep boop', ' ', 'foo' );\n* // returns 'foo boop'\n*\n* @example\n* var out = replaceBefore( 'beep boop', 'p', 'foo' );\n* // returns 'foop boop'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', '', 'foo' );\n* // returns 'Hello World!'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );\n* // returns 'Hello World!'\n*/\nfunction replaceBefore( str, search, replacement ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( !isString( replacement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', replacement ) );\n\t}\n\treturn base( str, search, replacement );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replaceBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace the substring before the first occurrence of a specified search string.\n*\n* @module @stdlib/string/replace-before\n*\n* @example\n* var replaceBefore = require( '@stdlib/string/replace-before' );\n*\n* var str = 'beep boop';\n*\n* var out = replaceBefore( str, ' ', 'foo' );\n* // returns 'foo boop'\n*\n* out = replaceBefore( str, 'o', 'bar' );\n* // returns 'baroop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Reverses the UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @returns {string} output string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'JavaScript' );\n* // returns 'tpircSavaJ'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*/\nfunction reverse( str ) {\n\tvar out;\n\tvar i;\n\n\tout = '';\n\tfor ( i = str.length - 1; i >= 0; i-- ) {\n\t\tout += str[ i ];\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/reverse\n*\n* @example\n* var reverse = require( '@stdlib/string/base/reverse' );\n*\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Reverses the Unicode code points of a string.\n*\n* @param {string} str - input string\n* @returns {string} output string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'JavaScript' );\n* // returns 'tpircSavaJ'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*/\nfunction reverse( str ) {\n\tvar len;\n\tvar out;\n\tvar ch1;\n\tvar ch2;\n\tvar i;\n\n\tlen = str.length;\n\tout = '';\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tout = ch1 + out;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tout = ch1 + ch2 + out;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t} else {\n\t\t\t\tout = ch1 + out;\n\t\t\t}\n\t\t} else {\n\t\t\tout = ch1 + out;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the Unicode code points of a string.\n*\n* @module @stdlib/string/base/reverse-code-points\n*\n* @example\n* var reverse = require( '@stdlib/string/base/reverse-code-points' );\n*\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Reverses the grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @returns {string} output string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'JavaScript' );\n* // returns 'tpircSavaJ'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*\n* @example\n* var out = reverse( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38' );\n* // returns '\uD83D\uDC38\uD83D\uDC30\uD83D\uDC37\uD83D\uDC2E\uD83D\uDC36'\n*/\nfunction reverse( str ) {\n\tvar cluster;\n\tvar out;\n\tvar idx;\n\tvar brk;\n\tvar i;\n\n\tout = '';\n\tidx = 0;\n\twhile ( idx < str.length ) {\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t\tif ( brk === -1 ) {\n\t\t\tbrk = str.length;\n\t\t}\n\t\tcluster = '';\n\t\tfor ( i = idx; i < brk; i++ ) {\n\t\t\tcluster += str.charAt( i );\n\t\t}\n\t\tout = cluster + out;\n\t\tidx = brk;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/reverse-grapheme-clusters\n*\n* @example\n* var reverse = require( '@stdlib/string/base/reverse-grapheme-clusters' );\n*\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*\n* out = reverse( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38' );\n* // returns '\uD83D\uDC38\uD83D\uDC30\uD83D\uDC37\uD83D\uDC2E\uD83D\uDC36'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar reverseCodeUnit = require( './../../base/reverse' );\nvar reverseCodePoints = require( './../../base/reverse-code-points' );\nvar reverseGraphemeClusters = require( './../../base/reverse-grapheme-clusters' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': reverseGraphemeClusters,\n\t'code_point': reverseCodePoints,\n\t'code_unit': reverseCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Reverses a string.\n*\n* @param {string} str - input string\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} reversed string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'javaScript' );\n* // returns 'tpircSavaj'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*/\nfunction reverse( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs > 1 ) {\n\t\toptions = arguments[ 1 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse a string.\n*\n* @module @stdlib/string/reverse\n*\n* @example\n* var reverseString = require( '@stdlib/string/reverse' );\n*\n* var out = reverseString( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverseString( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/right-trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the end of a string.\n*\n* @module @stdlib/string/right-trim\n*\n* @example\n* var rtrim = require( '@stdlib/string/right-trim' );\n*\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar splitGraphemeClusters = require( './../../split-grapheme-clusters' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar replace = require( './../../replace' );\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar WHITESPACE_CHARS = '\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\n\n\n// MAIN //\n\n/**\n* Trims `n` characters from the end of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of characters to trim\n* @param {(string|StringArray)} [chars] - characters to trim (defaults to whitespace characters)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string or an array of strings\n* @returns {string} trimmed string\n*\n* @example\n* var str = ' abc ';\n* var out = rtrimN( str, 2 );\n* // returns ' abc '\n*\n* @example\n* var str = ' abc ';\n* var out = rtrimN( str, str.length );\n* // returns ' abc'\n*\n* @example\n* var str = '~~abc!~~';\n* var out = rtrimN( str, str.length, [ '~', '!' ] );\n* // returns '~~abc'\n*\n* @example\n* var str = '\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8';\n* var out = rtrimN( str, str.length, '\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16' );\n* // returns ''\n*/\nfunction rtrimN( str, n, chars ) {\n\tvar nElems;\n\tvar reStr;\n\tvar isStr;\n\tvar RE;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tisStr = isString( chars );\n\t\tif ( !isStr && !isStringArray( chars ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a string or an array of strings. Value: `%s`.', chars ) );\n\t\t}\n\t\tif ( isStr ) {\n\t\t\tchars = splitGraphemeClusters( chars );\n\t\t}\n\t\tnElems = chars.length - 1;\n\t\treStr = '';\n\t\tfor ( i = 0; i < nElems; i++ ) {\n\t\t\treStr += rescape( chars[ i ] );\n\t\t\treStr += '|';\n\t\t}\n\t\treStr += rescape( chars[ nElems ] );\n\n\t\t// Case: Trim a specific set of characters from the end of a string..\n\t\tRE = new RegExp( '(?:' + reStr + '){0,'+n+'}$' );\n\t} else {\n\t\t// Case: Trim `n` whitespace characters from the end of a string...\n\t\tRE = new RegExp( '[' + WHITESPACE_CHARS + ']{0,'+n+'}$' );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrimN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim `n` characters from the end of a string.\n*\n* @module @stdlib/string/right-trim-n\n*\n* @example\n* var rtrimN = require( '@stdlib/string/right-trim-n' );\n*\n* var str = ' foo ';\n* var out = rtrimN( str, str.length );\n* // returns ' foo'\n*\n* str = '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36';\n* out = rtrimN( str, 4, [ '\uD83D\uDC36', ' ' ] );\n* // returns '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/snakecase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to snake case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} snake-cased string\n*\n* @example\n* var str = snakecase( 'Hello World!' );\n* // returns 'hello_world'\n*\n* @example\n* var str = snakecase( 'foo bar' );\n* // returns 'foo_bar'\n*\n* @example\n* var str = snakecase( 'I am a tiny little teapot' );\n* // returns 'i_am_a_tiny_little_teapot'\n*\n* @example\n* var str = snakecase( 'BEEP boop' );\n* // returns 'beep_boop'\n*\n* @example\n* var str = snakecase( 'isMobile' );\n* // returns 'is_mobile'\n*/\nfunction snakecase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = snakecase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to snake case.\n*\n* @module @stdlib/string/snakecase\n*\n* @example\n* var snakecase = require( '@stdlib/string/snakecase' );\n*\n* var str = snakecase( 'Foo Bar' );\n* // returns 'foo_bar'\n*\n* str = snakecase( 'I am a tiny little house' );\n* // returns 'i_am_a_tiny_little_house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/startcase' );\n\n\n// MAIN //\n\n/**\n* Capitalizes the first letter of each word in an input string.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} start case string\n*\n* @example\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\nfunction startcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first letter of each word in an input string.\n*\n* @module @stdlib/string/startcase\n*\n* @example\n* var startcase = require( '@stdlib/string/startcase' );\n*\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/starts-with' );\n\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [position=0] - position at which to start searching\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember' );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember' );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be' );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be' );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( position ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', position ) );\n\t\t}\n\t\tpos = position;\n\t} else {\n\t\tpos = 0;\n\t}\n\treturn base( str, search, pos );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string starts with the characters of another string.\n*\n* @module @stdlib/string/starts-with\n*\n* @example\n* var startsWith = require( '@stdlib/string/starts-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n* var bool = startsWith( str, 'Fair' );\n* // returns true\n*\n* bool = startsWith( str, 'fair' );\n* // returns false\n*\n* bool = startsWith( str, 'foul', 8 );\n* // returns true\n*\n* bool = startsWith( str, 'filthy', -10 );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string after a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [fromIndex=0] - index at which to start the search\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {string} substring\n*\n* @example\n* var out = substringAfter( 'Hello, world!', ', ' );\n* // returns 'world!'\n*\n* @example\n* var out = substringAfter( 'beep boop', 'beep' );\n* // returns ' boop'\n*\n* @example\n* var out = substringAfter( 'beep boop', 'boop' );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop', 'xyz' );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop', 'beep', 5 );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop beep baz', 'beep', 5 );\n* // returns ' baz'\n*/\nfunction substringAfter( str, search, fromIndex ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = str.indexOf( search, fromIndex );\n\t} else {\n\t\tidx = str.indexOf( search );\n\t}\n\tif ( idx === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( idx+search.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringAfter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string after a specified substring.\n*\n* @module @stdlib/string/substring-after\n*\n* @example\n* var substringAfter = require( '@stdlib/string/substring-after' );\n*\n* var str = 'beep boop';\n* var out = substringAfter( str, 'o' );\n* // returns 'op'\n*\n* out = substringAfter( str, ' ' );\n* // returns 'boop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string after the last occurrence of a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search value\n* @param {integer} [fromIndex=str.length] - index of last character to be considered beginning of a match\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {string} substring\n*\n* @example\n* var out = substringAfterLast( 'beep boop', 'b' );\n* // returns 'oop'\n*\n* @example\n* var out = substringAfterLast( 'beep boop', 'o' );\n* // returns 'p'\n*\n* @example\n* var out = substringAfterLast( 'Hello World', 'o' );\n* // returns 'rld'\n*\n* @example\n* var out = substringAfterLast( 'Hello World', '!' );\n* // returns ''\n*\n* @example\n* var out = substringAfterLast( 'Hello World', '' );\n* // returns ''\n*\n* @example\n* var out = substringAfterLast( 'beep boop baz', 'p b', 6 );\n* // returns 'oop baz'\n*/\nfunction substringAfterLast( str, search, fromIndex ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = str.lastIndexOf( search, fromIndex );\n\t} else {\n\t\tidx = str.lastIndexOf( search );\n\t}\n\tif ( idx === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( idx+search.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringAfterLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string after the last occurrence of a specified substring.\n*\n* @module @stdlib/string/substring-after-last\n*\n* @example\n* var substringAfterLast = require( '@stdlib/string/substring-after-last' );\n*\n* var str = 'beep boop';\n* var out = substringAfterLast( str, 'b' ):\n* // returns 'oop'\n*\n* out = substringAfterLast( str, 'o' ):\n* // returns 'p'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string before a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {string} substring\n*\n* @example\n* var out = substringBefore( 'beep boop', ' ' );\n* // returns 'beep'\n*\n* @example\n* var out = substringBefore( 'beep boop', 'p' );\n* // returns 'bee'\n*\n* @example\n* var out = substringBefore( 'Hello World!', '' );\n* // returns ''\n*\n* @example\n* var out = substringBefore( 'Hello World!', 'XYZ' );\n* // returns 'Hello World!'\n*/\nfunction substringBefore( str, search ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tidx = str.indexOf( search );\n\tif ( idx === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string before a specified substring.\n*\n* @module @stdlib/string/substring-before\n*\n* @example\n* var substringBefore = require( '@stdlib/string/substring-before' );\n*\n* var str = 'beep boop';\n* var out = substringBefore( str, ' ' );\n* // returns 'beep'\n*\n* out = substringBefore( str, 'o' );\n* // returns 'beep b'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string before the last occurrence of a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search value\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {string} substring\n*\n* @example\n* var out = substringBeforeLast( 'abcba', 'b' );\n* // returns 'abc'\n*\n* @example\n* var out = substringBeforeLast( 'Hello World, my friend!', ' ' );\n* // returns 'Hello World, my'\n*\n* @example\n* var out = substringBeforeLast( 'abcba', ' ' );\n* // returns 'abcba'\n*\n* @example\n* var out = substringBeforeLast( 'abcba', '' );\n* // returns 'abcba'\n*/\nfunction substringBeforeLast( str, search ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tidx = str.lastIndexOf( search );\n\tif ( idx === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringBeforeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string before the last occurrence of a specified substring.\n*\n* @module @stdlib/string/substring-before-last\n*\n* @example\n* var substringBeforeLast = require( '@stdlib/string/substring-before-last' );\n*\n* var str = 'Beep Boop Beep';\n* var out = substringBeforeLast( str, 'Beep' );\n* // returns 'Beep Boop '\n*\n* out = substringBeforeLast( str, 'Boop' );\n* // returns 'Beep '\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each grapheme cluster in a string.\n*\n* @param {string} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = graphemeClusters2iterator( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction graphemeClusters2iterator( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar i;\n\tif ( !isString( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be astring. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = 0;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = nextGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': fcn.call( thisArg, src.substring( i ), i, src ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, src.substring( i, j ), i, src );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = nextGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': src.substring( i ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = src.substring( i, j );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn graphemeClusters2iterator( src, fcn, thisArg );\n\t\t}\n\t\treturn graphemeClusters2iterator( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeClusters2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which iterates over grapheme clusters.\n*\n* @module @stdlib/string/to-grapheme-cluster-iterator\n*\n* @example\n* var graphemeClusters2iterator = require( '@stdlib/string/to-grapheme-cluster-iterator' );\n*\n* var iter = graphemeClusters2iterator( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar prevGraphemeClusterBreak = require( './../../prev-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each grapheme cluster in a string.\n*\n* @param {string} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = graphemeClusters2iteratorRight( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction graphemeClusters2iteratorRight( src ) { // eslint-disable-line id-length\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar i;\n\tif ( !isString( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be astring. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = src.length - 1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = prevGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': fcn.call( thisArg, src.substring( j+1, i+1 ), j+1, src ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, src.substring( j+1, i+1 ), j+1, src );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = prevGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': src.substring( j+1, i+1 ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = src.substring( j+1, i+1 );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn graphemeClusters2iteratorRight( src, fcn, thisArg );\n\t\t}\n\t\treturn graphemeClusters2iteratorRight( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeClusters2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which iterates from right to left over grapheme clusters.\n*\n* @module @stdlib/string/to-grapheme-cluster-iterator-right\n*\n* @example\n* var graphemeClusters2iteratorRight = require( '@stdlib/string/to-grapheme-cluster-iterator-right' );\n*\n* var iter = graphemeClusters2iteratorRight( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string/trim\n*\n* @example\n* var trim = require( '@stdlib/string/trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar numGraphemeClusters = require( './../../num-grapheme-clusters' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Truncates a string to a specified length.\n*\n* @param {string} str - input string\n* @param {integer} len - output string length (including ending)\n* @param {string} [ending='...'] - custom ending\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @returns {string} truncated string\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 7 );\n* // returns 'beep...'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 5, '>>>' );\n* // returns 'be>>>'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 10 );\n* // returns 'beep boop'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 0 );\n* // returns ''\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 2 );\n* // returns '..'\n*\n* @example\n* var str = '\uD83D\uDC3A Wolf Brothers \uD83D\uDC3A';\n* var out = truncate( str, 6 );\n* // returns '\uD83D\uDC3A W...'\n*/\nfunction truncate( str, len, ending ) {\n\tvar endingLength;\n\tvar fromIndex;\n\tvar nVisual;\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isString( ending ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', ending ) );\n\t\t}\n\t}\n\tending = ending || '...';\n\tendingLength = numGraphemeClusters( ending );\n\tfromIndex = 0;\n\tif ( len > numGraphemeClusters( str ) ) {\n\t\treturn str;\n\t}\n\tif ( len - endingLength < 0 ) {\n\t\treturn ending.slice( 0, len );\n\t}\n\tnVisual = 0;\n\twhile ( nVisual < len - endingLength ) {\n\t\tidx = nextGraphemeClusterBreak( str, fromIndex );\n\t\tfromIndex = idx;\n\t\tnVisual += 1;\n\t}\n\treturn str.substring( 0, idx ) + ending;\n}\n\n\n// EXPORTS //\n\nmodule.exports = truncate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Truncate a string to a specified length.\n*\n* @module @stdlib/string/truncate\n*\n* @example\n* var truncate = require( '@stdlib/string/truncate' );\n*\n* var out = truncate( 'beep boop', 7 );\n* // returns 'beep...'\n*\n* out = truncate( 'beep boop', 7, '|' );\n* // returns 'beep b|'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar numGraphemeClusters = require( './../../num-grapheme-clusters' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\nvar round = require( '@stdlib/math/base/special/round' );\nvar floor = require( '@stdlib/math/base/special/floor' );\n\n\n// MAIN //\n\n/**\n* Truncates a string in the middle to a specified length.\n*\n* @param {string} str - input string\n* @param {integer} len - output string length (including sequence)\n* @param {string} [seq='...'] - custom replacement sequence\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @returns {string} truncated string\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 5 );\n* // returns 'b...p'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 5, '>>>' );\n* // returns 'b>>>p'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 10 );\n* // returns 'beep boop'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 0 );\n* // returns ''\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 2 );\n* // returns '..'\n*\n* @example\n* var str = '\uD83D\uDC3A Wolf Brothers \uD83D\uDC3A';\n* var out = truncateMiddle( str, 7 );\n* // returns '\uD83D\uDC3A ... \uD83D\uDC3A'\n*/\nfunction truncateMiddle( str, len, seq ) {\n\tvar seqLength;\n\tvar fromIndex;\n\tvar strLength;\n\tvar seqStart;\n\tvar nVisual;\n\tvar seqEnd;\n\tvar idx2;\n\tvar idx1;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isString( seq ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', seq ) );\n\t\t}\n\t}\n\tseq = seq || '...';\n\tseqLength = numGraphemeClusters( seq );\n\tstrLength = numGraphemeClusters( str );\n\tfromIndex = 0;\n\tif ( len > strLength ) {\n\t\treturn str;\n\t}\n\tif ( len - seqLength < 0 ) {\n\t\treturn seq.slice( 0, len );\n\t}\n\tseqStart = round( ( len - seqLength ) / 2 );\n\tseqEnd = strLength - floor( ( len - seqLength ) / 2 );\n\tnVisual = 0;\n\twhile ( nVisual < seqStart ) {\n\t\tidx1 = nextGraphemeClusterBreak( str, fromIndex );\n\t\tfromIndex = idx1;\n\t\tnVisual += 1;\n\t}\n\tidx2 = idx1;\n\twhile ( idx2 > 0 ) {\n\t\tidx2 = nextGraphemeClusterBreak( str, fromIndex );\n\t\tif ( idx2 >= seqEnd + fromIndex - nVisual ) {\n\t\t\tbreak;\n\t\t}\n\t\tfromIndex = idx2;\n\t\tnVisual += 1;\n\t}\n\treturn str.substring( 0, idx1 ) + seq + str.substring( idx2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = truncateMiddle;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Truncate a string in the middle to a specified length.\n*\n* @module @stdlib/string/truncate-middle\n*\n* @example\n* var truncateMiddle = require( '@stdlib/string/truncate-middle' );\n*\n* var out = truncateMiddle( 'beep boop', 7 );\n* // returns 'be...op'\n*\n* out = truncateMiddle( 'beep boop', 7, '|' );\n* // returns 'bee|oop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/uncapitalize' );\n\n\n// MAIN //\n\n/**\n* Uncapitalizes the first character of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} input string with first character converted to lowercase\n*\n* @example\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* @example\n* var out = uncapitalize( 'Presidential election' );\n* // returns 'presidential election'\n*\n* @example\n* var out = uncapitalize( 'JavaScript' );\n* // returns 'javaScript'\n*\n* @example\n* var out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures'\n*/\nfunction uncapitalize( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = uncapitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Uncapitalize the first character of a string.\n*\n* @module @stdlib/string/uncapitalize\n*\n* @example\n* var uncapitalize = require( '@stdlib/string/uncapitalize' );\n*\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n/*\n* The following modules are intentionally not exported: tools\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace string\n*/\nvar string = {};\n\n/**\n* @name acronym\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/acronym}\n*/\nsetReadOnly( string, 'acronym', require( './../acronym' ) );\n\n/**\n* @name base\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base}\n*/\nsetReadOnly( string, 'base', require( './../base' ) );\n\n/**\n* @name camelcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/camelcase}\n*/\nsetReadOnly( string, 'camelcase', require( './../camelcase' ) );\n\n/**\n* @name capitalize\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/capitalize}\n*/\nsetReadOnly( string, 'capitalize', require( './../capitalize' ) );\n\n/**\n* @name codePointAt\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/code-point-at}\n*/\nsetReadOnly( string, 'codePointAt', require( './../code-point-at' ) );\n\n/**\n* @name constantcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/constantcase}\n*/\nsetReadOnly( string, 'constantcase', require( './../constantcase' ) );\n\n/**\n* @name dotcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/dotcase}\n*/\nsetReadOnly( string, 'dotcase', require( './../dotcase' ) );\n\n/**\n* @name endsWith\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/ends-with}\n*/\nsetReadOnly( string, 'endsWith', require( './../ends-with' ) );\n\n/**\n* @name first\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/first}\n*/\nsetReadOnly( string, 'first', require( './../first' ) );\n\n/**\n* @name forEach\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/for-each}\n*/\nsetReadOnly( string, 'forEach', require( './../for-each' ) );\n\n/**\n* @name format\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/format}\n*/\nsetReadOnly( string, 'format', require( './../format' ) );\n\n/**\n* @name fromCodePoint\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/from-code-point}\n*/\nsetReadOnly( string, 'fromCodePoint', require( './../from-code-point' ) );\n\n/**\n* @name headercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/headercase}\n*/\nsetReadOnly( string, 'headercase', require( './../headercase' ) );\n\n/**\n* @name kebabcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/kebabcase}\n*/\nsetReadOnly( string, 'kebabcase', require( './../kebabcase' ) );\n\n/**\n* @name lpad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-pad}\n*/\nsetReadOnly( string, 'lpad', require( './../left-pad' ) );\n\n/**\n* @name ltrim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-trim}\n*/\nsetReadOnly( string, 'ltrim', require( './../left-trim' ) );\n\n/**\n* @name ltrimN\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-trim-n}\n*/\nsetReadOnly( string, 'ltrimN', require( './../left-trim-n' ) );\n\n/**\n* @name lowercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/lowercase}\n*/\nsetReadOnly( string, 'lowercase', require( './../lowercase' ) );\n\n/**\n* @name nextGraphemeClusterBreak\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/next-grapheme-cluster-break}\n*/\nsetReadOnly( string, 'nextGraphemeClusterBreak', require( './../next-grapheme-cluster-break' ) );\n\n/**\n* @name numGraphemeClusters\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/num-grapheme-clusters}\n*/\nsetReadOnly( string, 'numGraphemeClusters', require( './../num-grapheme-clusters' ) );\n\n/**\n* @name num2words\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/num2words}\n*/\nsetReadOnly( string, 'num2words', require( './../num2words' ) );\n\n/**\n* @name pad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/pad}\n*/\nsetReadOnly( string, 'pad', require( './../pad' ) );\n\n/**\n* @name pascalcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/pascalcase}\n*/\nsetReadOnly( string, 'pascalcase', require( './../pascalcase' ) );\n\n/**\n* @name percentEncode\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/percent-encode}\n*/\nsetReadOnly( string, 'percentEncode', require( './../percent-encode' ) );\n\n/**\n* @name prevGraphemeClusterBreak\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/prev-grapheme-cluster-break}\n*/\nsetReadOnly( string, 'prevGraphemeClusterBreak', require( './../prev-grapheme-cluster-break' ) );\n\n/**\n* @name removeFirst\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-first}\n*/\nsetReadOnly( string, 'removeFirst', require( './../remove-first' ) );\n\n/**\n* @name removeLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-last}\n*/\nsetReadOnly( string, 'removeLast', require( './../remove-last' ) );\n\n/**\n* @name removePunctuation\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-punctuation}\n*/\nsetReadOnly( string, 'removePunctuation', require( './../remove-punctuation' ) );\n\n/**\n* @name removeUTF8BOM\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-utf8-bom}\n*/\nsetReadOnly( string, 'removeUTF8BOM', require( './../remove-utf8-bom' ) );\n\n/**\n* @name removeWords\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-words}\n*/\nsetReadOnly( string, 'removeWords', require( './../remove-words' ) );\n\n/**\n* @name repeat\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/repeat}\n*/\nsetReadOnly( string, 'repeat', require( './../repeat' ) );\n\n/**\n* @name replace\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/replace}\n*/\nsetReadOnly( string, 'replace', require( './../replace' ) );\n\n/**\n* @name replaceBefore\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/replace-before}\n*/\nsetReadOnly( string, 'replaceBefore', require( './../replace-before' ) );\n\n/**\n* @name reverseString\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/reverse}\n*/\nsetReadOnly( string, 'reverseString', require( './../reverse' ) );\n\n/**\n* @name rpad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-pad}\n*/\nsetReadOnly( string, 'rpad', require( './../right-pad' ) );\n\n/**\n* @name rtrim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-trim}\n*/\nsetReadOnly( string, 'rtrim', require( './../right-trim' ) );\n\n/**\n* @name rtrimN\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-trim-n}\n*/\nsetReadOnly( string, 'rtrimN', require( './../right-trim-n' ) );\n\n/**\n* @name snakecase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/snakecase}\n*/\nsetReadOnly( string, 'snakecase', require( './../snakecase' ) );\n\n/**\n* @name splitGraphemeClusters\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/split-grapheme-clusters}\n*/\nsetReadOnly( string, 'splitGraphemeClusters', require( './../split-grapheme-clusters' ) );\n\n/**\n* @name startcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/startcase}\n*/\nsetReadOnly( string, 'startcase', require( './../startcase' ) );\n\n/**\n* @name startsWith\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/starts-with}\n*/\nsetReadOnly( string, 'startsWith', require( './../starts-with' ) );\n\n/**\n* @name substringAfter\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-after}\n*/\nsetReadOnly( string, 'substringAfter', require( './../substring-after' ) );\n\n/**\n* @name substringAfterLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-after-last}\n*/\nsetReadOnly( string, 'substringAfterLast', require( './../substring-after-last' ) );\n\n/**\n* @name substringBefore\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-before}\n*/\nsetReadOnly( string, 'substringBefore', require( './../substring-before' ) );\n\n/**\n* @name substringBeforeLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-before-last}\n*/\nsetReadOnly( string, 'substringBeforeLast', require( './../substring-before-last' ) );\n\n/**\n* @name graphemeClusters2iterator\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/to-grapheme-cluster-iterator}\n*/\nsetReadOnly( string, 'graphemeClusters2iterator', require( './../to-grapheme-cluster-iterator' ) );\n\n/**\n* @name graphemeClusters2iteratorRight\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/to-grapheme-cluster-iterator-right}\n*/\nsetReadOnly( string, 'graphemeClusters2iteratorRight', require( './../to-grapheme-cluster-iterator-right' ) );\n\n/**\n* @name trim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/trim}\n*/\nsetReadOnly( string, 'trim', require( './../trim' ) );\n\n/**\n* @name truncate\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/truncate}\n*/\nsetReadOnly( string, 'truncate', require( './../truncate' ) );\n\n/**\n* @name truncateMiddle\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/truncate-middle}\n*/\nsetReadOnly( string, 'truncateMiddle', require( './../truncate-middle' ) );\n\n/**\n* @name uncapitalize\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/uncapitalize}\n*/\nsetReadOnly( string, 'uncapitalize', require( './../uncapitalize' ) );\n\n/**\n* @name uppercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/uppercase}\n*/\nsetReadOnly( string, 'uppercase', require( './../uppercase' ) );\n\n/**\n* @name utf16ToUTF8Array\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/utf16-to-utf8-array}\n*/\nsetReadOnly( string, 'utf16ToUTF8Array', require( './../utf16-to-utf8-array' ) );\n\n\n// EXPORTS //\n\nmodule.exports = string;\n"], - "mappings": "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5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,KAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,OAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,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,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ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AS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MAEFF,EAAU,GAGf,OAAUE,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,G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", - "names": ["require_is_number", "__commonJSMin", "exports", "module", "isNumber", "value", "require_zero_pad", "__commonJSMin", "exports", "module", "startsWithMinus", "str", "zeros", "n", "out", "i", "zeroPad", "width", "right", "negative", "pad", "require_format_integer", "__commonJSMin", "exports", "module", "isNumber", "zeroPad", "lowercase", "uppercase", "formatInteger", "token", "base", "out", "i", "require_is_string", "__commonJSMin", "exports", "module", "isString", "value", "require_format_double", "__commonJSMin", "exports", "module", "isNumber", "abs", "lowercase", "uppercase", "replace", "RE_EXP_POS_DIGITS", "RE_EXP_NEG_DIGITS", "RE_ONLY_DIGITS", "RE_DIGITS_BEFORE_EXP", "RE_TRAILING_PERIOD_ZERO", "RE_PERIOD_ZERO_EXP", "RE_ZERO_BEFORE_EXP", "formatDouble", "token", "digits", "out", "f", "require_space_pad", "__commonJSMin", "exports", "module", "spaces", "n", "out", "i", "spacePad", "str", "width", "right", "pad", "require_main", "__commonJSMin", "exports", "module", "formatInteger", "isString", "formatDouble", "spacePad", "zeroPad", "fromCharCode", "isnan", "isArray", "initialize", "token", "out", "formatInterpolate", "tokens", "hasPeriod", "flags", "flag", "num", "pos", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE", "parse", "match", "token", "formatTokenize", "str", "content", "tokens", "prev", "require_lib", "__commonJSMin", "exports", "module", "main", "require_is_string", "__commonJSMin", "exports", "module", "isString", "value", "require_main", "__commonJSMin", "exports", "module", "interpolate", "tokenize", "isString", "format", "str", "tokens", "args", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "replace", "str", "search", "newval", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "rescape", "isFunction", "isString", "isRegExp", "format", "base", "replace", "str", "search", "newval", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "replace", "format", "RE", "removePunctuation", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "isStringArray", "isEmptyArray", "format", "validate", "opts", "options", "require_stopwords", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "removePunctuation", "tokenize", "replace", "uppercase", "lowercase", "isString", "contains", "format", "validate", "STOPWORDS", "RE_HYPHEN", "acronym", "str", "options", "isStopWord", "words", "opts", "err", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "capitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_builtin", "__commonJSMin", "exports", "module", "trim", "require_check", "__commonJSMin", "exports", "module", "trim", "str1", "str2", "test", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "trim", "str", "require_main", "__commonJSMin", "exports", "module", "builtin", "trim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "check", "polyfill", "main", "trim", "require_main", "__commonJSMin", "exports", "module", "capitalize", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_TO_CAMEL", "RE_CAMEL", "replacer", "match", "p1", "offset", "camelcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "Ox10000", "Ox400", "OxD800", "OxDBFF", "OxDC00", "OxDFFF", "codePointAt", "str", "idx", "backward", "code", "low", "hi", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "constantcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "min", "levenshteinDistance", "s1", "s2", "temp", "row", "pre", "m", "n", "i", "j", "k", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "dotcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "endsWith", "str", "search", "len", "idx", "N", "i", "require_builtin", "__commonJSMin", "exports", "module", "endsWith", "require_main", "__commonJSMin", "exports", "module", "builtin", "endsWith", "str", "search", "len", "idx", "N", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "endsWith", "require_main", "__commonJSMin", "exports", "module", "first", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_SURROGATE_PAIR", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "first", "str", "n", "len", "out", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isBoolean", "isString", "isInteger", "format", "base", "codePointAt", "str", "idx", "backward", "FLG", "require_lib", "__commonJSMin", "exports", "module", "main", "require_constants", "__commonJSMin", "exports", "module", "consts", "require_break_type", "__commonJSMin", "exports", "module", "constants", "count", "arr", "start", "end", "value", "cnt", "i", "every", "indexOf", "lastIndexOf", "breakType", "breaks", "emoji", "nextEmoji", "next", "prev", "idx", "N", "M", "require_emoji_property", "__commonJSMin", "exports", "module", "constants", "emojiProperty", "code", "require_break_property", "__commonJSMin", "exports", "module", "constants", "graphemeBreakProperty", "code", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "constants", "breakType", "emojiProperty", "breakProperty", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "codePointAt", "hasUTF16SurrogatePairAt", "grapheme", "format", "breakType", "breakProperty", "emojiProperty", "nextGraphemeClusterBreak", "str", "fromIndex", "breaks", "emoji", "len", "idx", "cp", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "first", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "forEach", "str", "clbk", "thisArg", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "forEach", "str", "clbk", "thisArg", "len", "ch1", "ch2", "idx", "ch", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "forEach", "str", "clbk", "thisArg", "len", "idx", "brk", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "reWhitespace", "startcase", "str", "cap", "out", "ch", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "startcase", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "headercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "lowercase", "invcase", "str", "out", "ch", "s", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "kebabCase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "repeat", "str", "n", "rpt", "cnt", "require_builtin", "__commonJSMin", "exports", "module", "repeat", "require_main", "__commonJSMin", "exports", "module", "builtin", "repeat", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "repeat", "require_main", "__commonJSMin", "exports", "module", "repeat", "ceil", "lpad", "str", "len", "pad", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "ltrim", "str", "require_builtin", "__commonJSMin", "exports", "module", "ltrim", "require_main", "__commonJSMin", "exports", "module", "builtin", "ltrim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "ltrim", "require_main", "__commonJSMin", "exports", "module", "capitalize", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_TO_PASCAL", "RE_CAMEL", "replacer", "match", "p1", "pascalcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "Ox3F", "Ox80", "OxC0", "OxE0", "OxF0", "Ox3FF", "Ox800", "OxD800", "OxE000", "Ox10000", "utf16ToUTF8Array", "str", "code", "out", "len", "i", "require_lib", "__commonJSMin", "exports", "module", "utf16ToUTF8Array", "require_main", "__commonJSMin", "exports", "module", "utf16ToUTF8Array", "UNDERSCORE", "PERIOD", "HYPHEN", "TILDE", "ZERO", "NINE", "A", "Z", "a", "z", "percentEncode", "str", "byte", "out", "len", "buf", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "removeFirst", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "removeFirst", "str", "n", "len", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "removeFirst", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "replaceBefore", "str", "search", "replacement", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "repeat", "ceil", "rpad", "str", "len", "pad", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "rtrim", "str", "require_builtin", "__commonJSMin", "exports", "module", "rtrim", "require_main", "__commonJSMin", "exports", "module", "builtin", "rtrim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "rtrim", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "snakecase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "startsWith", "str", "search", "position", "pos", "i", "require_builtin", "__commonJSMin", "exports", "module", "startsWith", "require_main", "__commonJSMin", "exports", "module", "builtin", "startsWith", "str", "search", "position", "pos", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "startsWith", "require_main", "__commonJSMin", "exports", "module", "uncapitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "camelcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "capitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "constantcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "dotcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "base", "endsWith", "str", "search", "len", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "isPlainObject", "hasOwnProp", "contains", "firstCodeUnit", "firstCodePoint", "firstGraphemeCluster", "format", "MODES", "FCNS", "isMode", "first", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isFunction", "isString", "isPlainObject", "hasOwnProp", "contains", "forEachCodeUnit", "forEachCodePoint", "forEachGraphemeCluster", "format", "MODES", "FCNS", "isMode", "forEach", "str", "options", "clbk", "thisArg", "nargs", "opts", "cb", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isCollection", "format", "UNICODE_MAX", "UNICODE_MAX_BMP", "fromCharCode", "Ox10000", "OxD800", "OxDC00", "Ox3FF", "fromCodePoint", "args", "len", "str", "arr", "low", "hi", "pt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "headercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "kebabCase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "FLOAT64_MAX_SAFE_INTEGER", "base", "lpad", "str", "len", "pad", "p", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "ltrim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "nextGraphemeClusterBreak", "format", "splitGraphemeClusters", "str", "idx", "brk", "out", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "splitGraphemeClusters", "isNonNegativeInteger", "isStringArray", "replace", "rescape", "format", "WHITESPACE_CHARS", "ltrimN", "str", "n", "chars", "nElems", "reStr", "isStr", "RE", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "lowercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "nextGraphemeClusterBreak", "format", "numGraphemeClusters", "str", "count", "idx", "brk", "require_lib", "__commonJSMin", "exports", "module", "main", "require_units", "__commonJSMin", "exports", "module", "require_int2words_de", "__commonJSMin", "exports", "module", "floor", "endsWith", "UNITS", "ONES", "TENS", "pluralize", "word", "int2wordsDE", "num", "out", "rem", "i", "require_int2words_en", "__commonJSMin", "exports", "module", "floor", "UNITS", "ONES", "TENS", "int2wordsEN", "num", "out", "word", "rem", "i", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "indexOf", "format", "LANGUAGE_CODES", "validate", "opts", "options", "require_decimals", "__commonJSMin", "exports", "module", "decimals", "x", "fcn", "out", "len", "i", "require_main", "__commonJSMin", "exports", "module", "isNumber", "isInteger", "isfinite", "format", "int2wordsDE", "int2wordsEN", "validate", "decimals", "num2words", "num", "options", "parts", "opts", "err", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "base", "repeat", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "FLOAT64_MAX_SAFE_INTEGER", "base", "rpad", "str", "len", "pad", "p", "require_lib", "__commonJSMin", "exports", "module", "main", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "isString", "isBoolean", "format", "validate", "opts", "options", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "repeat", "format", "floor", "ceil", "lpad", "rpad", "abs", "FLOAT64_MAX_SAFE_INTEGER", "validate", "pad", "str", "len", "options", "nright", "nleft", "isodd", "right", "left", "opts", "err", "tmp", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "pascalcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "percentEncode", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "codePointAt", "hasUTF16SurrogatePairAt", "grapheme", "format", "breakType", "breakProperty", "emojiProperty", "prevGraphemeClusterBreak", "str", "fromIndex", "breaks", "emoji", "ans", "len", "idx", "cp", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "isNonNegativeInteger", "removeFirstCodeUnit", "removeFirstCodePoint", "removeFirstGraphemeCluster", "format", "MODES", "FCNS", "isMode", "removeFirst", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "removeLast", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "removeLast", "str", "n", "len", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "numGraphemeClusters", "removeLast", "str", "n", "total", "num", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "isNonNegativeInteger", "removeLastCodeUnit", "removeLastCodePoint", "removeLastGraphemeCluster", "format", "MODES", "FCNS", "isMode", "removeLast", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "BOM", "removeUTF8BOM", "str", "require_lib", "__commonJSMin", "exports", "module", "removeUTF8BOM", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "uppercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isStringArray", "uppercase", "isBoolean", "isString", "tokenize", "format", "removeWords", "str", "words", "ignoreCase", "tokens", "token", "list", "flg", "out", "N", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "replaceBefore", "str", "search", "replacement", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "reverse", "str", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "reverse", "str", "len", "out", "ch1", "ch2", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "reverse", "str", "cluster", "out", "idx", "brk", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "reverseCodeUnit", "reverseCodePoints", "reverseGraphemeClusters", "format", "MODES", "FCNS", "isMode", "reverse", "str", "options", "nargs", "opts", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "rtrim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "splitGraphemeClusters", "isNonNegativeInteger", "isStringArray", "replace", "rescape", "format", "WHITESPACE_CHARS", "rtrimN", "str", "n", "chars", "nElems", "reStr", "isStr", "RE", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "snakecase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "startcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "base", "startsWith", "str", "search", "position", "pos", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "format", "substringAfter", "str", "search", "fromIndex", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "substringAfterLast", "str", "search", "fromIndex", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "substringBefore", "str", "search", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "substringBeforeLast", "str", "search", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isString", "iteratorSymbol", "nextGraphemeClusterBreak", "format", "graphemeClusters2iterator", "src", "thisArg", "iter", "FLG", "fcn", "i", "next1", "next2", "end", "factory", "v", "j", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isString", "iteratorSymbol", "prevGraphemeClusterBreak", "format", "graphemeClusters2iteratorRight", "src", "thisArg", "iter", "FLG", "fcn", "i", "next1", "next2", "end", "factory", "v", "j", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "trim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "numGraphemeClusters", "nextGraphemeClusterBreak", "format", "truncate", "str", "len", "ending", "endingLength", "fromIndex", "nVisual", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "numGraphemeClusters", "nextGraphemeClusterBreak", "format", "round", "floor", "truncateMiddle", "str", "len", "seq", "seqLength", "fromIndex", "strLength", "seqStart", "nVisual", "seqEnd", "idx2", "idx1", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "uncapitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "setReadOnly", "string"] + "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a number primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a number primitive\n*\n* @example\n* var bool = isNumber( 3.14 );\n* // returns true\n*\n* @example\n* var bool = isNumber( NaN );\n* // returns true\n*\n* @example\n* var bool = isNumber( new Number( 3.14 ) );\n* // returns false\n*/\nfunction isNumber( value ) {\n\treturn ( typeof value === 'number' ); // NOTE: we inline the `isNumber.isPrimitive` function from `@stdlib/assert/is-number` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Tests if a string starts with a minus sign (`-`).\n*\n* @private\n* @param {string} str - input string\n* @returns {boolean} boolean indicating if a string starts with a minus sign (`-`)\n*/\nfunction startsWithMinus( str ) {\n\treturn str[ 0 ] === '-';\n}\n\n/**\n* Returns a string of `n` zeros.\n*\n* @private\n* @param {number} n - number of zeros\n* @returns {string} string of zeros\n*/\nfunction zeros( n ) {\n\tvar out = '';\n\tvar i;\n\tfor ( i = 0; i < n; i++ ) {\n\t\tout += '0';\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Pads a token with zeros to the specified width.\n*\n* @private\n* @param {string} str - token argument\n* @param {number} width - token width\n* @param {boolean} [right=false] - boolean indicating whether to pad to the right\n* @returns {string} padded token argument\n*/\nfunction zeroPad( str, width, right ) {\n\tvar negative = false;\n\tvar pad = width - str.length;\n\tif ( pad < 0 ) {\n\t\treturn str;\n\t}\n\tif ( startsWithMinus( str ) ) {\n\t\tnegative = true;\n\t\tstr = str.substr( 1 );\n\t}\n\tstr = ( right ) ?\n\t\tstr + zeros( pad ) :\n\t\tzeros( pad ) + str;\n\tif ( negative ) {\n\t\tstr = '-' + str;\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeroPad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( './is_number.js' );\nvar zeroPad = require( './zero_pad.js' );\n\n// NOTE: for the following, we explicitly avoid using stdlib packages in this particular package in order to avoid circular dependencies.\nvar lowercase = String.prototype.toLowerCase;\nvar uppercase = String.prototype.toUpperCase;\n\n\n// MAIN //\n\n/**\n* Formats a token object argument as an integer.\n*\n* @private\n* @param {Object} token - token object\n* @throws {Error} must provide a valid integer\n* @returns {string} formatted token argument\n*/\nfunction formatInteger( token ) {\n\tvar base;\n\tvar out;\n\tvar i;\n\n\tswitch ( token.specifier ) {\n\tcase 'b':\n\t\t// Case: %b (binary)\n\t\tbase = 2;\n\t\tbreak;\n\tcase 'o':\n\t\t// Case: %o (octal)\n\t\tbase = 8;\n\t\tbreak;\n\tcase 'x':\n\tcase 'X':\n\t\t// Case: %x, %X (hexadecimal)\n\t\tbase = 16;\n\t\tbreak;\n\tcase 'd':\n\tcase 'i':\n\tcase 'u':\n\tdefault:\n\t\t// Case: %d, %i, %u (decimal)\n\t\tbase = 10;\n\t\tbreak;\n\t}\n\tout = token.arg;\n\ti = parseInt( out, 10 );\n\tif ( !isFinite( i ) ) { // NOTE: We use the global `isFinite` function here instead of `@stdlib/math/base/assert/is-finite` in order to avoid circular dependencies.\n\t\tif ( !isNumber( out ) ) {\n\t\t\tthrow new Error( 'invalid integer. Value: ' + out );\n\t\t}\n\t\ti = 0;\n\t}\n\tif ( i < 0 && ( token.specifier === 'u' || base !== 10 ) ) {\n\t\ti = 0xffffffff + i + 1;\n\t}\n\tif ( i < 0 ) {\n\t\tout = ( -i ).toString( base );\n\t\tif ( token.precision ) {\n\t\t\tout = zeroPad( out, token.precision, token.padRight );\n\t\t}\n\t\tout = '-' + out;\n\t} else {\n\t\tout = i.toString( base );\n\t\tif ( !i && !token.precision ) {\n\t\t\tout = '';\n\t\t} else if ( token.precision ) {\n\t\t\tout = zeroPad( out, token.precision, token.padRight );\n\t\t}\n\t\tif ( token.sign ) {\n\t\t\tout = token.sign + out;\n\t\t}\n\t}\n\tif ( base === 16 ) {\n\t\tif ( token.alternate ) {\n\t\t\tout = '0x' + out;\n\t\t}\n\t\tout = ( token.specifier === uppercase.call( token.specifier ) ) ?\n\t\t\tuppercase.call( out ) :\n\t\t\tlowercase.call( out );\n\t}\n\tif ( base === 8 ) {\n\t\tif ( token.alternate && out.charAt( 0 ) !== '0' ) {\n\t\t\tout = '0' + out;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatInteger;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a string primitive\n*\n* @example\n* var bool = isString( 'beep' );\n* // returns true\n*\n* @example\n* var bool = isString( new String( 'beep' ) );\n* // returns false\n*/\nfunction isString( value ) {\n\treturn ( typeof value === 'string' ); // NOTE: we inline the `isString.isPrimitive` function from `@stdlib/assert/is-string` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( './is_number.js' );\n\n// NOTE: for the following, we explicitly avoid using stdlib packages in this particular package in order to avoid circular dependencies.\nvar abs = Math.abs; // eslint-disable-line stdlib/no-builtin-math\nvar lowercase = String.prototype.toLowerCase;\nvar uppercase = String.prototype.toUpperCase;\nvar replace = String.prototype.replace;\n\n\n// VARIABLES //\n\nvar RE_EXP_POS_DIGITS = /e\\+(\\d)$/;\nvar RE_EXP_NEG_DIGITS = /e-(\\d)$/;\nvar RE_ONLY_DIGITS = /^(\\d+)$/;\nvar RE_DIGITS_BEFORE_EXP = /^(\\d+)e/;\nvar RE_TRAILING_PERIOD_ZERO = /\\.0$/;\nvar RE_PERIOD_ZERO_EXP = /\\.0*e/;\nvar RE_ZERO_BEFORE_EXP = /(\\..*[^0])0*e/;\n\n\n// MAIN //\n\n/**\n* Formats a token object argument as a floating-point number.\n*\n* @private\n* @param {Object} token - token object\n* @throws {Error} must provide a valid floating-point number\n* @returns {string} formatted token argument\n*/\nfunction formatDouble( token ) {\n\tvar digits;\n\tvar out;\n\tvar f = parseFloat( token.arg );\n\tif ( !isFinite( f ) ) { // NOTE: We use the global `isFinite` function here instead of `@stdlib/math/base/assert/is-finite` in order to avoid circular dependencies.\n\t\tif ( !isNumber( token.arg ) ) {\n\t\t\tthrow new Error( 'invalid floating-point number. Value: ' + out );\n\t\t}\n\t\t// Case: NaN, Infinity, or -Infinity\n\t\tf = token.arg;\n\t}\n\tswitch ( token.specifier ) {\n\tcase 'e':\n\tcase 'E':\n\t\tout = f.toExponential( token.precision );\n\t\tbreak;\n\tcase 'f':\n\tcase 'F':\n\t\tout = f.toFixed( token.precision );\n\t\tbreak;\n\tcase 'g':\n\tcase 'G':\n\t\tif ( abs( f ) < 0.0001 ) {\n\t\t\tdigits = token.precision;\n\t\t\tif ( digits > 0 ) {\n\t\t\t\tdigits -= 1;\n\t\t\t}\n\t\t\tout = f.toExponential( digits );\n\t\t} else {\n\t\t\tout = f.toPrecision( token.precision );\n\t\t}\n\t\tif ( !token.alternate ) {\n\t\t\tout = replace.call( out, RE_ZERO_BEFORE_EXP, '$1e' );\n\t\t\tout = replace.call( out, RE_PERIOD_ZERO_EXP, 'e');\n\t\t\tout = replace.call( out, RE_TRAILING_PERIOD_ZERO, '' );\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tthrow new Error( 'invalid double notation. Value: ' + token.specifier );\n\t}\n\tout = replace.call( out, RE_EXP_POS_DIGITS, 'e+0$1' );\n\tout = replace.call( out, RE_EXP_NEG_DIGITS, 'e-0$1' );\n\tif ( token.alternate ) {\n\t\tout = replace.call( out, RE_ONLY_DIGITS, '$1.' );\n\t\tout = replace.call( out, RE_DIGITS_BEFORE_EXP, '$1.e' );\n\t}\n\tif ( f >= 0 && token.sign ) {\n\t\tout = token.sign + out;\n\t}\n\tout = ( token.specifier === uppercase.call( token.specifier ) ) ?\n\t\tuppercase.call( out ) :\n\t\tlowercase.call( out );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatDouble;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Returns `n` spaces.\n*\n* @private\n* @param {number} n - number of spaces\n* @returns {string} string of spaces\n*/\nfunction spaces( n ) {\n\tvar out = '';\n\tvar i;\n\tfor ( i = 0; i < n; i++ ) {\n\t\tout += ' ';\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Pads a token with spaces to the specified width.\n*\n* @private\n* @param {string} str - token argument\n* @param {number} width - token width\n* @param {boolean} [right=false] - boolean indicating whether to pad to the right\n* @returns {string} padded token argument\n*/\nfunction spacePad( str, width, right ) {\n\tvar pad = width - str.length;\n\tif ( pad < 0 ) {\n\t\treturn str;\n\t}\n\tstr = ( right ) ?\n\t\tstr + spaces( pad ) :\n\t\tspaces( pad ) + str;\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = spacePad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar formatInteger = require( './format_integer.js' );\nvar isString = require( './is_string.js' );\nvar formatDouble = require( './format_double.js' );\nvar spacePad = require( './space_pad.js' );\nvar zeroPad = require( './zero_pad.js' );\n\n\n// VARIABLES //\n\nvar fromCharCode = String.fromCharCode;\nvar isnan = isNaN; // NOTE: We use the global `isNaN` function here instead of `@stdlib/math/base/assert/is-nan` to avoid circular dependencies.\nvar isArray = Array.isArray; // NOTE: We use the global `Array.isArray` function here instead of `@stdlib/assert/is-array` to avoid circular dependencies.\n\n\n// FUNCTIONS //\n\n/**\n* Initializes token object with properties of supplied format identifier object or default values if not present.\n*\n* @private\n* @param {Object} token - format identifier object\n* @returns {Object} token object\n*/\nfunction initialize( token ) {\n\tvar out = {};\n\tout.specifier = token.specifier;\n\tout.precision = ( token.precision === void 0 ) ? 1 : token.precision;\n\tout.width = token.width;\n\tout.flags = token.flags || '';\n\tout.mapping = token.mapping;\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Generates string from a token array by interpolating values.\n*\n* @param {Array} tokens - string parts and format identifier objects\n* @param {Array} ...args - variable values\n* @throws {TypeError} first argument must be an array\n* @throws {Error} invalid flags\n* @returns {string} formatted string\n*\n* @example\n* var tokens = [ 'beep ', { 'specifier': 's' } ];\n* var out = formatInterpolate( tokens, 'boop' );\n* // returns 'beep boop'\n*/\nfunction formatInterpolate( tokens ) {\n\tvar hasPeriod;\n\tvar flags;\n\tvar token;\n\tvar flag;\n\tvar num;\n\tvar out;\n\tvar pos;\n\tvar i;\n\tvar j;\n\n\tif ( !isArray( tokens ) ) {\n\t\tthrow new TypeError( 'invalid argument. First argument must be an array. Value: `' + tokens + '`.' );\n\t}\n\tout = '';\n\tpos = 1;\n\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\ttoken = tokens[ i ];\n\t\tif ( isString( token ) ) {\n\t\t\tout += token;\n\t\t} else {\n\t\t\thasPeriod = token.precision !== void 0;\n\t\t\ttoken = initialize( token );\n\t\t\tif ( !token.specifier ) {\n\t\t\t\tthrow new TypeError( 'invalid argument. Token is missing `specifier` property. Index: `'+ i +'`. Value: `' + token + '`.' );\n\t\t\t}\n\t\t\tif ( token.mapping ) {\n\t\t\t\tpos = token.mapping;\n\t\t\t}\n\t\t\tflags = token.flags;\n\t\t\tfor ( j = 0; j < flags.length; j++ ) {\n\t\t\t\tflag = flags.charAt( j );\n\t\t\t\tswitch ( flag ) {\n\t\t\t\tcase ' ':\n\t\t\t\t\ttoken.sign = ' ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '+':\n\t\t\t\t\ttoken.sign = '+';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '-':\n\t\t\t\t\ttoken.padRight = true;\n\t\t\t\t\ttoken.padZeros = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '0':\n\t\t\t\t\ttoken.padZeros = flags.indexOf( '-' ) < 0; // NOTE: We use built-in `Array.prototype.indexOf` here instead of `@stdlib/assert/contains` in order to avoid circular dependencies.\n\t\t\t\t\tbreak;\n\t\t\t\tcase '#':\n\t\t\t\t\ttoken.alternate = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'invalid flag: ' + flag );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( token.width === '*' ) {\n\t\t\t\ttoken.width = parseInt( arguments[ pos ], 10 );\n\t\t\t\tpos += 1;\n\t\t\t\tif ( isnan( token.width ) ) {\n\t\t\t\t\tthrow new TypeError( 'the argument for * width at position ' + pos + ' is not a number. Value: `' + token.width + '`.' );\n\t\t\t\t}\n\t\t\t\tif ( token.width < 0 ) {\n\t\t\t\t\ttoken.padRight = true;\n\t\t\t\t\ttoken.width = -token.width;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( hasPeriod ) {\n\t\t\t\tif ( token.precision === '*' ) {\n\t\t\t\t\ttoken.precision = parseInt( arguments[ pos ], 10 );\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tif ( isnan( token.precision ) ) {\n\t\t\t\t\t\tthrow new TypeError( 'the argument for * precision at position ' + pos + ' is not a number. Value: `' + token.precision + '`.' );\n\t\t\t\t\t}\n\t\t\t\t\tif ( token.precision < 0 ) {\n\t\t\t\t\t\ttoken.precision = 1;\n\t\t\t\t\t\thasPeriod = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken.arg = arguments[ pos ];\n\t\t\tswitch ( token.specifier ) {\n\t\t\tcase 'b':\n\t\t\tcase 'o':\n\t\t\tcase 'x':\n\t\t\tcase 'X':\n\t\t\tcase 'd':\n\t\t\tcase 'i':\n\t\t\tcase 'u':\n\t\t\t\t// Case: %b (binary), %o (octal), %x, %X (hexadecimal), %d, %i (decimal), %u (unsigned decimal)\n\t\t\t\tif ( hasPeriod ) {\n\t\t\t\t\ttoken.padZeros = false;\n\t\t\t\t}\n\t\t\t\ttoken.arg = formatInteger( token );\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\t// Case: %s (string)\n\t\t\t\ttoken.maxWidth = ( hasPeriod ) ? token.precision : -1;\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\t// Case: %c (character)\n\t\t\t\tif ( !isnan( token.arg ) ) {\n\t\t\t\t\tnum = parseInt( token.arg, 10 );\n\t\t\t\t\tif ( num < 0 || num > 127 ) {\n\t\t\t\t\t\tthrow new Error( 'invalid character code. Value: ' + token.arg );\n\t\t\t\t\t}\n\t\t\t\t\ttoken.arg = ( isnan( num ) ) ?\n\t\t\t\t\t\tString( token.arg ) :\n\t\t\t\t\t\tfromCharCode( num );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'e':\n\t\t\tcase 'E':\n\t\t\tcase 'f':\n\t\t\tcase 'F':\n\t\t\tcase 'g':\n\t\t\tcase 'G':\n\t\t\t\t// Case: %e, %E (scientific notation), %f, %F (decimal floating point), %g, %G (uses the shorter of %e/E or %f/F)\n\t\t\t\tif ( !hasPeriod ) {\n\t\t\t\t\ttoken.precision = 6;\n\t\t\t\t}\n\t\t\t\ttoken.arg = formatDouble( token );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'invalid specifier: ' + token.specifier );\n\t\t\t}\n\t\t\t// Fit argument into field width...\n\t\t\tif ( token.maxWidth >= 0 && token.arg.length > token.maxWidth ) {\n\t\t\t\ttoken.arg = token.arg.substring( 0, token.maxWidth );\n\t\t\t}\n\t\t\tif ( token.padZeros ) {\n\t\t\t\ttoken.arg = zeroPad( token.arg, token.width || token.precision, token.padRight ); // eslint-disable-line max-len\n\t\t\t} else if ( token.width ) {\n\t\t\t\ttoken.arg = spacePad( token.arg, token.width, token.padRight );\n\t\t\t}\n\t\t\tout += token.arg || '';\n\t\t\tpos += 1;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatInterpolate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate string from a token array by interpolating values.\n*\n* @module @stdlib/string/base/format-interpolate\n*\n* @example\n* var formatInterpolate = require( '@stdlib/string/base/format-interpolate' );\n*\n* var tokens = ['Hello ', { 'specifier': 's' }, '!' ];\n* var out = formatInterpolate( tokens, 'World' );\n* // returns 'Hello World!'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE = /%(?:([1-9]\\d*)\\$)?([0 +\\-#]*)(\\*|\\d+)?(?:(\\.)(\\*|\\d+)?)?[hlL]?([%A-Za-z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Parses a delimiter.\n*\n* @private\n* @param {Array} match - regular expression match\n* @returns {Object} delimiter token object\n*/\nfunction parse( match ) {\n\tvar token = {\n\t\t'mapping': ( match[ 1 ] ) ? parseInt( match[ 1 ], 10 ) : void 0,\n\t\t'flags': match[ 2 ],\n\t\t'width': match[ 3 ],\n\t\t'precision': match[ 5 ],\n\t\t'specifier': match[ 6 ]\n\t};\n\tif ( match[ 4 ] === '.' && match[ 5 ] === void 0 ) {\n\t\ttoken.precision = '1';\n\t}\n\treturn token;\n}\n\n\n// MAIN //\n\n/**\n* Tokenizes a string into an array of string parts and format identifier objects.\n*\n* @param {string} str - input string\n* @returns {Array} tokens\n*\n* @example\n* var tokens = formatTokenize( 'Hello %s!' );\n* // returns [ 'Hello ', {...}, '!' ]\n*/\nfunction formatTokenize( str ) {\n\tvar content;\n\tvar tokens;\n\tvar match;\n\tvar prev;\n\n\ttokens = [];\n\tprev = 0;\n\tmatch = RE.exec( str );\n\twhile ( match ) {\n\t\tcontent = str.slice( prev, RE.lastIndex - match[ 0 ].length );\n\t\tif ( content.length ) {\n\t\t\ttokens.push( content );\n\t\t}\n\t\ttokens.push( parse( match ) );\n\t\tprev = RE.lastIndex;\n\t\tmatch = RE.exec( str );\n\t}\n\tcontent = str.slice( prev );\n\tif ( content.length ) {\n\t\ttokens.push( content );\n\t}\n\treturn tokens;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatTokenize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tokenize a string into an array of string parts and format identifier objects.\n*\n* @module @stdlib/string/base/format-tokenize\n*\n* @example\n* var formatTokenize = require( '@stdlib/string/base/format-tokenize' );\n*\n* var str = 'Hello %s!';\n* var tokens = formatTokenize( str );\n* // returns [ 'Hello ', {...}, '!' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a string primitive\n*\n* @example\n* var bool = isString( 'beep' );\n* // returns true\n*\n* @example\n* var bool = isString( new String( 'beep' ) );\n* // returns false\n*/\nfunction isString( value ) {\n\treturn ( typeof value === 'string' ); // NOTE: we inline the `isString.isPrimitive` function from `@stdlib/assert/is-string` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar interpolate = require( './../../base/format-interpolate' );\nvar tokenize = require( './../../base/format-tokenize' );\nvar isString = require( './is_string.js' );\n\n\n// MAIN //\n\n/**\n* Inserts supplied variable values into a format string.\n*\n* @param {string} str - input string\n* @param {Array} ...args - variable values\n* @throws {TypeError} first argument must be a string\n* @throws {Error} invalid flags\n* @returns {string} formatted string\n*\n* @example\n* var str = format( 'Hello %s!', 'world' );\n* // returns 'Hello world!'\n*\n* @example\n* var str = format( 'Pi: ~%.2f', 3.141592653589793 );\n* // returns 'Pi: ~3.14'\n*/\nfunction format( str ) {\n\tvar args;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\targs = [ tokenize( str ) ];\n\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\targs.push( arguments[ i ] );\n\t}\n\treturn interpolate.apply( null, args );\n}\n\n\n// EXPORTS //\n\nmodule.exports = format;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Insert supplied variable values into a format string.\n*\n* @module @stdlib/string/format\n*\n* @example\n* var format = require( '@stdlib/string/format' );\n*\n* var out = format( '%s %s!', 'Hello', 'World' );\n* // returns 'Hello World!'\n*\n* out = format( 'Pi: ~%.2f', 3.141592653589793 );\n* // returns 'Pi: ~3.14'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {RegExp} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string/base/capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer);\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\treturn str.replace( search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string/base/replace\n*\n* @example\n* var replace = require( '@stdlib/string/base/replace' );\n*\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isRegExp = require( '@stdlib/assert/is-regexp' );\nvar format = require( './../../format' );\nvar base = require( './../../base/replace' );\n\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {(string|RegExp)} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument argument must be a string or regular expression\n* @throws {TypeError} third argument must be a string or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'beep';\n* var out = replace( str, 'e', 'o' );\n* // returns 'boop'\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string/capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer);\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( isString( search ) ) {\n\t\tsearch = new RegExp( rescape( search ), 'g' );\n\t} else if ( !isRegExp( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string or regular expression. Value: `%s`.', search ) );\n\t}\n\tif ( !isString( newval ) && !isFunction( newval ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string or replacement function. Value: `%s`.', newval ) );\n\t}\n\treturn base( str, search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string/replace\n*\n* @example\n* var replace = require( '@stdlib/string/replace' );\n*\n* var str = 'beep';\n* var out = replace( str, 'e', 'o' );\n* // returns 'boop'\n*\n* str = 'Hello World';\n* out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar replace = require( './../../replace' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar RE = /[!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]]/g; // eslint-disable-line no-useless-escape\n\n\n// MAIN //\n\n/**\n* Removes punctuation characters from a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} output string\n*\n* @example\n* var str = 'Sun Tzu said: \"A leader leads by example not by force.\"';\n* var out = removePunctuation( str );\n* // returns 'Sun Tzu said A leader leads by example not by force'\n*\n* @example\n* var str = 'Double, double, toil and trouble; Fire burn, and cauldron bubble!';\n* var out = removePunctuation( str );\n* // returns 'Double double toil and trouble Fire burn and cauldron bubble'\n*\n* @example\n* var str = 'This module removes these characters: `{}[]:,!/<>().;~|?\\'\"';\n* var out = removePunctuation( str );\n* // returns 'This module removes these characters '\n*/\nfunction removePunctuation( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removePunctuation;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove punctuation characters from a string.\n*\n* @module @stdlib/string/remove-punctuation\n*\n* @example\n* var removePunctuation = require( '@stdlib/string/remove-punctuation' );\n*\n* var out = removePunctuation( 'Sun Tzu said: \"A leader leads by example not by force.\"' );\n* // returns 'Sun Tzu said A leader leads by example not by force'\n*\n* out = removePunctuation( 'Double, double, toil and trouble; Fire burn, and cauldron bubble!' ) );\n* // returns 'Double double toil and trouble Fire burn and cauldron bubble'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to uppercase.\n*\n* @param {string} str - string to convert\n* @returns {string} uppercase string\n*\n* @example\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\nfunction uppercase( str ) {\n\treturn str.toUpperCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = uppercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to uppercase.\n*\n* @module @stdlib/string/base/uppercase\n*\n* @example\n* var uppercase = require( '@stdlib/string/base/uppercase' );\n*\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\treturn str.toLowerCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string/base/lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string/base/lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar isEmptyArray = require( '@stdlib/assert/is-empty-array' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {StringArray} [options.stopwords] - array of custom stop words\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'stopwords': [ 'of' ]\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'stopwords' ) ) {\n\t\topts.stopwords = options.stopwords;\n\t\tif (\n\t\t\t!isStringArray( opts.stopwords ) &&\n\t\t\t!isEmptyArray( opts.stopwords )\n\t\t) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be an array of strings. Option: `%s`.', 'stopwords', opts.stopwords ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "[\n \"a\",\n \"all\",\n \"also\",\n \"although\",\n \"an\",\n \"and\",\n \"any\",\n \"are\",\n \"as\",\n \"at\",\n \"b\",\n \"be\",\n \"been\",\n \"but\",\n \"by\",\n \"c\",\n \"could\",\n \"d\",\n \"e\",\n \"each\",\n \"eg\",\n \"either\",\n \"even\",\n \"ever\",\n \"ex\",\n \"except\",\n \"f\",\n \"far\",\n \"few\",\n \"for\",\n \"from\",\n \"further\",\n \"g\",\n \"get\",\n \"gets\",\n \"given\",\n \"gives\",\n \"go\",\n \"going\",\n \"got\",\n \"h\",\n \"had\",\n \"has\",\n \"have\",\n \"having\",\n \"he\",\n \"her\",\n \"here\",\n \"herself\",\n \"him\",\n \"himself\",\n \"his\",\n \"how\",\n \"i\",\n \"ie\",\n \"if\",\n \"in\",\n \"into\",\n \"is\",\n \"it\",\n \"its\",\n \"itself\",\n \"j\",\n \"just\",\n \"k\",\n \"l\",\n \"less\",\n \"let\",\n \"m\",\n \"many\",\n \"may\",\n \"me\",\n \"might\",\n \"must\",\n \"my\",\n \"myself\",\n \"n\",\n \"need\",\n \"needs\",\n \"next\",\n \"no\",\n \"non\",\n \"not\",\n \"now\",\n \"o\",\n \"of\",\n \"off\",\n \"old\",\n \"on\",\n \"once\",\n \"only\",\n \"or\",\n \"our\",\n \"out\",\n \"p\",\n \"per\",\n \"put\",\n \"q\",\n \"r\",\n \"s\",\n \"same\",\n \"shall\",\n \"she\",\n \"should\",\n \"since\",\n \"so\",\n \"such\",\n \"sure\",\n \"t\",\n \"than\",\n \"that\",\n \"the\",\n \"their\",\n \"them\",\n \"then\",\n \"there\",\n \"these\",\n \"they\",\n \"this\",\n \"those\",\n \"though\",\n \"thus\",\n \"to\",\n \"too\",\n \"u\",\n \"us\",\n \"v\",\n \"w\",\n \"was\",\n \"we\",\n \"well\",\n \"went\",\n \"were\",\n \"what\",\n \"when\",\n \"where\",\n \"which\",\n \"who\",\n \"whose\",\n \"why\",\n \"will\",\n \"would\",\n \"x\",\n \"y\",\n \"yet\",\n \"z\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar removePunctuation = require( './../../remove-punctuation' );\nvar tokenize = require( '@stdlib/nlp/tokenize' );\nvar replace = require( './../../base/replace' );\nvar uppercase = require( './../../base/uppercase' );\nvar lowercase = require( './../../base/lowercase' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar format = require( './../../format' );\nvar validate = require( './validate.js' );\nvar STOPWORDS = require( './stopwords.json' );\n\n\n// VARIABLES //\n\nvar RE_HYPHEN = /-/g;\n\n\n// MAIN //\n\n/**\n* Generates an acronym for a given string.\n*\n* ## Notes\n*\n* - The acronym is generated by capitalizing the first letter of each word in the string.\n* - The function removes stop words from the string before generating the acronym.\n* - The function splits hyphenated words and uses the first character of each hyphenated part.\n*\n* @param {string} str - input string\n* @param {Options} [options] - function options\n* @param {StringArray} [options.stopwords] - custom stop words\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} must provide valid options\n* @returns {string} generated acronym\n*\n* @example\n* var out = acronym( 'the quick brown fox' );\n* // returns 'QBF'\n*\n* @example\n* var out = acronym( 'Hard-boiled eggs' );\n* // returns 'HBE'\n*\n* @example\n* var out = acronym( 'National Association of Securities Dealers Automated Quotation' );\n* // returns 'NASDAQ'\n*/\nfunction acronym( str, options ) {\n\tvar isStopWord;\n\tvar words;\n\tvar opts;\n\tvar err;\n\tvar out;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tisStopWord = contains( opts.stopwords || STOPWORDS );\n\tstr = removePunctuation( str );\n\tstr = replace( str, RE_HYPHEN, ' ' );\n\twords = tokenize( str );\n\tout = '';\n\tfor ( i = 0; i < words.length; i++ ) {\n\t\tif ( isStopWord( lowercase( words[ i ] ) ) === false ) {\n\t\t\tout += uppercase( words[ i ].charAt( 0 ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = acronym;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate an acronym for a given string.\n*\n* @module @stdlib/string/acronym\n*\n* @example\n* var acronym = require( '@stdlib/string/acronym' );\n*\n* var out = acronym( 'National Association of Securities Dealers Automated Quotation' );\n* // returns 'NASDAQ'\n*\n* out = acronym( 'To be determined...', {\n* 'stopwords': []\n* });\n* // returns 'TBD'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Capitalizes the first character in a string.\n*\n* @param {string} str - input string\n* @returns {string} capitalized string\n*\n* @example\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* @example\n* var out = capitalize( 'presidential election' );\n* // returns 'Presidential election'\n*\n* @example\n* var out = capitalize( 'javaScript' );\n* // returns 'JavaScript'\n*\n* @example\n* var out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures'\n*/\nfunction capitalize( str ) {\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = capitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first character in a string.\n*\n* @module @stdlib/string/base/capitalize\n*\n* @example\n* var capitalize = require( '@stdlib/string/base/capitalize' );\n*\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trim !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar trim = String.prototype.trim;\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar trim = require( './builtin.js' );\n\n\n// VARIABLES //\n\nvar str1 = ' \\n\\t\\r\\n\\f\\v\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar str2 = '\\u180e';\n\n\n// MAIN //\n\n/**\n* Tests the built-in `String.prototype.trim()` implementation when provided whitespace.\n*\n* ## Notes\n*\n* - For context, see . In short, we can only rely on the built-in `trim` method when it does not consider the Mongolian space separator as whitespace.\n*\n* @private\n* @returns {boolean} boolean indicating whether the built-in implementation returns the expected value\n*\n* @example\n* var b = test();\n* // returns \n*/\nfunction test() {\n\treturn ( trim.call( str1 ) === '' ) && ( trim.call( str2 ) === str2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = test;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*([\\S\\s]*?)[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn replace( str, RE, '$1' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string/base/trim\n*\n* @example\n* var trim = require( '@stdlib/string/base/trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar check = require( './check.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar trim;\nif ( HAS_BUILTIN && check() ) {\n\ttrim = main;\n} else {\n\ttrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar capitalize = require( './../../../base/capitalize' );\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_TO_CAMEL = /(?:\\s|^)([^\\s]+)(?=\\s|$)/g;\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Converts first capture group to uppercase.\n*\n* @private\n* @param {string} match - entire match\n* @param {string} p1 - first capture group\n* @param {number} offset - offset of the matched substring in entire string\n* @returns {string} uppercased capture group\n*/\nfunction replacer( match, p1, offset ) {\n\tp1 = lowercase( p1 );\n\treturn ( offset === 0 ) ? p1 : capitalize( p1 );\n}\n\n\n// MAIN //\n\n/**\n* Converts a string to camel case.\n*\n* @param {string} str - string to convert\n* @returns {string} camel-cased string\n*\n* @example\n* var out = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* @example\n* var out = camelcase( 'IS_MOBILE' );\n* // returns 'isMobile'\n*\n* @example\n* var out = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*\n* @example\n* var out = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*/\nfunction camelcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_WHITESPACE, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\treturn replace( str, RE_TO_CAMEL, replacer );\n}\n\n\n// EXPORTS //\n\nmodule.exports = camelcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to camel case.\n*\n* @module @stdlib/string/base/camelcase\n*\n* @example\n* var camelcase = require( '@stdlib/string/base/camelcase' );\n*\n* var str = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* str = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*\n* str = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\n// Factors for converting individual surrogates...\nvar Ox10000 = 0x10000|0; // 65536\nvar Ox400 = 0x400|0; // 1024\n\n// Range for a high surrogate\nvar OxD800 = 0xD800|0; // 55296\nvar OxDBFF = 0xDBFF|0; // 56319\n\n// Range for a low surrogate\nvar OxDC00 = 0xDC00|0; // 56320\nvar OxDFFF = 0xDFFF|0; // 57343\n\n\n// MAIN //\n\n/**\n* Returns a Unicode code point from a string at a specified position.\n*\n* ## Notes\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words: a high and a low surrogate.\n*\n* @param {string} str - input string\n* @param {integer} idx - position\n* @param {boolean} backward - backward iteration for low surrogates\n* @returns {NonNegativeInteger} code point\n*\n* @example\n* var out = codePointAt( 'last man standing', 4, false );\n* // returns 32\n*\n* @example\n* var out = codePointAt( 'presidential election', 8, true );\n* // returns 116\n*\n* @example\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2, false );\n* // returns 2369\n*\n* @example\n* var out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\nfunction codePointAt( str, idx, backward ) {\n\tvar code;\n\tvar low;\n\tvar hi;\n\n\tif ( idx < 0 ) {\n\t\tidx += str.length;\n\t}\n\tcode = str.charCodeAt( idx );\n\n\t// High surrogate\n\tif ( code >= OxD800 && code <= OxDBFF && idx < str.length - 1 ) {\n\t\thi = code;\n\t\tlow = str.charCodeAt( idx+1 );\n\t\tif ( OxDC00 <= low && low <= OxDFFF ) {\n\t\t\treturn ( ( hi - OxD800 ) * Ox400 ) + ( low - OxDC00 ) + Ox10000;\n\t\t}\n\t\treturn hi;\n\t}\n\t// Low surrogate - support only if backward iteration is desired\n\tif ( backward ) {\n\t\tif ( code >= OxDC00 && code <= OxDFFF && idx >= 1 ) {\n\t\t\thi = str.charCodeAt( idx-1 );\n\t\t\tlow = code;\n\t\t\tif ( OxD800 <= hi && hi <= OxDBFF ) {\n\t\t\t\treturn ( ( hi - OxD800 ) * Ox400 ) + ( low - OxDC00 ) + Ox10000;\n\t\t\t}\n\t\t\treturn low;\n\t\t}\n\t}\n\treturn code;\n}\n\n\n// EXPORTS //\n\nmodule.exports = codePointAt;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a Unicode code point from a string at a specified position.\n*\n* @module @stdlib/string/base/code-point-at\n*\n* @example\n* var codePointAt = require( '@stdlib/string/base/code-point-at' );\n*\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2, false );\n* // returns 2369\n*\n* out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar uppercase = require( './../../../base/uppercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to constant case.\n*\n* @param {string} str - string to convert\n* @returns {string} constant-cased string\n*\n* @example\n* var str = constantcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = constantcase( 'beep boop' );\n* // returns 'BEEP_BOOP'\n*\n* @example\n* var str = constantcase( 'isMobile' );\n* // returns 'IS_MOBILE'\n*\n* @example\n* var str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*/\nfunction constantcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '_' );\n\treturn uppercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = constantcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to constant case.\n*\n* @module @stdlib/string/base/constantcase\n*\n* @example\n* var constantcase = require( '@stdlib/string/base/constantcase' );\n*\n* var str = constantcase( 'aBcDeF' );\n* // returns 'ABCDEF'\n*\n* str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*\n* str = constantcase( 'I am a robot' );\n* // returns 'I_AM_A_ROBOT'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../../../format' );\nvar min = require( '@stdlib/math/base/special/min' );\n\n\n// MAIN //\n\n/**\n* Calculates the Levenshtein (edit) distance between two strings.\n*\n* @param {string} s1 - first string value\n* @param {string} s2 - second string value\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {NonNegativeInteger} Levenshtein distance\n*\n* @example\n* var distance = levenshteinDistance( 'algorithm', 'altruistic' );\n* // returns 6\n*/\nfunction levenshteinDistance( s1, s2 ) {\n\tvar temp;\n\tvar row;\n\tvar pre;\n\tvar m;\n\tvar n;\n\tvar i;\n\tvar j;\n\tvar k;\n\n\tif ( !isString( s1 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', s1 ) );\n\t}\n\tif ( !isString( s2 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', s2 ) );\n\t}\n\tn = s1.length;\n\tm = s2.length;\n\n\t// If either string is empty, the edit distance is equal to the number of characters in the non-empty string...\n\tif ( n === 0 ) {\n\t\treturn m;\n\t}\n\tif ( m === 0 ) {\n\t\treturn n;\n\t}\n\n\trow = [];\n\tfor ( i = 0; i <= m; i++ ) {\n\t\trow.push( i );\n\t}\n\n\tfor ( i = 0; i < n; i++ ) {\n\t\tpre = row[ 0 ];\n\t\trow[ 0 ] = i + 1;\n\t\tfor ( j = 0; j < m; j++ ) {\n\t\t\tk = j + 1;\n\t\t\ttemp = row[ k ];\n\t\t\tif ( s1[ i ] === s2[ j ] ) {\n\t\t\t\trow[ k ] = pre;\n\t\t\t} else {\n\t\t\t\trow[ k ] = min( pre, min( row[ j ], row[ k ] ) ) + 1;\n\t\t\t}\n\t\t\tpre = temp;\n\t\t}\n\t}\n\treturn row[ m ];\n}\n\n\n// EXPORTS //\n\nmodule.exports = levenshteinDistance;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Calculate the Levenshtein (edit) distance between two strings.\n*\n* @module @stdlib/string/base/distances/levenshtein\n*\n* @example\n* var levenshteinDistance = require( '@stdlib/string/base/distances/levenshtein' );\n*\n* var dist = levenshteinDistance( 'fly', 'ant' );\n* // returns 3\n*\n* dist = levenshteinDistance( 'frog', 'fog' );\n* // returns 1\n*\n* dist = levenshteinDistance( 'javascript', 'typescript' );\n* // returns 4\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name levenshteinDistance\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/distances/levenshtein}\n*/\nsetReadOnly( ns, 'levenshteinDistance', require( './../../../base/distances/levenshtein' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to dot case.\n*\n* @param {string} str - string to convert\n* @returns {string} dot-cased string\n*\n* @example\n* var str = dotcase( 'beep' );\n* // returns 'beep'\n*\n* @example\n* var str = dotcase( 'beep boop' );\n* // returns 'beep.boop'\n*\n* @example\n* var str = dotcase( 'isMobile' );\n* // returns 'is.mobile'\n*\n* @example\n* var str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*/\nfunction dotcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '.' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dotcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to dot case.\n*\n* @module @stdlib/string/base/dotcase\n*\n* @example\n* var dotcase = require( '@stdlib/string/base/dotcase' );\n*\n* var str = dotcase( 'aBcDeF' );\n* // returns 'abcdef'\n*\n* str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*\n* str = dotcase( 'I am a robot' );\n* // returns 'i.am.a.robot'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.endsWith !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests if a string ends with the characters of another string.\n*\n* ## Notes\n*\n* - The last parameter restricts the search to a substring within the input string beginning from the leftmost character. If provided a negative value, `len` indicates to ignore the last `len` characters, and is thus equivalent to `str.length + len`.\n*\n* @private\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} len - substring length\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tvar idx;\n\tvar N;\n\tvar i;\n\n\tN = search.length;\n\tif ( len === 0 ) {\n\t\treturn ( N === 0 );\n\t}\n\tif ( len < 0 ) {\n\t\tidx = str.length + len;\n\t} else {\n\t\tidx = len;\n\t}\n\tif ( N === 0 ) {\n\t\t// Based on the premise that every string can be \"surrounded\" by empty strings (e.g., \"\" + \"a\" + \"\" + \"b\" + \"\" === \"ab\"):\n\t\treturn true;\n\t}\n\tidx -= N;\n\tif ( idx < 0 ) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < N; i++) {\n\t\tif ( str.charCodeAt( idx + i ) !== search.charCodeAt( i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar endsWith = String.prototype.endsWith;\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Tests if a string ends with the characters of another string.\n*\n* ## Notes\n*\n* - The last parameter restricts the search to a substring within the input string beginning from the leftmost character. If provided a negative value, `len` indicates to ignore the last `len` characters, and is thus equivalent to `str.length + len`.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} len - substring length\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tvar idx;\n\tvar N;\n\n\tN = search.length;\n\tif ( len === 0 ) {\n\t\treturn ( N === 0 );\n\t}\n\tif ( len < 0 ) {\n\t\tidx = str.length + len;\n\t} else {\n\t\tidx = len;\n\t}\n\tif ( N === 0 ) {\n\t\t// Based on the premise that every string can be \"surrounded\" by empty strings (e.g., \"\" + \"a\" + \"\" + \"b\" + \"\" === \"ab\"):\n\t\treturn true;\n\t}\n\tif ( idx - N < 0 || idx > str.length ) {\n\t\treturn false;\n\t}\n\treturn builtin.call( str, search, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @module @stdlib/string/base/ends-with\n*\n* @example\n* var endsWith = require( '@stdlib/string/base/ends-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n*\n* var bool = endsWith( str, 'air', str.length );\n* // returns true\n*\n* bool = endsWith( str, 'fair', str.length );\n* // returns false\n*\n* bool = endsWith( str, 'fair', 30 );\n* // returns true\n*\n* bool = endsWith( str, 'fair', -34 );\n* // returns true\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar endsWith;\nif ( HAS_BUILTIN ) {\n\tendsWith = main;\n} else {\n\tendsWith = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the first `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*/\nfunction first( str, n ) {\n\treturn str.substring( 0, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/first\n*\n* @example\n* var first = require( '@stdlib/string/base/first' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar RE_UTF16_SURROGATE_PAIR = require( '@stdlib/regexp/utf16-surrogate-pair' ).REGEXP;\n\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Returns the first `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*/\nfunction first( str, n ) {\n\tvar len;\n\tvar out;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( str === '' || n === 0 ) {\n\t\treturn '';\n\t}\n\tif ( n === 1 ) {\n\t\tstr = str.substring( 0, 2 );\n\t\tif ( RE_UTF16_SURROGATE_PAIR.test( str ) ) {\n\t\t\treturn str;\n\t\t}\n\t\treturn str[ 0 ];\n\t}\n\tlen = str.length;\n\tout = '';\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tout += ch1;\n\t\tcnt += 1;\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tout += ch2;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/first-code-point\n*\n* @example\n* var first = require( '@stdlib/string/base/first-code-point' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/code-point-at' );\n\n\n// MAIN //\n\n/**\n* Returns a Unicode code point from a string at a specified position.\n*\n* @param {string} str - input string\n* @param {integer} idx - position\n* @param {boolean} [backward=false] - backward iteration for low surrogates\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @throws {TypeError} third argument must be a boolean\n* @throws {RangeError} position must be a valid index in string\n* @returns {NonNegativeInteger} code point\n*\n* @example\n* var out = codePointAt( 'last man standing', 4 );\n* // returns 32\n*\n* @example\n* var out = codePointAt( 'presidential election', 8, true );\n* // returns 116\n*\n* @example\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 2369\n*\n* @example\n* var out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\nfunction codePointAt( str, idx, backward ) {\n\tvar FLG;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += str.length;\n\t}\n\tif ( idx < 0 || idx >= str.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.', idx ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isBoolean( backward ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a boolean. Value: `%s`.', backward ) );\n\t\t}\n\t\tFLG = backward;\n\t} else {\n\t\tFLG = false;\n\t}\n\treturn base( str, idx, FLG );\n}\n\n\n// EXPORTS //\n\nmodule.exports = codePointAt;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a Unicode code point from a string at a specified position.\n*\n* @module @stdlib/string/code-point-at\n*\n* @example\n* var codePointAt = require( '@stdlib/string/code-point-at' );\n*\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 2369\n*\n* out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar consts = {\n\t'CR': 0,\n\t'LF': 1,\n\t'Control': 2,\n\t'Extend': 3,\n\t'RegionalIndicator': 4,\n\t'SpacingMark': 5,\n\t'L': 6,\n\t'V': 7,\n\t'T': 8,\n\t'LV': 9,\n\t'LVT': 10,\n\t'Other': 11,\n\t'Prepend': 12,\n\t'ZWJ': 13,\n\t'NotBreak': 0,\n\t'BreakStart': 1,\n\t'Break': 2,\n\t'BreakLastRegional': 3,\n\t'BreakPenultimateRegional': 4,\n\t'ExtendedPictographic': 101\n};\n\n\n// EXPORTS //\n\nmodule.exports = consts;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// FUNCTIONS //\n\n/**\n* Returns number of elements in array equal to a provided value.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - input value\n* @returns {NonNegativeInteger} number of elements in array equal to a provided value\n*/\nfunction count( arr, start, end, value ) {\n\tvar cnt;\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tcnt = 0;\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\tcnt += 1;\n\t\t}\n\t}\n\treturn cnt;\n}\n\n/**\n* Returns whether every indexed array element is equal to a provided value.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {boolean} boolean indicating whether all the values in array in the given range are equal to the provided value\n*/\nfunction every( arr, start, end, value ) {\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] !== value ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Returns the index of the first occurrence of a value in a provided array.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {integer} index of the first occurrence\n*/\nfunction indexOf( arr, start, end, value ) {\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n* Returns the index of the last occurrence of a value in a provided array.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index at which to start searching backwards (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {integer} index of the last occurrence\n*/\nfunction lastIndexOf( arr, start, end, value ) {\n\tvar i;\n\n\tif ( start >= arr.length-1 ) {\n\t\tstart = arr.length - 1;\n\t}\n\tfor ( i = start; i >= end; i-- ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n// MAIN //\n\n/**\n* Returns the break type between grapheme breaking classes according to _UAX #29 3.1.1 Grapheme Cluster Boundary Rules_ on extended grapheme clusters.\n*\n* @private\n* @param {Array} breaks - list of grapheme break properties\n* @param {Array} emoji - list of emoji properties\n* @returns {NonNegativeInteger} break type\n*\n* @example\n* var out = breakType( [ 11, 3, 11 ], [ 11, 11, 11 ] );\n* // returns 1\n*/\nfunction breakType( breaks, emoji ) {\n\tvar nextEmoji;\n\tvar next;\n\tvar prev;\n\tvar idx;\n\tvar N;\n\tvar M;\n\n\tN = breaks.length;\n\tM = N - 1;\n\n\tprev = breaks[ M-1 ];\n\tnext = breaks[ M ];\n\tnextEmoji = emoji[ M ];\n\n\tidx = lastIndexOf( breaks, M, 0, constants.RegionalIndicator );\n\tif (\n\t\tidx > 0 &&\n\t\tprev !== constants.Prepend &&\n\t\tprev !== constants.RegionalIndicator &&\n\t\tevery( breaks, 1, idx-1, constants.RegionalIndicator )\n\t) {\n\t\tif ( count( breaks, 0, M, constants.RegionalIndicator ) % 2 === 1 ) {\n\t\t\treturn constants.BreakLastRegional;\n\t\t}\n\t\treturn constants.BreakPenultimateRegional;\n\t}\n\t// GB3: CR \u00D7 LF\n\tif (\n\t\tprev === constants.CR &&\n\t\tnext === constants.LF\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB4: (Control|CR|LF) \u00F7\n\tif (\n\t\tprev === constants.Control ||\n\t\tprev === constants.CR ||\n\t\tprev === constants.LF\n\t) {\n\t\treturn constants.BreakStart;\n\t}\n\t// GB5: \u00F7 (Control|CR|LF)\n\tif (\n\t\tnext === constants.Control ||\n\t\tnext === constants.CR ||\n\t\tnext === constants.LF\n\t) {\n\t\treturn constants.BreakStart;\n\t}\n\t// GB6: L \u00D7 (L|V|LV|LVT)\n\tif (\n\t\tprev === constants.L &&\n\t\t(\n\t\t\tnext === constants.L ||\n\t\t\tnext === constants.V ||\n\t\t\tnext === constants.LV ||\n\t\t\tnext === constants.LVT\n\t\t)\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB7: (LV|V) \u00D7 (V|T)\n\tif (\n\t\t( prev === constants.LV || prev === constants.V ) &&\n\t\t( next === constants.V || next === constants.T )\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB8: (LVT|T) \u00D7 (T)\n\tif (\n\t\t( prev === constants.LVT || prev === constants.T ) &&\n\t\tnext === constants.T\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9: \u00D7 (Extend|ZWJ)\n\tif (\n\t\tnext === constants.Extend ||\n\t\tnext === constants.ZWJ\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9a: \u00D7 SpacingMark\n\tif ( next === constants.SpacingMark ) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9b: Prepend \u00D7\n\tif ( prev === constants.Prepend ) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB11: \\p{Extended_Pictographic} Extend* ZWJ \u00D7 \\p{Extended_Pictographic}\n\tidx = lastIndexOf( emoji, M-1, 0, constants.ExtendedPictographic );\n\tif (\n\t\tidx >= 0 &&\n\t\tprev === constants.ZWJ &&\n\t\tnextEmoji === constants.ExtendedPictographic &&\n\t\temoji[ idx ] === constants.ExtendedPictographic &&\n\t\tevery( breaks, idx+1, M-2, constants.Extend )\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB12: ^ (RI RI)* RI \u00D7 RI\n\t// GB13: [^RI] (RI RI)* RI \u00D7 RI\n\tif ( indexOf( breaks, 1, M-1, constants.RegionalIndicator ) >= 0 ) {\n\t\treturn constants.Break;\n\t}\n\tif (\n\t\tprev === constants.RegionalIndicator &&\n\t\tnext === constants.RegionalIndicator\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB999: Any ? Any\n\treturn constants.BreakStart;\n}\n\n\n// EXPORTS //\n\nmodule.exports = breakType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// MAIN //\n\n/**\n* Returns the emoji property from the [Unicode Standard][1].\n*\n* [1]: https://www.unicode.org/Public/13.0.0/ucd/emoji/emoji-data.txt\n*\n* @private\n* @param {NonNegativeInteger} code - Unicode code point\n* @returns {NonNegativeInteger} emoji property\n*\n* @example\n* var out = emojiProperty( 0x23EC );\n* // returns 101\n*\n* @example\n* var out = emojiProperty( 0x1FFFE );\n* // returns 11\n*/\nfunction emojiProperty( code ) {\n\tif (\n\t\tcode === 0x00A9 || // E0.6 [1] (\u00A9\uFE0F) copyright\n\t\tcode === 0x00AE || // E0.6 [1] (\u00AE\uFE0F) registered\n\t\tcode === 0x203C || // E0.6 [1] (\u203C\uFE0F) double exclamation mark\n\t\tcode === 0x2049 || // E0.6 [1] (\u2049\uFE0F) exclamation question mark\n\t\tcode === 0x2122 || // E0.6 [1] (\u2122\uFE0F) trade mark\n\t\tcode === 0x2139 || // E0.6 [1] (\u2139\uFE0F) information\n\t\t( 0x2194 <= code && code <= 0x2199 ) || // E0.6 [6] (\u2194\uFE0F..\u2199\uFE0F) left-right arrow..down-left arrow\n\t\t( 0x21A9 <= code && code <= 0x21AA ) || // E0.6 [2] (\u21A9\uFE0F..\u21AA\uFE0F) right arrow curving left..left arrow curving right\n\t\t( 0x231A <= code && code <= 0x231B ) || // E0.6 [2] (\u231A..\u231B) watch..hourglass done\n\t\tcode === 0x2328 || // E1.0 [1] (\u2328\uFE0F) keyboard\n\t\tcode === 0x2388 || // E0.0 [1] (\u2388) HELM SYMBOL\n\t\tcode === 0x23CF || // E1.0 [1] (\u23CF\uFE0F) eject button\n\t\t( 0x23E9 <= code && code <= 0x23EC ) || // E0.6 [4] (\u23E9..\u23EC) fast-forward button..fast down button\n\t\t( 0x23ED <= code && code <= 0x23EE ) || // E0.7 [2] (\u23ED\uFE0F..\u23EE\uFE0F) next track button..last track button\n\t\tcode === 0x23EF || // E1.0 [1] (\u23EF\uFE0F) play or pause button\n\t\tcode === 0x23F0 || // E0.6 [1] (\u23F0) alarm clock\n\t\t( 0x23F1 <= code && code <= 0x23F2 ) || // E1.0 [2] (\u23F1\uFE0F..\u23F2\uFE0F) stopwatch..timer clock\n\t\tcode === 0x23F3 || // E0.6 [1] (\u23F3) hourglass not done\n\t\t( 0x23F8 <= code && code <= 0x23FA ) || // E0.7 [3] (\u23F8\uFE0F..\u23FA\uFE0F) pause button..record button\n\t\tcode === 0x24C2 || // E0.6 [1] (\u24C2\uFE0F) circled M\n\t\t( 0x25AA <= code && code <= 0x25AB ) || // E0.6 [2] (\u25AA\uFE0F..\u25AB\uFE0F) black small square..white small square\n\t\tcode === 0x25B6 || // E0.6 [1] (\u25B6\uFE0F) play button\n\t\tcode === 0x25C0 || // E0.6 [1] (\u25C0\uFE0F) reverse button\n\t\t( 0x25FB <= code && code <= 0x25FE ) || // E0.6 [4] (\u25FB\uFE0F..\u25FE) white medium square..black medium-small square\n\t\t( 0x2600 <= code && code <= 0x2601 ) || // E0.6 [2] (\u2600\uFE0F..\u2601\uFE0F) sun..cloud\n\t\t( 0x2602 <= code && code <= 0x2603 ) || // E0.7 [2] (\u2602\uFE0F..\u2603\uFE0F) umbrella..snowman\n\t\tcode === 0x2604 || // E1.0 [1] (\u2604\uFE0F) comet\n\t\tcode === 0x2605 || // E0.0 [1] (\u2605) BLACK STAR\n\t\t( 0x2607 <= code && code <= 0x260D ) || // E0.0 [7] (\u2607..\u260D) LIGHTNING..OPPOSITION\n\t\tcode === 0x260E || // E0.6 [1] (\u260E\uFE0F) telephone\n\t\t( 0x260F <= code && code <= 0x2610 ) || // E0.0 [2] (\u260F..\u2610) WHITE TELEPHONE..BALLOT BOX\n\t\tcode === 0x2611 || // E0.6 [1] (\u2611\uFE0F) check box with check\n\t\tcode === 0x2612 || // E0.0 [1] (\u2612) BALLOT BOX WITH X\n\t\t( 0x2614 <= code && code <= 0x2615 ) || // E0.6 [2] (\u2614..\u2615) umbrella with rain drops..hot beverage\n\t\t( 0x2616 <= code && code <= 0x2617 ) || // E0.0 [2] (\u2616..\u2617) WHITE SHOGI PIECE..BLACK SHOGI PIECE\n\t\tcode === 0x2618 || // E1.0 [1] (\u2618\uFE0F) shamrock\n\t\t( 0x2619 <= code && code <= 0x261C ) || // E0.0 [4] (\u2619..\u261C) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX\n\t\tcode === 0x261D || // E0.6 [1] (\u261D\uFE0F) index pointing up\n\t\t( 0x261E <= code && code <= 0x261F ) || // E0.0 [2] (\u261E..\u261F) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX\n\t\tcode === 0x2620 || // E1.0 [1] (\u2620\uFE0F) skull and crossbones\n\t\tcode === 0x2621 || // E0.0 [1] (\u2621) CAUTION SIGN\n\t\t( 0x2622 <= code && code <= 0x2623 ) || // E1.0 [2] (\u2622\uFE0F..\u2623\uFE0F) radioactive..biohazard\n\t\t( 0x2624 <= code && code <= 0x2625 ) || // E0.0 [2] (\u2624..\u2625) CADUCEUS..ANKH\n\t\tcode === 0x2626 || // E1.0 [1] (\u2626\uFE0F) orthodox cross\n\t\t( 0x2627 <= code && code <= 0x2629 ) || // E0.0 [3] (\u2627..\u2629) CHI RHO..CROSS OF JERUSALEM\n\t\tcode === 0x262A || // E0.7 [1] (\u262A\uFE0F) star and crescent\n\t\t( 0x262B <= code && code <= 0x262D ) || // E0.0 [3] (\u262B..\u262D) FARSI SYMBOL..HAMMER AND SICKLE\n\t\tcode === 0x262E || // E1.0 [1] (\u262E\uFE0F) peace symbol\n\t\tcode === 0x262F || // E0.7 [1] (\u262F\uFE0F) yin yang\n\t\t( 0x2630 <= code && code <= 0x2637 ) || // E0.0 [8] (\u2630..\u2637) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH\n\t\t( 0x2638 <= code && code <= 0x2639 ) || // E0.7 [2] (\u2638\uFE0F..\u2639\uFE0F) wheel of dharma..frowning face\n\t\tcode === 0x263A || // E0.6 [1] (\u263A\uFE0F) smiling face\n\t\t( 0x263B <= code && code <= 0x263F ) || // E0.0 [5] (\u263B..\u263F) BLACK SMILING FACE..MERCURY\n\t\tcode === 0x2640 || // E4.0 [1] (\u2640\uFE0F) female sign\n\t\tcode === 0x2641 || // E0.0 [1] (\u2641) EARTH\n\t\tcode === 0x2642 || // E4.0 [1] (\u2642\uFE0F) male sign\n\t\t( 0x2643 <= code && code <= 0x2647 ) || // E0.0 [5] (\u2643..\u2647) JUPITER..PLUTO\n\t\t( 0x2648 <= code && code <= 0x2653 ) || // E0.6 [12] (\u2648..\u2653) Aries..Pisces\n\t\t( 0x2654 <= code && code <= 0x265E ) || // E0.0 [11] (\u2654..\u265E) WHITE CHESS KING..BLACK CHESS KNIGHT\n\t\tcode === 0x265F || // E11.0 [1] (\u265F\uFE0F) chess pawn\n\t\tcode === 0x2660 || // E0.6 [1] (\u2660\uFE0F) spade suit\n\t\t( 0x2661 <= code && code <= 0x2662 ) || // E0.0 [2] (\u2661..\u2662) WHITE HEART SUIT..WHITE DIAMOND SUIT\n\t\tcode === 0x2663 || // E0.6 [1] (\u2663\uFE0F) club suit\n\t\tcode === 0x2664 || // E0.0 [1] (\u2664) WHITE SPADE SUIT\n\t\t( 0x2665 <= code && code <= 0x2666 ) || // E0.6 [2] (\u2665\uFE0F..\u2666\uFE0F) heart suit..diamond suit\n\t\tcode === 0x2667 || // E0.0 [1] (\u2667) WHITE CLUB SUIT\n\t\tcode === 0x2668 || // E0.6 [1] (\u2668\uFE0F) hot springs\n\t\t( 0x2669 <= code && code <= 0x267A ) || // E0.0 [18] (\u2669..\u267A) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS\n\t\tcode === 0x267B || // E0.6 [1] (\u267B\uFE0F) recycling symbol\n\t\t( 0x267C <= code && code <= 0x267D ) || // E0.0 [2] (\u267C..\u267D) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL\n\t\tcode === 0x267E || // E11.0 [1] (\u267E\uFE0F) infinity\n\t\tcode === 0x267F || // E0.6 [1] (\u267F) wheelchair symbol\n\t\t( 0x2680 <= code && code <= 0x2685 ) || // E0.0 [6] (\u2680..\u2685) DIE FACE-1..DIE FACE-6\n\t\t( 0x2690 <= code && code <= 0x2691 ) || // E0.0 [2] (\u2690..\u2691) WHITE FLAG..BLACK FLAG\n\t\tcode === 0x2692 || // E1.0 [1] (\u2692\uFE0F) hammer and pick\n\t\tcode === 0x2693 || // E0.6 [1] (\u2693) anchor\n\t\tcode === 0x2694 || // E1.0 [1] (\u2694\uFE0F) crossed swords\n\t\tcode === 0x2695 || // E4.0 [1] (\u2695\uFE0F) medical symbol\n\t\t( 0x2696 <= code && code <= 0x2697 ) || // E1.0 [2] (\u2696\uFE0F..\u2697\uFE0F) balance scale..alembic\n\t\tcode === 0x2698 || // E0.0 [1] (\u2698) FLOWER\n\t\tcode === 0x2699 || // E1.0 [1] (\u2699\uFE0F) gear\n\t\tcode === 0x269A || // E0.0 [1] (\u269A) STAFF OF HERMES\n\t\t( 0x269B <= code && code <= 0x269C ) || // E1.0 [2] (\u269B\uFE0F..\u269C\uFE0F) atom symbol..fleur-de-lis\n\t\t( 0x269D <= code && code <= 0x269F ) || // E0.0 [3] (\u269D..\u269F) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT\n\t\t( 0x26A0 <= code && code <= 0x26A1 ) || // E0.6 [2] (\u26A0\uFE0F..\u26A1) warning..high voltage\n\t\t( 0x26A2 <= code && code <= 0x26A6 ) || // E0.0 [5] (\u26A2..\u26A6) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN\n\t\tcode === 0x26A7 || // E13.0 [1] (\u26A7\uFE0F) transgender symbol\n\t\t( 0x26A8 <= code && code <= 0x26A9 ) || // E0.0 [2] (\u26A8..\u26A9) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN\n\t\t( 0x26AA <= code && code <= 0x26AB ) || // E0.6 [2] (\u26AA..\u26AB) white circle..black circle\n\t\t( 0x26AC <= code && code <= 0x26AF ) || // E0.0 [4] (\u26AC..\u26AF) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL\n\t\t( 0x26B0 <= code && code <= 0x26B1 ) || // E1.0 [2] (\u26B0\uFE0F..\u26B1\uFE0F) coffin..funeral urn\n\t\t( 0x26B2 <= code && code <= 0x26BC ) || // E0.0 [11] (\u26B2..\u26BC) NEUTER..SESQUIQUADRATE\n\t\t( 0x26BD <= code && code <= 0x26BE ) || // E0.6 [2] (\u26BD..\u26BE) soccer ball..baseball\n\t\t( 0x26BF <= code && code <= 0x26C3 ) || // E0.0 [5] (\u26BF..\u26C3) SQUARED KEY..BLACK DRAUGHTS KING\n\t\t( 0x26C4 <= code && code <= 0x26C5 ) || // E0.6 [2] (\u26C4..\u26C5) snowman without snow..sun behind cloud\n\t\t( 0x26C6 <= code && code <= 0x26C7 ) || // E0.0 [2] (\u26C6..\u26C7) RAIN..BLACK SNOWMAN\n\t\tcode === 0x26C8 || // E0.7 [1] (\u26C8\uFE0F) cloud with lightning and rain\n\t\t( 0x26C9 <= code && code <= 0x26CD ) || // E0.0 [5] (\u26C9..\u26CD) TURNED WHITE SHOGI PIECE..DISABLED CAR\n\t\tcode === 0x26CE || // E0.6 [1] (\u26CE) Ophiuchus\n\t\tcode === 0x26CF || // E0.7 [1] (\u26CF\uFE0F) pick\n\t\tcode === 0x26D0 || // E0.0 [1] (\u26D0) CAR SLIDING\n\t\tcode === 0x26D1 || // E0.7 [1] (\u26D1\uFE0F) rescue worker\u2019s helmet\n\t\tcode === 0x26D2 || // E0.0 [1] (\u26D2) CIRCLED CROSSING LANES\n\t\tcode === 0x26D3 || // E0.7 [1] (\u26D3\uFE0F) chains\n\t\tcode === 0x26D4 || // E0.6 [1] (\u26D4) no entry\n\t\t( 0x26D5 <= code && code <= 0x26E8 ) || // E0.0 [20] (\u26D5..\u26E8) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD\n\t\tcode === 0x26E9 || // E0.7 [1] (\u26E9\uFE0F) shinto shrine\n\t\tcode === 0x26EA || // E0.6 [1] (\u26EA) church\n\t\t( 0x26EB <= code && code <= 0x26EF ) || // E0.0 [5] (\u26EB..\u26EF) CASTLE..MAP SYMBOL FOR LIGHTHOUSE\n\t\t( 0x26F0 <= code && code <= 0x26F1 ) || // E0.7 [2] (\u26F0\uFE0F..\u26F1\uFE0F) mountain..umbrella on ground\n\t\t( 0x26F2 <= code && code <= 0x26F3 ) || // E0.6 [2] (\u26F2..\u26F3) fountain..flag in hole\n\t\tcode === 0x26F4 || // E0.7 [1] (\u26F4\uFE0F) ferry\n\t\tcode === 0x26F5 || // E0.6 [1] (\u26F5) sailboat\n\t\tcode === 0x26F6 || // E0.0 [1] (\u26F6) SQUARE FOUR CORNERS\n\t\t( 0x26F7 <= code && code <= 0x26F9 ) || // E0.7 [3] (\u26F7\uFE0F..\u26F9\uFE0F) skier..person bouncing ball\n\t\tcode === 0x26FA || // E0.6 [1] (\u26FA) tent\n\t\t( 0x26FB <= code && code <= 0x26FC ) || // E0.0 [2] (\u26FB..\u26FC) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL\n\t\tcode === 0x26FD || // E0.6 [1] (\u26FD) fuel pump\n\t\t( 0x26FE <= code && code <= 0x2701 ) || // E0.0 [4] (\u26FE..\u2701) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS\n\t\tcode === 0x2702 || // E0.6 [1] (\u2702\uFE0F) scissors\n\t\t( 0x2703 <= code && code <= 0x2704 ) || // E0.0 [2] (\u2703..\u2704) LOWER BLADE SCISSORS..WHITE SCISSORS\n\t\tcode === 0x2705 || // E0.6 [1] (\u2705) check mark button\n\t\t( 0x2708 <= code && code <= 0x270C ) || // E0.6 [5] (\u2708\uFE0F..\u270C\uFE0F) airplane..victory hand\n\t\tcode === 0x270D || // E0.7 [1] (\u270D\uFE0F) writing hand\n\t\tcode === 0x270E || // E0.0 [1] (\u270E) LOWER RIGHT PENCIL\n\t\tcode === 0x270F || // E0.6 [1] (\u270F\uFE0F) pencil\n\t\t( 0x2710 <= code && code <= 0x2711 ) || // E0.0 [2] (\u2710..\u2711) UPPER RIGHT PENCIL..WHITE NIB\n\t\tcode === 0x2712 || // E0.6 [1] (\u2712\uFE0F) black nib\n\t\tcode === 0x2714 || // E0.6 [1] (\u2714\uFE0F) check mark\n\t\tcode === 0x2716 || // E0.6 [1] (\u2716\uFE0F) multiply\n\t\tcode === 0x271D || // E0.7 [1] (\u271D\uFE0F) latin cross\n\t\tcode === 0x2721 || // E0.7 [1] (\u2721\uFE0F) star of David\n\t\tcode === 0x2728 || // E0.6 [1] (\u2728) sparkles\n\t\t( 0x2733 <= code && code <= 0x2734 ) || // E0.6 [2] (\u2733\uFE0F..\u2734\uFE0F) eight-spoked asterisk..eight-pointed star\n\t\tcode === 0x2744 || // E0.6 [1] (\u2744\uFE0F) snowflake\n\t\tcode === 0x2747 || // E0.6 [1] (\u2747\uFE0F) sparkle\n\t\tcode === 0x274C || // E0.6 [1] (\u274C) cross mark\n\t\tcode === 0x274E || // E0.6 [1] (\u274E) cross mark button\n\t\t( 0x2753 <= code && code <= 0x2755 ) || // E0.6 [3] (\u2753..\u2755) question mark..white exclamation mark\n\t\tcode === 0x2757 || // E0.6 [1] (\u2757) exclamation mark\n\t\tcode === 0x2763 || // E1.0 [1] (\u2763\uFE0F) heart exclamation\n\t\tcode === 0x2764 || // E0.6 [1] (\u2764\uFE0F) red heart\n\t\t( 0x2765 <= code && code <= 0x2767 ) || // E0.0 [3] (\u2765..\u2767) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET\n\t\t( 0x2795 <= code && code <= 0x2797 ) || // E0.6 [3] (\u2795..\u2797) plus..divide\n\t\tcode === 0x27A1 || // E0.6 [1] (\u27A1\uFE0F) right arrow\n\t\tcode === 0x27B0 || // E0.6 [1] (\u27B0) curly loop\n\t\tcode === 0x27BF || // E1.0 [1] (\u27BF) double curly loop\n\t\t( 0x2934 <= code && code <= 0x2935 ) || // E0.6 [2] (\u2934\uFE0F..\u2935\uFE0F) right arrow curving up..right arrow curving down\n\t\t( 0x2B05 <= code && code <= 0x2B07 ) || // E0.6 [3] (\u2B05\uFE0F..\u2B07\uFE0F) left arrow..down arrow\n\t\t( 0x2B1B <= code && code <= 0x2B1C ) || // E0.6 [2] (\u2B1B..\u2B1C) black large square..white large square\n\t\tcode === 0x2B50 || // E0.6 [1] (\u2B50) star\n\t\tcode === 0x2B55 || // E0.6 [1] (\u2B55) hollow red circle\n\t\tcode === 0x3030 || // E0.6 [1] (\u3030\uFE0F) wavy dash\n\t\tcode === 0x303D || // E0.6 [1] (\u303D\uFE0F) part alternation mark\n\t\tcode === 0x3297 || // E0.6 [1] (\u3297\uFE0F) Japanese \u201Ccongratulations\u201D button\n\t\tcode === 0x3299 || // E0.6 [1] (\u3299\uFE0F) Japanese \u201Csecret\u201D button\n\t\t( 0x1F000 <= code && code <= 0x1F003 ) || // E0.0 [4] (\uD83C\uDC00..\uD83C\uDC03) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND\n\t\tcode === 0x1F004 || // E0.6 [1] (\uD83C\uDC04) mahjong red dragon\n\t\t( 0x1F005 <= code && code <= 0x1F0CE ) || // E0.0 [202] (\uD83C\uDC05..\uD83C\uDCCE) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS\n\t\tcode === 0x1F0CF || // E0.6 [1] (\uD83C\uDCCF) joker\n\t\t( 0x1F0D0 <= code && code <= 0x1F0FF ) || // E0.0 [48] (\uD83C\uDCD0..\uD83C\uDCFF) ..\n\t\t( 0x1F10D <= code && code <= 0x1F10F ) || // E0.0 [3] (\uD83C\uDD0D..\uD83C\uDD0F) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH\n\t\tcode === 0x1F12F || // E0.0 [1] (\uD83C\uDD2F) COPYLEFT SYMBOL\n\t\t( 0x1F16C <= code && code <= 0x1F16F ) || // E0.0 [4] (\uD83C\uDD6C..\uD83C\uDD6F) RAISED MR SIGN..CIRCLED HUMAN FIGURE\n\t\t( 0x1F170 <= code && code <= 0x1F171 ) || // E0.6 [2] (\uD83C\uDD70\uFE0F..\uD83C\uDD71\uFE0F) A button (blood type)..B button (blood type)\n\t\t( 0x1F17E <= code && code <= 0x1F17F ) || // E0.6 [2] (\uD83C\uDD7E\uFE0F..\uD83C\uDD7F\uFE0F) O button (blood type)..P button\n\t\tcode === 0x1F18E || // E0.6 [1] (\uD83C\uDD8E) AB button (blood type)\n\t\t( 0x1F191 <= code && code <= 0x1F19A ) || // E0.6 [10] (\uD83C\uDD91..\uD83C\uDD9A) CL button..VS button\n\t\t( 0x1F1AD <= code && code <= 0x1F1E5 ) || // E0.0 [57] (\uD83C\uDDAD..\uD83C\uDDE5) MASK WORK SYMBOL..\n\t\t( 0x1F201 <= code && code <= 0x1F202 ) || // E0.6 [2] (\uD83C\uDE01..\uD83C\uDE02\uFE0F) Japanese \u201Chere\u201D button..Japanese \u201Cservice charge\u201D button\n\t\t( 0x1F203 <= code && code <= 0x1F20F ) || // E0.0 [13] (\uD83C\uDE03..\uD83C\uDE0F) ..\n\t\tcode === 0x1F21A || // E0.6 [1] (\uD83C\uDE1A) Japanese \u201Cfree of charge\u201D button\n\t\tcode === 0x1F22F || // E0.6 [1] (\uD83C\uDE2F) Japanese \u201Creserved\u201D button\n\t\t( 0x1F232 <= code && code <= 0x1F23A ) || // E0.6 [9] (\uD83C\uDE32..\uD83C\uDE3A) Japanese \u201Cprohibited\u201D button..Japanese \u201Copen for business\u201D button\n\t\t( 0x1F23C <= code && code <= 0x1F23F ) || // E0.0 [4] (\uD83C\uDE3C..\uD83C\uDE3F) ..\n\t\t( 0x1F249 <= code && code <= 0x1F24F ) || // E0.0 [7] (\uD83C\uDE49..\uD83C\uDE4F) ..\n\t\t( 0x1F250 <= code && code <= 0x1F251 ) || // E0.6 [2] (\uD83C\uDE50..\uD83C\uDE51) Japanese \u201Cbargain\u201D button..Japanese \u201Cacceptable\u201D button\n\t\t( 0x1F252 <= code && code <= 0x1F2FF ) || // E0.0 [174] (\uD83C\uDE52..\uD83C\uDEFF) ..\n\t\t( 0x1F300 <= code && code <= 0x1F30C ) || // E0.6 [13] (\uD83C\uDF00..\uD83C\uDF0C) cyclone..milky way\n\t\t( 0x1F30D <= code && code <= 0x1F30E ) || // E0.7 [2] (\uD83C\uDF0D..\uD83C\uDF0E) globe showing Europe-Africa..globe showing Americas\n\t\tcode === 0x1F30F || // E0.6 [1] (\uD83C\uDF0F) globe showing Asia-Australia\n\t\tcode === 0x1F310 || // E1.0 [1] (\uD83C\uDF10) globe with meridians\n\t\tcode === 0x1F311 || // E0.6 [1] (\uD83C\uDF11) new moon\n\t\tcode === 0x1F312 || // E1.0 [1] (\uD83C\uDF12) waxing crescent moon\n\t\t( 0x1F313 <= code && code <= 0x1F315 ) || // E0.6 [3] (\uD83C\uDF13..\uD83C\uDF15) first quarter moon..full moon\n\t\t( 0x1F316 <= code && code <= 0x1F318 ) || // E1.0 [3] (\uD83C\uDF16..\uD83C\uDF18) waning gibbous moon..waning crescent moon\n\t\tcode === 0x1F319 || // E0.6 [1] (\uD83C\uDF19) crescent moon\n\t\tcode === 0x1F31A || // E1.0 [1] (\uD83C\uDF1A) new moon face\n\t\tcode === 0x1F31B || // E0.6 [1] (\uD83C\uDF1B) first quarter moon face\n\t\tcode === 0x1F31C || // E0.7 [1] (\uD83C\uDF1C) last quarter moon face\n\t\t( 0x1F31D <= code && code <= 0x1F31E ) || // E1.0 [2] (\uD83C\uDF1D..\uD83C\uDF1E) full moon face..sun with face\n\t\t( 0x1F31F <= code && code <= 0x1F320 ) || // E0.6 [2] (\uD83C\uDF1F..\uD83C\uDF20) glowing star..shooting star\n\t\tcode === 0x1F321 || // E0.7 [1] (\uD83C\uDF21\uFE0F) thermometer\n\t\t( 0x1F322 <= code && code <= 0x1F323 ) || // E0.0 [2] (\uD83C\uDF22..\uD83C\uDF23) BLACK DROPLET..WHITE SUN\n\t\t( 0x1F324 <= code && code <= 0x1F32C ) || // E0.7 [9] (\uD83C\uDF24\uFE0F..\uD83C\uDF2C\uFE0F) sun behind small cloud..wind face\n\t\t( 0x1F32D <= code && code <= 0x1F32F ) || // E1.0 [3] (\uD83C\uDF2D..\uD83C\uDF2F) hot dog..burrito\n\t\t( 0x1F330 <= code && code <= 0x1F331 ) || // E0.6 [2] (\uD83C\uDF30..\uD83C\uDF31) chestnut..seedling\n\t\t( 0x1F332 <= code && code <= 0x1F333 ) || // E1.0 [2] (\uD83C\uDF32..\uD83C\uDF33) evergreen tree..deciduous tree\n\t\t( 0x1F334 <= code && code <= 0x1F335 ) || // E0.6 [2] (\uD83C\uDF34..\uD83C\uDF35) palm tree..cactus\n\t\tcode === 0x1F336 || // E0.7 [1] (\uD83C\uDF36\uFE0F) hot pepper\n\t\t( 0x1F337 <= code && code <= 0x1F34A ) || // E0.6 [20] (\uD83C\uDF37..\uD83C\uDF4A) tulip..tangerine\n\t\tcode === 0x1F34B || // E1.0 [1] (\uD83C\uDF4B) lemon\n\t\t( 0x1F34C <= code && code <= 0x1F34F ) || // E0.6 [4] (\uD83C\uDF4C..\uD83C\uDF4F) banana..green apple\n\t\tcode === 0x1F350 || // E1.0 [1] (\uD83C\uDF50) pear\n\t\t( 0x1F351 <= code && code <= 0x1F37B ) || // E0.6 [43] (\uD83C\uDF51..\uD83C\uDF7B) peach..clinking beer mugs\n\t\tcode === 0x1F37C || // E1.0 [1] (\uD83C\uDF7C) baby bottle\n\t\tcode === 0x1F37D || // E0.7 [1] (\uD83C\uDF7D\uFE0F) fork and knife with plate\n\t\t( 0x1F37E <= code && code <= 0x1F37F ) || // E1.0 [2] (\uD83C\uDF7E..\uD83C\uDF7F) bottle with popping cork..popcorn\n\t\t( 0x1F380 <= code && code <= 0x1F393 ) || // E0.6 [20] (\uD83C\uDF80..\uD83C\uDF93) ribbon..graduation cap\n\t\t( 0x1F394 <= code && code <= 0x1F395 ) || // E0.0 [2] (\uD83C\uDF94..\uD83C\uDF95) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS\n\t\t( 0x1F396 <= code && code <= 0x1F397 ) || // E0.7 [2] (\uD83C\uDF96\uFE0F..\uD83C\uDF97\uFE0F) military medal..reminder ribbon\n\t\tcode === 0x1F398 || // E0.0 [1] (\uD83C\uDF98) MUSICAL KEYBOARD WITH JACKS\n\t\t( 0x1F399 <= code && code <= 0x1F39B ) || // E0.7 [3] (\uD83C\uDF99\uFE0F..\uD83C\uDF9B\uFE0F) studio microphone..control knobs\n\t\t( 0x1F39C <= code && code <= 0x1F39D ) || // E0.0 [2] (\uD83C\uDF9C..\uD83C\uDF9D) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES\n\t\t( 0x1F39E <= code && code <= 0x1F39F ) || // E0.7 [2] (\uD83C\uDF9E\uFE0F..\uD83C\uDF9F\uFE0F) film frames..admission tickets\n\t\t( 0x1F3A0 <= code && code <= 0x1F3C4 ) || // E0.6 [37] (\uD83C\uDFA0..\uD83C\uDFC4) carousel horse..person surfing\n\t\tcode === 0x1F3C5 || // E1.0 [1] (\uD83C\uDFC5) sports medal\n\t\tcode === 0x1F3C6 || // E0.6 [1] (\uD83C\uDFC6) trophy\n\t\tcode === 0x1F3C7 || // E1.0 [1] (\uD83C\uDFC7) horse racing\n\t\tcode === 0x1F3C8 || // E0.6 [1] (\uD83C\uDFC8) american football\n\t\tcode === 0x1F3C9 || // E1.0 [1] (\uD83C\uDFC9) rugby football\n\t\tcode === 0x1F3CA || // E0.6 [1] (\uD83C\uDFCA) person swimming\n\t\t( 0x1F3CB <= code && code <= 0x1F3CE ) || // E0.7 [4] (\uD83C\uDFCB\uFE0F..\uD83C\uDFCE\uFE0F) person lifting weights..racing car\n\t\t( 0x1F3CF <= code && code <= 0x1F3D3 ) || // E1.0 [5] (\uD83C\uDFCF..\uD83C\uDFD3) cricket game..ping pong\n\t\t( 0x1F3D4 <= code && code <= 0x1F3DF ) || // E0.7 [12] (\uD83C\uDFD4\uFE0F..\uD83C\uDFDF\uFE0F) snow-capped mountain..stadium\n\t\t( 0x1F3E0 <= code && code <= 0x1F3E3 ) || // E0.6 [4] (\uD83C\uDFE0..\uD83C\uDFE3) house..Japanese post office\n\t\tcode === 0x1F3E4 || // E1.0 [1] (\uD83C\uDFE4) post office\n\t\t( 0x1F3E5 <= code && code <= 0x1F3F0 ) || // E0.6 [12] (\uD83C\uDFE5..\uD83C\uDFF0) hospital..castle\n\t\t( 0x1F3F1 <= code && code <= 0x1F3F2 ) || // E0.0 [2] (\uD83C\uDFF1..\uD83C\uDFF2) WHITE PENNANT..BLACK PENNANT\n\t\tcode === 0x1F3F3 || // E0.7 [1] (\uD83C\uDFF3\uFE0F) white flag\n\t\tcode === 0x1F3F4 || // E1.0 [1] (\uD83C\uDFF4) black flag\n\t\tcode === 0x1F3F5 || // E0.7 [1] (\uD83C\uDFF5\uFE0F) rosette\n\t\tcode === 0x1F3F6 || // E0.0 [1] (\uD83C\uDFF6) BLACK ROSETTE\n\t\tcode === 0x1F3F7 || // E0.7 [1] (\uD83C\uDFF7\uFE0F) label\n\t\t( 0x1F3F8 <= code && code <= 0x1F3FA ) || // E1.0 [3] (\uD83C\uDFF8..\uD83C\uDFFA) badminton..amphora\n\t\t( 0x1F400 <= code && code <= 0x1F407 ) || // E1.0 [8] (\uD83D\uDC00..\uD83D\uDC07) rat..rabbit\n\t\tcode === 0x1F408 || // E0.7 [1] (\uD83D\uDC08) cat\n\t\t( 0x1F409 <= code && code <= 0x1F40B ) || // E1.0 [3] (\uD83D\uDC09..\uD83D\uDC0B) dragon..whale\n\t\t( 0x1F40C <= code && code <= 0x1F40E ) || // E0.6 [3] (\uD83D\uDC0C..\uD83D\uDC0E) snail..horse\n\t\t( 0x1F40F <= code && code <= 0x1F410 ) || // E1.0 [2] (\uD83D\uDC0F..\uD83D\uDC10) ram..goat\n\t\t( 0x1F411 <= code && code <= 0x1F412 ) || // E0.6 [2] (\uD83D\uDC11..\uD83D\uDC12) ewe..monkey\n\t\tcode === 0x1F413 || // E1.0 [1] (\uD83D\uDC13) rooster\n\t\tcode === 0x1F414 || // E0.6 [1] (\uD83D\uDC14) chicken\n\t\tcode === 0x1F415 || // E0.7 [1] (\uD83D\uDC15) dog\n\t\tcode === 0x1F416 || // E1.0 [1] (\uD83D\uDC16) pig\n\t\t( 0x1F417 <= code && code <= 0x1F429 ) || // E0.6 [19] (\uD83D\uDC17..\uD83D\uDC29) boar..poodle\n\t\tcode === 0x1F42A || // E1.0 [1] (\uD83D\uDC2A) camel\n\t\t( 0x1F42B <= code && code <= 0x1F43E ) || // E0.6 [20] (\uD83D\uDC2B..\uD83D\uDC3E) two-hump camel..paw prints\n\t\tcode === 0x1F43F || // E0.7 [1] (\uD83D\uDC3F\uFE0F) chipmunk\n\t\tcode === 0x1F440 || // E0.6 [1] (\uD83D\uDC40) eyes\n\t\tcode === 0x1F441 || // E0.7 [1] (\uD83D\uDC41\uFE0F) eye\n\t\t( 0x1F442 <= code && code <= 0x1F464 ) || // E0.6 [35] (\uD83D\uDC42..\uD83D\uDC64) ear..bust in silhouette\n\t\tcode === 0x1F465 || // E1.0 [1] (\uD83D\uDC65) busts in silhouette\n\t\t( 0x1F466 <= code && code <= 0x1F46B ) || // E0.6 [6] (\uD83D\uDC66..\uD83D\uDC6B) boy..woman and man holding hands\n\t\t( 0x1F46C <= code && code <= 0x1F46D ) || // E1.0 [2] (\uD83D\uDC6C..\uD83D\uDC6D) men holding hands..women holding hands\n\t\t( 0x1F46E <= code && code <= 0x1F4AC ) || // E0.6 [63] (\uD83D\uDC6E..\uD83D\uDCAC) police officer..speech balloon\n\t\tcode === 0x1F4AD || // E1.0 [1] (\uD83D\uDCAD) thought balloon\n\t\t( 0x1F4AE <= code && code <= 0x1F4B5 ) || // E0.6 [8] (\uD83D\uDCAE..\uD83D\uDCB5) white flower..dollar banknote\n\t\t( 0x1F4B6 <= code && code <= 0x1F4B7 ) || // E1.0 [2] (\uD83D\uDCB6..\uD83D\uDCB7) euro banknote..pound banknote\n\t\t( 0x1F4B8 <= code && code <= 0x1F4EB ) || // E0.6 [52] (\uD83D\uDCB8..\uD83D\uDCEB) money with wings..closed mailbox with raised flag\n\t\t( 0x1F4EC <= code && code <= 0x1F4ED ) || // E0.7 [2] (\uD83D\uDCEC..\uD83D\uDCED) open mailbox with raised flag..open mailbox with lowered flag\n\t\tcode === 0x1F4EE || // E0.6 [1] (\uD83D\uDCEE) postbox\n\t\tcode === 0x1F4EF || // E1.0 [1] (\uD83D\uDCEF) postal horn\n\t\t( 0x1F4F0 <= code && code <= 0x1F4F4 ) || // E0.6 [5] (\uD83D\uDCF0..\uD83D\uDCF4) newspaper..mobile phone off\n\t\tcode === 0x1F4F5 || // E1.0 [1] (\uD83D\uDCF5) no mobile phones\n\t\t( 0x1F4F6 <= code && code <= 0x1F4F7 ) || // E0.6 [2] (\uD83D\uDCF6..\uD83D\uDCF7) antenna bars..camera\n\t\tcode === 0x1F4F8 || // E1.0 [1] (\uD83D\uDCF8) camera with flash\n\t\t( 0x1F4F9 <= code && code <= 0x1F4FC ) || // E0.6 [4] (\uD83D\uDCF9..\uD83D\uDCFC) video camera..videocassette\n\t\tcode === 0x1F4FD || // E0.7 [1] (\uD83D\uDCFD\uFE0F) film projector\n\t\tcode === 0x1F4FE || // E0.0 [1] (\uD83D\uDCFE) PORTABLE STEREO\n\t\t( 0x1F4FF <= code && code <= 0x1F502 ) || // E1.0 [4] (\uD83D\uDCFF..\uD83D\uDD02) prayer beads..repeat single button\n\t\tcode === 0x1F503 || // E0.6 [1] (\uD83D\uDD03) clockwise vertical arrows\n\t\t( 0x1F504 <= code && code <= 0x1F507 ) || // E1.0 [4] (\uD83D\uDD04..\uD83D\uDD07) counterclockwise arrows button..muted speaker\n\t\tcode === 0x1F508 || // E0.7 [1] (\uD83D\uDD08) speaker low volume\n\t\tcode === 0x1F509 || // E1.0 [1] (\uD83D\uDD09) speaker medium volume\n\t\t( 0x1F50A <= code && code <= 0x1F514 ) || // E0.6 [11] (\uD83D\uDD0A..\uD83D\uDD14) speaker high volume..bell\n\t\tcode === 0x1F515 || // E1.0 [1] (\uD83D\uDD15) bell with slash\n\t\t( 0x1F516 <= code && code <= 0x1F52B ) || // E0.6 [22] (\uD83D\uDD16..\uD83D\uDD2B) bookmark..pistol\n\t\t( 0x1F52C <= code && code <= 0x1F52D ) || // E1.0 [2] (\uD83D\uDD2C..\uD83D\uDD2D) microscope..telescope\n\t\t( 0x1F52E <= code && code <= 0x1F53D ) || // E0.6 [16] (\uD83D\uDD2E..\uD83D\uDD3D) crystal ball..downwards button\n\t\t( 0x1F546 <= code && code <= 0x1F548 ) || // E0.0 [3] (\uD83D\uDD46..\uD83D\uDD48) WHITE LATIN CROSS..CELTIC CROSS\n\t\t( 0x1F549 <= code && code <= 0x1F54A ) || // E0.7 [2] (\uD83D\uDD49\uFE0F..\uD83D\uDD4A\uFE0F) om..dove\n\t\t( 0x1F54B <= code && code <= 0x1F54E ) || // E1.0 [4] (\uD83D\uDD4B..\uD83D\uDD4E) kaaba..menorah\n\t\tcode === 0x1F54F || // E0.0 [1] (\uD83D\uDD4F) BOWL OF HYGIEIA\n\t\t( 0x1F550 <= code && code <= 0x1F55B ) || // E0.6 [12] (\uD83D\uDD50..\uD83D\uDD5B) one o\u2019clock..twelve o\u2019clock\n\t\t( 0x1F55C <= code && code <= 0x1F567 ) || // E0.7 [12] (\uD83D\uDD5C..\uD83D\uDD67) one-thirty..twelve-thirty\n\t\t( 0x1F568 <= code && code <= 0x1F56E ) || // E0.0 [7] (\uD83D\uDD68..\uD83D\uDD6E) RIGHT SPEAKER..BOOK\n\t\t( 0x1F56F <= code && code <= 0x1F570 ) || // E0.7 [2] (\uD83D\uDD6F\uFE0F..\uD83D\uDD70\uFE0F) candle..mantelpiece clock\n\t\t( 0x1F571 <= code && code <= 0x1F572 ) || // E0.0 [2] (\uD83D\uDD71..\uD83D\uDD72) BLACK SKULL AND CROSSBONES..NO PIRACY\n\t\t( 0x1F573 <= code && code <= 0x1F579 ) || // E0.7 [7] (\uD83D\uDD73\uFE0F..\uD83D\uDD79\uFE0F) hole..joystick\n\t\tcode === 0x1F57A || // E3.0 [1] (\uD83D\uDD7A) man dancing\n\t\t( 0x1F57B <= code && code <= 0x1F586 ) || // E0.0 [12] (\uD83D\uDD7B..\uD83D\uDD86) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE\n\t\tcode === 0x1F587 || // E0.7 [1] (\uD83D\uDD87\uFE0F) linked paperclips\n\t\t( 0x1F588 <= code && code <= 0x1F589 ) || // E0.0 [2] (\uD83D\uDD88..\uD83D\uDD89) BLACK PUSHPIN..LOWER LEFT PENCIL\n\t\t( 0x1F58A <= code && code <= 0x1F58D ) || // E0.7 [4] (\uD83D\uDD8A\uFE0F..\uD83D\uDD8D\uFE0F) pen..crayon\n\t\t( 0x1F58E <= code && code <= 0x1F58F ) || // E0.0 [2] (\uD83D\uDD8E..\uD83D\uDD8F) LEFT WRITING HAND..TURNED OK HAND SIGN\n\t\tcode === 0x1F590 || // E0.7 [1] (\uD83D\uDD90\uFE0F) hand with fingers splayed\n\t\t( 0x1F591 <= code && code <= 0x1F594 ) || // E0.0 [4] (\uD83D\uDD91..\uD83D\uDD94) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND\n\t\t( 0x1F595 <= code && code <= 0x1F596 ) || // E1.0 [2] (\uD83D\uDD95..\uD83D\uDD96) middle finger..vulcan salute\n\t\t( 0x1F597 <= code && code <= 0x1F5A3 ) || // E0.0 [13] (\uD83D\uDD97..\uD83D\uDDA3) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX\n\t\tcode === 0x1F5A4 || // E3.0 [1] (\uD83D\uDDA4) black heart\n\t\tcode === 0x1F5A5 || // E0.7 [1] (\uD83D\uDDA5\uFE0F) desktop computer\n\t\t( 0x1F5A6 <= code && code <= 0x1F5A7 ) || // E0.0 [2] (\uD83D\uDDA6..\uD83D\uDDA7) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS\n\t\tcode === 0x1F5A8 || // E0.7 [1] (\uD83D\uDDA8\uFE0F) printer\n\t\t( 0x1F5A9 <= code && code <= 0x1F5B0 ) || // E0.0 [8] (\uD83D\uDDA9..\uD83D\uDDB0) POCKET CALCULATOR..TWO BUTTON MOUSE\n\t\t( 0x1F5B1 <= code && code <= 0x1F5B2 ) || // E0.7 [2] (\uD83D\uDDB1\uFE0F..\uD83D\uDDB2\uFE0F) computer mouse..trackball\n\t\t( 0x1F5B3 <= code && code <= 0x1F5BB ) || // E0.0 [9] (\uD83D\uDDB3..\uD83D\uDDBB) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE\n\t\tcode === 0x1F5BC || // E0.7 [1] (\uD83D\uDDBC\uFE0F) framed picture\n\t\t( 0x1F5BD <= code && code <= 0x1F5C1 ) || // E0.0 [5] (\uD83D\uDDBD..\uD83D\uDDC1) FRAME WITH TILES..OPEN FOLDER\n\t\t( 0x1F5C2 <= code && code <= 0x1F5C4 ) || // E0.7 [3] (\uD83D\uDDC2\uFE0F..\uD83D\uDDC4\uFE0F) card index dividers..file cabinet\n\t\t( 0x1F5C5 <= code && code <= 0x1F5D0 ) || // E0.0 [12] (\uD83D\uDDC5..\uD83D\uDDD0) EMPTY NOTE..PAGES\n\t\t( 0x1F5D1 <= code && code <= 0x1F5D3 ) || // E0.7 [3] (\uD83D\uDDD1\uFE0F..\uD83D\uDDD3\uFE0F) wastebasket..spiral calendar\n\t\t( 0x1F5D4 <= code && code <= 0x1F5DB ) || // E0.0 [8] (\uD83D\uDDD4..\uD83D\uDDDB) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL\n\t\t( 0x1F5DC <= code && code <= 0x1F5DE ) || // E0.7 [3] (\uD83D\uDDDC\uFE0F..\uD83D\uDDDE\uFE0F) clamp..rolled-up newspaper\n\t\t( 0x1F5DF <= code && code <= 0x1F5E0 ) || // E0.0 [2] (\uD83D\uDDDF..\uD83D\uDDE0) PAGE WITH CIRCLED TEXT..STOCK CHART\n\t\tcode === 0x1F5E1 || // E0.7 [1] (\uD83D\uDDE1\uFE0F) dagger\n\t\tcode === 0x1F5E2 || // E0.0 [1] (\uD83D\uDDE2) LIPS\n\t\tcode === 0x1F5E3 || // E0.7 [1] (\uD83D\uDDE3\uFE0F) speaking head\n\t\t( 0x1F5E4 <= code && code <= 0x1F5E7 ) || // E0.0 [4] (\uD83D\uDDE4..\uD83D\uDDE7) THREE RAYS ABOVE..THREE RAYS RIGHT\n\t\tcode === 0x1F5E8 || // E2.0 [1] (\uD83D\uDDE8\uFE0F) left speech bubble\n\t\t( 0x1F5E9 <= code && code <= 0x1F5EE ) || // E0.0 [6] (\uD83D\uDDE9..\uD83D\uDDEE) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE\n\t\tcode === 0x1F5EF || // E0.7 [1] (\uD83D\uDDEF\uFE0F) right anger bubble\n\t\t( 0x1F5F0 <= code && code <= 0x1F5F2 ) || // E0.0 [3] (\uD83D\uDDF0..\uD83D\uDDF2) MOOD BUBBLE..LIGHTNING MOOD\n\t\tcode === 0x1F5F3 || // E0.7 [1] (\uD83D\uDDF3\uFE0F) ballot box with ballot\n\t\t( 0x1F5F4 <= code && code <= 0x1F5F9 ) || // E0.0 [6] (\uD83D\uDDF4..\uD83D\uDDF9) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK\n\t\tcode === 0x1F5FA || // E0.7 [1] (\uD83D\uDDFA\uFE0F) world map\n\t\t( 0x1F5FB <= code && code <= 0x1F5FF ) || // E0.6 [5] (\uD83D\uDDFB..\uD83D\uDDFF) mount fuji..moai\n\t\tcode === 0x1F600 || // E1.0 [1] (\uD83D\uDE00) grinning face\n\t\t( 0x1F601 <= code && code <= 0x1F606 ) || // E0.6 [6] (\uD83D\uDE01..\uD83D\uDE06) beaming face with smiling eyes..grinning squinting face\n\t\t( 0x1F607 <= code && code <= 0x1F608 ) || // E1.0 [2] (\uD83D\uDE07..\uD83D\uDE08) smiling face with halo..smiling face with horns\n\t\t( 0x1F609 <= code && code <= 0x1F60D ) || // E0.6 [5] (\uD83D\uDE09..\uD83D\uDE0D) winking face..smiling face with heart-eyes\n\t\tcode === 0x1F60E || // E1.0 [1] (\uD83D\uDE0E) smiling face with sunglasses\n\t\tcode === 0x1F60F || // E0.6 [1] (\uD83D\uDE0F) smirking face\n\t\tcode === 0x1F610 || // E0.7 [1] (\uD83D\uDE10) neutral face\n\t\tcode === 0x1F611 || // E1.0 [1] (\uD83D\uDE11) expressionless face\n\t\t( 0x1F612 <= code && code <= 0x1F614 ) || // E0.6 [3] (\uD83D\uDE12..\uD83D\uDE14) unamused face..pensive face\n\t\tcode === 0x1F615 || // E1.0 [1] (\uD83D\uDE15) confused face\n\t\tcode === 0x1F616 || // E0.6 [1] (\uD83D\uDE16) confounded face\n\t\tcode === 0x1F617 || // E1.0 [1] (\uD83D\uDE17) kissing face\n\t\tcode === 0x1F618 || // E0.6 [1] (\uD83D\uDE18) face blowing a kiss\n\t\tcode === 0x1F619 || // E1.0 [1] (\uD83D\uDE19) kissing face with smiling eyes\n\t\tcode === 0x1F61A || // E0.6 [1] (\uD83D\uDE1A) kissing face with closed eyes\n\t\tcode === 0x1F61B || // E1.0 [1] (\uD83D\uDE1B) face with tongue\n\t\t( 0x1F61C <= code && code <= 0x1F61E ) || // E0.6 [3] (\uD83D\uDE1C..\uD83D\uDE1E) winking face with tongue..disappointed face\n\t\tcode === 0x1F61F || // E1.0 [1] (\uD83D\uDE1F) worried face\n\t\t( 0x1F620 <= code && code <= 0x1F625 ) || // E0.6 [6] (\uD83D\uDE20..\uD83D\uDE25) angry face..sad but relieved face\n\t\t( 0x1F626 <= code && code <= 0x1F627 ) || // E1.0 [2] (\uD83D\uDE26..\uD83D\uDE27) frowning face with open mouth..anguished face\n\t\t( 0x1F628 <= code && code <= 0x1F62B ) || // E0.6 [4] (\uD83D\uDE28..\uD83D\uDE2B) fearful face..tired face\n\t\tcode === 0x1F62C || // E1.0 [1] (\uD83D\uDE2C) grimacing face\n\t\tcode === 0x1F62D || // E0.6 [1] (\uD83D\uDE2D) loudly crying face\n\t\t( 0x1F62E <= code && code <= 0x1F62F ) || // E1.0 [2] (\uD83D\uDE2E..\uD83D\uDE2F) face with open mouth..hushed face\n\t\t( 0x1F630 <= code && code <= 0x1F633 ) || // E0.6 [4] (\uD83D\uDE30..\uD83D\uDE33) anxious face with sweat..flushed face\n\t\tcode === 0x1F634 || // E1.0 [1] (\uD83D\uDE34) sleeping face\n\t\tcode === 0x1F635 || // E0.6 [1] (\uD83D\uDE35) dizzy face\n\t\tcode === 0x1F636 || // E1.0 [1] (\uD83D\uDE36) face without mouth\n\t\t( 0x1F637 <= code && code <= 0x1F640 ) || // E0.6 [10] (\uD83D\uDE37..\uD83D\uDE40) face with medical mask..weary cat\n\t\t( 0x1F641 <= code && code <= 0x1F644 ) || // E1.0 [4] (\uD83D\uDE41..\uD83D\uDE44) slightly frowning face..face with rolling eyes\n\t\t( 0x1F645 <= code && code <= 0x1F64F ) || // E0.6 [11] (\uD83D\uDE45..\uD83D\uDE4F) person gesturing NO..folded hands\n\t\tcode === 0x1F680 || // E0.6 [1] (\uD83D\uDE80) rocket\n\t\t( 0x1F681 <= code && code <= 0x1F682 ) || // E1.0 [2] (\uD83D\uDE81..\uD83D\uDE82) helicopter..locomotive\n\t\t( 0x1F683 <= code && code <= 0x1F685 ) || // E0.6 [3] (\uD83D\uDE83..\uD83D\uDE85) railway car..bullet train\n\t\tcode === 0x1F686 || // E1.0 [1] (\uD83D\uDE86) train\n\t\tcode === 0x1F687 || // E0.6 [1] (\uD83D\uDE87) metro\n\t\tcode === 0x1F688 || // E1.0 [1] (\uD83D\uDE88) light rail\n\t\tcode === 0x1F689 || // E0.6 [1] (\uD83D\uDE89) station\n\t\t( 0x1F68A <= code && code <= 0x1F68B ) || // E1.0 [2] (\uD83D\uDE8A..\uD83D\uDE8B) tram..tram car\n\t\tcode === 0x1F68C || // E0.6 [1] (\uD83D\uDE8C) bus\n\t\tcode === 0x1F68D || // E0.7 [1] (\uD83D\uDE8D) oncoming bus\n\t\tcode === 0x1F68E || // E1.0 [1] (\uD83D\uDE8E) trolleybus\n\t\tcode === 0x1F68F || // E0.6 [1] (\uD83D\uDE8F) bus stop\n\t\tcode === 0x1F690 || // E1.0 [1] (\uD83D\uDE90) minibus\n\t\t( 0x1F691 <= code && code <= 0x1F693 ) || // E0.6 [3] (\uD83D\uDE91..\uD83D\uDE93) ambulance..police car\n\t\tcode === 0x1F694 || // E0.7 [1] (\uD83D\uDE94) oncoming police car\n\t\tcode === 0x1F695 || // E0.6 [1] (\uD83D\uDE95) taxi\n\t\tcode === 0x1F696 || // E1.0 [1] (\uD83D\uDE96) oncoming taxi\n\t\tcode === 0x1F697 || // E0.6 [1] (\uD83D\uDE97) automobile\n\t\tcode === 0x1F698 || // E0.7 [1] (\uD83D\uDE98) oncoming automobile\n\t\t( 0x1F699 <= code && code <= 0x1F69A ) || // E0.6 [2] (\uD83D\uDE99..\uD83D\uDE9A) sport utility vehicle..delivery truck\n\t\t( 0x1F69B <= code && code <= 0x1F6A1 ) || // E1.0 [7] (\uD83D\uDE9B..\uD83D\uDEA1) articulated lorry..aerial tramway\n\t\tcode === 0x1F6A2 || // E0.6 [1] (\uD83D\uDEA2) ship\n\t\tcode === 0x1F6A3 || // E1.0 [1] (\uD83D\uDEA3) person rowing boat\n\t\t( 0x1F6A4 <= code && code <= 0x1F6A5 ) || // E0.6 [2] (\uD83D\uDEA4..\uD83D\uDEA5) speedboat..horizontal traffic light\n\t\tcode === 0x1F6A6 || // E1.0 [1] (\uD83D\uDEA6) vertical traffic light\n\t\t( 0x1F6A7 <= code && code <= 0x1F6AD ) || // E0.6 [7] (\uD83D\uDEA7..\uD83D\uDEAD) construction..no smoking\n\t\t( 0x1F6AE <= code && code <= 0x1F6B1 ) || // E1.0 [4] (\uD83D\uDEAE..\uD83D\uDEB1) litter in bin sign..non-potable water\n\t\tcode === 0x1F6B2 || // E0.6 [1] (\uD83D\uDEB2) bicycle\n\t\t( 0x1F6B3 <= code && code <= 0x1F6B5 ) || // E1.0 [3] (\uD83D\uDEB3..\uD83D\uDEB5) no bicycles..person mountain biking\n\t\tcode === 0x1F6B6 || // E0.6 [1] (\uD83D\uDEB6) person walking\n\t\t( 0x1F6B7 <= code && code <= 0x1F6B8 ) || // E1.0 [2] (\uD83D\uDEB7..\uD83D\uDEB8) no pedestrians..children crossing\n\t\t( 0x1F6B9 <= code && code <= 0x1F6BE ) || // E0.6 [6] (\uD83D\uDEB9..\uD83D\uDEBE) men\u2019s room..water closet\n\t\tcode === 0x1F6BF || // E1.0 [1] (\uD83D\uDEBF) shower\n\t\tcode === 0x1F6C0 || // E0.6 [1] (\uD83D\uDEC0) person taking bath\n\t\t( 0x1F6C1 <= code && code <= 0x1F6C5 ) || // E1.0 [5] (\uD83D\uDEC1..\uD83D\uDEC5) bathtub..left luggage\n\t\t( 0x1F6C6 <= code && code <= 0x1F6CA ) || // E0.0 [5] (\uD83D\uDEC6..\uD83D\uDECA) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL\n\t\tcode === 0x1F6CB || // E0.7 [1] (\uD83D\uDECB\uFE0F) couch and lamp\n\t\tcode === 0x1F6CC || // E1.0 [1] (\uD83D\uDECC) person in bed\n\t\t( 0x1F6CD <= code && code <= 0x1F6CF ) || // E0.7 [3] (\uD83D\uDECD\uFE0F..\uD83D\uDECF\uFE0F) shopping bags..bed\n\t\tcode === 0x1F6D0 || // E1.0 [1] (\uD83D\uDED0) place of worship\n\t\t( 0x1F6D1 <= code && code <= 0x1F6D2 ) || // E3.0 [2] (\uD83D\uDED1..\uD83D\uDED2) stop sign..shopping cart\n\t\t( 0x1F6D3 <= code && code <= 0x1F6D4 ) || // E0.0 [2] (\uD83D\uDED3..\uD83D\uDED4) STUPA..PAGODA\n\t\tcode === 0x1F6D5 || // E12.0 [1] (\uD83D\uDED5) hindu temple\n\t\t( 0x1F6D6 <= code && code <= 0x1F6D7 ) || // E13.0 [2] (\uD83D\uDED6..\uD83D\uDED7) hut..elevator\n\t\t( 0x1F6D8 <= code && code <= 0x1F6DF ) || // E0.0 [8] (\uD83D\uDED8..\uD83D\uDEDF) ..\n\t\t( 0x1F6E0 <= code && code <= 0x1F6E5 ) || // E0.7 [6] (\uD83D\uDEE0\uFE0F..\uD83D\uDEE5\uFE0F) hammer and wrench..motor boat\n\t\t( 0x1F6E6 <= code && code <= 0x1F6E8 ) || // E0.0 [3] (\uD83D\uDEE6..\uD83D\uDEE8) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE\n\t\tcode === 0x1F6E9 || // E0.7 [1] (\uD83D\uDEE9\uFE0F) small airplane\n\t\tcode === 0x1F6EA || // E0.0 [1] (\uD83D\uDEEA) NORTHEAST-POINTING AIRPLANE\n\t\t( 0x1F6EB <= code && code <= 0x1F6EC ) || // E1.0 [2] (\uD83D\uDEEB..\uD83D\uDEEC) airplane departure..airplane arrival\n\t\t( 0x1F6ED <= code && code <= 0x1F6EF ) || // E0.0 [3] (\uD83D\uDEED..\uD83D\uDEEF) ..\n\t\tcode === 0x1F6F0 || // E0.7 [1] (\uD83D\uDEF0\uFE0F) satellite\n\t\t( 0x1F6F1 <= code && code <= 0x1F6F2 ) || // E0.0 [2] (\uD83D\uDEF1..\uD83D\uDEF2) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE\n\t\tcode === 0x1F6F3 || // E0.7 [1] (\uD83D\uDEF3\uFE0F) passenger ship\n\t\t( 0x1F6F4 <= code && code <= 0x1F6F6 ) || // E3.0 [3] (\uD83D\uDEF4..\uD83D\uDEF6) kick scooter..canoe\n\t\t( 0x1F6F7 <= code && code <= 0x1F6F8 ) || // E5.0 [2] (\uD83D\uDEF7..\uD83D\uDEF8) sled..flying saucer\n\t\tcode === 0x1F6F9 || // E11.0 [1] (\uD83D\uDEF9) skateboard\n\t\tcode === 0x1F6FA || // E12.0 [1] (\uD83D\uDEFA) auto rickshaw\n\t\t( 0x1F6FB <= code && code <= 0x1F6FC ) || // E13.0 [2] (\uD83D\uDEFB..\uD83D\uDEFC) pickup truck..roller skate\n\t\t( 0x1F6FD <= code && code <= 0x1F6FF ) || // E0.0 [3] (\uD83D\uDEFD..\uD83D\uDEFF) ..\n\t\t( 0x1F774 <= code && code <= 0x1F77F ) || // E0.0 [12] (\uD83D\uDF74..\uD83D\uDF7F) ..\n\t\t( 0x1F7D5 <= code && code <= 0x1F7DF ) || // E0.0 [11] (\uD83D\uDFD5..\uD83D\uDFDF) CIRCLED TRIANGLE..\n\t\t( 0x1F7E0 <= code && code <= 0x1F7EB ) || // E12.0 [12] (\uD83D\uDFE0..\uD83D\uDFEB) orange circle..brown square\n\t\t( 0x1F7EC <= code && code <= 0x1F7FF ) || // E0.0 [20] (\uD83D\uDFEC..\uD83D\uDFFF) ..\n\t\t( 0x1F80C <= code && code <= 0x1F80F ) || // E0.0 [4] (\uD83E\uDC0C..\uD83E\uDC0F) ..\n\t\t( 0x1F848 <= code && code <= 0x1F84F ) || // E0.0 [8] (\uD83E\uDC48..\uD83E\uDC4F) ..\n\t\t( 0x1F85A <= code && code <= 0x1F85F ) || // E0.0 [6] (\uD83E\uDC5A..\uD83E\uDC5F) ..\n\t\t( 0x1F888 <= code && code <= 0x1F88F ) || // E0.0 [8] (\uD83E\uDC88..\uD83E\uDC8F) ..\n\t\t( 0x1F8AE <= code && code <= 0x1F8FF ) || // E0.0 [82] (\uD83E\uDCAE..\uD83E\uDCFF) ..\n\t\tcode === 0x1F90C || // E13.0 [1] (\uD83E\uDD0C) pinched fingers\n\t\t( 0x1F90D <= code && code <= 0x1F90F ) || // E12.0 [3] (\uD83E\uDD0D..\uD83E\uDD0F) white heart..pinching hand\n\t\t( 0x1F910 <= code && code <= 0x1F918 ) || // E1.0 [9] (\uD83E\uDD10..\uD83E\uDD18) zipper-mouth face..sign of the horns\n\t\t( 0x1F919 <= code && code <= 0x1F91E ) || // E3.0 [6] (\uD83E\uDD19..\uD83E\uDD1E) call me hand..crossed fingers\n\t\tcode === 0x1F91F || // E5.0 [1] (\uD83E\uDD1F) love-you gesture\n\t\t( 0x1F920 <= code && code <= 0x1F927 ) || // E3.0 [8] (\uD83E\uDD20..\uD83E\uDD27) cowboy hat face..sneezing face\n\t\t( 0x1F928 <= code && code <= 0x1F92F ) || // E5.0 [8] (\uD83E\uDD28..\uD83E\uDD2F) face with raised eyebrow..exploding head\n\t\tcode === 0x1F930 || // E3.0 [1] (\uD83E\uDD30) pregnant woman\n\t\t( 0x1F931 <= code && code <= 0x1F932 ) || // E5.0 [2] (\uD83E\uDD31..\uD83E\uDD32) breast-feeding..palms up together\n\t\t( 0x1F933 <= code && code <= 0x1F93A ) || // E3.0 [8] (\uD83E\uDD33..\uD83E\uDD3A) selfie..person fencing\n\t\t( 0x1F93C <= code && code <= 0x1F93E ) || // E3.0 [3] (\uD83E\uDD3C..\uD83E\uDD3E) people wrestling..person playing handball\n\t\tcode === 0x1F93F || // E12.0 [1] (\uD83E\uDD3F) diving mask\n\t\t( 0x1F940 <= code && code <= 0x1F945 ) || // E3.0 [6] (\uD83E\uDD40..\uD83E\uDD45) wilted flower..goal net\n\t\t( 0x1F947 <= code && code <= 0x1F94B ) || // E3.0 [5] (\uD83E\uDD47..\uD83E\uDD4B) 1st place medal..martial arts uniform\n\t\tcode === 0x1F94C || // E5.0 [1] (\uD83E\uDD4C) curling stone\n\t\t( 0x1F94D <= code && code <= 0x1F94F ) || // E11.0 [3] (\uD83E\uDD4D..\uD83E\uDD4F) lacrosse..flying disc\n\t\t( 0x1F950 <= code && code <= 0x1F95E ) || // E3.0 [15] (\uD83E\uDD50..\uD83E\uDD5E) croissant..pancakes\n\t\t( 0x1F95F <= code && code <= 0x1F96B ) || // E5.0 [13] (\uD83E\uDD5F..\uD83E\uDD6B) dumpling..canned food\n\t\t( 0x1F96C <= code && code <= 0x1F970 ) || // E11.0 [5] (\uD83E\uDD6C..\uD83E\uDD70) leafy green..smiling face with hearts\n\t\tcode === 0x1F971 || // E12.0 [1] (\uD83E\uDD71) yawning face\n\t\tcode === 0x1F972 || // E13.0 [1] (\uD83E\uDD72) smiling face with tear\n\t\t( 0x1F973 <= code && code <= 0x1F976 ) || // E11.0 [4] (\uD83E\uDD73..\uD83E\uDD76) partying face..cold face\n\t\t( 0x1F977 <= code && code <= 0x1F978 ) || // E13.0 [2] (\uD83E\uDD77..\uD83E\uDD78) ninja..disguised face\n\t\tcode === 0x1F979 || // E0.0 [1] (\uD83E\uDD79) \n\t\tcode === 0x1F97A || // E11.0 [1] (\uD83E\uDD7A) pleading face\n\t\tcode === 0x1F97B || // E12.0 [1] (\uD83E\uDD7B) sari\n\t\t( 0x1F97C <= code && code <= 0x1F97F ) || // E11.0 [4] (\uD83E\uDD7C..\uD83E\uDD7F) lab coat..flat shoe\n\t\t( 0x1F980 <= code && code <= 0x1F984 ) || // E1.0 [5] (\uD83E\uDD80..\uD83E\uDD84) crab..unicorn\n\t\t( 0x1F985 <= code && code <= 0x1F991 ) || // E3.0 [13] (\uD83E\uDD85..\uD83E\uDD91) eagle..squid\n\t\t( 0x1F992 <= code && code <= 0x1F997 ) || // E5.0 [6] (\uD83E\uDD92..\uD83E\uDD97) giraffe..cricket\n\t\t( 0x1F998 <= code && code <= 0x1F9A2 ) || // E11.0 [11] (\uD83E\uDD98..\uD83E\uDDA2) kangaroo..swan\n\t\t( 0x1F9A3 <= code && code <= 0x1F9A4 ) || // E13.0 [2] (\uD83E\uDDA3..\uD83E\uDDA4) mammoth..dodo\n\t\t( 0x1F9A5 <= code && code <= 0x1F9AA ) || // E12.0 [6] (\uD83E\uDDA5..\uD83E\uDDAA) sloth..oyster\n\t\t( 0x1F9AB <= code && code <= 0x1F9AD ) || // E13.0 [3] (\uD83E\uDDAB..\uD83E\uDDAD) beaver..seal\n\t\t( 0x1F9AE <= code && code <= 0x1F9AF ) || // E12.0 [2] (\uD83E\uDDAE..\uD83E\uDDAF) guide dog..white cane\n\t\t( 0x1F9B0 <= code && code <= 0x1F9B9 ) || // E11.0 [10] (\uD83E\uDDB0..\uD83E\uDDB9) red hair..supervillain\n\t\t( 0x1F9BA <= code && code <= 0x1F9BF ) || // E12.0 [6] (\uD83E\uDDBA..\uD83E\uDDBF) safety vest..mechanical leg\n\t\tcode === 0x1F9C0 || // E1.0 [1] (\uD83E\uDDC0) cheese wedge\n\t\t( 0x1F9C1 <= code && code <= 0x1F9C2 ) || // E11.0 [2] (\uD83E\uDDC1..\uD83E\uDDC2) cupcake..salt\n\t\t( 0x1F9C3 <= code && code <= 0x1F9CA ) || // E12.0 [8] (\uD83E\uDDC3..\uD83E\uDDCA) beverage box..ice\n\t\tcode === 0x1F9CB || // E13.0 [1] (\uD83E\uDDCB) bubble tea\n\t\tcode === 0x1F9CC || // E0.0 [1] (\uD83E\uDDCC) \n\t\t( 0x1F9CD <= code && code <= 0x1F9CF ) || // E12.0 [3] (\uD83E\uDDCD..\uD83E\uDDCF) person standing..deaf person\n\t\t( 0x1F9D0 <= code && code <= 0x1F9E6 ) || // E5.0 [23] (\uD83E\uDDD0..\uD83E\uDDE6) face with monocle..socks\n\t\t( 0x1F9E7 <= code && code <= 0x1F9FF ) || // E11.0 [25] (\uD83E\uDDE7..\uD83E\uDDFF) red envelope..nazar amulet\n\t\t( 0x1FA00 <= code && code <= 0x1FA6F ) || // E0.0 [112] (\uD83E\uDE00..\uD83E\uDE6F) NEUTRAL CHESS KING..\n\t\t( 0x1FA70 <= code && code <= 0x1FA73 ) || // E12.0 [4] (\uD83E\uDE70..\uD83E\uDE73) ballet shoes..shorts\n\t\tcode === 0x1FA74 || // E13.0 [1] (\uD83E\uDE74) thong sandal\n\t\t( 0x1FA75 <= code && code <= 0x1FA77 ) || // E0.0 [3] (\uD83E\uDE75..\uD83E\uDE77) ..\n\t\t( 0x1FA78 <= code && code <= 0x1FA7A ) || // E12.0 [3] (\uD83E\uDE78..\uD83E\uDE7A) drop of blood..stethoscope\n\t\t( 0x1FA7B <= code && code <= 0x1FA7F ) || // E0.0 [5] (\uD83E\uDE7B..\uD83E\uDE7F) ..\n\t\t( 0x1FA80 <= code && code <= 0x1FA82 ) || // E12.0 [3] (\uD83E\uDE80..\uD83E\uDE82) yo-yo..parachute\n\t\t( 0x1FA83 <= code && code <= 0x1FA86 ) || // E13.0 [4] (\uD83E\uDE83..\uD83E\uDE86) boomerang..nesting dolls\n\t\t( 0x1FA87 <= code && code <= 0x1FA8F ) || // E0.0 [9] (\uD83E\uDE87..\uD83E\uDE8F) ..\n\t\t( 0x1FA90 <= code && code <= 0x1FA95 ) || // E12.0 [6] (\uD83E\uDE90..\uD83E\uDE95) ringed planet..banjo\n\t\t( 0x1FA96 <= code && code <= 0x1FAA8 ) || // E13.0 [19] (\uD83E\uDE96..\uD83E\uDEA8) military helmet..rock\n\t\t( 0x1FAA9 <= code && code <= 0x1FAAF ) || // E0.0 [7] (\uD83E\uDEA9..\uD83E\uDEAF) ..\n\t\t( 0x1FAB0 <= code && code <= 0x1FAB6 ) || // E13.0 [7] (\uD83E\uDEB0..\uD83E\uDEB6) fly..feather\n\t\t( 0x1FAB7 <= code && code <= 0x1FABF ) || // E0.0 [9] (\uD83E\uDEB7..\uD83E\uDEBF) ..\n\t\t( 0x1FAC0 <= code && code <= 0x1FAC2 ) || // E13.0 [3] (\uD83E\uDEC0..\uD83E\uDEC2) anatomical heart..people hugging\n\t\t( 0x1FAC3 <= code && code <= 0x1FACF ) || // E0.0 [13] (\uD83E\uDEC3..\uD83E\uDECF) ..\n\t\t( 0x1FAD0 <= code && code <= 0x1FAD6 ) || // E13.0 [7] (\uD83E\uDED0..\uD83E\uDED6) blueberries..teapot\n\t\t( 0x1FAD7 <= code && code <= 0x1FAFF ) || // E0.0 [41] (\uD83E\uDED7..\uD83E\uDEFF) ..\n\t\t( 0x1FC00 <= code && code <= 0x1FFFD ) // E0.0[1022] (\uD83F\uDC00..\uD83F\uDFFD) ..\n\t) {\n\t\treturn constants.ExtendedPictographic;\n\t}\n\treturn constants.Other;\n}\n\n\n// EXPORTS //\n\nmodule.exports = emojiProperty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// MAIN //\n\n/**\n* Returns the grapheme break property from the [Unicode Standard][1].\n*\n* [1]: https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt\n*\n* @private\n* @param {NonNegativeInteger} code - Unicode code point\n* @returns {NonNegativeInteger} grapheme break property\n*\n* @example\n* var out = graphemeBreakProperty( 0x008f );\n* // returns 2\n*\n* @example\n* var out = graphemeBreakProperty( 0x111C2 );\n* // returns 12\n*\n* @example\n* var out = graphemeBreakProperty( 0x1F3FC );\n* // returns 3\n*/\nfunction graphemeBreakProperty( code ) {\n\tif (\n\t\t( 0x0600 <= code && code <= 0x0605 ) || // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\n\t\tcode === 0x06DD || // Cf ARABIC END OF AYAH\n\t\tcode === 0x070F || // Cf SYRIAC ABBREVIATION MARK\n\t\tcode === 0x08E2 || // Cf ARABIC DISPUTED END OF AYAH\n\t\tcode === 0x0D4E || // Lo MALAYALAM LETTER DOT REPH\n\t\tcode === 0x110BD || // Cf KAITHI NUMBER SIGN\n\t\tcode === 0x110CD || // Cf KAITHI NUMBER SIGN ABOVE\n\t\t( 0x111C2 <= code && code <= 0x111C3 ) || // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\n\t\tcode === 0x1193F || // Lo DIVES AKURU PREFIXED NASAL SIGN\n\t\tcode === 0x11941 || // Lo DIVES AKURU INITIAL RA\n\t\tcode === 0x11A3A || // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\n\t\t( 0x11A84 <= code && code <= 0x11A89 ) || // Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA\n\t\tcode === 0x11D46 // Lo MASARAM GONDI REPHA\n\t) {\n\t\treturn constants.Prepend;\n\t}\n\tif (\n\t\tcode === 0x000D // Cc \n\t) {\n\t\treturn constants.CR;\n\t}\n\tif (\n\t\tcode === 0x000A // Cc \n\t) {\n\t\treturn constants.LF;\n\t}\n\tif (\n\t\t( 0x0000 <= code && code <= 0x0009 ) || // Cc [10] ..\n\t\t( 0x000B <= code && code <= 0x000C ) || // Cc [2] ..\n\t\t( 0x000E <= code && code <= 0x001F ) || // Cc [18] ..\n\t\t( 0x007F <= code && code <= 0x009F ) || // Cc [33] ..\n\t\tcode === 0x00AD || // Cf SOFT HYPHEN\n\t\tcode === 0x061C || // Cf ARABIC LETTER MARK\n\t\tcode === 0x180E || // Cf MONGOLIAN VOWEL SEPARATOR\n\t\tcode === 0x200B || // Cf ZERO WIDTH SPACE\n\t\t( 0x200E <= code && code <= 0x200F ) || // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\n\t\tcode === 0x2028 || // Zl LINE SEPARATOR\n\t\tcode === 0x2029 || // Zp PARAGRAPH SEPARATOR\n\t\t( 0x202A <= code && code <= 0x202E ) || // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\n\t\t( 0x2060 <= code && code <= 0x2064 ) || // Cf [5] WORD JOINER..INVISIBLE PLUS\n\t\tcode === 0x2065 || // Cn \n\t\t( 0x2066 <= code && code <= 0x206F ) || // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\n\t\tcode === 0xFEFF || // Cf ZERO WIDTH NO-BREAK SPACE\n\t\t( 0xFFF0 <= code && code <= 0xFFF8 ) || // Cn [9] ..\n\t\t( 0xFFF9 <= code && code <= 0xFFFB ) || // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\n\t\t( 0x13430 <= code && code <= 0x13438 ) || // Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT\n\t\t( 0x1BCA0 <= code && code <= 0x1BCA3 ) || // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\n\t\t( 0x1D173 <= code && code <= 0x1D17A ) || // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\n\t\tcode === 0xE0000 || // Cn \n\t\tcode === 0xE0001 || // Cf LANGUAGE TAG\n\t\t( 0xE0002 <= code && code <= 0xE001F ) || // Cn [30] ..\n\t\t( 0xE0080 <= code && code <= 0xE00FF ) || // Cn [128] ..\n\t\t( 0xE01F0 <= code && code <= 0xE0FFF ) // Cn [3600] ..\n\t) {\n\t\treturn constants.Control;\n\t}\n\tif (\n\t\t( 0x0300 <= code && code <= 0x036F ) || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\n\t\t( 0x0483 <= code && code <= 0x0487 ) || // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\n\t\t( 0x0488 <= code && code <= 0x0489 ) || // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\n\t\t( 0x0591 <= code && code <= 0x05BD ) || // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\n\t\tcode === 0x05BF || // Mn HEBREW POINT RAFE\n\t\t( 0x05C1 <= code && code <= 0x05C2 ) || // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\n\t\t( 0x05C4 <= code && code <= 0x05C5 ) || // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\n\t\tcode === 0x05C7 || // Mn HEBREW POINT QAMATS QATAN\n\t\t( 0x0610 <= code && code <= 0x061A ) || // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\n\t\t( 0x064B <= code && code <= 0x065F ) || // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\n\t\tcode === 0x0670 || // Mn ARABIC LETTER SUPERSCRIPT ALEF\n\t\t( 0x06D6 <= code && code <= 0x06DC ) || // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\n\t\t( 0x06DF <= code && code <= 0x06E4 ) || // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\n\t\t( 0x06E7 <= code && code <= 0x06E8 ) || // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\n\t\t( 0x06EA <= code && code <= 0x06ED ) || // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\n\t\tcode === 0x0711 || // Mn SYRIAC LETTER SUPERSCRIPT ALAPH\n\t\t( 0x0730 <= code && code <= 0x074A ) || // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\n\t\t( 0x07A6 <= code && code <= 0x07B0 ) || // Mn [11] THAANA ABAFILI..THAANA SUKUN\n\t\t( 0x07EB <= code && code <= 0x07F3 ) || // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\n\t\tcode === 0x07FD || // Mn NKO DANTAYALAN\n\t\t( 0x0816 <= code && code <= 0x0819 ) || // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\n\t\t( 0x081B <= code && code <= 0x0823 ) || // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\n\t\t( 0x0825 <= code && code <= 0x0827 ) || // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\n\t\t( 0x0829 <= code && code <= 0x082D ) || // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\n\t\t( 0x0859 <= code && code <= 0x085B ) || // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\n\t\t( 0x08D3 <= code && code <= 0x08E1 ) || // Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA\n\t\t( 0x08E3 <= code && code <= 0x0902 ) || // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\n\t\tcode === 0x093A || // Mn DEVANAGARI VOWEL SIGN OE\n\t\tcode === 0x093C || // Mn DEVANAGARI SIGN NUKTA\n\t\t( 0x0941 <= code && code <= 0x0948 ) || // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\n\t\tcode === 0x094D || // Mn DEVANAGARI SIGN VIRAMA\n\t\t( 0x0951 <= code && code <= 0x0957 ) || // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\n\t\t( 0x0962 <= code && code <= 0x0963 ) || // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0981 || // Mn BENGALI SIGN CANDRABINDU\n\t\tcode === 0x09BC || // Mn BENGALI SIGN NUKTA\n\t\tcode === 0x09BE || // Mc BENGALI VOWEL SIGN AA\n\t\t( 0x09C1 <= code && code <= 0x09C4 ) || // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\n\t\tcode === 0x09CD || // Mn BENGALI SIGN VIRAMA\n\t\tcode === 0x09D7 || // Mc BENGALI AU LENGTH MARK\n\t\t( 0x09E2 <= code && code <= 0x09E3 ) || // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\n\t\tcode === 0x09FE || // Mn BENGALI SANDHI MARK\n\t\t( 0x0A01 <= code && code <= 0x0A02 ) || // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\n\t\tcode === 0x0A3C || // Mn GURMUKHI SIGN NUKTA\n\t\t( 0x0A41 <= code && code <= 0x0A42 ) || // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\n\t\t( 0x0A47 <= code && code <= 0x0A48 ) || // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\n\t\t( 0x0A4B <= code && code <= 0x0A4D ) || // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\n\t\tcode === 0x0A51 || // Mn GURMUKHI SIGN UDAAT\n\t\t( 0x0A70 <= code && code <= 0x0A71 ) || // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK\n\t\tcode === 0x0A75 || // Mn GURMUKHI SIGN YAKASH\n\t\t( 0x0A81 <= code && code <= 0x0A82 ) || // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\n\t\tcode === 0x0ABC || // Mn GUJARATI SIGN NUKTA\n\t\t( 0x0AC1 <= code && code <= 0x0AC5 ) || // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\n\t\t( 0x0AC7 <= code && code <= 0x0AC8 ) || // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\n\t\tcode === 0x0ACD || // Mn GUJARATI SIGN VIRAMA\n\t\t( 0x0AE2 <= code && code <= 0x0AE3 ) || // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\n\t\t( 0x0AFA <= code && code <= 0x0AFF ) || // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\n\t\tcode === 0x0B01 || // Mn ORIYA SIGN CANDRABINDU\n\t\tcode === 0x0B3C || // Mn ORIYA SIGN NUKTA\n\t\tcode === 0x0B3E || // Mc ORIYA VOWEL SIGN AA\n\t\tcode === 0x0B3F || // Mn ORIYA VOWEL SIGN I\n\t\t( 0x0B41 <= code && code <= 0x0B44 ) || // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\n\t\tcode === 0x0B4D || // Mn ORIYA SIGN VIRAMA\n\t\t( 0x0B55 <= code && code <= 0x0B56 ) || // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK\n\t\tcode === 0x0B57 || // Mc ORIYA AU LENGTH MARK\n\t\t( 0x0B62 <= code && code <= 0x0B63 ) || // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0B82 || // Mn TAMIL SIGN ANUSVARA\n\t\tcode === 0x0BBE || // Mc TAMIL VOWEL SIGN AA\n\t\tcode === 0x0BC0 || // Mn TAMIL VOWEL SIGN II\n\t\tcode === 0x0BCD || // Mn TAMIL SIGN VIRAMA\n\t\tcode === 0x0BD7 || // Mc TAMIL AU LENGTH MARK\n\t\tcode === 0x0C00 || // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE\n\t\tcode === 0x0C04 || // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE\n\t\t( 0x0C3E <= code && code <= 0x0C40 ) || // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\n\t\t( 0x0C46 <= code && code <= 0x0C48 ) || // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\n\t\t( 0x0C4A <= code && code <= 0x0C4D ) || // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\n\t\t( 0x0C55 <= code && code <= 0x0C56 ) || // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\n\t\t( 0x0C62 <= code && code <= 0x0C63 ) || // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0C81 || // Mn KANNADA SIGN CANDRABINDU\n\t\tcode === 0x0CBC || // Mn KANNADA SIGN NUKTA\n\t\tcode === 0x0CBF || // Mn KANNADA VOWEL SIGN I\n\t\tcode === 0x0CC2 || // Mc KANNADA VOWEL SIGN UU\n\t\tcode === 0x0CC6 || // Mn KANNADA VOWEL SIGN E\n\t\t( 0x0CCC <= code && code <= 0x0CCD ) || // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\n\t\t( 0x0CD5 <= code && code <= 0x0CD6 ) || // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\n\t\t( 0x0CE2 <= code && code <= 0x0CE3 ) || // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\n\t\t( 0x0D00 <= code && code <= 0x0D01 ) || // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\n\t\t( 0x0D3B <= code && code <= 0x0D3C ) || // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\n\t\tcode === 0x0D3E || // Mc MALAYALAM VOWEL SIGN AA\n\t\t( 0x0D41 <= code && code <= 0x0D44 ) || // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\n\t\tcode === 0x0D4D || // Mn MALAYALAM SIGN VIRAMA\n\t\tcode === 0x0D57 || // Mc MALAYALAM AU LENGTH MARK\n\t\t( 0x0D62 <= code && code <= 0x0D63 ) || // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0D81 || // Mn SINHALA SIGN CANDRABINDU\n\t\tcode === 0x0DCA || // Mn SINHALA SIGN AL-LAKUNA\n\t\tcode === 0x0DCF || // Mc SINHALA VOWEL SIGN AELA-PILLA\n\t\t( 0x0DD2 <= code && code <= 0x0DD4 ) || // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\n\t\tcode === 0x0DD6 || // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA\n\t\tcode === 0x0DDF || // Mc SINHALA VOWEL SIGN GAYANUKITTA\n\t\tcode === 0x0E31 || // Mn THAI CHARACTER MAI HAN-AKAT\n\t\t( 0x0E34 <= code && code <= 0x0E3A ) || // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\n\t\t( 0x0E47 <= code && code <= 0x0E4E ) || // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\n\t\tcode === 0x0EB1 || // Mn LAO VOWEL SIGN MAI KAN\n\t\t( 0x0EB4 <= code && code <= 0x0EBC ) || // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO\n\t\t( 0x0EC8 <= code && code <= 0x0ECD ) || // Mn [6] LAO TONE MAI EK..LAO NIGGAHITA\n\t\t( 0x0F18 <= code && code <= 0x0F19 ) || // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\n\t\tcode === 0x0F35 || // Mn TIBETAN MARK NGAS BZUNG NYI ZLA\n\t\tcode === 0x0F37 || // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS\n\t\tcode === 0x0F39 || // Mn TIBETAN MARK TSA -PHRU\n\t\t( 0x0F71 <= code && code <= 0x0F7E ) || // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\n\t\t( 0x0F80 <= code && code <= 0x0F84 ) || // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\n\t\t( 0x0F86 <= code && code <= 0x0F87 ) || // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\n\t\t( 0x0F8D <= code && code <= 0x0F97 ) || // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\n\t\t( 0x0F99 <= code && code <= 0x0FBC ) || // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\n\t\tcode === 0x0FC6 || // Mn TIBETAN SYMBOL PADMA GDAN\n\t\t( 0x102D <= code && code <= 0x1030 ) || // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\n\t\t( 0x1032 <= code && code <= 0x1037 ) || // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\n\t\t( 0x1039 <= code && code <= 0x103A ) || // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\n\t\t( 0x103D <= code && code <= 0x103E ) || // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\n\t\t( 0x1058 <= code && code <= 0x1059 ) || // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\n\t\t( 0x105E <= code && code <= 0x1060 ) || // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\n\t\t( 0x1071 <= code && code <= 0x1074 ) || // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\n\t\tcode === 0x1082 || // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA\n\t\t( 0x1085 <= code && code <= 0x1086 ) || // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\n\t\tcode === 0x108D || // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\n\t\tcode === 0x109D || // Mn MYANMAR VOWEL SIGN AITON AI\n\t\t( 0x135D <= code && code <= 0x135F ) || // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\n\t\t( 0x1712 <= code && code <= 0x1714 ) || // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\n\t\t( 0x1732 <= code && code <= 0x1734 ) || // Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD\n\t\t( 0x1752 <= code && code <= 0x1753 ) || // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\n\t\t( 0x1772 <= code && code <= 0x1773 ) || // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\n\t\t( 0x17B4 <= code && code <= 0x17B5 ) || // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\n\t\t( 0x17B7 <= code && code <= 0x17BD ) || // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\n\t\tcode === 0x17C6 || // Mn KHMER SIGN NIKAHIT\n\t\t( 0x17C9 <= code && code <= 0x17D3 ) || // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\n\t\tcode === 0x17DD || // Mn KHMER SIGN ATTHACAN\n\t\t( 0x180B <= code && code <= 0x180D ) || // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\n\t\t( 0x1885 <= code && code <= 0x1886 ) || // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\n\t\tcode === 0x18A9 || // Mn MONGOLIAN LETTER ALI GALI DAGALGA\n\t\t( 0x1920 <= code && code <= 0x1922 ) || // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\n\t\t( 0x1927 <= code && code <= 0x1928 ) || // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\n\t\tcode === 0x1932 || // Mn LIMBU SMALL LETTER ANUSVARA\n\t\t( 0x1939 <= code && code <= 0x193B ) || // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\n\t\t( 0x1A17 <= code && code <= 0x1A18 ) || // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\n\t\tcode === 0x1A1B || // Mn BUGINESE VOWEL SIGN AE\n\t\tcode === 0x1A56 || // Mn TAI THAM CONSONANT SIGN MEDIAL LA\n\t\t( 0x1A58 <= code && code <= 0x1A5E ) || // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\n\t\tcode === 0x1A60 || // Mn TAI THAM SIGN SAKOT\n\t\tcode === 0x1A62 || // Mn TAI THAM VOWEL SIGN MAI SAT\n\t\t( 0x1A65 <= code && code <= 0x1A6C ) || // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\n\t\t( 0x1A73 <= code && code <= 0x1A7C ) || // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\n\t\tcode === 0x1A7F || // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT\n\t\t( 0x1AB0 <= code && code <= 0x1ABD ) || // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\n\t\tcode === 0x1ABE || // Me COMBINING PARENTHESES OVERLAY\n\t\t( 0x1ABF <= code && code <= 0x1AC0 ) || // Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW\n\t\t( 0x1B00 <= code && code <= 0x1B03 ) || // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\n\t\tcode === 0x1B34 || // Mn BALINESE SIGN REREKAN\n\t\tcode === 0x1B35 || // Mc BALINESE VOWEL SIGN TEDUNG\n\t\t( 0x1B36 <= code && code <= 0x1B3A) || // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\n\t\tcode === 0x1B3C || // Mn BALINESE VOWEL SIGN LA LENGA\n\t\tcode === 0x1B42 || // Mn BALINESE VOWEL SIGN PEPET\n\t\t( 0x1B6B <= code && code <= 0x1B73 ) || // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\n\t\t( 0x1B80 <= code && code <= 0x1B81 ) || // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\n\t\t( 0x1BA2 <= code && code <= 0x1BA5 ) || // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\n\t\t( 0x1BA8 <= code && code <= 0x1BA9 ) || // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\n\t\t( 0x1BAB <= code && code <= 0x1BAD ) || // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\n\t\tcode === 0x1BE6 || // Mn BATAK SIGN TOMPI\n\t\t( 0x1BE8 <= code && code <= 0x1BE9) || // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\n\t\tcode === 0x1BED || // Mn BATAK VOWEL SIGN KARO O\n\t\t( 0x1BEF <= code && code <= 0x1BF1 ) || // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\n\t\t( 0x1C2C <= code && code <= 0x1C33 ) || // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\n\t\t( 0x1C36 <= code && code <= 0x1C37 ) || // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\n\t\t( 0x1CD0 <= code && code <= 0x1CD2 ) || // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\n\t\t( 0x1CD4 <= code && code <= 0x1CE0 ) || // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\n\t\t( 0x1CE2 <= code && code <= 0x1CE8 ) || // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\n\t\tcode === 0x1CED || // Mn VEDIC SIGN TIRYAK\n\t\tcode === 0x1CF4 || // Mn VEDIC TONE CANDRA ABOVE\n\t\t( 0x1CF8 <= code && code <= 0x1CF9 ) || // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\n\t\t( 0x1DC0 <= code && code <= 0x1DF9 ) || // Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW\n\t\t( 0x1DFB <= code && code <= 0x1DFF ) || // Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\n\t\tcode === 0x200C || // Cf ZERO WIDTH NON-JOINER\n\t\t( 0x20D0 <= code && code <= 0x20DC ) || // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\n\t\t( 0x20DD <= code && code <= 0x20E0 ) || // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\n\t\tcode === 0x20E1 || // Mn COMBINING LEFT RIGHT ARROW ABOVE\n\t\t( 0x20E2 <= code && code <= 0x20E4 ) || // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\n\t\t( 0x20E5 <= code && code <= 0x20F0 ) || // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\n\t\t( 0x2CEF <= code && code <= 0x2CF1 ) || // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\n\t\tcode === 0x2D7F || // Mn TIFINAGH CONSONANT JOINER\n\t\t( 0x2DE0 <= code && code <= 0x2DFF ) || // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\n\t\t( 0x302A <= code && code <= 0x302D ) || // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\n\t\t( 0x302E <= code && code <= 0x302F ) || // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\n\t\t( 0x3099 <= code && code <= 0x309A ) || // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\n\t\tcode === 0xA66F || // Mn COMBINING CYRILLIC VZMET\n\t\t( 0xA670 <= code && code <= 0xA672 ) || // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\n\t\t( 0xA674 <= code && code <= 0xA67D ) || // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\n\t\t( 0xA69E <= code && code <= 0xA69F ) || // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\n\t\t( 0xA6F0 <= code && code <= 0xA6F1 ) || // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\n\t\tcode === 0xA802 || // Mn SYLOTI NAGRI SIGN DVISVARA\n\t\tcode === 0xA806 || // Mn SYLOTI NAGRI SIGN HASANTA\n\t\tcode === 0xA80B || // Mn SYLOTI NAGRI SIGN ANUSVARA\n\t\t( 0xA825 <= code && code <= 0xA826 ) || // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\n\t\tcode === 0xA82C || // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA\n\t\t( 0xA8C4 <= code && code <= 0xA8C5 ) || // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\n\t\t( 0xA8E0 <= code && code <= 0xA8F1 ) || // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\n\t\tcode === 0xA8FF || // Mn DEVANAGARI VOWEL SIGN AY\n\t\t( 0xA926 <= code && code <= 0xA92D ) || // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\n\t\t( 0xA947 <= code && code <= 0xA951 ) || // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\n\t\t( 0xA980 <= code && code <= 0xA982 ) || // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\n\t\tcode === 0xA9B3 || // Mn JAVANESE SIGN CECAK TELU\n\t\t( 0xA9B6 <= code && code <= 0xA9B9 ) || // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\n\t\t( 0xA9BC <= code && code <= 0xA9BD ) || // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET\n\t\tcode === 0xA9E5 || // Mn MYANMAR SIGN SHAN SAW\n\t\t( 0xAA29 <= code && code <= 0xAA2E ) || // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\n\t\t( 0xAA31 <= code && code <= 0xAA32 ) || // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\n\t\t( 0xAA35 <= code && code <= 0xAA36 ) || // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\n\t\tcode === 0xAA43 || // Mn CHAM CONSONANT SIGN FINAL NG\n\t\tcode === 0xAA4C || // Mn CHAM CONSONANT SIGN FINAL M\n\t\tcode === 0xAA7C || // Mn MYANMAR SIGN TAI LAING TONE-2\n\t\tcode === 0xAAB0 || // Mn TAI VIET MAI KANG\n\t\t( 0xAAB2 <= code && code <= 0xAAB4 ) || // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U\n\t\t( 0xAAB7 <= code && code <= 0xAAB8 ) || // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\n\t\t( 0xAABE <= code && code <= 0xAABF ) || // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\n\t\tcode === 0xAAC1 || // Mn TAI VIET TONE MAI THO\n\t\t( 0xAAEC <= code && code <= 0xAAED ) || // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\n\t\tcode === 0xAAF6 || // Mn MEETEI MAYEK VIRAMA\n\t\tcode === 0xABE5 || // Mn MEETEI MAYEK VOWEL SIGN ANAP\n\t\tcode === 0xABE8 || // Mn MEETEI MAYEK VOWEL SIGN UNAP\n\t\tcode === 0xABED || // Mn MEETEI MAYEK APUN IYEK\n\t\tcode === 0xFB1E || // Mn HEBREW POINT JUDEO-SPANISH VARIKA\n\t\t( 0xFE00 <= code && code <= 0xFE0F ) || // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\n\t\t( 0xFE20 <= code && code <= 0xFE2F ) || // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\n\t\t( 0xFF9E <= code && code <= 0xFF9F ) || // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\n\t\tcode === 0x101FD || // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\n\t\tcode === 0x102E0 || // Mn COPTIC EPACT THOUSANDS MARK\n\t\t( 0x10376 <= code && code <= 0x1037A ) || // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\n\t\t( 0x10A01 <= code && code <= 0x10A03 ) || // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\n\t\t( 0x10A05 <= code && code <= 0x10A06 ) || // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\n\t\t( 0x10A0C <= code && code <= 0x10A0F ) || // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\n\t\t( 0x10A38 <= code && code <= 0x10A3A ) || // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\n\t\tcode === 0x10A3F || // Mn KHAROSHTHI VIRAMA\n\t\t( 0x10AE5 <= code && code <= 0x10AE6 ) || // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\n\t\t( 0x10D24 <= code && code <= 0x10D27 ) || // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI\n\t\t( 0x10EAB <= code && code <= 0x10EAC ) || // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK\n\t\t( 0x10F46 <= code && code <= 0x10F50 ) || // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW\n\t\tcode === 0x11001 || // Mn BRAHMI SIGN ANUSVARA\n\t\t( 0x11038 <= code && code <= 0x11046 ) || // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\n\t\t( 0x1107F <= code && code <= 0x11081 ) || // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\n\t\t( 0x110B3 <= code && code <= 0x110B6 ) || // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\n\t\t( 0x110B9 <= code && code <= 0x110BA ) || // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\n\t\t( 0x11100 <= code && code <= 0x11102 ) || // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\n\t\t( 0x11127 <= code && code <= 0x1112B ) || // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\n\t\t( 0x1112D <= code && code <= 0x11134 ) || // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\n\t\tcode === 0x11173 || // Mn MAHAJANI SIGN NUKTA\n\t\t( 0x11180 <= code && code <= 0x11181 ) || // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\n\t\t( 0x111B6 <= code && code <= 0x111BE ) || // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\n\t\t( 0x111C9 <= code && code <= 0x111CC ) || // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK\n\t\tcode === 0x111CF || // Mn SHARADA SIGN INVERTED CANDRABINDU\n\t\t( 0x1122F <= code && code <= 0x11231 ) || // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\n\t\tcode === 0x11234 || // Mn KHOJKI SIGN ANUSVARA\n\t\t( 0x11236 <= code && code <= 0x11237 ) || // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\n\t\tcode === 0x1123E || // Mn KHOJKI SIGN SUKUN\n\t\tcode === 0x112DF || // Mn KHUDAWADI SIGN ANUSVARA\n\t\t( 0x112E3 <= code && code <= 0x112EA ) || // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\n\t\t( 0x11300 <= code && code <= 0x11301 ) || // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\n\t\t( 0x1133B <= code && code <= 0x1133C ) || // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA\n\t\tcode === 0x1133E || // Mc GRANTHA VOWEL SIGN AA\n\t\tcode === 0x11340 || // Mn GRANTHA VOWEL SIGN II\n\t\tcode === 0x11357 || // Mc GRANTHA AU LENGTH MARK\n\t\t( 0x11366 <= code && code <= 0x1136C ) || // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\n\t\t( 0x11370 <= code && code <= 0x11374 ) || // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\n\t\t( 0x11438 <= code && code <= 0x1143F ) || // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\n\t\t( 0x11442 <= code && code <= 0x11444 ) || // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\n\t\tcode === 0x11446 || // Mn NEWA SIGN NUKTA\n\t\tcode === 0x1145E || // Mn NEWA SANDHI MARK\n\t\tcode === 0x114B0 || // Mc TIRHUTA VOWEL SIGN AA\n\t\t( 0x114B3 <= code && code <= 0x114B8 ) || // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\n\t\tcode === 0x114BA || // Mn TIRHUTA VOWEL SIGN SHORT E\n\t\tcode === 0x114BD || // Mc TIRHUTA VOWEL SIGN SHORT O\n\t\t( 0x114BF <= code && code <= 0x114C0 ) || // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\n\t\t( 0x114C2 <= code && code <= 0x114C3 ) || // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\n\t\tcode === 0x115AF || // Mc SIDDHAM VOWEL SIGN AA\n\t\t( 0x115B2 <= code && code <= 0x115B5 ) || // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\n\t\t( 0x115BC <= code && code <= 0x115BD ) || // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\n\t\t( 0x115BF <= code && code <= 0x115C0 ) || // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\n\t\t( 0x115DC <= code && code <= 0x115DD ) || // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\n\t\t( 0x11633 <= code && code <= 0x1163A ) || // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\n\t\tcode === 0x1163D || // Mn MODI SIGN ANUSVARA\n\t\t( 0x1163F <= code && code <= 0x11640 ) || // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\n\t\tcode === 0x116AB || // Mn TAKRI SIGN ANUSVARA\n\t\tcode === 0x116AD || // Mn TAKRI VOWEL SIGN AA\n\t\t( 0x116B0 <= code && code <= 0x116B5 ) || // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\n\t\tcode === 0x116B7 || // Mn TAKRI SIGN NUKTA\n\t\t( 0x1171D <= code && code <= 0x1171F ) || // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\n\t\t( 0x11722 <= code && code <= 0x11725 ) || // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\n\t\t( 0x11727 <= code && code <= 0x1172B ) || // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\n\t\t( 0x1182F <= code && code <= 0x11837 ) || // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA\n\t\t( 0x11839 <= code && code <= 0x1183A ) || // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA\n\t\tcode === 0x11930 || // Mc DIVES AKURU VOWEL SIGN AA\n\t\t( 0x1193B <= code && code <= 0x1193C ) || // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU\n\t\tcode === 0x1193E || // Mn DIVES AKURU VIRAMA\n\t\tcode === 0x11943 || // Mn DIVES AKURU SIGN NUKTA\n\t\t( 0x119D4 <= code && code <= 0x119D7 ) || // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR\n\t\t( 0x119DA <= code && code <= 0x119DB ) || // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI\n\t\tcode === 0x119E0 || // Mn NANDINAGARI SIGN VIRAMA\n\t\t( 0x11A01 <= code && code <= 0x11A0A ) || // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK\n\t\t( 0x11A33 <= code && code <= 0x11A38 ) || // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\n\t\t( 0x11A3B <= code && code <= 0x11A3E ) || // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\n\t\tcode === 0x11A47 || // Mn ZANABAZAR SQUARE SUBJOINER\n\t\t( 0x11A51 <= code && code <= 0x11A56 ) || // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\n\t\t( 0x11A59 <= code && code <= 0x11A5B ) || // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\n\t\t( 0x11A8A <= code && code <= 0x11A96 ) || // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\n\t\t( 0x11A98 <= code && code <= 0x11A99 ) || // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\n\t\t( 0x11C30 <= code && code <= 0x11C36 ) || // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\n\t\t( 0x11C38 <= code && code <= 0x11C3D ) || // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\n\t\tcode === 0x11C3F || // Mn BHAIKSUKI SIGN VIRAMA\n\t\t( 0x11C92 <= code && code <= 0x11CA7 ) || // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\n\t\t( 0x11CAA <= code && code <= 0x11CB0 ) || // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\n\t\t( 0x11CB2 <= code && code <= 0x11CB3 ) || // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\n\t\t( 0x11CB5 <= code && code <= 0x11CB6 ) || // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\n\t\t( 0x11D31 <= code && code <= 0x11D36 ) || // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\n\t\tcode === 0x11D3A || // Mn MASARAM GONDI VOWEL SIGN E\n\t\t( 0x11D3C <= code && code <= 0x11D3D ) || // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\n\t\t( 0x11D3F <= code && code <= 0x11D45 ) || // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\n\t\tcode === 0x11D47 || // Mn MASARAM GONDI RA-KARA\n\t\t( 0x11D90 <= code && code <= 0x11D91 ) || // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI\n\t\tcode === 0x11D95 || // Mn GUNJALA GONDI SIGN ANUSVARA\n\t\tcode === 0x11D97 || // Mn GUNJALA GONDI VIRAMA\n\t\t( 0x11EF3 <= code && code <= 0x11EF4 ) || // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U\n\t\t( 0x16AF0 <= code && code <= 0x16AF4 ) || // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\n\t\t( 0x16B30 <= code && code <= 0x16B36 ) || // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\n\t\tcode === 0x16F4F || // Mn MIAO SIGN CONSONANT MODIFIER BAR\n\t\t( 0x16F8F <= code && code <= 0x16F92 ) || // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW\n\t\tcode === 0x16FE4 || // Mn KHITAN SMALL SCRIPT FILLER\n\t\t( 0x1BC9D <= code && code <= 0x1BC9E ) || // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\n\t\tcode === 0x1D165 || // Mc MUSICAL SYMBOL COMBINING STEM\n\t\t( 0x1D167 <= code && code <= 0x1D169 ) || // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\n\t\t( 0x1D16E <= code && code <= 0x1D172 ) || // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\n\t\t( 0x1D17B <= code && code <= 0x1D182 ) || // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\n\t\t( 0x1D185 <= code && code <= 0x1D18B ) || // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\n\t\t( 0x1D1AA <= code && code <= 0x1D1AD ) || // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\n\t\t( 0x1D242 <= code && code <= 0x1D244 ) || // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\n\t\t( 0x1DA00 <= code && code <= 0x1DA36 ) || // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\n\t\t( 0x1DA3B <= code && code <= 0x1DA6C ) || // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\n\t\tcode === 0x1DA75 || // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\n\t\tcode === 0x1DA84 || // Mn SIGNWRITING LOCATION HEAD NECK\n\t\t( 0x1DA9B <= code && code <= 0x1DA9F ) || // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\n\t\t( 0x1DAA1 <= code && code <= 0x1DAAF ) || // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\n\t\t( 0x1E000 <= code && code <= 0x1E006 ) || // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\n\t\t( 0x1E008 <= code && code <= 0x1E018 ) || // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\n\t\t( 0x1E01B <= code && code <= 0x1E021 ) || // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\n\t\t( 0x1E023 <= code && code <= 0x1E024 ) || // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\n\t\t( 0x1E026 <= code && code <= 0x1E02A ) || // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\n\t\t( 0x1E130 <= code && code <= 0x1E136 ) || // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D\n\t\t( 0x1E2EC <= code && code <= 0x1E2EF ) || // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI\n\t\t( 0x1E8D0 <= code && code <= 0x1E8D6 ) || // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\n\t\t( 0x1E944 <= code && code <= 0x1E94A ) || // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\n\t\t( 0x1F3FB <= code && code <= 0x1F3FF ) || // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\n\t\t( 0xE0020 <= code && code <= 0xE007F ) || // Cf [96] TAG SPACE..CANCEL TAG\n\t\t( 0xE0100 <= code && code <= 0xE01EF ) // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\n\t) {\n\t\treturn constants.Extend;\n\t}\n\tif (\n\t\t( 0x1F1E6 <= code && code <= 0x1F1FF ) // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\n\t) {\n\t\treturn constants.RegionalIndicator;\n\t}\n\tif (\n\t\tcode === 0x0903 || // Mc DEVANAGARI SIGN VISARGA\n\t\tcode === 0x093B || // Mc DEVANAGARI VOWEL SIGN OOE\n\t\t( 0x093E <= code && code <= 0x0940 ) || // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\n\t\t( 0x0949 <= code && code <= 0x094C ) || // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\n\t\t( 0x094E <= code && code <= 0x094F ) || // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\n\t\t( 0x0982 <= code && code <= 0x0983 ) || // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\n\t\t( 0x09BF <= code && code <= 0x09C0 ) || // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\n\t\t( 0x09C7 <= code && code <= 0x09C8 ) || // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\n\t\t( 0x09CB <= code && code <= 0x09CC ) || // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\n\t\tcode === 0x0A03 || // Mc GURMUKHI SIGN VISARGA\n\t\t( 0x0A3E <= code && code <= 0x0A40 ) || // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\n\t\tcode === 0x0A83 || // Mc GUJARATI SIGN VISARGA\n\t\t( 0x0ABE <= code && code <= 0x0AC0 ) || // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\n\t\tcode === 0x0AC9 || // Mc GUJARATI VOWEL SIGN CANDRA O\n\t\t( 0x0ACB <= code && code <= 0x0ACC ) || // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\n\t\t( 0x0B02 <= code && code <= 0x0B03 ) || // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\n\t\tcode === 0x0B40 || // Mc ORIYA VOWEL SIGN II\n\t\t( 0x0B47 <= code && code <= 0x0B48 ) || // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\n\t\t( 0x0B4B <= code && code <= 0x0B4C ) || // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\n\t\tcode === 0x0BBF || // Mc TAMIL VOWEL SIGN I\n\t\t( 0x0BC1 <= code && code <= 0x0BC2 ) || // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\n\t\t( 0x0BC6 <= code && code <= 0x0BC8 ) || // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\n\t\t( 0x0BCA <= code && code <= 0x0BCC ) || // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\n\t\t( 0x0C01 <= code && code <= 0x0C03 ) || // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\n\t\t( 0x0C41 <= code && code <= 0x0C44 ) || // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\n\t\t( 0x0C82 <= code && code <= 0x0C83 ) || // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\n\t\tcode === 0x0CBE || // Mc KANNADA VOWEL SIGN AA\n\t\t( 0x0CC0 <= code && code <= 0x0CC1 ) || // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\n\t\t( 0x0CC3 <= code && code <= 0x0CC4 ) || // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\n\t\t( 0x0CC7 <= code && code <= 0x0CC8 ) || // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\n\t\t( 0x0CCA <= code && code <= 0x0CCB ) || // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\n\t\t( 0x0D02 <= code && code <= 0x0D03 ) || // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\n\t\t( 0x0D3F <= code && code <= 0x0D40 ) || // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\n\t\t( 0x0D46 <= code && code <= 0x0D48 ) || // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\n\t\t( 0x0D4A <= code && code <= 0x0D4C ) || // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\n\t\t( 0x0D82 <= code && code <= 0x0D83 ) || // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\n\t\t( 0x0DD0 <= code && code <= 0x0DD1 ) || // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\n\t\t( 0x0DD8 <= code && code <= 0x0DDE ) || // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\n\t\t( 0x0DF2 <= code && code <= 0x0DF3 ) || // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\n\t\tcode === 0x0E33 || // Lo THAI CHARACTER SARA AM\n\t\tcode === 0x0EB3 || // Lo LAO VOWEL SIGN AM\n\t\t( 0x0F3E <= code && code <= 0x0F3F ) || // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\n\t\tcode === 0x0F7F || // Mc TIBETAN SIGN RNAM BCAD\n\t\tcode === 0x1031 || // Mc MYANMAR VOWEL SIGN E\n\t\t( 0x103B <= code && code <= 0x103C ) || // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\n\t\t( 0x1056 <= code && code <= 0x1057 ) || // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\n\t\tcode === 0x1084 || // Mc MYANMAR VOWEL SIGN SHAN E\n\t\tcode === 0x17B6 || // Mc KHMER VOWEL SIGN AA\n\t\t( 0x17BE <= code && code <= 0x17C5 ) || // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\n\t\t( 0x17C7 <= code && code <= 0x17C8 ) || // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\n\t\t( 0x1923 <= code && code <= 0x1926 ) || // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\n\t\t( 0x1929 <= code && code <= 0x192B ) || // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\n\t\t( 0x1930 <= code && code <= 0x1931 ) || // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\n\t\t( 0x1933 <= code && code <= 0x1938 ) || // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\n\t\t( 0x1A19 <= code && code <= 0x1A1A ) || // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\n\t\tcode === 0x1A55 || // Mc TAI THAM CONSONANT SIGN MEDIAL RA\n\t\tcode === 0x1A57 || // Mc TAI THAM CONSONANT SIGN LA TANG LAI\n\t\t( 0x1A6D <= code && code <= 0x1A72 ) || // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\n\t\tcode === 0x1B04 || // Mc BALINESE SIGN BISAH\n\t\tcode === 0x1B3B || // Mc BALINESE VOWEL SIGN RA REPA TEDUNG\n\t\t( 0x1B3D <= code && code <= 0x1B41 ) || // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\n\t\t( 0x1B43 <= code && code <= 0x1B44 ) || // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\n\t\tcode === 0x1B82 || // Mc SUNDANESE SIGN PANGWISAD\n\t\tcode === 0x1BA1 || // Mc SUNDANESE CONSONANT SIGN PAMINGKAL\n\t\t( 0x1BA6 <= code && code <= 0x1BA7 ) || // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\n\t\tcode === 0x1BAA || // Mc SUNDANESE SIGN PAMAAEH\n\t\tcode === 0x1BE7 || // Mc BATAK VOWEL SIGN E\n\t\t( 0x1BEA <= code && code <= 0x1BEC ) || // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\n\t\tcode === 0x1BEE || // Mc BATAK VOWEL SIGN U\n\t\t( 0x1BF2 <= code && code <= 0x1BF3 ) || // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN\n\t\t( 0x1C24 <= code && code <= 0x1C2B ) || // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\n\t\t( 0x1C34 <= code && code <= 0x1C35 ) || // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\n\t\tcode === 0x1CE1 || // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\n\t\tcode === 0x1CF7 || // Mc VEDIC SIGN ATIKRAMA\n\t\t( 0xA823 <= code && code <= 0xA824 ) || // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\n\t\tcode === 0xA827 || // Mc SYLOTI NAGRI VOWEL SIGN OO\n\t\t( 0xA880 <= code && code <= 0xA881 ) || // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\n\t\t( 0xA8B4 <= code && code <= 0xA8C3 ) || // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\n\t\t( 0xA952 <= code && code <= 0xA953 ) || // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\n\t\tcode === 0xA983 || // Mc JAVANESE SIGN WIGNYAN\n\t\t( 0xA9B4 <= code && code <= 0xA9B5 ) || // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\n\t\t( 0xA9BA <= code && code <= 0xA9BB ) || // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\n\t\t( 0xA9BE <= code && code <= 0xA9C0 ) || // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON\n\t\t( 0xAA2F <= code && code <= 0xAA30 ) || // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\n\t\t( 0xAA33 <= code && code <= 0xAA34 ) || // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\n\t\tcode === 0xAA4D || // Mc CHAM CONSONANT SIGN FINAL H\n\t\tcode === 0xAAEB || // Mc MEETEI MAYEK VOWEL SIGN II\n\t\t( 0xAAEE <= code && code <= 0xAAEF ) || // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\n\t\tcode === 0xAAF5 || // Mc MEETEI MAYEK VOWEL SIGN VISARGA\n\t\t( 0xABE3 <= code && code <= 0xABE4 ) || // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\n\t\t( 0xABE6 <= code && code <= 0xABE7 ) || // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\n\t\t( 0xABE9 <= code && code <= 0xABEA ) || // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\n\t\tcode === 0xABEC || // Mc MEETEI MAYEK LUM IYEK\n\t\tcode === 0x11000 || // Mc BRAHMI SIGN CANDRABINDU\n\t\tcode === 0x11002 || // Mc BRAHMI SIGN VISARGA\n\t\tcode === 0x11082 || // Mc KAITHI SIGN VISARGA\n\t\t( 0x110B0 <= code && code <= 0x110B2 ) || // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\n\t\t( 0x110B7 <= code && code <= 0x110B8 ) || // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\n\t\tcode === 0x1112C || // Mc CHAKMA VOWEL SIGN E\n\t\t( 0x11145 <= code && code <= 0x11146 ) || // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI\n\t\tcode === 0x11182 || // Mc SHARADA SIGN VISARGA\n\t\t( 0x111B3 <= code && code <= 0x111B5 ) || // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\n\t\t( 0x111BF <= code && code <= 0x111C0 ) || // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\n\t\tcode === 0x111CE || // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E\n\t\t( 0x1122C <= code && code <= 0x1122E ) || // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\n\t\t( 0x11232 <= code && code <= 0x11233 ) || // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\n\t\tcode === 0x11235 || // Mc KHOJKI SIGN VIRAMA\n\t\t( 0x112E0 <= code && code <= 0x112E2 ) || // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\n\t\t( 0x11302 <= code && code <= 0x11303 ) || // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\n\t\tcode === 0x1133F || // Mc GRANTHA VOWEL SIGN I\n\t\t( 0x11341 <= code && code <= 0x11344 ) || // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\n\t\t( 0x11347 <= code && code <= 0x11348 ) || // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\n\t\t( 0x1134B <= code && code <= 0x1134D ) || // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\n\t\t( 0x11362 <= code && code <= 0x11363 ) || // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\n\t\t( 0x11435 <= code && code <= 0x11437 ) || // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\n\t\t( 0x11440 <= code && code <= 0x11441 ) || // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\n\t\tcode === 0x11445 || // Mc NEWA SIGN VISARGA\n\t\t( 0x114B1 <= code && code <= 0x114B2 ) || // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\n\t\tcode === 0x114B9 || // Mc TIRHUTA VOWEL SIGN E\n\t\t( 0x114BB <= code && code <= 0x114BC ) || // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\n\t\tcode === 0x114BE || // Mc TIRHUTA VOWEL SIGN AU\n\t\tcode === 0x114C1 || // Mc TIRHUTA SIGN VISARGA\n\t\t( 0x115B0 <= code && code <= 0x115B1 ) || // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\n\t\t( 0x115B8 <= code && code <= 0x115BB ) || // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\n\t\tcode === 0x115BE || // Mc SIDDHAM SIGN VISARGA\n\t\t( 0x11630 <= code && code <= 0x11632 ) || // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\n\t\t( 0x1163B <= code && code <= 0x1163C ) || // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\n\t\tcode === 0x1163E || // Mc MODI SIGN VISARGA\n\t\tcode === 0x116AC || // Mc TAKRI SIGN VISARGA\n\t\t( 0x116AE <= code && code <= 0x116AF ) || // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\n\t\tcode === 0x116B6 || // Mc TAKRI SIGN VIRAMA\n\t\t( 0x11720 <= code && code <= 0x11721 ) || // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA\n\t\tcode === 0x11726 || // Mc AHOM VOWEL SIGN E\n\t\t( 0x1182C <= code && code <= 0x1182E ) || // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II\n\t\tcode === 0x11838 || // Mc DOGRA SIGN VISARGA\n\t\t( 0x11931 <= code && code <= 0x11935 ) || // Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E\n\t\t( 0x11937 <= code && code <= 0x11938 ) || // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O\n\t\tcode === 0x1193D || // Mc DIVES AKURU SIGN HALANTA\n\t\tcode === 0x11940 || // Mc DIVES AKURU MEDIAL YA\n\t\tcode === 0x11942 || // Mc DIVES AKURU MEDIAL RA\n\t\t( 0x119D1 <= code && code <= 0x119D3 ) || // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II\n\t\t( 0x119DC <= code && code <= 0x119DF ) || // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA\n\t\tcode === 0x119E4 || // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E\n\t\tcode === 0x11A39 || // Mc ZANABAZAR SQUARE SIGN VISARGA\n\t\t( 0x11A57 <= code && code <= 0x11A58 ) || // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\n\t\tcode === 0x11A97 || // Mc SOYOMBO SIGN VISARGA\n\t\tcode === 0x11C2F || // Mc BHAIKSUKI VOWEL SIGN AA\n\t\tcode === 0x11C3E || // Mc BHAIKSUKI SIGN VISARGA\n\t\tcode === 0x11CA9 || // Mc MARCHEN SUBJOINED LETTER YA\n\t\tcode === 0x11CB1 || // Mc MARCHEN VOWEL SIGN I\n\t\tcode === 0x11CB4 || // Mc MARCHEN VOWEL SIGN O\n\t\t( 0x11D8A <= code && code <= 0x11D8E ) || // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU\n\t\t( 0x11D93 <= code && code <= 0x11D94 ) || // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU\n\t\tcode === 0x11D96 || // Mc GUNJALA GONDI SIGN VISARGA\n\t\t( 0x11EF5 <= code && code <= 0x11EF6 ) || // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O\n\t\t( 0x16F51 <= code && code <= 0x16F87 ) || // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI\n\t\t( 0x16FF0 <= code && code <= 0x16FF1 ) || // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY\n\t\tcode === 0x1D166 || // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\n\t\tcode === 0x1D16D // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT\n\t) {\n\t\treturn constants.SpacingMark;\n\t}\n\tif (\n\t\t( 0x1100 <= code && code <= 0x115F ) || // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\n\t\t( 0xA960 <= code && code <= 0xA97C ) // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\n\t) {\n\t\treturn constants.L;\n\t}\n\tif (\n\t\t( 0x1160 <= code && code <= 0x11A7 ) || // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\n\t\t( 0xD7B0 <= code && code <= 0xD7C6 ) // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\n\t) {\n\t\treturn constants.V;\n\t}\n\tif (\n\t\t( 0x11A8 <= code && code <= 0x11FF ) || // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\n\t\t( 0xD7CB <= code && code <= 0xD7FB ) // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\n\t) {\n\t\treturn constants.T;\n\t}\n\tif (\n\t\tcode === 0xAC00 || // Lo HANGUL SYLLABLE GA\n\t\tcode === 0xAC1C || // Lo HANGUL SYLLABLE GAE\n\t\tcode === 0xAC38 || // Lo HANGUL SYLLABLE GYA\n\t\tcode === 0xAC54 || // Lo HANGUL SYLLABLE GYAE\n\t\tcode === 0xAC70 || // Lo HANGUL SYLLABLE GEO\n\t\tcode === 0xAC8C || // Lo HANGUL SYLLABLE GE\n\t\tcode === 0xACA8 || // Lo HANGUL SYLLABLE GYEO\n\t\tcode === 0xACC4 || // Lo HANGUL SYLLABLE GYE\n\t\tcode === 0xACE0 || // Lo HANGUL SYLLABLE GO\n\t\tcode === 0xACFC || // Lo HANGUL SYLLABLE GWA\n\t\tcode === 0xAD18 || // Lo HANGUL SYLLABLE GWAE\n\t\tcode === 0xAD34 || // Lo HANGUL SYLLABLE GOE\n\t\tcode === 0xAD50 || // Lo HANGUL SYLLABLE GYO\n\t\tcode === 0xAD6C || // Lo HANGUL SYLLABLE GU\n\t\tcode === 0xAD88 || // Lo HANGUL SYLLABLE GWEO\n\t\tcode === 0xADA4 || // Lo HANGUL SYLLABLE GWE\n\t\tcode === 0xADC0 || // Lo HANGUL SYLLABLE GWI\n\t\tcode === 0xADDC || // Lo HANGUL SYLLABLE GYU\n\t\tcode === 0xADF8 || // Lo HANGUL SYLLABLE GEU\n\t\tcode === 0xAE14 || // Lo HANGUL SYLLABLE GYI\n\t\tcode === 0xAE30 || // Lo HANGUL SYLLABLE GI\n\t\tcode === 0xAE4C || // Lo HANGUL SYLLABLE GGA\n\t\tcode === 0xAE68 || // Lo HANGUL SYLLABLE GGAE\n\t\tcode === 0xAE84 || // Lo HANGUL SYLLABLE GGYA\n\t\tcode === 0xAEA0 || // Lo HANGUL SYLLABLE GGYAE\n\t\tcode === 0xAEBC || // Lo HANGUL SYLLABLE GGEO\n\t\tcode === 0xAED8 || // Lo HANGUL SYLLABLE GGE\n\t\tcode === 0xAEF4 || // Lo HANGUL SYLLABLE GGYEO\n\t\tcode === 0xAF10 || // Lo HANGUL SYLLABLE GGYE\n\t\tcode === 0xAF2C || // Lo HANGUL SYLLABLE GGO\n\t\tcode === 0xAF48 || // Lo HANGUL SYLLABLE GGWA\n\t\tcode === 0xAF64 || // Lo HANGUL SYLLABLE GGWAE\n\t\tcode === 0xAF80 || // Lo HANGUL SYLLABLE GGOE\n\t\tcode === 0xAF9C || // Lo HANGUL SYLLABLE GGYO\n\t\tcode === 0xAFB8 || // Lo HANGUL SYLLABLE GGU\n\t\tcode === 0xAFD4 || // Lo HANGUL SYLLABLE GGWEO\n\t\tcode === 0xAFF0 || // Lo HANGUL SYLLABLE GGWE\n\t\tcode === 0xB00C || // Lo HANGUL SYLLABLE GGWI\n\t\tcode === 0xB028 || // Lo HANGUL SYLLABLE GGYU\n\t\tcode === 0xB044 || // Lo HANGUL SYLLABLE GGEU\n\t\tcode === 0xB060 || // Lo HANGUL SYLLABLE GGYI\n\t\tcode === 0xB07C || // Lo HANGUL SYLLABLE GGI\n\t\tcode === 0xB098 || // Lo HANGUL SYLLABLE NA\n\t\tcode === 0xB0B4 || // Lo HANGUL SYLLABLE NAE\n\t\tcode === 0xB0D0 || // Lo HANGUL SYLLABLE NYA\n\t\tcode === 0xB0EC || // Lo HANGUL SYLLABLE NYAE\n\t\tcode === 0xB108 || // Lo HANGUL SYLLABLE NEO\n\t\tcode === 0xB124 || // Lo HANGUL SYLLABLE NE\n\t\tcode === 0xB140 || // Lo HANGUL SYLLABLE NYEO\n\t\tcode === 0xB15C || // Lo HANGUL SYLLABLE NYE\n\t\tcode === 0xB178 || // Lo HANGUL SYLLABLE NO\n\t\tcode === 0xB194 || // Lo HANGUL SYLLABLE NWA\n\t\tcode === 0xB1B0 || // Lo HANGUL SYLLABLE NWAE\n\t\tcode === 0xB1CC || // Lo HANGUL SYLLABLE NOE\n\t\tcode === 0xB1E8 || // Lo HANGUL SYLLABLE NYO\n\t\tcode === 0xB204 || // Lo HANGUL SYLLABLE NU\n\t\tcode === 0xB220 || // Lo HANGUL SYLLABLE NWEO\n\t\tcode === 0xB23C || // Lo HANGUL SYLLABLE NWE\n\t\tcode === 0xB258 || // Lo HANGUL SYLLABLE NWI\n\t\tcode === 0xB274 || // Lo HANGUL SYLLABLE NYU\n\t\tcode === 0xB290 || // Lo HANGUL SYLLABLE NEU\n\t\tcode === 0xB2AC || // Lo HANGUL SYLLABLE NYI\n\t\tcode === 0xB2C8 || // Lo HANGUL SYLLABLE NI\n\t\tcode === 0xB2E4 || // Lo HANGUL SYLLABLE DA\n\t\tcode === 0xB300 || // Lo HANGUL SYLLABLE DAE\n\t\tcode === 0xB31C || // Lo HANGUL SYLLABLE DYA\n\t\tcode === 0xB338 || // Lo HANGUL SYLLABLE DYAE\n\t\tcode === 0xB354 || // Lo HANGUL SYLLABLE DEO\n\t\tcode === 0xB370 || // Lo HANGUL SYLLABLE DE\n\t\tcode === 0xB38C || // Lo HANGUL SYLLABLE DYEO\n\t\tcode === 0xB3A8 || // Lo HANGUL SYLLABLE DYE\n\t\tcode === 0xB3C4 || // Lo HANGUL SYLLABLE DO\n\t\tcode === 0xB3E0 || // Lo HANGUL SYLLABLE DWA\n\t\tcode === 0xB3FC || // Lo HANGUL SYLLABLE DWAE\n\t\tcode === 0xB418 || // Lo HANGUL SYLLABLE DOE\n\t\tcode === 0xB434 || // Lo HANGUL SYLLABLE DYO\n\t\tcode === 0xB450 || // Lo HANGUL SYLLABLE DU\n\t\tcode === 0xB46C || // Lo HANGUL SYLLABLE DWEO\n\t\tcode === 0xB488 || // Lo HANGUL SYLLABLE DWE\n\t\tcode === 0xB4A4 || // Lo HANGUL SYLLABLE DWI\n\t\tcode === 0xB4C0 || // Lo HANGUL SYLLABLE DYU\n\t\tcode === 0xB4DC || // Lo HANGUL SYLLABLE DEU\n\t\tcode === 0xB4F8 || // Lo HANGUL SYLLABLE DYI\n\t\tcode === 0xB514 || // Lo HANGUL SYLLABLE DI\n\t\tcode === 0xB530 || // Lo HANGUL SYLLABLE DDA\n\t\tcode === 0xB54C || // Lo HANGUL SYLLABLE DDAE\n\t\tcode === 0xB568 || // Lo HANGUL SYLLABLE DDYA\n\t\tcode === 0xB584 || // Lo HANGUL SYLLABLE DDYAE\n\t\tcode === 0xB5A0 || // Lo HANGUL SYLLABLE DDEO\n\t\tcode === 0xB5BC || // Lo HANGUL SYLLABLE DDE\n\t\tcode === 0xB5D8 || // Lo HANGUL SYLLABLE DDYEO\n\t\tcode === 0xB5F4 || // Lo HANGUL SYLLABLE DDYE\n\t\tcode === 0xB610 || // Lo HANGUL SYLLABLE DDO\n\t\tcode === 0xB62C || // Lo HANGUL SYLLABLE DDWA\n\t\tcode === 0xB648 || // Lo HANGUL SYLLABLE DDWAE\n\t\tcode === 0xB664 || // Lo HANGUL SYLLABLE DDOE\n\t\tcode === 0xB680 || // Lo HANGUL SYLLABLE DDYO\n\t\tcode === 0xB69C || // Lo HANGUL SYLLABLE DDU\n\t\tcode === 0xB6B8 || // Lo HANGUL SYLLABLE DDWEO\n\t\tcode === 0xB6D4 || // Lo HANGUL SYLLABLE DDWE\n\t\tcode === 0xB6F0 || // Lo HANGUL SYLLABLE DDWI\n\t\tcode === 0xB70C || // Lo HANGUL SYLLABLE DDYU\n\t\tcode === 0xB728 || // Lo HANGUL SYLLABLE DDEU\n\t\tcode === 0xB744 || // Lo HANGUL SYLLABLE DDYI\n\t\tcode === 0xB760 || // Lo HANGUL SYLLABLE DDI\n\t\tcode === 0xB77C || // Lo HANGUL SYLLABLE RA\n\t\tcode === 0xB798 || // Lo HANGUL SYLLABLE RAE\n\t\tcode === 0xB7B4 || // Lo HANGUL SYLLABLE RYA\n\t\tcode === 0xB7D0 || // Lo HANGUL SYLLABLE RYAE\n\t\tcode === 0xB7EC || // Lo HANGUL SYLLABLE REO\n\t\tcode === 0xB808 || // Lo HANGUL SYLLABLE RE\n\t\tcode === 0xB824 || // Lo HANGUL SYLLABLE RYEO\n\t\tcode === 0xB840 || // Lo HANGUL SYLLABLE RYE\n\t\tcode === 0xB85C || // Lo HANGUL SYLLABLE RO\n\t\tcode === 0xB878 || // Lo HANGUL SYLLABLE RWA\n\t\tcode === 0xB894 || // Lo HANGUL SYLLABLE RWAE\n\t\tcode === 0xB8B0 || // Lo HANGUL SYLLABLE ROE\n\t\tcode === 0xB8CC || // Lo HANGUL SYLLABLE RYO\n\t\tcode === 0xB8E8 || // Lo HANGUL SYLLABLE RU\n\t\tcode === 0xB904 || // Lo HANGUL SYLLABLE RWEO\n\t\tcode === 0xB920 || // Lo HANGUL SYLLABLE RWE\n\t\tcode === 0xB93C || // Lo HANGUL SYLLABLE RWI\n\t\tcode === 0xB958 || // Lo HANGUL SYLLABLE RYU\n\t\tcode === 0xB974 || // Lo HANGUL SYLLABLE REU\n\t\tcode === 0xB990 || // Lo HANGUL SYLLABLE RYI\n\t\tcode === 0xB9AC || // Lo HANGUL SYLLABLE RI\n\t\tcode === 0xB9C8 || // Lo HANGUL SYLLABLE MA\n\t\tcode === 0xB9E4 || // Lo HANGUL SYLLABLE MAE\n\t\tcode === 0xBA00 || // Lo HANGUL SYLLABLE MYA\n\t\tcode === 0xBA1C || // Lo HANGUL SYLLABLE MYAE\n\t\tcode === 0xBA38 || // Lo HANGUL SYLLABLE MEO\n\t\tcode === 0xBA54 || // Lo HANGUL SYLLABLE ME\n\t\tcode === 0xBA70 || // Lo HANGUL SYLLABLE MYEO\n\t\tcode === 0xBA8C || // Lo HANGUL SYLLABLE MYE\n\t\tcode === 0xBAA8 || // Lo HANGUL SYLLABLE MO\n\t\tcode === 0xBAC4 || // Lo HANGUL SYLLABLE MWA\n\t\tcode === 0xBAE0 || // Lo HANGUL SYLLABLE MWAE\n\t\tcode === 0xBAFC || // Lo HANGUL SYLLABLE MOE\n\t\tcode === 0xBB18 || // Lo HANGUL SYLLABLE MYO\n\t\tcode === 0xBB34 || // Lo HANGUL SYLLABLE MU\n\t\tcode === 0xBB50 || // Lo HANGUL SYLLABLE MWEO\n\t\tcode === 0xBB6C || // Lo HANGUL SYLLABLE MWE\n\t\tcode === 0xBB88 || // Lo HANGUL SYLLABLE MWI\n\t\tcode === 0xBBA4 || // Lo HANGUL SYLLABLE MYU\n\t\tcode === 0xBBC0 || // Lo HANGUL SYLLABLE MEU\n\t\tcode === 0xBBDC || // Lo HANGUL SYLLABLE MYI\n\t\tcode === 0xBBF8 || // Lo HANGUL SYLLABLE MI\n\t\tcode === 0xBC14 || // Lo HANGUL SYLLABLE BA\n\t\tcode === 0xBC30 || // Lo HANGUL SYLLABLE BAE\n\t\tcode === 0xBC4C || // Lo HANGUL SYLLABLE BYA\n\t\tcode === 0xBC68 || // Lo HANGUL SYLLABLE BYAE\n\t\tcode === 0xBC84 || // Lo HANGUL SYLLABLE BEO\n\t\tcode === 0xBCA0 || // Lo HANGUL SYLLABLE BE\n\t\tcode === 0xBCBC || // Lo HANGUL SYLLABLE BYEO\n\t\tcode === 0xBCD8 || // Lo HANGUL SYLLABLE BYE\n\t\tcode === 0xBCF4 || // Lo HANGUL SYLLABLE BO\n\t\tcode === 0xBD10 || // Lo HANGUL SYLLABLE BWA\n\t\tcode === 0xBD2C || // Lo HANGUL SYLLABLE BWAE\n\t\tcode === 0xBD48 || // Lo HANGUL SYLLABLE BOE\n\t\tcode === 0xBD64 || // Lo HANGUL SYLLABLE BYO\n\t\tcode === 0xBD80 || // Lo HANGUL SYLLABLE BU\n\t\tcode === 0xBD9C || // Lo HANGUL SYLLABLE BWEO\n\t\tcode === 0xBDB8 || // Lo HANGUL SYLLABLE BWE\n\t\tcode === 0xBDD4 || // Lo HANGUL SYLLABLE BWI\n\t\tcode === 0xBDF0 || // Lo HANGUL SYLLABLE BYU\n\t\tcode === 0xBE0C || // Lo HANGUL SYLLABLE BEU\n\t\tcode === 0xBE28 || // Lo HANGUL SYLLABLE BYI\n\t\tcode === 0xBE44 || // Lo HANGUL SYLLABLE BI\n\t\tcode === 0xBE60 || // Lo HANGUL SYLLABLE BBA\n\t\tcode === 0xBE7C || // Lo HANGUL SYLLABLE BBAE\n\t\tcode === 0xBE98 || // Lo HANGUL SYLLABLE BBYA\n\t\tcode === 0xBEB4 || // Lo HANGUL SYLLABLE BBYAE\n\t\tcode === 0xBED0 || // Lo HANGUL SYLLABLE BBEO\n\t\tcode === 0xBEEC || // Lo HANGUL SYLLABLE BBE\n\t\tcode === 0xBF08 || // Lo HANGUL SYLLABLE BBYEO\n\t\tcode === 0xBF24 || // Lo HANGUL SYLLABLE BBYE\n\t\tcode === 0xBF40 || // Lo HANGUL SYLLABLE BBO\n\t\tcode === 0xBF5C || // Lo HANGUL SYLLABLE BBWA\n\t\tcode === 0xBF78 || // Lo HANGUL SYLLABLE BBWAE\n\t\tcode === 0xBF94 || // Lo HANGUL SYLLABLE BBOE\n\t\tcode === 0xBFB0 || // Lo HANGUL SYLLABLE BBYO\n\t\tcode === 0xBFCC || // Lo HANGUL SYLLABLE BBU\n\t\tcode === 0xBFE8 || // Lo HANGUL SYLLABLE BBWEO\n\t\tcode === 0xC004 || // Lo HANGUL SYLLABLE BBWE\n\t\tcode === 0xC020 || // Lo HANGUL SYLLABLE BBWI\n\t\tcode === 0xC03C || // Lo HANGUL SYLLABLE BBYU\n\t\tcode === 0xC058 || // Lo HANGUL SYLLABLE BBEU\n\t\tcode === 0xC074 || // Lo HANGUL SYLLABLE BBYI\n\t\tcode === 0xC090 || // Lo HANGUL SYLLABLE BBI\n\t\tcode === 0xC0AC || // Lo HANGUL SYLLABLE SA\n\t\tcode === 0xC0C8 || // Lo HANGUL SYLLABLE SAE\n\t\tcode === 0xC0E4 || // Lo HANGUL SYLLABLE SYA\n\t\tcode === 0xC100 || // Lo HANGUL SYLLABLE SYAE\n\t\tcode === 0xC11C || // Lo HANGUL SYLLABLE SEO\n\t\tcode === 0xC138 || // Lo HANGUL SYLLABLE SE\n\t\tcode === 0xC154 || // Lo HANGUL SYLLABLE SYEO\n\t\tcode === 0xC170 || // Lo HANGUL SYLLABLE SYE\n\t\tcode === 0xC18C || // Lo HANGUL SYLLABLE SO\n\t\tcode === 0xC1A8 || // Lo HANGUL SYLLABLE SWA\n\t\tcode === 0xC1C4 || // Lo HANGUL SYLLABLE SWAE\n\t\tcode === 0xC1E0 || // Lo HANGUL SYLLABLE SOE\n\t\tcode === 0xC1FC || // Lo HANGUL SYLLABLE SYO\n\t\tcode === 0xC218 || // Lo HANGUL SYLLABLE SU\n\t\tcode === 0xC234 || // Lo HANGUL SYLLABLE SWEO\n\t\tcode === 0xC250 || // Lo HANGUL SYLLABLE SWE\n\t\tcode === 0xC26C || // Lo HANGUL SYLLABLE SWI\n\t\tcode === 0xC288 || // Lo HANGUL SYLLABLE SYU\n\t\tcode === 0xC2A4 || // Lo HANGUL SYLLABLE SEU\n\t\tcode === 0xC2C0 || // Lo HANGUL SYLLABLE SYI\n\t\tcode === 0xC2DC || // Lo HANGUL SYLLABLE SI\n\t\tcode === 0xC2F8 || // Lo HANGUL SYLLABLE SSA\n\t\tcode === 0xC314 || // Lo HANGUL SYLLABLE SSAE\n\t\tcode === 0xC330 || // Lo HANGUL SYLLABLE SSYA\n\t\tcode === 0xC34C || // Lo HANGUL SYLLABLE SSYAE\n\t\tcode === 0xC368 || // Lo HANGUL SYLLABLE SSEO\n\t\tcode === 0xC384 || // Lo HANGUL SYLLABLE SSE\n\t\tcode === 0xC3A0 || // Lo HANGUL SYLLABLE SSYEO\n\t\tcode === 0xC3BC || // Lo HANGUL SYLLABLE SSYE\n\t\tcode === 0xC3D8 || // Lo HANGUL SYLLABLE SSO\n\t\tcode === 0xC3F4 || // Lo HANGUL SYLLABLE SSWA\n\t\tcode === 0xC410 || // Lo HANGUL SYLLABLE SSWAE\n\t\tcode === 0xC42C || // Lo HANGUL SYLLABLE SSOE\n\t\tcode === 0xC448 || // Lo HANGUL SYLLABLE SSYO\n\t\tcode === 0xC464 || // Lo HANGUL SYLLABLE SSU\n\t\tcode === 0xC480 || // Lo HANGUL SYLLABLE SSWEO\n\t\tcode === 0xC49C || // Lo HANGUL SYLLABLE SSWE\n\t\tcode === 0xC4B8 || // Lo HANGUL SYLLABLE SSWI\n\t\tcode === 0xC4D4 || // Lo HANGUL SYLLABLE SSYU\n\t\tcode === 0xC4F0 || // Lo HANGUL SYLLABLE SSEU\n\t\tcode === 0xC50C || // Lo HANGUL SYLLABLE SSYI\n\t\tcode === 0xC528 || // Lo HANGUL SYLLABLE SSI\n\t\tcode === 0xC544 || // Lo HANGUL SYLLABLE A\n\t\tcode === 0xC560 || // Lo HANGUL SYLLABLE AE\n\t\tcode === 0xC57C || // Lo HANGUL SYLLABLE YA\n\t\tcode === 0xC598 || // Lo HANGUL SYLLABLE YAE\n\t\tcode === 0xC5B4 || // Lo HANGUL SYLLABLE EO\n\t\tcode === 0xC5D0 || // Lo HANGUL SYLLABLE E\n\t\tcode === 0xC5EC || // Lo HANGUL SYLLABLE YEO\n\t\tcode === 0xC608 || // Lo HANGUL SYLLABLE YE\n\t\tcode === 0xC624 || // Lo HANGUL SYLLABLE O\n\t\tcode === 0xC640 || // Lo HANGUL SYLLABLE WA\n\t\tcode === 0xC65C || // Lo HANGUL SYLLABLE WAE\n\t\tcode === 0xC678 || // Lo HANGUL SYLLABLE OE\n\t\tcode === 0xC694 || // Lo HANGUL SYLLABLE YO\n\t\tcode === 0xC6B0 || // Lo HANGUL SYLLABLE U\n\t\tcode === 0xC6CC || // Lo HANGUL SYLLABLE WEO\n\t\tcode === 0xC6E8 || // Lo HANGUL SYLLABLE WE\n\t\tcode === 0xC704 || // Lo HANGUL SYLLABLE WI\n\t\tcode === 0xC720 || // Lo HANGUL SYLLABLE YU\n\t\tcode === 0xC73C || // Lo HANGUL SYLLABLE EU\n\t\tcode === 0xC758 || // Lo HANGUL SYLLABLE YI\n\t\tcode === 0xC774 || // Lo HANGUL SYLLABLE I\n\t\tcode === 0xC790 || // Lo HANGUL SYLLABLE JA\n\t\tcode === 0xC7AC || // Lo HANGUL SYLLABLE JAE\n\t\tcode === 0xC7C8 || // Lo HANGUL SYLLABLE JYA\n\t\tcode === 0xC7E4 || // Lo HANGUL SYLLABLE JYAE\n\t\tcode === 0xC800 || // Lo HANGUL SYLLABLE JEO\n\t\tcode === 0xC81C || // Lo HANGUL SYLLABLE JE\n\t\tcode === 0xC838 || // Lo HANGUL SYLLABLE JYEO\n\t\tcode === 0xC854 || // Lo HANGUL SYLLABLE JYE\n\t\tcode === 0xC870 || // Lo HANGUL SYLLABLE JO\n\t\tcode === 0xC88C || // Lo HANGUL SYLLABLE JWA\n\t\tcode === 0xC8A8 || // Lo HANGUL SYLLABLE JWAE\n\t\tcode === 0xC8C4 || // Lo HANGUL SYLLABLE JOE\n\t\tcode === 0xC8E0 || // Lo HANGUL SYLLABLE JYO\n\t\tcode === 0xC8FC || // Lo HANGUL SYLLABLE JU\n\t\tcode === 0xC918 || // Lo HANGUL SYLLABLE JWEO\n\t\tcode === 0xC934 || // Lo HANGUL SYLLABLE JWE\n\t\tcode === 0xC950 || // Lo HANGUL SYLLABLE JWI\n\t\tcode === 0xC96C || // Lo HANGUL SYLLABLE JYU\n\t\tcode === 0xC988 || // Lo HANGUL SYLLABLE JEU\n\t\tcode === 0xC9A4 || // Lo HANGUL SYLLABLE JYI\n\t\tcode === 0xC9C0 || // Lo HANGUL SYLLABLE JI\n\t\tcode === 0xC9DC || // Lo HANGUL SYLLABLE JJA\n\t\tcode === 0xC9F8 || // Lo HANGUL SYLLABLE JJAE\n\t\tcode === 0xCA14 || // Lo HANGUL SYLLABLE JJYA\n\t\tcode === 0xCA30 || // Lo HANGUL SYLLABLE JJYAE\n\t\tcode === 0xCA4C || // Lo HANGUL SYLLABLE JJEO\n\t\tcode === 0xCA68 || // Lo HANGUL SYLLABLE JJE\n\t\tcode === 0xCA84 || // Lo HANGUL SYLLABLE JJYEO\n\t\tcode === 0xCAA0 || // Lo HANGUL SYLLABLE JJYE\n\t\tcode === 0xCABC || // Lo HANGUL SYLLABLE JJO\n\t\tcode === 0xCAD8 || // Lo HANGUL SYLLABLE JJWA\n\t\tcode === 0xCAF4 || // Lo HANGUL SYLLABLE JJWAE\n\t\tcode === 0xCB10 || // Lo HANGUL SYLLABLE JJOE\n\t\tcode === 0xCB2C || // Lo HANGUL SYLLABLE JJYO\n\t\tcode === 0xCB48 || // Lo HANGUL SYLLABLE JJU\n\t\tcode === 0xCB64 || // Lo HANGUL SYLLABLE JJWEO\n\t\tcode === 0xCB80 || // Lo HANGUL SYLLABLE JJWE\n\t\tcode === 0xCB9C || // Lo HANGUL SYLLABLE JJWI\n\t\tcode === 0xCBB8 || // Lo HANGUL SYLLABLE JJYU\n\t\tcode === 0xCBD4 || // Lo HANGUL SYLLABLE JJEU\n\t\tcode === 0xCBF0 || // Lo HANGUL SYLLABLE JJYI\n\t\tcode === 0xCC0C || // Lo HANGUL SYLLABLE JJI\n\t\tcode === 0xCC28 || // Lo HANGUL SYLLABLE CA\n\t\tcode === 0xCC44 || // Lo HANGUL SYLLABLE CAE\n\t\tcode === 0xCC60 || // Lo HANGUL SYLLABLE CYA\n\t\tcode === 0xCC7C || // Lo HANGUL SYLLABLE CYAE\n\t\tcode === 0xCC98 || // Lo HANGUL SYLLABLE CEO\n\t\tcode === 0xCCB4 || // Lo HANGUL SYLLABLE CE\n\t\tcode === 0xCCD0 || // Lo HANGUL SYLLABLE CYEO\n\t\tcode === 0xCCEC || // Lo HANGUL SYLLABLE CYE\n\t\tcode === 0xCD08 || // Lo HANGUL SYLLABLE CO\n\t\tcode === 0xCD24 || // Lo HANGUL SYLLABLE CWA\n\t\tcode === 0xCD40 || // Lo HANGUL SYLLABLE CWAE\n\t\tcode === 0xCD5C || // Lo HANGUL SYLLABLE COE\n\t\tcode === 0xCD78 || // Lo HANGUL SYLLABLE CYO\n\t\tcode === 0xCD94 || // Lo HANGUL SYLLABLE CU\n\t\tcode === 0xCDB0 || // Lo HANGUL SYLLABLE CWEO\n\t\tcode === 0xCDCC || // Lo HANGUL SYLLABLE CWE\n\t\tcode === 0xCDE8 || // Lo HANGUL SYLLABLE CWI\n\t\tcode === 0xCE04 || // Lo HANGUL SYLLABLE CYU\n\t\tcode === 0xCE20 || // Lo HANGUL SYLLABLE CEU\n\t\tcode === 0xCE3C || // Lo HANGUL SYLLABLE CYI\n\t\tcode === 0xCE58 || // Lo HANGUL SYLLABLE CI\n\t\tcode === 0xCE74 || // Lo HANGUL SYLLABLE KA\n\t\tcode === 0xCE90 || // Lo HANGUL SYLLABLE KAE\n\t\tcode === 0xCEAC || // Lo HANGUL SYLLABLE KYA\n\t\tcode === 0xCEC8 || // Lo HANGUL SYLLABLE KYAE\n\t\tcode === 0xCEE4 || // Lo HANGUL SYLLABLE KEO\n\t\tcode === 0xCF00 || // Lo HANGUL SYLLABLE KE\n\t\tcode === 0xCF1C || // Lo HANGUL SYLLABLE KYEO\n\t\tcode === 0xCF38 || // Lo HANGUL SYLLABLE KYE\n\t\tcode === 0xCF54 || // Lo HANGUL SYLLABLE KO\n\t\tcode === 0xCF70 || // Lo HANGUL SYLLABLE KWA\n\t\tcode === 0xCF8C || // Lo HANGUL SYLLABLE KWAE\n\t\tcode === 0xCFA8 || // Lo HANGUL SYLLABLE KOE\n\t\tcode === 0xCFC4 || // Lo HANGUL SYLLABLE KYO\n\t\tcode === 0xCFE0 || // Lo HANGUL SYLLABLE KU\n\t\tcode === 0xCFFC || // Lo HANGUL SYLLABLE KWEO\n\t\tcode === 0xD018 || // Lo HANGUL SYLLABLE KWE\n\t\tcode === 0xD034 || // Lo HANGUL SYLLABLE KWI\n\t\tcode === 0xD050 || // Lo HANGUL SYLLABLE KYU\n\t\tcode === 0xD06C || // Lo HANGUL SYLLABLE KEU\n\t\tcode === 0xD088 || // Lo HANGUL SYLLABLE KYI\n\t\tcode === 0xD0A4 || // Lo HANGUL SYLLABLE KI\n\t\tcode === 0xD0C0 || // Lo HANGUL SYLLABLE TA\n\t\tcode === 0xD0DC || // Lo HANGUL SYLLABLE TAE\n\t\tcode === 0xD0F8 || // Lo HANGUL SYLLABLE TYA\n\t\tcode === 0xD114 || // Lo HANGUL SYLLABLE TYAE\n\t\tcode === 0xD130 || // Lo HANGUL SYLLABLE TEO\n\t\tcode === 0xD14C || // Lo HANGUL SYLLABLE TE\n\t\tcode === 0xD168 || // Lo HANGUL SYLLABLE TYEO\n\t\tcode === 0xD184 || // Lo HANGUL SYLLABLE TYE\n\t\tcode === 0xD1A0 || // Lo HANGUL SYLLABLE TO\n\t\tcode === 0xD1BC || // Lo HANGUL SYLLABLE TWA\n\t\tcode === 0xD1D8 || // Lo HANGUL SYLLABLE TWAE\n\t\tcode === 0xD1F4 || // Lo HANGUL SYLLABLE TOE\n\t\tcode === 0xD210 || // Lo HANGUL SYLLABLE TYO\n\t\tcode === 0xD22C || // Lo HANGUL SYLLABLE TU\n\t\tcode === 0xD248 || // Lo HANGUL SYLLABLE TWEO\n\t\tcode === 0xD264 || // Lo HANGUL SYLLABLE TWE\n\t\tcode === 0xD280 || // Lo HANGUL SYLLABLE TWI\n\t\tcode === 0xD29C || // Lo HANGUL SYLLABLE TYU\n\t\tcode === 0xD2B8 || // Lo HANGUL SYLLABLE TEU\n\t\tcode === 0xD2D4 || // Lo HANGUL SYLLABLE TYI\n\t\tcode === 0xD2F0 || // Lo HANGUL SYLLABLE TI\n\t\tcode === 0xD30C || // Lo HANGUL SYLLABLE PA\n\t\tcode === 0xD328 || // Lo HANGUL SYLLABLE PAE\n\t\tcode === 0xD344 || // Lo HANGUL SYLLABLE PYA\n\t\tcode === 0xD360 || // Lo HANGUL SYLLABLE PYAE\n\t\tcode === 0xD37C || // Lo HANGUL SYLLABLE PEO\n\t\tcode === 0xD398 || // Lo HANGUL SYLLABLE PE\n\t\tcode === 0xD3B4 || // Lo HANGUL SYLLABLE PYEO\n\t\tcode === 0xD3D0 || // Lo HANGUL SYLLABLE PYE\n\t\tcode === 0xD3EC || // Lo HANGUL SYLLABLE PO\n\t\tcode === 0xD408 || // Lo HANGUL SYLLABLE PWA\n\t\tcode === 0xD424 || // Lo HANGUL SYLLABLE PWAE\n\t\tcode === 0xD440 || // Lo HANGUL SYLLABLE POE\n\t\tcode === 0xD45C || // Lo HANGUL SYLLABLE PYO\n\t\tcode === 0xD478 || // Lo HANGUL SYLLABLE PU\n\t\tcode === 0xD494 || // Lo HANGUL SYLLABLE PWEO\n\t\tcode === 0xD4B0 || // Lo HANGUL SYLLABLE PWE\n\t\tcode === 0xD4CC || // Lo HANGUL SYLLABLE PWI\n\t\tcode === 0xD4E8 || // Lo HANGUL SYLLABLE PYU\n\t\tcode === 0xD504 || // Lo HANGUL SYLLABLE PEU\n\t\tcode === 0xD520 || // Lo HANGUL SYLLABLE PYI\n\t\tcode === 0xD53C || // Lo HANGUL SYLLABLE PI\n\t\tcode === 0xD558 || // Lo HANGUL SYLLABLE HA\n\t\tcode === 0xD574 || // Lo HANGUL SYLLABLE HAE\n\t\tcode === 0xD590 || // Lo HANGUL SYLLABLE HYA\n\t\tcode === 0xD5AC || // Lo HANGUL SYLLABLE HYAE\n\t\tcode === 0xD5C8 || // Lo HANGUL SYLLABLE HEO\n\t\tcode === 0xD5E4 || // Lo HANGUL SYLLABLE HE\n\t\tcode === 0xD600 || // Lo HANGUL SYLLABLE HYEO\n\t\tcode === 0xD61C || // Lo HANGUL SYLLABLE HYE\n\t\tcode === 0xD638 || // Lo HANGUL SYLLABLE HO\n\t\tcode === 0xD654 || // Lo HANGUL SYLLABLE HWA\n\t\tcode === 0xD670 || // Lo HANGUL SYLLABLE HWAE\n\t\tcode === 0xD68C || // Lo HANGUL SYLLABLE HOE\n\t\tcode === 0xD6A8 || // Lo HANGUL SYLLABLE HYO\n\t\tcode === 0xD6C4 || // Lo HANGUL SYLLABLE HU\n\t\tcode === 0xD6E0 || // Lo HANGUL SYLLABLE HWEO\n\t\tcode === 0xD6FC || // Lo HANGUL SYLLABLE HWE\n\t\tcode === 0xD718 || // Lo HANGUL SYLLABLE HWI\n\t\tcode === 0xD734 || // Lo HANGUL SYLLABLE HYU\n\t\tcode === 0xD750 || // Lo HANGUL SYLLABLE HEU\n\t\tcode === 0xD76C || // Lo HANGUL SYLLABLE HYI\n\t\tcode === 0xD788 // Lo HANGUL SYLLABLE HI\n\t) {\n\t\treturn constants.LV;\n\t}\n\tif (\n\t\t( 0xAC01 <= code && code <= 0xAC1B ) || // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\n\t\t( 0xAC1D <= code && code <= 0xAC37 ) || // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\n\t\t( 0xAC39 <= code && code <= 0xAC53 ) || // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\n\t\t( 0xAC55 <= code && code <= 0xAC6F ) || // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\n\t\t( 0xAC71 <= code && code <= 0xAC8B ) || // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\n\t\t( 0xAC8D <= code && code <= 0xACA7 ) || // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\n\t\t( 0xACA9 <= code && code <= 0xACC3 ) || // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\n\t\t( 0xACC5 <= code && code <= 0xACDF ) || // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\n\t\t( 0xACE1 <= code && code <= 0xACFB ) || // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\n\t\t( 0xACFD <= code && code <= 0xAD17 ) || // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\n\t\t( 0xAD19 <= code && code <= 0xAD33 ) || // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\n\t\t( 0xAD35 <= code && code <= 0xAD4F ) || // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\n\t\t( 0xAD51 <= code && code <= 0xAD6B ) || // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\n\t\t( 0xAD6D <= code && code <= 0xAD87 ) || // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\n\t\t( 0xAD89 <= code && code <= 0xADA3 ) || // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\n\t\t( 0xADA5 <= code && code <= 0xADBF ) || // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\n\t\t( 0xADC1 <= code && code <= 0xADDB ) || // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\n\t\t( 0xADDD <= code && code <= 0xADF7 ) || // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\n\t\t( 0xADF9 <= code && code <= 0xAE13 ) || // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\n\t\t( 0xAE15 <= code && code <= 0xAE2F ) || // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\n\t\t( 0xAE31 <= code && code <= 0xAE4B ) || // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\n\t\t( 0xAE4D <= code && code <= 0xAE67 ) || // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\n\t\t( 0xAE69 <= code && code <= 0xAE83 ) || // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\n\t\t( 0xAE85 <= code && code <= 0xAE9F ) || // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\n\t\t( 0xAEA1 <= code && code <= 0xAEBB ) || // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\n\t\t( 0xAEBD <= code && code <= 0xAED7 ) || // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\n\t\t( 0xAED9 <= code && code <= 0xAEF3 ) || // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\n\t\t( 0xAEF5 <= code && code <= 0xAF0F ) || // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\n\t\t( 0xAF11 <= code && code <= 0xAF2B ) || // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\n\t\t( 0xAF2D <= code && code <= 0xAF47 ) || // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\n\t\t( 0xAF49 <= code && code <= 0xAF63 ) || // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\n\t\t( 0xAF65 <= code && code <= 0xAF7F ) || // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\n\t\t( 0xAF81 <= code && code <= 0xAF9B ) || // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\n\t\t( 0xAF9D <= code && code <= 0xAFB7 ) || // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\n\t\t( 0xAFB9 <= code && code <= 0xAFD3 ) || // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\n\t\t( 0xAFD5 <= code && code <= 0xAFEF ) || // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\n\t\t( 0xAFF1 <= code && code <= 0xB00B ) || // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\n\t\t( 0xB00D <= code && code <= 0xB027 ) || // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\n\t\t( 0xB029 <= code && code <= 0xB043 ) || // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\n\t\t( 0xB045 <= code && code <= 0xB05F ) || // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\n\t\t( 0xB061 <= code && code <= 0xB07B ) || // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\n\t\t( 0xB07D <= code && code <= 0xB097 ) || // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\n\t\t( 0xB099 <= code && code <= 0xB0B3 ) || // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\n\t\t( 0xB0B5 <= code && code <= 0xB0CF ) || // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\n\t\t( 0xB0D1 <= code && code <= 0xB0EB ) || // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\n\t\t( 0xB0ED <= code && code <= 0xB107 ) || // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\n\t\t( 0xB109 <= code && code <= 0xB123 ) || // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\n\t\t( 0xB125 <= code && code <= 0xB13F ) || // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\n\t\t( 0xB141 <= code && code <= 0xB15B ) || // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\n\t\t( 0xB15D <= code && code <= 0xB177 ) || // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\n\t\t( 0xB179 <= code && code <= 0xB193 ) || // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\n\t\t( 0xB195 <= code && code <= 0xB1AF ) || // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\n\t\t( 0xB1B1 <= code && code <= 0xB1CB ) || // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\n\t\t( 0xB1CD <= code && code <= 0xB1E7 ) || // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\n\t\t( 0xB1E9 <= code && code <= 0xB203 ) || // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\n\t\t( 0xB205 <= code && code <= 0xB21F ) || // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\n\t\t( 0xB221 <= code && code <= 0xB23B ) || // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\n\t\t( 0xB23D <= code && code <= 0xB257 ) || // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\n\t\t( 0xB259 <= code && code <= 0xB273 ) || // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\n\t\t( 0xB275 <= code && code <= 0xB28F ) || // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\n\t\t( 0xB291 <= code && code <= 0xB2AB ) || // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\n\t\t( 0xB2AD <= code && code <= 0xB2C7 ) || // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\n\t\t( 0xB2C9 <= code && code <= 0xB2E3 ) || // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\n\t\t( 0xB2E5 <= code && code <= 0xB2FF ) || // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\n\t\t( 0xB301 <= code && code <= 0xB31B ) || // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\n\t\t( 0xB31D <= code && code <= 0xB337 ) || // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\n\t\t( 0xB339 <= code && code <= 0xB353 ) || // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\n\t\t( 0xB355 <= code && code <= 0xB36F ) || // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\n\t\t( 0xB371 <= code && code <= 0xB38B ) || // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\n\t\t( 0xB38D <= code && code <= 0xB3A7 ) || // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\n\t\t( 0xB3A9 <= code && code <= 0xB3C3 ) || // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\n\t\t( 0xB3C5 <= code && code <= 0xB3DF ) || // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\n\t\t( 0xB3E1 <= code && code <= 0xB3FB ) || // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\n\t\t( 0xB3FD <= code && code <= 0xB417 ) || // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\n\t\t( 0xB419 <= code && code <= 0xB433 ) || // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\n\t\t( 0xB435 <= code && code <= 0xB44F ) || // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\n\t\t( 0xB451 <= code && code <= 0xB46B ) || // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\n\t\t( 0xB46D <= code && code <= 0xB487 ) || // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\n\t\t( 0xB489 <= code && code <= 0xB4A3 ) || // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\n\t\t( 0xB4A5 <= code && code <= 0xB4BF ) || // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\n\t\t( 0xB4C1 <= code && code <= 0xB4DB ) || // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\n\t\t( 0xB4DD <= code && code <= 0xB4F7 ) || // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\n\t\t( 0xB4F9 <= code && code <= 0xB513 ) || // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\n\t\t( 0xB515 <= code && code <= 0xB52F ) || // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\n\t\t( 0xB531 <= code && code <= 0xB54B ) || // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\n\t\t( 0xB54D <= code && code <= 0xB567 ) || // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\n\t\t( 0xB569 <= code && code <= 0xB583 ) || // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\n\t\t( 0xB585 <= code && code <= 0xB59F ) || // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\n\t\t( 0xB5A1 <= code && code <= 0xB5BB ) || // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\n\t\t( 0xB5BD <= code && code <= 0xB5D7 ) || // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\n\t\t( 0xB5D9 <= code && code <= 0xB5F3 ) || // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\n\t\t( 0xB5F5 <= code && code <= 0xB60F ) || // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\n\t\t( 0xB611 <= code && code <= 0xB62B ) || // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\n\t\t( 0xB62D <= code && code <= 0xB647 ) || // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\n\t\t( 0xB649 <= code && code <= 0xB663 ) || // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\n\t\t( 0xB665 <= code && code <= 0xB67F ) || // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\n\t\t( 0xB681 <= code && code <= 0xB69B ) || // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\n\t\t( 0xB69D <= code && code <= 0xB6B7 ) || // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\n\t\t( 0xB6B9 <= code && code <= 0xB6D3 ) || // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\n\t\t( 0xB6D5 <= code && code <= 0xB6EF ) || // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\n\t\t( 0xB6F1 <= code && code <= 0xB70B ) || // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\n\t\t( 0xB70D <= code && code <= 0xB727 ) || // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\n\t\t( 0xB729 <= code && code <= 0xB743 ) || // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\n\t\t( 0xB745 <= code && code <= 0xB75F ) || // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\n\t\t( 0xB761 <= code && code <= 0xB77B ) || // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\n\t\t( 0xB77D <= code && code <= 0xB797 ) || // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\n\t\t( 0xB799 <= code && code <= 0xB7B3 ) || // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\n\t\t( 0xB7B5 <= code && code <= 0xB7CF ) || // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\n\t\t( 0xB7D1 <= code && code <= 0xB7EB ) || // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\n\t\t( 0xB7ED <= code && code <= 0xB807 ) || // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\n\t\t( 0xB809 <= code && code <= 0xB823 ) || // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\n\t\t( 0xB825 <= code && code <= 0xB83F ) || // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\n\t\t( 0xB841 <= code && code <= 0xB85B ) || // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\n\t\t( 0xB85D <= code && code <= 0xB877 ) || // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\n\t\t( 0xB879 <= code && code <= 0xB893 ) || // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\n\t\t( 0xB895 <= code && code <= 0xB8AF ) || // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\n\t\t( 0xB8B1 <= code && code <= 0xB8CB ) || // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\n\t\t( 0xB8CD <= code && code <= 0xB8E7 ) || // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\n\t\t( 0xB8E9 <= code && code <= 0xB903 ) || // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\n\t\t( 0xB905 <= code && code <= 0xB91F ) || // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\n\t\t( 0xB921 <= code && code <= 0xB93B ) || // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\n\t\t( 0xB93D <= code && code <= 0xB957 ) || // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\n\t\t( 0xB959 <= code && code <= 0xB973 ) || // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\n\t\t( 0xB975 <= code && code <= 0xB98F ) || // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\n\t\t( 0xB991 <= code && code <= 0xB9AB ) || // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\n\t\t( 0xB9AD <= code && code <= 0xB9C7 ) || // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\n\t\t( 0xB9C9 <= code && code <= 0xB9E3 ) || // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\n\t\t( 0xB9E5 <= code && code <= 0xB9FF ) || // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\n\t\t( 0xBA01 <= code && code <= 0xBA1B ) || // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\n\t\t( 0xBA1D <= code && code <= 0xBA37 ) || // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\n\t\t( 0xBA39 <= code && code <= 0xBA53 ) || // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\n\t\t( 0xBA55 <= code && code <= 0xBA6F ) || // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\n\t\t( 0xBA71 <= code && code <= 0xBA8B ) || // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\n\t\t( 0xBA8D <= code && code <= 0xBAA7 ) || // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\n\t\t( 0xBAA9 <= code && code <= 0xBAC3 ) || // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\n\t\t( 0xBAC5 <= code && code <= 0xBADF ) || // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\n\t\t( 0xBAE1 <= code && code <= 0xBAFB ) || // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\n\t\t( 0xBAFD <= code && code <= 0xBB17 ) || // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\n\t\t( 0xBB19 <= code && code <= 0xBB33 ) || // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\n\t\t( 0xBB35 <= code && code <= 0xBB4F ) || // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\n\t\t( 0xBB51 <= code && code <= 0xBB6B ) || // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\n\t\t( 0xBB6D <= code && code <= 0xBB87 ) || // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\n\t\t( 0xBB89 <= code && code <= 0xBBA3 ) || // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\n\t\t( 0xBBA5 <= code && code <= 0xBBBF ) || // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\n\t\t( 0xBBC1 <= code && code <= 0xBBDB ) || // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\n\t\t( 0xBBDD <= code && code <= 0xBBF7 ) || // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\n\t\t( 0xBBF9 <= code && code <= 0xBC13 ) || // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\n\t\t( 0xBC15 <= code && code <= 0xBC2F ) || // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\n\t\t( 0xBC31 <= code && code <= 0xBC4B ) || // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\n\t\t( 0xBC4D <= code && code <= 0xBC67 ) || // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\n\t\t( 0xBC69 <= code && code <= 0xBC83 ) || // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\n\t\t( 0xBC85 <= code && code <= 0xBC9F ) || // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\n\t\t( 0xBCA1 <= code && code <= 0xBCBB ) || // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\n\t\t( 0xBCBD <= code && code <= 0xBCD7 ) || // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\n\t\t( 0xBCD9 <= code && code <= 0xBCF3 ) || // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\n\t\t( 0xBCF5 <= code && code <= 0xBD0F ) || // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\n\t\t( 0xBD11 <= code && code <= 0xBD2B ) || // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\n\t\t( 0xBD2D <= code && code <= 0xBD47 ) || // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\n\t\t( 0xBD49 <= code && code <= 0xBD63 ) || // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\n\t\t( 0xBD65 <= code && code <= 0xBD7F ) || // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\n\t\t( 0xBD81 <= code && code <= 0xBD9B ) || // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\n\t\t( 0xBD9D <= code && code <= 0xBDB7 ) || // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\n\t\t( 0xBDB9 <= code && code <= 0xBDD3 ) || // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\n\t\t( 0xBDD5 <= code && code <= 0xBDEF ) || // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\n\t\t( 0xBDF1 <= code && code <= 0xBE0B ) || // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\n\t\t( 0xBE0D <= code && code <= 0xBE27 ) || // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\n\t\t( 0xBE29 <= code && code <= 0xBE43 ) || // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\n\t\t( 0xBE45 <= code && code <= 0xBE5F ) || // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\n\t\t( 0xBE61 <= code && code <= 0xBE7B ) || // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\n\t\t( 0xBE7D <= code && code <= 0xBE97 ) || // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\n\t\t( 0xBE99 <= code && code <= 0xBEB3 ) || // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\n\t\t( 0xBEB5 <= code && code <= 0xBECF ) || // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\n\t\t( 0xBED1 <= code && code <= 0xBEEB ) || // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\n\t\t( 0xBEED <= code && code <= 0xBF07 ) || // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\n\t\t( 0xBF09 <= code && code <= 0xBF23 ) || // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\n\t\t( 0xBF25 <= code && code <= 0xBF3F ) || // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\n\t\t( 0xBF41 <= code && code <= 0xBF5B ) || // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\n\t\t( 0xBF5D <= code && code <= 0xBF77 ) || // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\n\t\t( 0xBF79 <= code && code <= 0xBF93 ) || // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\n\t\t( 0xBF95 <= code && code <= 0xBFAF ) || // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\n\t\t( 0xBFB1 <= code && code <= 0xBFCB ) || // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\n\t\t( 0xBFCD <= code && code <= 0xBFE7 ) || // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\n\t\t( 0xBFE9 <= code && code <= 0xC003 ) || // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\n\t\t( 0xC005 <= code && code <= 0xC01F ) || // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\n\t\t( 0xC021 <= code && code <= 0xC03B ) || // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\n\t\t( 0xC03D <= code && code <= 0xC057 ) || // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\n\t\t( 0xC059 <= code && code <= 0xC073 ) || // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\n\t\t( 0xC075 <= code && code <= 0xC08F ) || // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\n\t\t( 0xC091 <= code && code <= 0xC0AB ) || // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\n\t\t( 0xC0AD <= code && code <= 0xC0C7 ) || // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\n\t\t( 0xC0C9 <= code && code <= 0xC0E3 ) || // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\n\t\t( 0xC0E5 <= code && code <= 0xC0FF ) || // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\n\t\t( 0xC101 <= code && code <= 0xC11B ) || // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\n\t\t( 0xC11D <= code && code <= 0xC137 ) || // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\n\t\t( 0xC139 <= code && code <= 0xC153 ) || // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\n\t\t( 0xC155 <= code && code <= 0xC16F ) || // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\n\t\t( 0xC171 <= code && code <= 0xC18B ) || // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\n\t\t( 0xC18D <= code && code <= 0xC1A7 ) || // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\n\t\t( 0xC1A9 <= code && code <= 0xC1C3 ) || // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\n\t\t( 0xC1C5 <= code && code <= 0xC1DF ) || // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\n\t\t( 0xC1E1 <= code && code <= 0xC1FB ) || // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\n\t\t( 0xC1FD <= code && code <= 0xC217 ) || // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\n\t\t( 0xC219 <= code && code <= 0xC233 ) || // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\n\t\t( 0xC235 <= code && code <= 0xC24F ) || // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\n\t\t( 0xC251 <= code && code <= 0xC26B ) || // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\n\t\t( 0xC26D <= code && code <= 0xC287 ) || // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\n\t\t( 0xC289 <= code && code <= 0xC2A3 ) || // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\n\t\t( 0xC2A5 <= code && code <= 0xC2BF ) || // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\n\t\t( 0xC2C1 <= code && code <= 0xC2DB ) || // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\n\t\t( 0xC2DD <= code && code <= 0xC2F7 ) || // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\n\t\t( 0xC2F9 <= code && code <= 0xC313 ) || // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\n\t\t( 0xC315 <= code && code <= 0xC32F ) || // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\n\t\t( 0xC331 <= code && code <= 0xC34B ) || // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\n\t\t( 0xC34D <= code && code <= 0xC367 ) || // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\n\t\t( 0xC369 <= code && code <= 0xC383 ) || // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\n\t\t( 0xC385 <= code && code <= 0xC39F ) || // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\n\t\t( 0xC3A1 <= code && code <= 0xC3BB ) || // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\n\t\t( 0xC3BD <= code && code <= 0xC3D7 ) || // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\n\t\t( 0xC3D9 <= code && code <= 0xC3F3 ) || // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\n\t\t( 0xC3F5 <= code && code <= 0xC40F ) || // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\n\t\t( 0xC411 <= code && code <= 0xC42B ) || // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\n\t\t( 0xC42D <= code && code <= 0xC447 ) || // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\n\t\t( 0xC449 <= code && code <= 0xC463 ) || // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\n\t\t( 0xC465 <= code && code <= 0xC47F ) || // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\n\t\t( 0xC481 <= code && code <= 0xC49B ) || // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\n\t\t( 0xC49D <= code && code <= 0xC4B7 ) || // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\n\t\t( 0xC4B9 <= code && code <= 0xC4D3 ) || // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\n\t\t( 0xC4D5 <= code && code <= 0xC4EF ) || // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\n\t\t( 0xC4F1 <= code && code <= 0xC50B ) || // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\n\t\t( 0xC50D <= code && code <= 0xC527 ) || // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\n\t\t( 0xC529 <= code && code <= 0xC543 ) || // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\n\t\t( 0xC545 <= code && code <= 0xC55F ) || // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\n\t\t( 0xC561 <= code && code <= 0xC57B ) || // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\n\t\t( 0xC57D <= code && code <= 0xC597 ) || // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\n\t\t( 0xC599 <= code && code <= 0xC5B3 ) || // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\n\t\t( 0xC5B5 <= code && code <= 0xC5CF ) || // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\n\t\t( 0xC5D1 <= code && code <= 0xC5EB ) || // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\n\t\t( 0xC5ED <= code && code <= 0xC607 ) || // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\n\t\t( 0xC609 <= code && code <= 0xC623 ) || // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\n\t\t( 0xC625 <= code && code <= 0xC63F ) || // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\n\t\t( 0xC641 <= code && code <= 0xC65B ) || // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\n\t\t( 0xC65D <= code && code <= 0xC677 ) || // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\n\t\t( 0xC679 <= code && code <= 0xC693 ) || // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\n\t\t( 0xC695 <= code && code <= 0xC6AF ) || // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\n\t\t( 0xC6B1 <= code && code <= 0xC6CB ) || // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\n\t\t( 0xC6CD <= code && code <= 0xC6E7 ) || // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\n\t\t( 0xC6E9 <= code && code <= 0xC703 ) || // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\n\t\t( 0xC705 <= code && code <= 0xC71F ) || // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\n\t\t( 0xC721 <= code && code <= 0xC73B ) || // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\n\t\t( 0xC73D <= code && code <= 0xC757 ) || // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\n\t\t( 0xC759 <= code && code <= 0xC773 ) || // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\n\t\t( 0xC775 <= code && code <= 0xC78F ) || // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\n\t\t( 0xC791 <= code && code <= 0xC7AB ) || // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\n\t\t( 0xC7AD <= code && code <= 0xC7C7 ) || // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\n\t\t( 0xC7C9 <= code && code <= 0xC7E3 ) || // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\n\t\t( 0xC7E5 <= code && code <= 0xC7FF ) || // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\n\t\t( 0xC801 <= code && code <= 0xC81B ) || // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\n\t\t( 0xC81D <= code && code <= 0xC837 ) || // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\n\t\t( 0xC839 <= code && code <= 0xC853 ) || // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\n\t\t( 0xC855 <= code && code <= 0xC86F ) || // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\n\t\t( 0xC871 <= code && code <= 0xC88B ) || // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\n\t\t( 0xC88D <= code && code <= 0xC8A7 ) || // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\n\t\t( 0xC8A9 <= code && code <= 0xC8C3 ) || // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\n\t\t( 0xC8C5 <= code && code <= 0xC8DF ) || // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\n\t\t( 0xC8E1 <= code && code <= 0xC8FB ) || // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\n\t\t( 0xC8FD <= code && code <= 0xC917 ) || // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\n\t\t( 0xC919 <= code && code <= 0xC933 ) || // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\n\t\t( 0xC935 <= code && code <= 0xC94F ) || // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\n\t\t( 0xC951 <= code && code <= 0xC96B ) || // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\n\t\t( 0xC96D <= code && code <= 0xC987 ) || // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\n\t\t( 0xC989 <= code && code <= 0xC9A3 ) || // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\n\t\t( 0xC9A5 <= code && code <= 0xC9BF ) || // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\n\t\t( 0xC9C1 <= code && code <= 0xC9DB ) || // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\n\t\t( 0xC9DD <= code && code <= 0xC9F7 ) || // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\n\t\t( 0xC9F9 <= code && code <= 0xCA13 ) || // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\n\t\t( 0xCA15 <= code && code <= 0xCA2F ) || // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\n\t\t( 0xCA31 <= code && code <= 0xCA4B ) || // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\n\t\t( 0xCA4D <= code && code <= 0xCA67 ) || // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\n\t\t( 0xCA69 <= code && code <= 0xCA83 ) || // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\n\t\t( 0xCA85 <= code && code <= 0xCA9F ) || // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\n\t\t( 0xCAA1 <= code && code <= 0xCABB ) || // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\n\t\t( 0xCABD <= code && code <= 0xCAD7 ) || // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\n\t\t( 0xCAD9 <= code && code <= 0xCAF3 ) || // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\n\t\t( 0xCAF5 <= code && code <= 0xCB0F ) || // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\n\t\t( 0xCB11 <= code && code <= 0xCB2B ) || // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\n\t\t( 0xCB2D <= code && code <= 0xCB47 ) || // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\n\t\t( 0xCB49 <= code && code <= 0xCB63 ) || // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\n\t\t( 0xCB65 <= code && code <= 0xCB7F ) || // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\n\t\t( 0xCB81 <= code && code <= 0xCB9B ) || // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\n\t\t( 0xCB9D <= code && code <= 0xCBB7 ) || // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\n\t\t( 0xCBB9 <= code && code <= 0xCBD3 ) || // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\n\t\t( 0xCBD5 <= code && code <= 0xCBEF ) || // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\n\t\t( 0xCBF1 <= code && code <= 0xCC0B ) || // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\n\t\t( 0xCC0D <= code && code <= 0xCC27 ) || // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\n\t\t( 0xCC29 <= code && code <= 0xCC43 ) || // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\n\t\t( 0xCC45 <= code && code <= 0xCC5F ) || // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\n\t\t( 0xCC61 <= code && code <= 0xCC7B ) || // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\n\t\t( 0xCC7D <= code && code <= 0xCC97 ) || // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\n\t\t( 0xCC99 <= code && code <= 0xCCB3 ) || // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\n\t\t( 0xCCB5 <= code && code <= 0xCCCF ) || // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\n\t\t( 0xCCD1 <= code && code <= 0xCCEB ) || // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\n\t\t( 0xCCED <= code && code <= 0xCD07 ) || // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\n\t\t( 0xCD09 <= code && code <= 0xCD23 ) || // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\n\t\t( 0xCD25 <= code && code <= 0xCD3F ) || // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\n\t\t( 0xCD41 <= code && code <= 0xCD5B ) || // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\n\t\t( 0xCD5D <= code && code <= 0xCD77 ) || // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\n\t\t( 0xCD79 <= code && code <= 0xCD93 ) || // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\n\t\t( 0xCD95 <= code && code <= 0xCDAF ) || // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\n\t\t( 0xCDB1 <= code && code <= 0xCDCB ) || // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\n\t\t( 0xCDCD <= code && code <= 0xCDE7 ) || // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\n\t\t( 0xCDE9 <= code && code <= 0xCE03 ) || // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\n\t\t( 0xCE05 <= code && code <= 0xCE1F ) || // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\n\t\t( 0xCE21 <= code && code <= 0xCE3B ) || // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\n\t\t( 0xCE3D <= code && code <= 0xCE57 ) || // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\n\t\t( 0xCE59 <= code && code <= 0xCE73 ) || // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\n\t\t( 0xCE75 <= code && code <= 0xCE8F ) || // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\n\t\t( 0xCE91 <= code && code <= 0xCEAB ) || // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\n\t\t( 0xCEAD <= code && code <= 0xCEC7 ) || // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\n\t\t( 0xCEC9 <= code && code <= 0xCEE3 ) || // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\n\t\t( 0xCEE5 <= code && code <= 0xCEFF ) || // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\n\t\t( 0xCF01 <= code && code <= 0xCF1B ) || // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\n\t\t( 0xCF1D <= code && code <= 0xCF37 ) || // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\n\t\t( 0xCF39 <= code && code <= 0xCF53 ) || // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\n\t\t( 0xCF55 <= code && code <= 0xCF6F ) || // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\n\t\t( 0xCF71 <= code && code <= 0xCF8B ) || // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\n\t\t( 0xCF8D <= code && code <= 0xCFA7 ) || // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\n\t\t( 0xCFA9 <= code && code <= 0xCFC3 ) || // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\n\t\t( 0xCFC5 <= code && code <= 0xCFDF ) || // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\n\t\t( 0xCFE1 <= code && code <= 0xCFFB ) || // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\n\t\t( 0xCFFD <= code && code <= 0xD017 ) || // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\n\t\t( 0xD019 <= code && code <= 0xD033 ) || // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\n\t\t( 0xD035 <= code && code <= 0xD04F ) || // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\n\t\t( 0xD051 <= code && code <= 0xD06B ) || // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\n\t\t( 0xD06D <= code && code <= 0xD087 ) || // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\n\t\t( 0xD089 <= code && code <= 0xD0A3 ) || // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\n\t\t( 0xD0A5 <= code && code <= 0xD0BF ) || // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\n\t\t( 0xD0C1 <= code && code <= 0xD0DB ) || // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\n\t\t( 0xD0DD <= code && code <= 0xD0F7 ) || // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\n\t\t( 0xD0F9 <= code && code <= 0xD113 ) || // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\n\t\t( 0xD115 <= code && code <= 0xD12F ) || // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\n\t\t( 0xD131 <= code && code <= 0xD14B ) || // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\n\t\t( 0xD14D <= code && code <= 0xD167 ) || // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\n\t\t( 0xD169 <= code && code <= 0xD183 ) || // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\n\t\t( 0xD185 <= code && code <= 0xD19F ) || // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\n\t\t( 0xD1A1 <= code && code <= 0xD1BB ) || // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\n\t\t( 0xD1BD <= code && code <= 0xD1D7 ) || // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\n\t\t( 0xD1D9 <= code && code <= 0xD1F3 ) || // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\n\t\t( 0xD1F5 <= code && code <= 0xD20F ) || // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\n\t\t( 0xD211 <= code && code <= 0xD22B ) || // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\n\t\t( 0xD22D <= code && code <= 0xD247 ) || // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\n\t\t( 0xD249 <= code && code <= 0xD263 ) || // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\n\t\t( 0xD265 <= code && code <= 0xD27F ) || // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\n\t\t( 0xD281 <= code && code <= 0xD29B ) || // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\n\t\t( 0xD29D <= code && code <= 0xD2B7 ) || // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\n\t\t( 0xD2B9 <= code && code <= 0xD2D3 ) || // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\n\t\t( 0xD2D5 <= code && code <= 0xD2EF ) || // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\n\t\t( 0xD2F1 <= code && code <= 0xD30B ) || // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\n\t\t( 0xD30D <= code && code <= 0xD327 ) || // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\n\t\t( 0xD329 <= code && code <= 0xD343 ) || // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\n\t\t( 0xD345 <= code && code <= 0xD35F ) || // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\n\t\t( 0xD361 <= code && code <= 0xD37B ) || // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\n\t\t( 0xD37D <= code && code <= 0xD397 ) || // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\n\t\t( 0xD399 <= code && code <= 0xD3B3 ) || // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\n\t\t( 0xD3B5 <= code && code <= 0xD3CF ) || // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\n\t\t( 0xD3D1 <= code && code <= 0xD3EB ) || // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\n\t\t( 0xD3ED <= code && code <= 0xD407 ) || // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\n\t\t( 0xD409 <= code && code <= 0xD423 ) || // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\n\t\t( 0xD425 <= code && code <= 0xD43F ) || // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\n\t\t( 0xD441 <= code && code <= 0xD45B ) || // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\n\t\t( 0xD45D <= code && code <= 0xD477 ) || // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\n\t\t( 0xD479 <= code && code <= 0xD493 ) || // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\n\t\t( 0xD495 <= code && code <= 0xD4AF ) || // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\n\t\t( 0xD4B1 <= code && code <= 0xD4CB ) || // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\n\t\t( 0xD4CD <= code && code <= 0xD4E7 ) || // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\n\t\t( 0xD4E9 <= code && code <= 0xD503 ) || // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\n\t\t( 0xD505 <= code && code <= 0xD51F ) || // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\n\t\t( 0xD521 <= code && code <= 0xD53B ) || // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\n\t\t( 0xD53D <= code && code <= 0xD557 ) || // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\n\t\t( 0xD559 <= code && code <= 0xD573 ) || // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\n\t\t( 0xD575 <= code && code <= 0xD58F ) || // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\n\t\t( 0xD591 <= code && code <= 0xD5AB ) || // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\n\t\t( 0xD5AD <= code && code <= 0xD5C7 ) || // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\n\t\t( 0xD5C9 <= code && code <= 0xD5E3 ) || // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\n\t\t( 0xD5E5 <= code && code <= 0xD5FF ) || // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\n\t\t( 0xD601 <= code && code <= 0xD61B ) || // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\n\t\t( 0xD61D <= code && code <= 0xD637 ) || // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\n\t\t( 0xD639 <= code && code <= 0xD653 ) || // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\n\t\t( 0xD655 <= code && code <= 0xD66F ) || // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\n\t\t( 0xD671 <= code && code <= 0xD68B ) || // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\n\t\t( 0xD68D <= code && code <= 0xD6A7 ) || // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\n\t\t( 0xD6A9 <= code && code <= 0xD6C3 ) || // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\n\t\t( 0xD6C5 <= code && code <= 0xD6DF ) || // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\n\t\t( 0xD6E1 <= code && code <= 0xD6FB ) || // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\n\t\t( 0xD6FD <= code && code <= 0xD717 ) || // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\n\t\t( 0xD719 <= code && code <= 0xD733 ) || // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\n\t\t( 0xD735 <= code && code <= 0xD74F ) || // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\n\t\t( 0xD751 <= code && code <= 0xD76B ) || // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\n\t\t( 0xD76D <= code && code <= 0xD787 ) || // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\n\t\t( 0xD789 <= code && code <= 0xD7A3 ) // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\n\t) {\n\t\treturn constants.LVT;\n\t}\n\tif (\n\t\tcode === 0x200D // Cf ZERO WIDTH JOINER\n\t) {\n\t\treturn constants.ZWJ;\n\t}\n\t// All unlisted characters have a grapheme break property of \"Other\":\n\treturn constants.Other;\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeBreakProperty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Grapheme cluster break tooling.\n*\n* @module @stdlib/string/tools/grapheme-cluster-break\n*\n* @example\n* var grapheme = require( '@stdlib/string/tools/grapheme-cluster-break' );\n*\n* var out = grapheme.emojiProperty( 0x23EC );\n* // returns 101\n*\n* out = grapheme.breakProperty( 0x008f );\n* // returns 2\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar constants = require( './constants.js' );\nvar breakType = require( './break_type.js' );\nvar emojiProperty = require( './emoji_property.js' );\nvar breakProperty = require( './break_property.js' );\n\n\n// MAIN //\n\nvar main = {};\nsetReadOnly( main, 'constants', constants );\nsetReadOnly( main, 'breakType', breakType );\nsetReadOnly( main, 'emojiProperty', emojiProperty );\nsetReadOnly( main, 'breakProperty', breakProperty );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar codePointAt = require( './../../code-point-at' );\nvar hasUTF16SurrogatePairAt = require( '@stdlib/assert/has-utf16-surrogate-pair-at' );\nvar grapheme = require( './../../tools/grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar breakType = grapheme.breakType;\nvar breakProperty = grapheme.breakProperty;\nvar emojiProperty = grapheme.emojiProperty;\n\n\n// MAIN //\n\n/**\n* Returns the next extended grapheme cluster break in a string after a specified position.\n*\n* @param {string} str - input string\n* @param {integer} [fromIndex=0] - position\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @returns {NonNegativeInteger} next grapheme break position\n*\n* @example\n* var out = nextGraphemeClusterBreak( 'last man standing', 4 );\n* // returns 5\n*\n* @example\n* var out = nextGraphemeClusterBreak( 'presidential election', 8 );\n* // returns 9\n*\n* @example\n* var out = nextGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 1 );\n* // returns 3\n*\n* @example\n* var out = nextGraphemeClusterBreak( '\uD83C\uDF37' );\n* // returns -1\n*/\nfunction nextGraphemeClusterBreak( str, fromIndex ) {\n\tvar breaks;\n\tvar emoji;\n\tvar len;\n\tvar idx;\n\tvar cp;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = fromIndex;\n\t} else {\n\t\tidx = 0;\n\t}\n\tlen = str.length;\n\tif ( idx < 0 ) {\n\t\tidx += len;\n\t\tif ( idx < 0 ) {\n\t\t\tidx = 0;\n\t\t}\n\t}\n\tif ( len === 0 || idx >= len ) {\n\t\treturn -1;\n\t}\n\t// Initialize caches for storing grapheme break and emoji properties:\n\tbreaks = [];\n\temoji = [];\n\n\t// Get the code point for the starting index:\n\tcp = codePointAt( str, idx );\n\n\t// Get the corresponding grapheme break and emoji properties:\n\tbreaks.push( breakProperty( cp ) );\n\temoji.push( emojiProperty( cp ) );\n\n\t// Begin searching for the next grapheme cluster break...\n\tfor ( i = idx+1; i < len; i++ ) {\n\t\t// If the current character is part of a surrogate pair, move along...\n\t\tif ( hasUTF16SurrogatePairAt( str, i-1 ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Get the next code point:\n\t\tcp = codePointAt( str, i );\n\n\t\t// Get the corresponding grapheme break and emoji properties:\n\t\tbreaks.push( breakProperty( cp ) );\n\t\temoji.push( emojiProperty( cp ) );\n\n\t\t// Determine if we've encountered a grapheme cluster break...\n\t\tif ( breakType( breaks, emoji ) > 0 ) {\n\t\t\t// We've found a break!\n\t\t\treturn i;\n\t\t}\n\t}\n\t// Unable to find a grapheme cluster break:\n\treturn -1;\n}\n\n\n// EXPORTS //\n\nmodule.exports = nextGraphemeClusterBreak;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the next extended grapheme cluster break in a string after a specified position.\n*\n* @module @stdlib/string/next-grapheme-cluster-break\n*\n* @example\n* var nextGraphemeClusterBreak = require( '@stdlib/string/next-grapheme-cluster-break' );\n*\n* var out = nextGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 1 );\n* // returns 3\n*\n* out = nextGraphemeClusterBreak( '\uD83C\uDF37', 0 );\n* // returns -1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Returns the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*\n* @example\n* var out = first( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E'\n*\n* @example\n* var out = first( 'foo bar', 5 );\n* // returns 'foo b'\n*/\nfunction first( str, n ) {\n\tvar i = 0;\n\twhile ( n > 0 ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tn -= 1;\n\t}\n\t// Value of `i` will be -1 if and only if `str` is an empty string or `str` has only 1 extended grapheme cluster...\n\tif ( str === '' || i === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/first-grapheme-cluster\n*\n* @example\n* var first = require( '@stdlib/string/base/first-grapheme-cluster' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*\n* out = first( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Invokes a function for each UTF-16 code unit in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tclbk.call( thisArg, str[ i ], i, str );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each UTF-16 code unit in a string.\n*\n* @module @stdlib/string/base/for-each\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Invokes a function for each Unicode code point in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar idx;\n\tvar ch;\n\tvar i;\n\n\tlen = str.length;\n\n\t// Process the string one Unicode code unit at a time and handle UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tidx = i;\n\t\tch = ch1;\n\n\t\t// Check for a UTF-16 surrogate pair...\n\t\tif ( i < len-1 && RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tch += ch2;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Note: `ch` may be a lone surrogate (e.g., a low surrogate without a preceding high surrogate or a high surrogate at the end of the input string).\n\n\t\t// Invoke the callback with the code point:\n\t\tclbk.call( thisArg, ch, idx, str );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each Unicode code point in a string.\n*\n* @module @stdlib/string/base/for-each-code-point\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each-code-point' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Invokes a function for each grapheme cluster (i.e., user-perceived character) in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar len;\n\tvar idx;\n\tvar brk;\n\n\tlen = str.length;\n\tidx = 0;\n\twhile ( idx < len ) {\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t\tif ( brk === -1 ) {\n\t\t\tbrk = len;\n\t\t}\n\t\tclbk.call( thisArg, str.substring( idx, brk ), idx, str );\n\t\tidx = brk;\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each grapheme cluster (i.e., user-perceived character) in a string.\n*\n* @module @stdlib/string/base/for-each-grapheme-cluster\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each-grapheme-cluster' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar reWhitespace = require( '@stdlib/regexp/whitespace' ).REGEXP;\n\n\n// MAIN //\n\n/**\n* Capitalizes the first letter of each word in an input string.\n*\n* @param {string} str - string to convert\n* @returns {string} start case string\n*\n* @example\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\nfunction startcase( str ) {\n\tvar cap;\n\tvar out;\n\tvar ch;\n\tvar i;\n\n\tcap = true;\n\tout = '';\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tch = str.charAt( i );\n\t\tif ( reWhitespace.test( ch ) ) {\n\t\t\tcap = true;\n\t\t} else if ( cap ) {\n\t\t\tch = ch.toUpperCase();\n\t\t\tcap = false;\n\t\t}\n\t\tout += ch;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first letter of each word in an input string.\n*\n* @module @stdlib/string/base/startcase\n*\n* @example\n* var startcase = require( '@stdlib/string/base/startcase' );\n*\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar startcase = require( './../../../base/startcase' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to HTTP header case.\n*\n* @param {string} str - string to convert\n* @returns {string} HTTP header-cased string\n*\n* @example\n* var out = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* @example\n* var out = headercase( 'IS_MOBILE' );\n* // returns 'Is-Mobile'\n*\n* @example\n* var out = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*\n* @example\n* var out = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*/\nfunction headercase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = lowercase( str );\n\tstr = startcase( str );\n\treturn replace( str, RE_WHITESPACE, '-' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = headercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to HTTP header case.\n*\n* @module @stdlib/string/base/headercase\n*\n* @example\n* var headercase = require( '@stdlib/string/base/headercase' );\n*\n* var str = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar uppercase = require( './../../../base/uppercase' );\nvar lowercase = require( './../../../base/lowercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to inverse case.\n*\n* @param {string} str - string to convert\n* @returns {string} inverse-cased string\n*\n* @example\n* var str = invcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = invcase( 'beep BOOP' );\n* // returns 'BEEP boop'\n*\n* @example\n* var str = invcase( 'isMobile' );\n* // returns 'ISmOBILE'\n*\n* @example\n* var str = invcase( 'HeLlO wOrLd!' );\n* // returns 'hElLo WoRlD!'\n*/\nfunction invcase( str ) {\n\tvar out;\n\tvar ch;\n\tvar s;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tch = str[ i ];\n\t\ts = uppercase( ch );\n\t\tif ( s === ch ) {\n\t\t\ts = lowercase( ch );\n\t\t}\n\t\tout.push( s );\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = invcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to inverse case.\n*\n* @module @stdlib/string/base/invcase\n*\n* @example\n* var invcase = require( '@stdlib/string/base/invcase' );\n*\n* var str = invcase( 'aBcDeF' );\n* // returns 'AbCdEf'\n*\n* str = invcase( 'Hello World!' );\n* // returns 'hELLO wORLD!'\n*\n* str = invcase( 'I am a robot' );\n* // returns 'i AM A ROBOT'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '-' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string/base/kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string/base/kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.repeat !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* ## Method\n*\n* The algorithmic trick used in the implementation is to treat string concatenation the same as binary addition (i.e., any natural number (nonnegative integer) can be expressed as a sum of powers of two).\n*\n* For example,\n*\n* ```text\n* n = 10 => 1010 => 2^3 + 2^0 + 2^1 + 2^0\n* ```\n*\n* We can produce a 10-repeat string by \"adding\" the results of a 8-repeat string and a 2-repeat string.\n*\n* The implementation is then as follows:\n*\n* 1. Let `s` be the string to be repeated and `o` be an output string.\n*\n* 2. Initialize an output string `o`.\n*\n* 3. Check the least significant bit to determine if the current `s` string should be \"added\" to the output \"total\".\n*\n* - if the bit is a one, add\n* - otherwise, move on\n*\n* 4. Double the string `s` by adding `s` to `s`.\n*\n* 5. Right-shift the bits of `n`.\n*\n* 6. Check if we have shifted off all bits.\n*\n* - if yes, done.\n* - otherwise, move on\n*\n* 7. Repeat 3-6.\n*\n* The result is that, as the string is repeated, we continually check to see if the doubled string is one which we want to add to our \"total\".\n*\n* The algorithm runs in `O(log_2(n))` compared to `O(n)`.\n*\n* @private\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\tvar rpt;\n\tvar cnt;\n\tif ( str.length === 0 || n === 0 ) {\n\t\treturn '';\n\t}\n\trpt = '';\n\tcnt = n;\n\tfor ( ; ; ) {\n\t\t// If the count is odd, append the current concatenated string:\n\t\tif ( (cnt&1) === 1 ) {\n\t\t\trpt += str;\n\t\t}\n\t\t// Right-shift the bits:\n\t\tcnt >>>= 1;\n\t\tif ( cnt === 0 ) {\n\t\t\tbreak;\n\t\t}\n\t\t// Double the string:\n\t\tstr += str;\n\t}\n\treturn rpt;\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar repeat = String.prototype.repeat;\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\treturn builtin.call( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Repeat a string a specified number of times and return the concatenated result.\n*\n* @module @stdlib/string/base/repeat\n*\n* @example\n* var replace = require( '@stdlib/string/base/repeat' );\n*\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* str = repeat( '', 100 );\n* // returns ''\n*\n* str = repeat( 'beep', 0 );\n* // returns ''\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar repeat;\nif ( HAS_BUILTIN ) {\n\trepeat = main;\n} else {\n\trepeat = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar repeat = require( './../../../base/repeat' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Left pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} pad - string used to pad\n* @returns {string} padded string\n*\n* @example\n* var str = lpad( 'a', 5, ' ' );\n* // returns ' a'\n*\n* @example\n* var str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* @example\n* var str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\nfunction lpad( str, len, pad ) {\n\tvar n = ( len - str.length ) / pad.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn repeat( pad, n ) + str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Left pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/base/left-pad\n*\n* @example\n* var lpad = require( '@stdlib/string/base/left-pad' );\n*\n* var str = lpad( 'a', 5, ' ' );\n* // returns ' a'\n*\n* str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trimLeft !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ltrim = String.prototype.trimLeft;\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning of a string.\n*\n* @module @stdlib/string/base/left-trim\n*\n* @example\n* var ltrim = require( '@stdlib/string/base/left-trim' );\n*\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar ltrim;\nif ( HAS_BUILTIN ) {\n\tltrim = main;\n} else {\n\tltrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar capitalize = require( './../../../base/capitalize' );\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_TO_PASCAL = /(?:\\s|^)([^\\s]+)(?=\\s|$)/g;\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Callback invoked upon a match.\n*\n* @private\n* @param {string} match - entire match\n* @param {string} p1 - first capture group\n* @returns {string} capitalized capture group\n*/\nfunction replacer( match, p1 ) {\n\treturn capitalize( lowercase( p1 ) );\n}\n\n\n// MAIN //\n\n/**\n* Converts a string to Pascal case.\n*\n* @param {string} str - string to convert\n* @returns {string} Pascal-cased string\n*\n* @example\n* var out = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* @example\n* var out = pascalcase( 'IS_MOBILE' );\n* // returns 'IsMobile'\n*\n* @example\n* var out = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*\n* @example\n* var out = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*/\nfunction pascalcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_WHITESPACE, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\treturn replace( str, RE_TO_PASCAL, replacer );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pascalcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to Pascal case.\n*\n* @module @stdlib/string/base/pascalcase\n*\n* @example\n* var pascalcase = require( '@stdlib/string/base/pascalcase' );\n*\n* var str = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* str = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*\n* str = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\n// 2^6-1 = 63 => 0x3f => 00111111\nvar Ox3F = 63|0;\n\n// 2^7 = 128 => 0x80 => 10000000\nvar Ox80 = 128|0;\n\n// 192 => 0xc0 => 11000000\nvar OxC0 = 192|0;\n\n// 224 => 0xe0 => 11100000\nvar OxE0 = 224|0;\n\n// 240 => 0xf0 => 11110000\nvar OxF0 = 240|0;\n\n// 2^10-1 = 1023 => 0x3ff => 00000011 11111111\nvar Ox3FF = 1023|0;\n\n// 2^11 = 2048 => 0x800 => 00001000 00000000\nvar Ox800 = 2048|0;\n\n// 55296 => 11011000 00000000\nvar OxD800 = 55296|0;\n\n// 57344 => 11100000 00000000\nvar OxE000 = 57344|0;\n\n// 2^16 = 65536 => 00000000 00000001 00000000 00000000\nvar Ox10000 = 65536|0;\n\n\n// MAIN //\n\n/**\n* Converts a UTF-16 encoded string to an array of integers using UTF-8 encoding.\n*\n* ## Method\n*\n* - UTF-8 is defined to encode code points in one to four bytes, depending on the number of significant bits in the numerical value of the code point.\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n*\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words.\n*\n* - Let `N` be the number of significant bits.\n*\n* - If `N <= 7` (i.e., U+0000 to U+007F), a code point is encoded in a single byte.\n*\n* ```text\n* 0xxxxxxx\n* ```\n*\n* where an `x` refers to a code point bit.\n*\n* - If `N <= 11` (i.e., U+0080 to U+07FF; ASCII characters), a code point is encoded in two bytes (5+6 bits).\n*\n* ```text\n* 110xxxxx 10xxxxxx\n* ```\n*\n* - If `N <= 16` (i.e., U+0800 to U+FFFF), a code point is encoded in three bytes (4+6+6 bits).\n*\n* ```text\n* 1110xxxx 10xxxxxx 10xxxxxx\n* ```\n*\n* - If `N <= 21` (i.e., U+10000 to U+10FFFF), a code point is encoded in four bytes (3+6+6+6 bits).\n*\n* ```text\n* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n* ```\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {Array} array of integers\n* @see [UTF-8]{@link https://en.wikipedia.org/wiki/UTF-8}\n* @see [Stack Overflow]{@link https://stackoverflow.com/questions/6240055/manually-converting-unicode-codepoints-into-utf-8-and-utf-16}\n*\n* @example\n* var str = '\u2603';\n* var out = utf16ToUTF8Array( str );\n* // returns [ 226, 152, 131 ]\n*/\nfunction utf16ToUTF8Array( str ) {\n\tvar code;\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tlen = str.length;\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tcode = str.charCodeAt( i );\n\n\t\t// ASCII...\n\t\tif ( code < Ox80 ) {\n\t\t\tout.push( code );\n\t\t}\n\t\t// UTF-16 non-surrogate pair...\n\t\telse if ( code < Ox800 ) {\n\t\t\tout.push( OxC0 | (code>>6) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t\telse if ( code < OxD800 || code >= OxE000 ) {\n\t\t\tout.push( OxE0 | (code>>12) );\n\t\t\tout.push( Ox80 | ((code>>6) & Ox3F) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t\t// UTF-16 surrogate pair...\n\t\telse {\n\t\t\ti += 1;\n\n\t\t\t// eslint-disable-next-line max-len\n\t\t\tcode = Ox10000 + (((code & Ox3FF)<<10) | (str.charCodeAt(i) & Ox3FF));\n\n\t\t\tout.push( OxF0 | (code>>18) );\n\t\t\tout.push( Ox80 | ((code>>12) & Ox3F) );\n\t\t\tout.push( Ox80 | ((code>>6) & Ox3F) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = utf16ToUTF8Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a UTF-16 encoded string to an array of integers using UTF-8 encoding.\n*\n* @module @stdlib/string/utf16-to-utf8-array\n*\n* @example\n* var utf16ToUTF8Array = require( '@stdlib/string/utf16-to-utf8-array' );\n*\n* var str = '\u2603';\n* var out = utf16ToUTF8Array( str );\n* // returns [ 226, 152, 131 ]\n*/\n\n// MODULES //\n\nvar utf16ToUTF8Array = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = utf16ToUTF8Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar utf16ToUTF8Array = require( './../../../utf16-to-utf8-array' );\n\n\n// VARIABLES //\n\n// Character codes:\nvar UNDERSCORE = 95|0;\nvar PERIOD = 46|0;\nvar HYPHEN = 45|0;\nvar TILDE = 126|0;\nvar ZERO = 48|0;\nvar NINE = 57|0;\nvar A = 65|0;\nvar Z = 90|0;\nvar a = 97|0;\nvar z = 122|0;\n\n\n// MAIN //\n\n/**\n* Percent-encodes a UTF-16 encoded string according to [RFC 3986][1].\n*\n* [1]: https://tools.ietf.org/html/rfc3986#section-2.1\n*\n* @param {string} str - string to percent-encode\n* @returns {string} percent-encoded string\n*\n* @example\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\nfunction percentEncode( str ) {\n\tvar byte;\n\tvar out;\n\tvar len;\n\tvar buf;\n\tvar i;\n\n\t// Convert to an array of octets using UTF-8 encoding (see https://tools.ietf.org/html/rfc3986#section-2.5):\n\tbuf = utf16ToUTF8Array( str );\n\n\t// Encode the string...\n\tlen = buf.length;\n\tout = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tbyte = buf[ i ];\n\t\tif (\n\t\t\t// ASCII Digits:\n\t\t\t( byte >= ZERO && byte <= NINE ) ||\n\n\t\t\t// ASCII uppercase letters:\n\t\t\t( byte >= A && byte <= Z ) ||\n\n\t\t\t// ASCII lowercase letters:\n\t\t\t( byte >= a && byte <= z ) ||\n\n\t\t\t// ASCII unreserved characters (see https://tools.ietf.org/html/rfc3986#section-2.3):\n\t\t\tbyte === HYPHEN ||\n\t\t\tbyte === PERIOD ||\n\t\t\tbyte === UNDERSCORE ||\n\t\t\tbyte === TILDE\n\t\t) {\n\t\t\tout += str.charAt( i );\n\t\t} else {\n\t\t\t// Convert an octet to hexadecimal and uppercase according to the RFC (see https://tools.ietf.org/html/rfc3986#section-2.1):\n\t\t\tout += '%' + byte.toString( 16 ).toUpperCase();\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = percentEncode;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Percent-encode a UTF-16 encoded string according to RFC 3986.\n*\n* @module @stdlib/string/base/percent-encode\n*\n* @example\n* var percentEncode = require( '@stdlib/string/base/percent-encode' );\n*\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Removes the first `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*/\nfunction removeFirst( str, n ) {\n\treturn str.substring( n, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/remove-first\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Removes the first `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*/\nfunction removeFirst( str, n ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\tlen = str.length;\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tcnt += 1;\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn str.substring( i + 1, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/remove-first-code-point\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first-code-point' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Removes the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*\n* @example\n* var out = removeFirst( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38'\n*\n* @example\n* var out = removeFirst( 'foo bar', 5 );\n* // returns 'ar'\n*/\nfunction removeFirst( str, n ) {\n\tvar i = 0;\n\twhile ( n > 0 ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tn -= 1;\n\t}\n\t// Value of `i` will be -1 if and only if `str` is an empty string or `str` has only 1 extended grapheme cluster...\n\tif ( str === '' || i === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( i, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/remove-first-grapheme-cluster\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first-grapheme-cluster' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*\n* out = removeFirst( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC38\uD83D\uDC35'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces the substring before the first occurrence of a specified search string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {string} replacement - replacement string\n* @returns {string} string\n*\n* @example\n* var out = replaceBefore( 'beep boop', ' ', 'foo' );\n* // returns 'foo boop'\n*\n* @example\n* var out = replaceBefore( 'beep boop', 'p', 'foo' );\n* // returns 'foop boop'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', '', 'foo' );\n* // returns 'Hello World!'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );\n* // returns 'Hello World!'\n*/\nfunction replaceBefore( str, search, replacement ) {\n\tvar idx = str.indexOf( search );\n\tif ( str === '' || search === '' || replacement === '' || idx < 0 ) {\n\t\treturn str;\n\t}\n\treturn replacement + str.substring( idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replaceBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace the substring before the first occurrence of a specified search string.\n*\n* @module @stdlib/string/base/replace-before\n*\n* @example\n* var replaceBefore = require( '@stdlib/string/base/replace-before' );\n*\n* var str = 'beep boop';\n*\n* var out = replaceBefore( str, ' ', 'foo' );\n* // returns 'foo boop'\n*\n* out = replaceBefore( str, 'o', 'bar' );\n* // returns 'baroop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar repeat = require( './../../../base/repeat' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Right pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} pad - string used to pad\n* @returns {string} padded string\n*\n* @example\n* var str = rpad( 'a', 5, ' ' );\n* // returns 'a '\n*\n* @example\n* var str = rpad( 'beep', 10, 'b' );\n* // returns 'beepbbbbbb'\n*\n* @example\n* var str = rpad( 'boop', 12, 'beep' );\n* // returns 'boopbeepbeep'\n*/\nfunction rpad( str, len, pad ) {\n\tvar n = ( len - str.length ) / pad.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn str + repeat( pad, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Right pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/base/right-pad\n*\n* @example\n* var rpad = require( '@stdlib/string/base/right-pad' );\n*\n* var str = rpad( 'a', 5, ' ' );\n* // returns 'a '\n*\n* str = rpad( 'beep', 10, 'b' );\n* // returns 'beepbbbbbb'\n*\n* str = rpad( 'boop', 12, 'beep' );\n* // returns 'boopbeepbeep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trimRight !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar rtrim = String.prototype.trimRight;\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the end of a string.\n*\n* @module @stdlib/string/base/right-trim\n*\n* @example\n* var rtrim = require( '@stdlib/string/base/right-trim' );\n*\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar rtrim;\nif ( HAS_BUILTIN ) {\n\trtrim = main;\n} else {\n\trtrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to snake case.\n*\n* @param {string} str - string to convert\n* @returns {string} snake-cased string\n*\n* @example\n* var str = snakecase( 'Hello World!' );\n* // returns 'hello_world'\n*\n* @example\n* var str = snakecase( 'foo bar' );\n* // returns 'foo_bar'\n*\n* @example\n* var str = snakecase( 'I am a tiny little teapot' );\n* // returns 'i_am_a_tiny_little_teapot'\n*\n* @example\n* var str = snakecase( 'BEEP boop' );\n* // returns 'beep_boop'\n*\n* @example\n* var str = snakecase( 'isMobile' );\n* // returns 'is_mobile'\n*/\nfunction snakecase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '_' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = snakecase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to snake case.\n*\n* @module @stdlib/string/base/snakecase\n*\n* @example\n* var snakecase = require( '@stdlib/string/base/snakecase' );\n*\n* var str = snakecase( 'Foo Bar' );\n* // returns 'foo_bar'\n*\n* str = snakecase( 'I am a tiny little house' );\n* // returns 'i_am_a_tiny_little_house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.startsWith !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @private\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} position - position at which to start searching\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tvar i;\n\tif ( position < 0 ) {\n\t\tpos = str.length + position;\n\t} else {\n\t\tpos = position;\n\t}\n\tif ( search.length === 0 ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tpos < 0 ||\n\t\tpos + search.length > str.length\n\t) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < search.length; i++ ) {\n\t\tif ( str.charCodeAt( pos + i ) !== search.charCodeAt( i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar startsWith = String.prototype.startsWith;\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} position - position at which to start searching\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tif ( position < 0 ) {\n\t\tpos = str.length + position;\n\t} else {\n\t\tpos = position;\n\t}\n\tif ( search.length === 0 ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tpos < 0 ||\n\t\tpos + search.length > str.length\n\t) {\n\t\treturn false;\n\t}\n\treturn builtin.call( str, search, pos );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string starts with the characters of another string.\n*\n* @module @stdlib/string/base/starts-with\n*\n* @example\n* var startsWith = require( '@stdlib/string/base/starts-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n* var bool = startsWith( str, 'Fair', 0 );\n* // returns true\n*\n* bool = startsWith( str, 'fair', 0 );\n* // returns false\n*\n* bool = startsWith( str, 'foul', 8 );\n* // returns true\n*\n* bool = startsWith( str, 'filthy', -10 );\n* // returns true\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar startsWith;\nif ( HAS_BUILTIN ) {\n\tstartsWith = main;\n} else {\n\tstartsWith = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Uncapitalizes the first character of a string.\n*\n* @param {string} str - input string\n* @returns {string} input string with first character converted to lowercase\n*\n* @example\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* @example\n* var out = uncapitalize( 'Presidential election' );\n* // returns 'presidential election'\n*\n* @example\n* var out = uncapitalize( 'JavaScript' );\n* // returns 'javaScript'\n*\n* @example\n* var out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures'\n*/\nfunction uncapitalize( str ) {\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\treturn str.charAt( 0 ).toLowerCase() + str.slice( 1 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = uncapitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Uncapitalize the first character of a string.\n*\n* @module @stdlib/string/base/uncapitalize\n*\n* @example\n* var uncapitalize = require( '@stdlib/string/base/uncapitalize' );\n*\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name camelcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/camelcase}\n*/\nsetReadOnly( ns, 'camelcase', require( './../../base/camelcase' ) );\n\n/**\n* @name capitalize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/capitalize}\n*/\nsetReadOnly( ns, 'capitalize', require( './../../base/capitalize' ) );\n\n/**\n* @name codePointAt\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/code-point-at}\n*/\nsetReadOnly( ns, 'codePointAt', require( './../../base/code-point-at' ) );\n\n/**\n* @name constantcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/constantcase}\n*/\nsetReadOnly( ns, 'constantcase', require( './../../base/constantcase' ) );\n\n/**\n* @name distances\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/string/base/distances}\n*/\nsetReadOnly( ns, 'distances', require( './../../base/distances' ) );\n\n/**\n* @name dotcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/dotcase}\n*/\nsetReadOnly( ns, 'dotcase', require( './../../base/dotcase' ) );\n\n/**\n* @name endsWith\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/ends-with}\n*/\nsetReadOnly( ns, 'endsWith', require( './../../base/ends-with' ) );\n\n/**\n* @name first\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first}\n*/\nsetReadOnly( ns, 'first', require( './../../base/first' ) );\n\n/**\n* @name firstCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first-code-point}\n*/\nsetReadOnly( ns, 'firstCodePoint', require( './../../base/first-code-point' ) );\n\n/**\n* @name firstGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first-grapheme-cluster}\n*/\nsetReadOnly( ns, 'firstGraphemeCluster', require( './../../base/first-grapheme-cluster' ) );\n\n/**\n* @name forEach\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each}\n*/\nsetReadOnly( ns, 'forEach', require( './../../base/for-each' ) );\n\n/**\n* @name forEachCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each-code-point}\n*/\nsetReadOnly( ns, 'forEachCodePoint', require( './../../base/for-each-code-point' ) );\n\n/**\n* @name forEachGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each-grapheme-cluster}\n*/\nsetReadOnly( ns, 'forEachGraphemeCluster', require( './../../base/for-each-grapheme-cluster' ) );\n\n/**\n* @name formatInterpolate\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/format-interpolate}\n*/\nsetReadOnly( ns, 'formatInterpolate', require( './../../base/format-interpolate' ) );\n\n/**\n* @name formatTokenize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/format-tokenize}\n*/\nsetReadOnly( ns, 'formatTokenize', require( './../../base/format-tokenize' ) );\n\n/**\n* @name headercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/headercase}\n*/\nsetReadOnly( ns, 'headercase', require( './../../base/headercase' ) );\n\n/**\n* @name invcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/invcase}\n*/\nsetReadOnly( ns, 'invcase', require( './../../base/invcase' ) );\n\n/**\n* @name kebabcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/kebabcase}\n*/\nsetReadOnly( ns, 'kebabcase', require( './../../base/kebabcase' ) );\n\n/**\n* @name lpad\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/left-pad}\n*/\nsetReadOnly( ns, 'lpad', require( './../../base/left-pad' ) );\n\n/**\n* @name ltrim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/left-trim}\n*/\nsetReadOnly( ns, 'ltrim', require( './../../base/left-trim' ) );\n\n/**\n* @name lowercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/lowercase}\n*/\nsetReadOnly( ns, 'lowercase', require( './../../base/lowercase' ) );\n\n/**\n* @name pascalcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/pascalcase}\n*/\nsetReadOnly( ns, 'pascalcase', require( './../../base/pascalcase' ) );\n\n/**\n* @name percentEncode\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/percent-encode}\n*/\nsetReadOnly( ns, 'percentEncode', require( './../../base/percent-encode' ) );\n\n/**\n* @name removeFirst\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first}\n*/\nsetReadOnly( ns, 'removeFirst', require( './../../base/remove-first' ) );\n\n/**\n* @name removeFirstCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first-code-point}\n*/\nsetReadOnly( ns, 'removeFirstCodePoint', require( './../../base/remove-first-code-point' ) );\n\n/**\n* @name removeFirstGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first-grapheme-cluster}\n*/\nsetReadOnly( ns, 'removeFirstGraphemeCluster', require( './../../base/remove-first-grapheme-cluster' ) );\n\n/**\n* @name repeat\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/repeat}\n*/\nsetReadOnly( ns, 'repeat', require( './../../base/repeat' ) );\n\n/**\n* @name replace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/replace}\n*/\nsetReadOnly( ns, 'replace', require( './../../base/replace' ) );\n\n/**\n* @name replaceBefore\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/replace-before}\n*/\nsetReadOnly( ns, 'replaceBefore', require( './../../base/replace-before' ) );\n\n/**\n* @name rpad\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/right-pad}\n*/\nsetReadOnly( ns, 'rpad', require( './../../base/right-pad' ) );\n\n/**\n* @name rtrim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/right-trim}\n*/\nsetReadOnly( ns, 'rtrim', require( './../../base/right-trim' ) );\n\n/**\n* @name snakecase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/snakecase}\n*/\nsetReadOnly( ns, 'snakecase', require( './../../base/snakecase' ) );\n\n/**\n* @name startcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/startcase}\n*/\nsetReadOnly( ns, 'startcase', require( './../../base/startcase' ) );\n\n/**\n* @name startsWith\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/starts-with}\n*/\nsetReadOnly( ns, 'startsWith', require( './../../base/starts-with' ) );\n\n/**\n* @name trim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/trim}\n*/\nsetReadOnly( ns, 'trim', require( './../../base/trim' ) );\n\n/**\n* @name uncapitalize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/uncapitalize}\n*/\nsetReadOnly( ns, 'uncapitalize', require( './../../base/uncapitalize' ) );\n\n/**\n* @name uppercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/uppercase}\n*/\nsetReadOnly( ns, 'uppercase', require( './../../base/uppercase' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/camelcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to camel case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} camel-cased string\n*\n* @example\n* var out = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* @example\n* var out = camelcase( 'IS_MOBILE' );\n* // returns 'isMobile'\n*\n* @example\n* var out = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*\n* @example\n* var out = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*/\nfunction camelcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = camelcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to camel case.\n*\n* @module @stdlib/string/camelcase\n*\n* @example\n* var camelcase = require( '@stdlib/string/camelcase' );\n*\n* var str = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* str = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*\n* str = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/capitalize' );\n\n\n// MAIN //\n\n/**\n* Capitalizes the first character in a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} capitalized string\n*\n* @example\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* @example\n* var out = capitalize( 'presidential election' );\n* // returns 'Presidential election'\n*\n* @example\n* var out = capitalize( 'javaScript' );\n* // returns 'JavaScript'\n*\n* @example\n* var out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures'\n*/\nfunction capitalize( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = capitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first character in a string.\n*\n* @module @stdlib/string/capitalize\n*\n* @example\n* var capitalize = require( '@stdlib/string/capitalize' );\n*\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/constantcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to constant case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} constant-cased string\n*\n* @example\n* var str = constantcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = constantcase( 'beep boop' );\n* // returns 'BEEP_BOOP'\n*\n* @example\n* var str = constantcase( 'isMobile' );\n* // returns 'IS_MOBILE'\n*\n* @example\n* var str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*/\nfunction constantcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = constantcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to constant case.\n*\n* @module @stdlib/string/constantcase\n*\n* @example\n* var constantcase = require( '@stdlib/string/constantcase' );\n*\n* var str = constantcase( 'aBcDeF' );\n* // returns 'ABCDEF'\n*\n* str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*\n* str = constantcase( 'I am a robot' );\n* // returns 'I_AM_A_ROBOT'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/dotcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to dot case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} dot-cased string\n*\n* @example\n* var out = dotcase( 'foo bar' );\n* // returns 'foo.bar'\n*\n* @example\n* var out = dotcase( 'IS_MOBILE' );\n* // returns 'is.mobile'\n*\n* @example\n* var out = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*\n* @example\n* var out = dotcase( '--foo-bar--' );\n* // returns 'foo.bar'\n*/\nfunction dotcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dotcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to dot case.\n*\n* @module @stdlib/string/dotcase\n*\n* @example\n* var dotcase = require( '@stdlib/string/dotcase' );\n*\n* var str = dotcase( 'foo bar' );\n* // returns 'foo.bar'\n*\n* str = dotcase( '--foo-bar--' );\n* // returns 'foo.bar'\n*\n* str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/ends-with' );\n\n\n// MAIN //\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [len=str.length] - substring length\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'Remember the story I used to tell you when you were a boy?', 'boy?' );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'Remember the story I used to tell you when you were a boy?', 'Boy?' );\n* // returns false\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be' );\n* // returns false\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( len ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', len ) );\n\t\t}\n\t} else {\n\t\tlen = str.length;\n\t}\n\treturn base( str, search, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @module @stdlib/string/ends-with\n*\n* @example\n* var endsWith = require( '@stdlib/string/ends-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n*\n* var bool = endsWith( str, 'air' );\n* // returns true\n*\n* bool = endsWith( str, 'fair' );\n* // returns false\n*\n* bool = endsWith( str, 'fair', 30 );\n* // returns true\n*\n* bool = endsWith( str, 'fair', -34 );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar firstCodeUnit = require( './../../base/first' );\nvar firstCodePoint = require( './../../base/first-code-point' );\nvar firstGraphemeCluster = require( './../../base/first-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': firstGraphemeCluster,\n\t'code_point': firstCodePoint,\n\t'code_unit': firstCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Returns the first character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of characters to return\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing' );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election' );\n* // returns 'p'\n*\n* @example\n* var out = first( 'javaScript' );\n* // returns 'j'\n*\n* @example\n* var out = first( 'Hidden Treasures' );\n* // returns 'H'\n*\n* @example\n* var out = first( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E'\n*\n* @example\n* var out = first( 'foo bar', 5 );\n* // returns 'foo b'\n*/\nfunction first( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first character(s) of a string.\n*\n* @module @stdlib/string/first\n*\n* @example\n* var first = require( '@stdlib/string/first' );\n*\n* var out = first( 'last man standing' );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures' );\n* // returns 'H';\n*\n* out = first( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar forEachCodeUnit = require( './../../base/for-each' );\nvar forEachCodePoint = require( './../../base/for-each-code-point' );\nvar forEachGraphemeCluster = require( './../../base/for-each-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': forEachGraphemeCluster,\n\t'code_point': forEachCodePoint,\n\t'code_unit': forEachCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Invokes a function for each character in a string.\n*\n* @param {string} str - input string\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" over which to iterate (must be either `grapheme`, `code_point`, or `code_unit`)\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} callback argument must be a function\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, options, clbk ) {\n\tvar thisArg;\n\tvar nargs;\n\tvar opts;\n\tvar cb;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 2 ) {\n\t\tcb = options;\n\t\toptions = null;\n\t} else if ( nargs === 3 ) {\n\t\tif ( isPlainObject( options ) ) {\n\t\t\tcb = clbk;\n\t\t} else {\n\t\t\tcb = options;\n\t\t\toptions = null;\n\t\t\tthisArg = clbk;\n\t\t}\n\t} else { // nargs === 4\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t\tcb = clbk;\n\t\tthisArg = arguments[ 3 ];\n\t}\n\tif ( !isFunction( cb ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', cb ) );\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\tFCNS[ opts.mode ]( str, cb, thisArg );\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each character in a string.\n*\n* @module @stdlib/string/for-each\n*\n* @example\n* var forEach = require( '@stdlib/string/for-each' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar format = require( './../../format' );\nvar UNICODE_MAX = require( '@stdlib/constants/unicode/max' );\nvar UNICODE_MAX_BMP = require( '@stdlib/constants/unicode/max-bmp' );\n\n\n// VARIABLES //\n\nvar fromCharCode = String.fromCharCode;\n\n// Factor to rescale a code point from a supplementary plane:\nvar Ox10000 = 0x10000|0; // 65536\n\n// Factor added to obtain a high surrogate:\nvar OxD800 = 0xD800|0; // 55296\n\n// Factor added to obtain a low surrogate:\nvar OxDC00 = 0xDC00|0; // 56320\n\n// 10-bit mask: 2^10-1 = 1023 => 0x3ff => 00000000 00000000 00000011 11111111\nvar Ox3FF = 1023|0;\n\n\n// MAIN //\n\n/**\n* Creates a string from a sequence of Unicode code points.\n*\n* ## Notes\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words: a high and a low surrogate.\n*\n* @param {...NonNegativeInteger} args - sequence of code points\n* @throws {Error} must provide either an array-like object of code points or one or more code points as separate arguments\n* @throws {TypeError} a code point must be a nonnegative integer\n* @throws {RangeError} must provide a valid Unicode code point\n* @returns {string} created string\n*\n* @example\n* var str = fromCodePoint( 9731 );\n* // returns '\u2603'\n*/\nfunction fromCodePoint( args ) {\n\tvar len;\n\tvar str;\n\tvar arr;\n\tvar low;\n\tvar hi;\n\tvar pt;\n\tvar i;\n\n\tlen = arguments.length;\n\tif ( len === 1 && isCollection( args ) ) {\n\t\tarr = arguments[ 0 ];\n\t\tlen = arr.length;\n\t} else {\n\t\tarr = [];\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tarr.push( arguments[ i ] );\n\t\t}\n\t}\n\tif ( len === 0 ) {\n\t\tthrow new Error( 'insufficient arguments. Must provide either an array of code points or one or more code points as separate arguments.' );\n\t}\n\tstr = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tpt = arr[ i ];\n\t\tif ( !isNonNegativeInteger( pt ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide valid code points (i.e., nonnegative integers). Value: `%s`.', pt ) );\n\t\t}\n\t\tif ( pt > UNICODE_MAX ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.', UNICODE_MAX, pt ) );\n\t\t}\n\t\tif ( pt <= UNICODE_MAX_BMP ) {\n\t\t\tstr += fromCharCode( pt );\n\t\t} else {\n\t\t\t// Code point from a supplementary plane. Split into two 16-bit code units (surrogate pair).\n\t\t\tpt -= Ox10000;\n\t\t\thi = (pt >> 10) + OxD800;\n\t\t\tlow = (pt & Ox3FF) + OxDC00;\n\t\t\tstr += fromCharCode( hi, low );\n\t\t}\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromCodePoint;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a string from a sequence of Unicode code points.\n*\n* @module @stdlib/string/from-code-point\n*\n* @example\n* var fromCodePoint = require( '@stdlib/string/from-code-point' );\n*\n* var str = fromCodePoint( 9731 );\n* // returns '\u2603'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/headercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to HTTP header case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} HTTP header-cased string\n*\n* @example\n* var out = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* @example\n* var out = headercase( 'IS_MOBILE' );\n* // returns 'Is-Mobile'\n*\n* @example\n* var out = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*\n* @example\n* var out = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*/\nfunction headercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = headercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to HTTP header case.\n*\n* @module @stdlib/string/headercase\n*\n* @example\n* var headercase = require( '@stdlib/string/headercase' );\n*\n* var str = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/kebabcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string/kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string/kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar base = require( './../../base/left-pad' );\n\n\n// MAIN //\n\n/**\n* Left pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} [pad=' '] - string used to pad\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @throws {RangeError} padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = lpad( 'a', 5 );\n* // returns ' a'\n*\n* @example\n* var str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* @example\n* var str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\nfunction lpad( str, len, pad ) {\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', p ) );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid argument. Third argument must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\treturn base( str, len, p );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Left pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/left-pad\n*\n* @example\n* var lpad = require( '@stdlib/string/left-pad' );\n*\n* var str = lpad( 'a', 5 );\n* // returns ' a'\n*\n* str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/left-trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning of a string.\n*\n* @module @stdlib/string/left-trim\n*\n* @example\n* var ltrim = require( '@stdlib/string/left-trim' );\n*\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Splits a string by its grapheme cluster breaks.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {StringArray} array of grapheme clusters\n*\n* @example\n* var out = splitGraphemeClusters( 'caf\u00E9' );\n* // returns [ 'c', 'a', 'f', '\u00E9' ]\n*\n* @example\n* var out = splitGraphemeClusters( '\uD83C\uDF55\uD83C\uDF55\uD83C\uDF55' );\n* // returns [ '\uD83C\uDF55', '\uD83C\uDF55', '\uD83C\uDF55' ]\n*/\nfunction splitGraphemeClusters( str ) {\n\tvar idx;\n\tvar brk;\n\tvar out;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tidx = 0;\n\tout = [];\n\tif ( str.length === 0 ) {\n\t\treturn out;\n\t}\n\tbrk = nextGraphemeClusterBreak( str, idx );\n\twhile ( brk !== -1 ) {\n\t\tout.push( str.substring( idx, brk ) );\n\t\tidx = brk;\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t}\n\tout.push( str.substring( idx ) );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = splitGraphemeClusters;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split a string by its grapheme cluster breaks.\n*\n* @module @stdlib/string/split-grapheme-clusters\n*\n* @example\n* var splitGraphemeClusters = require( '@stdlib/string/split-grapheme-clusters' );\n*\n* var out = splitGraphemeClusters( 'caf\u00E9' );\n* // returns [ 'c', 'a', 'f', '\u00E9' ]\n*\n* out = splitGraphemeClusters( '\uD83C\uDF55\uD83C\uDF55\uD83C\uDF55' );\n* // returns [ '\uD83C\uDF55', '\uD83C\uDF55', '\uD83C\uDF55' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar splitGraphemeClusters = require( './../../split-grapheme-clusters' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar replace = require( './../../replace' );\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar WHITESPACE_CHARS = '\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\n\n\n// MAIN //\n\n/**\n* Trims `n` characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of characters to trim\n* @param {(string|StringArray)} [chars] - characters to trim (defaults to whitespace characters)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string or an array of strings\n* @returns {string} trimmed string\n*\n* @example\n* var str = ' abc ';\n* var out = ltrimN( str, 2 );\n* // returns ' abc '\n*\n* @example\n* var str = ' abc ';\n* var out = ltrimN( str, str.length );\n* // returns 'abc '\n*\n* @example\n* var str = '~~abc!~~';\n* var out = ltrimN( str, str.length, [ '~', '!' ] );\n* // returns 'abc!~~'\n*\n* @example\n* var str = '\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8';\n* var out = ltrimN( str, str.length, '\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16' );\n* // returns ''\n*/\nfunction ltrimN( str, n, chars ) {\n\tvar nElems;\n\tvar reStr;\n\tvar isStr;\n\tvar RE;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tisStr = isString( chars );\n\t\tif ( !isStr && !isStringArray( chars ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string or an array of strings. Value: `%s`.', chars ) );\n\t\t}\n\t\tif ( isStr ) {\n\t\t\tchars = splitGraphemeClusters( chars );\n\t\t}\n\t\tnElems = chars.length - 1;\n\t\treStr = '';\n\t\tfor ( i = 0; i < nElems; i++ ) {\n\t\t\treStr += rescape( chars[ i ] );\n\t\t\treStr += '|';\n\t\t}\n\t\treStr += rescape( chars[ nElems ] );\n\n\t\t// Case: Trim a specific set of characters from the beginning of a string..\n\t\tRE = new RegExp( '^(?:' + reStr + '){0,'+n+'}' );\n\t} else {\n\t\t// Case: Trim `n` whitespace characters from the beginning of a string...\n\t\tRE = new RegExp( '^[' + WHITESPACE_CHARS + ']{0,'+n+'}' );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrimN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim `n` characters from the beginning of a string.\n*\n* @module @stdlib/string/left-trim-n\n*\n* @example\n* var ltrimN = require( '@stdlib/string/left-trim-n' );\n*\n* var str = 'foo ';\n* var out = ltrimN( str, str.length );\n* // returns 'foo '\n*\n* str = '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36';\n* out = ltrimN( str, 4, [ '\uD83D\uDC36', ' ' ] );\n* // returns 'Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/lowercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string/lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string/lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the number of grapheme clusters in a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {NonNegativeInteger} number of grapheme clusters\n*\n* @example\n* var out = numGraphemeClusters( 'last man standing' );\n* // returns 17\n*\n* @example\n* var out = numGraphemeClusters( 'presidential election' );\n* // returns 21\n*\n* @example\n* var out = numGraphemeClusters( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926' );\n* // returns 5\n*\n* @example\n* var out = numGraphemeClusters( '\uD83C\uDF37' );\n* // returns 1\n*/\nfunction numGraphemeClusters( str ) {\n\tvar count;\n\tvar idx;\n\tvar brk;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tcount = 0;\n\tidx = 0;\n\n\tbrk = nextGraphemeClusterBreak( str, idx );\n\twhile ( brk !== -1 ) {\n\t\tcount += 1;\n\t\tidx = brk;\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t}\n\tif ( idx < str.length ) {\n\t\tcount += 1;\n\t}\n\treturn count;\n}\n\n\n// EXPORTS //\n\nmodule.exports = numGraphemeClusters;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the number of grapheme clusters in a string.\n*\n* @module @stdlib/string/num-grapheme-clusters\n*\n* @example\n* var numGraphemeClusters = require( '@stdlib/string/num-grapheme-clusters' );\n*\n* var out = numGraphemeClusters( 'last man standing' );\n* // returns 17\n*\n* out = numGraphemeClusters( '\uD83C\uDF37' );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t{ \"VAL\": 1e0, \"EN\": \"zero\", \"DE\": \"null\" },\n\t{ \"VAL\": 1e1, \"EN\": \"ten\", \"DE\": \"zehn\" },\n\t{ \"VAL\": 1e2, \"EN\": \"hundred\", \"DE\": \"hundert\" },\n\t{ \"VAL\": 1e3, \"EN\": \"thousand\", \"DE\": \"tausend\" },\n\t{ \"VAL\": 1e6, \"EN\": \"million\", \"DE\": \"Million\" },\n\t{ \"VAL\": 1e9, \"EN\": \"billion\", \"DE\": \"Milliarde\" },\n\t{ \"VAL\": 1e12, \"EN\": \"trillion\", \"DE\": \"Billion\" },\n\t{ \"VAL\": 1e15, \"EN\": \"quadrillion\", \"DE\": \"Billiarde\" },\n\t{ \"VAL\": 1e18, \"EN\": \"quintillion\", \"DE\": \"Trillion\" },\n\t{ \"VAL\": 1e21, \"EN\": \"sextillion\", \"DE\": \"Trilliarde\" },\n\t{ \"VAL\": 1e24, \"EN\": \"septillion\", \"DE\": \"Quadrillion\" },\n\t{ \"VAL\": 1e27, \"EN\": \"octillion\", \"DE\": \"Quadrilliarde\" },\n\t{ \"VAL\": 1e30, \"EN\": \"nonillion\", \"DE\": \"Quintillion\" },\n\t{ \"VAL\": 1e33, \"EN\": \"decillion\", \"DE\": \"Quintilliarde\" },\n\t{ \"VAL\": 1e36, \"EN\": \"undecillion\", \"DE\": \"Sextillion\" },\n\t{ \"VAL\": 1e39, \"EN\": \"duodecillion\", \"DE\": \"Sextilliarde\" },\n\t{ \"VAL\": 1e42, \"EN\": \"tredecillion\", \"DE\": \"Septillion\" },\n\t{ \"VAL\": 1e45, \"EN\": \"quattuordecillion\", \"DE\": \"Septilliarde\" },\n\t{ \"VAL\": 1e48, \"EN\": \"quindecillion\", \"DE\": \"Octillion\" },\n\t{ \"VAL\": 1e51, \"EN\": \"sedecillion\", \"DE\": \"Octilliarde\" },\n\t{ \"VAL\": 1e54, \"EN\": \"septendecillion\", \"DE\": \"Nonillion\" },\n\t{ \"VAL\": 1e57, \"EN\": \"octodecillion\", \"DE\": \"Nonilliarde\" },\n\t{ \"VAL\": 1e60, \"EN\": \"novendecillion\", \"DE\": \"Decillion\" },\n\t{ \"VAL\": 1e63, \"EN\": \"vigintillion\", \"DE\": \"Decilliarde\" },\n\t{ \"VAL\": 1e66, \"EN\": \"unvigintillion\", \"DE\": \"Undecillion\" },\n\t{ \"VAL\": 1e69, \"EN\": \"duovigintillion\", \"DE\": \"Undecilliarde\" },\n\t{ \"VAL\": 1e72, \"EN\": \"tresvigintillion\", \"DE\": \"Duodecillion\" },\n\t{ \"VAL\": 1e75, \"EN\": \"quattuorvigintillion\", \"DE\": \"Duodecilliarde\" },\n\t{ \"VAL\": 1e78, \"EN\": \"quinquavigintillion\", \"DE\": \"Tredecillion\" },\n\t{ \"VAL\": 1e81, \"EN\": \"sesvigintillion\", \"DE\": \"Tredecilliarde\" },\n\t{ \"VAL\": 1e84, \"EN\": \"septemvigintillion\", \"DE\": \"Quattuordecillion\" },\n\t{ \"VAL\": 1e87, \"EN\": \"octovigintillion\", \"DE\": \"Quattuordecilliarde\" },\n\t{ \"VAL\": 1e90, \"EN\": \"novemvigintillion\", \"DE\": \"Quindecillion\" },\n\t{ \"VAL\": 1e93, \"EN\": \"trigintillion\", \"DE\": \"Quindecilliarde\" },\n\t{ \"VAL\": 1e96, \"EN\": \"untrigintillion\", \"DE\": \"Sedecillion\" },\n\t{ \"VAL\": 1e99, \"EN\": \"duotrigintillion\", \"DE\": \"Sedecilliarde\" },\n\t{ \"VAL\": 1e102, \"EN\": \"trestrigintillion\", \"DE\": \"Septendecillion\" },\n\t{ \"VAL\": 1e105, \"EN\": \"quattuortrigintillion\", \"DE\": \"Septendecilliarde\" },\n\t{ \"VAL\": 1e108, \"EN\": \"quinquatrigintillion\", \"DE\": \"Octodecillion\" },\n\t{ \"VAL\": 1e111, \"EN\": \"sestrigintillion\", \"DE\": \"Octodecilliarde\" },\n\t{ \"VAL\": 1e114, \"EN\": \"septentrigintillion\", \"DE\": \"Novendecillion\" },\n\t{ \"VAL\": 1e117, \"EN\": \"octotrigintillion\", \"DE\": \"Novendecilliarde\" },\n\t{ \"VAL\": 1e120, \"EN\": \"noventrigintillion\", \"DE\": \"Vigintillion\" },\n\t{ \"VAL\": 1e123, \"EN\": \"quadragintillion\", \"DE\": \"Vigintilliarde\" },\n\t{ \"VAL\": 1e153, \"EN\": \"quinquagintillion\", \"DE\": \"Quinvigintilliarde\" },\n\t{ \"VAL\": 1e183, \"EN\": \"sexagintillion\", \"DE\": \"Trigintilliarde\" },\n\t{ \"VAL\": 1e213, \"EN\": \"septuagintillion\", \"DE\": \"Quintrigintilliarde\" },\n\t{ \"VAL\": 1e243, \"EN\": \"octogintillion\", \"DE\": \"Quadragintilliarde\" },\n\t{ \"VAL\": 1e273, \"EN\": \"nonagintillion\", \"DE\": \"Quin\u00ADquadra\u00ADgint\u00ADilliarde\" },\n\t{ \"VAL\": 1e303, \"EN\": \"centillion\", \"DE\": \"Quinquagintilliarde\" },\n\t{ \"VAL\": 1e306, \"EN\": \"uncentillion\", \"DE\": \"Unquinquagintillione\" }\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar endsWith = require( './../../base/ends-with' );\nvar UNITS = require( './units.json' );\n\n\n// VARIABLES //\n\nvar ONES = [ 'null', 'eins', 'zwei', 'drei', 'vier', 'f\u00FCnf', 'sechs', 'sieben', 'acht', 'neun', 'zehn', 'elf', 'zw\u00F6lf', 'dreizehn', 'vierzehn', 'f\u00FCnfzehn', 'sechzehn', 'siebzehn', 'achtzehn', 'neunzehn' ];\nvar TENS = [ 'null', 'zehn', 'zwanzig', 'drei\u00DFig', 'vierzig', 'f\u00FCnfzig', 'sechzig', 'siebzig', 'achtzig', 'neunzig' ];\n\n\n// FUNCTIONS //\n\n/**\n* Pluralizes a word by adding a 'n' or 'en' suffix.\n*\n* @private\n* @param {string} word - word to pluralize\n* @returns {string} pluralized word\n*/\nfunction pluralize( word ) {\n\tif ( endsWith( word, 'e' ) ) {\n\t\treturn word + 'n';\n\t}\n\treturn word + 'en';\n}\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation in German.\n*\n* @private\n* @param {number} num - number to convert\n* @param {string} out - output string\n* @returns {string} word representation\n*\n* @example\n* var words = int2wordsDE( 1243, '' );\n* // returns 'eintausendzweihundertdreiundvierzig'\n*\n* @example\n* var words = int2wordsDE( 387, '' );\n* // returns 'dreihundertsiebenundachtzig'\n*\n* @example\n* var words = int2wordsDE( 100, '' );\n* // returns 'einhundert'\n*\n* @example\n* var words = int2wordsDE( 1421, '' );\n* // returns 'eintausendvierhunderteinundzwanzig'\n*\n* @example\n* var words = int2wordsDE( 100381, '' );\n* // returns 'einhunderttausenddreihunderteinundachtzig'\n*\n* @example\n* var words = int2wordsDE( -13, '' );\n* // returns 'minus dreizehn'\n*/\nfunction int2wordsDE( num, out ) {\n\tvar word;\n\tvar rem;\n\tvar i;\n\tif ( num === 0 ) {\n\t\t// Case: We have reached the end of the number and the number is zero.\n\t\treturn out || 'null';\n\t}\n\tif ( num < 0 ) {\n\t\tout += 'minus ';\n\t\tnum *= -1;\n\t}\n\tif ( num < 20 ) {\n\t\trem = 0;\n\t\tif ( num === 1 && out.length === 0 ) {\n\t\t\tword = 'ein';\n\t\t} else {\n\t\t\tword = ONES[ num ];\n\t\t}\n\t}\n\telse if ( num < 100 ) {\n\t\trem = num % 10;\n\t\tword = TENS[ floor( num / 10 ) ];\n\t\tif ( rem ) {\n\t\t\tword = ( ( rem === 1 ) ? 'ein' : ONES[ rem ] ) + 'und' + word;\n\t\t\trem = 0;\n\t\t}\n\t}\n\telse if ( num < 1e3 ) {\n\t\trem = num % 100;\n\t\tword = int2wordsDE( floor( num / 100 ), '' ) + 'hundert';\n\t}\n\telse if ( num < 1e6 ) {\n\t\trem = num % 1e3;\n\t\tword = int2wordsDE( floor( num / 1e3 ), '' ) + 'tausend';\n\t}\n\telse {\n\t\tfor ( i = 5; i < UNITS.length; i++ ) {\n\t\t\tif ( num < UNITS[ i ].VAL ) {\n\t\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\t\tif ( floor( num / UNITS[ i-1 ].VAL ) === 1 ) {\n\t\t\t\t\tword = 'eine ' + UNITS[ i-1 ].DE;\n\t\t\t\t} else {\n\t\t\t\t\tword = int2wordsDE( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + pluralize( UNITS[ i-1 ].DE );\n\t\t\t\t}\n\t\t\t\tif ( rem ) {\n\t\t\t\t\tword += ' ';\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tout += word;\n\treturn int2wordsDE( rem, out );\n}\n\n\n// EXPORTS //\n\nmodule.exports = int2wordsDE;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar UNITS = require( './units.json' );\n\n\n// VARIABLES //\n\nvar ONES = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ];\nvar TENS = [ 'zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ];\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation in English.\n*\n* @private\n* @param {number} num - number to convert\n* @param {string} out - output string\n* @returns {string} word representation\n*\n* @example\n* var words = int2wordsEN( 1234, '' );\n* // returns 'one thousand two hundred thirty-four'\n*\n* @example\n* var words = int2wordsEN( -129, '' );\n* // returns 'minus one hundred twenty-nine'\n*\n* @example\n* var words = int2wordsEN( 0, '' );\n* // returns 'zero'\n*/\nfunction int2wordsEN( num, out ) {\n\tvar word;\n\tvar rem;\n\tvar i;\n\tif ( num === 0 ) {\n\t\t// Case: We have reached the end of the number and the number is zero.\n\t\treturn out || 'zero';\n\t}\n\tif ( num < 0 ) {\n\t\tout += 'minus';\n\t\tnum *= -1;\n\t}\n\tif ( num < 20 ) {\n\t\trem = 0;\n\t\tword = ONES[ num ];\n\t}\n\telse if ( num < 100 ) {\n\t\trem = num % 10;\n\t\tword = TENS[ floor( num / 10 ) ];\n\t\tif ( rem > 0 ) {\n\t\t\tword += '-' + ONES[ rem ];\n\t\t\trem = 0;\n\t\t}\n\t}\n\telse {\n\t\tfor ( i = 3; i < UNITS.length - 1; i++ ) {\n\t\t\tif ( num < UNITS[ i ].VAL ) {\n\t\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\t\tword = int2wordsEN( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + UNITS[ i-1 ].EN;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( i === UNITS.length - 1 ) {\n\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\tword = int2wordsEN( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + UNITS[ i-1 ].EN;\n\t\t}\n\t}\n\tif ( out.length > 0 ) {\n\t\tout += ' ';\n\t}\n\tout += word;\n\treturn int2wordsEN( rem, out );\n}\n\n\n// EXPORTS //\n\nmodule.exports = int2wordsEN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar indexOf = require( '@stdlib/utils/index-of' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar LANGUAGE_CODES = [ 'en', 'de' ];\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {string} [options.lang] - language code\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'lang': 'es'\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'lang' ) ) {\n\t\topts.lang = options.lang;\n\t\tif ( indexOf( LANGUAGE_CODES, opts.lang ) === -1 ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'lang', LANGUAGE_CODES.join( '\", \"' ), opts.lang ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Processes a string of decimal numbers and applies a function mapping decimal numbers to words to each character.\n*\n* @private\n* @param {string} x - string of decimal numbers\n* @param {Function} fcn - function mapping decimal numbers to words\n* @returns {string} string of words\n*/\nfunction decimals( x, fcn ) {\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tlen = x.length;\n\tout = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout += fcn( x[ i ], '' );\n\t\tif ( i < len-1 ) {\n\t\t\tout += ' ';\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = decimals;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isfinite = require( '@stdlib/math/base/assert/is-finite' );\nvar format = require( './../../format' );\nvar int2wordsDE = require( './int2words_de.js' );\nvar int2wordsEN = require( './int2words_en.js' );\nvar validate = require( './validate.js' );\nvar decimals = require( './decimals.js' );\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation.\n*\n* @param {number} num - number to convert\n* @param {Object} [options] - options\n* @param {string} [options.lang='en'] - language code\n* @throws {TypeError} must provide valid options\n* @returns {string} word representation of number\n*\n* @example\n* var out = num2words( 12 );\n* // returns 'twelve'\n*\n* @example\n* var out = num2words( 21.8 );\n* // returns 'twenty-one point eight'\n*\n* @example\n* var out = num2words( 1234 );\n* // returns 'one thousand two hundred thirty-four'\n*\n* @example\n* var out = num2words( 100381 );\n* // returns 'one hundred thousand three hundred eighty-one'\n*/\nfunction num2words( num, options ) {\n\tvar parts;\n\tvar opts;\n\tvar err;\n\n\tif ( !isNumber( num ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a number. Value: `%s`.', num ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( isInteger( num ) ) {\n\t\tswitch ( opts.lang ) {\n\t\tcase 'de':\n\t\t\treturn int2wordsDE( num, '' );\n\t\tcase 'en':\n\t\tdefault:\n\t\t\treturn int2wordsEN( num, '' );\n\t\t}\n\t}\n\tif ( !isfinite( num ) ) {\n\t\tswitch ( opts.lang ) {\n\t\tcase 'de':\n\t\t\treturn ( num < 0 ) ? 'minus unendlich' : 'unendlich';\n\t\tcase 'en':\n\t\tdefault:\n\t\t\treturn ( num < 0 ) ? 'negative infinity' : 'infinity';\n\t\t}\n\t}\n\tparts = num.toString().split( '.' );\n\tswitch ( opts.lang ) {\n\tcase 'de':\n\t\treturn int2wordsDE( parts[ 0 ], '' ) + ' Komma ' + decimals( parts[ 1 ], int2wordsDE );\n\tcase 'en':\n\tdefault:\n\t\treturn int2wordsEN( parts[ 0 ], '' ) + ' point ' + decimals( parts[ 1 ], int2wordsEN );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = num2words;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a number to a word representation.\n*\n* @module @stdlib/string/num2words\n*\n* @example\n* var num2words = require( '@stdlib/string/num2words' );\n*\n* var out = num2words( 29 );\n* // returns 'twenty-nine'\n*\n* out = num2words( 13072 );\n* // returns 'thirteen thousand seventy-two'\n*\n* out = num2words( 183, { 'lang': 'de' } );\n* // returns 'einhundertdreiundachtzig'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/repeat' );\n\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {RangeError} output string length must not exceed maximum allowed string length\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\treturn base( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Repeat a string a specified number of times and return the concatenated result.\n*\n* @module @stdlib/string/repeat\n*\n* @example\n* var replace = require( '@stdlib/string/repeat' );\n*\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* str = repeat( '', 100 );\n* // returns ''\n*\n* str = repeat( 'beep', 0 );\n* // returns ''\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar base = require( './../../base/right-pad' );\n\n\n// MAIN //\n\n/**\n* Right pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} [pad=' '] - string used to pad\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @throws {RangeError} padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = rpad( 'a', 5 );\n* // returns 'a '\n*\n* @example\n* var str = rpad( 'beep', 10, 'p' );\n* // returns 'beeppppppp'\n*\n* @example\n* var str = rpad( 'beep', 12, 'boop' );\n* // returns 'beepboopboop'\n*/\nfunction rpad( str, len, pad ) {\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', p ) );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid argument. Pad string must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\treturn base( str, len, p );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Right pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/right-pad\n*\n* @example\n* var rpad = require( '@stdlib/string/right-pad' );\n*\n* var str = rpad( 'a', 5 );\n* // returns 'a '\n*\n* str = rpad( 'beep', 10, 'p' );\n* // returns 'beeppppppp'\n*\n* str = rpad( 'beep', 12, 'boop' );\n* // returns 'beepboopboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {string} [options.lpad] - string used to left pad\n* @param {string} [options.rpad] - string used to right pad\n* @param {boolean} [options.centerRight] - boolean indicating whether to center right in the event of a tie\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'lpad': 'a',\n* 'rpad': 'b'\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'lpad' ) ) {\n\t\topts.lpad = options.lpad;\n\t\tif ( !isString( opts.lpad ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'lpad', opts.lpad ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'rpad' ) ) {\n\t\topts.rpad = options.rpad;\n\t\tif ( !isString( opts.rpad ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'rpad', opts.rpad ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'centerRight' ) ) {\n\t\topts.centerRight = options.centerRight;\n\t\tif ( !isBoolean( opts.centerRight ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a boolean. Option: `%s`.', 'centerRight', opts.centerRight ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar repeat = require( './../../repeat' );\nvar format = require( './../../format' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\nvar lpad = require( './../../left-pad' );\nvar rpad = require( './../../right-pad' );\nvar abs = require( '@stdlib/math/base/special/abs' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar validate = require( './validate.js' );\n\n\n// MAIN //\n\n/**\n* Pads a string such that the padded string has a length of `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - string length\n* @param {Options} [options] - function options\n* @param {string} [options.lpad=''] - string used to left pad\n* @param {string} [options.rpad=' '] - string used to right pad\n* @param {boolean} [options.centerRight=false] - boolean indicating whether to center right in the event of a tie\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {RangeError} at least one padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = pad( 'a', 5 );\n* // returns 'a '\n*\n* @example\n* var str = pad( 'a', 10, {\n* 'lpad': 'b'\n* });\n* // returns 'bbbbbbbbba'\n*\n* @example\n* var str = pad( 'a', 12, {\n* 'rpad': 'b'\n* });\n* // returns 'abbbbbbbbbbb'\n*\n* @example\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c'\n* };\n* var str = pad( 'b', 10, opts );\n* // returns 'aaaabccccc'\n*\n* @example\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c',\n* 'centerRight': true\n* };\n* var str = pad( 'b', 10, opts );\n* // returns 'aaaaabcccc'\n*/\nfunction pad( str, len, options ) {\n\tvar nright;\n\tvar nleft;\n\tvar isodd;\n\tvar right;\n\tvar left;\n\tvar opts;\n\tvar err;\n\tvar tmp;\n\tvar n;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 2 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( opts.lpad && opts.rpad ) {\n\t\tn = ( len-str.length ) / 2;\n\t\tif ( n === 0 ) {\n\t\t\treturn str;\n\t\t}\n\t\ttmp = floor( n );\n\t\tif ( tmp !== n ) {\n\t\t\tisodd = true;\n\t\t}\n\t\tif ( n < 0 ) {\n\t\t\tn = floor( abs( n ) );\n\t\t\tnleft = n;\n\t\t\tnright = str.length - n;\n\n\t\t\t// If |len-str.length| is an odd number, take away an additional character from one side...\n\t\t\tif ( isodd ) {\n\t\t\t\tif ( opts.centerRight ) {\n\t\t\t\t\tnright -= 1;\n\t\t\t\t} else {\n\t\t\t\t\tnleft += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn str.substring( nleft, nright );\n\t\t}\n\t\tnleft = ceil( n / opts.lpad.length );\n\t\tleft = repeat( opts.lpad, nleft );\n\n\t\tnright = ceil( n / opts.rpad.length );\n\t\tright = repeat( opts.rpad, nright );\n\n\t\t// If (len-str.length) is an odd number, give one side one extra character...\n\t\tn = tmp;\n\t\tnleft = n;\n\t\tnright = n;\n\t\tif ( isodd ) {\n\t\t\tif ( opts.centerRight ) {\n\t\t\t\tnleft += 1;\n\t\t\t} else {\n\t\t\t\tnright += 1;\n\t\t\t}\n\t\t}\n\t\tleft = left.substring( 0, nleft );\n\t\tright = right.substring( 0, nright );\n\t\treturn left + str + right;\n\t}\n\tif ( opts.lpad ) {\n\t\ttmp = lpad( str, len, opts.lpad );\n\t\treturn tmp.substring( tmp.length-len );\n\t}\n\tif ( opts.rpad ) {\n\t\treturn ( rpad( str, len, opts.rpad ) ).substring( 0, len );\n\t}\n\tif ( opts.rpad === void 0 ) {\n\t\treturn ( rpad( str, len, ' ' ) ).substring( 0, len );\n\t}\n\tthrow new RangeError( format( 'invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.', opts.lpad, opts.rpad ) );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Pad a string.\n*\n* @module @stdlib/string/pad\n*\n* @example\n* var pad = require( '@stdlib/string/pad' );\n*\n* var str = pad( 'a', 5 );\n* // returns 'a '\n*\n* str = pad( 'a', 10, {\n* 'lpad': 'b'\n* });\n* // returns 'bbbbbbbbba'\n*\n* str = pad( 'a', 12, {\n* 'rpad': 'b'\n* });\n* // returns 'abbbbbbbbbbb'\n*\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c'\n* };\n* str = pad( 'b', 10, opts );\n* // returns 'aaaabccccc'\n*\n* opts = {\n* 'lpad': 'a',\n* 'rpad': 'c',\n* 'centerRight': true\n* };\n* str = pad( 'b', 10, opts );\n* // returns 'aaaaabcccc'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/pascalcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to Pascal case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} Pascal-cased string\n*\n* @example\n* var out = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* @example\n* var out = pascalcase( 'IS_MOBILE' );\n* // returns 'IsMobile'\n*\n* @example\n* var out = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*\n* @example\n* var out = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*/\nfunction pascalcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pascalcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to Pascal case.\n*\n* @module @stdlib/string/pascalcase\n*\n* @example\n* var pascalcase = require( '@stdlib/string/pascalcase' );\n*\n* var str = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* str = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*\n* str = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/percent-encode' );\n\n\n// MAIN //\n\n/**\n* Percent-encodes a UTF-16 encoded string according to [RFC 3986][1].\n*\n* [1]: https://tools.ietf.org/html/rfc3986#section-2.1\n*\n* @param {string} str - string to percent-encode\n* @throws {TypeError} must provide a string\n* @returns {string} percent-encoded string\n*\n* @example\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\nfunction percentEncode( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = percentEncode;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Percent-encode a UTF-16 encoded string according to RFC 3986.\n*\n* @module @stdlib/string/percent-encode\n*\n* @example\n* var percentEncode = require( '@stdlib/string/percent-encode' );\n*\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' );\nvar codePointAt = require( './../../code-point-at' );\nvar hasUTF16SurrogatePairAt = require( '@stdlib/assert/has-utf16-surrogate-pair-at' );\nvar grapheme = require( './../../tools/grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar breakType = grapheme.breakType;\nvar breakProperty = grapheme.breakProperty;\nvar emojiProperty = grapheme.emojiProperty;\n\n\n// MAIN //\n\n/**\n* Returns the previous extended grapheme cluster break in a string before a specified position.\n*\n* @param {string} str - input string\n* @param {integer} [fromIndex=str.length-1] - position\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @returns {NonNegativeInteger} previous grapheme break position\n*\n* @example\n* var out = prevGraphemeClusterBreak( 'last man standing', 4 );\n* // returns 3\n*\n* @example\n* var out = prevGraphemeClusterBreak( 'presidential election', 8 );\n* // returns 7\n*\n* @example\n* var out = prevGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 0\n*\n* @example\n* var out = prevGraphemeClusterBreak( '\uD83C\uDF37', 1 );\n* // returns -1\n*/\nfunction prevGraphemeClusterBreak( str, fromIndex ) {\n\tvar breaks;\n\tvar emoji;\n\tvar ans;\n\tvar len;\n\tvar idx;\n\tvar cp;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tlen = str.length;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = fromIndex;\n\t} else {\n\t\tidx = len - 1;\n\t}\n\tif ( len === 0 || idx <= 0 ) {\n\t\treturn -1;\n\t}\n\tif ( idx >= len ) {\n\t\tidx = len - 1;\n\t}\n\n\t// Initialize caches for storing grapheme break and emoji properties:\n\tbreaks = [];\n\temoji = [];\n\n\t// Get the code point for the starting index:\n\tcp = codePointAt( str, 0 );\n\n\t// Get the corresponding grapheme break and emoji properties:\n\tbreaks.push( breakProperty( cp ) );\n\temoji.push( emojiProperty( cp ) );\n\n\tans = -1;\n\tfor ( i = 1; i <= idx; i++ ) {\n\t\t// If the current character is part of a surrogate pair, move along...\n\t\tif ( hasUTF16SurrogatePairAt( str, i-1 ) ) {\n\t\t\tans = i-2;\n\t\t\tbreaks.length = 0;\n\t\t\temoji.length = 0;\n\t\t\tcontinue;\n\t\t}\n\t\tcp = codePointAt( str, i );\n\n\t\t// Get the corresponding grapheme break and emoji properties:\n\t\tbreaks.push( breakProperty( cp ) );\n\t\temoji.push( emojiProperty( cp ) );\n\n\t\t// Determine if we've encountered a grapheme cluster break...\n\t\tif ( breakType( breaks, emoji ) > 0 ) {\n\t\t\tans = i-1;\n\t\t\tbreaks.length = 0;\n\t\t\temoji.length = 0;\n\t\t\tcontinue;\n\t\t}\n\t}\n\treturn ans;\n}\n\n\n// EXPORTS //\n\nmodule.exports = prevGraphemeClusterBreak;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the prev extended grapheme cluster break in a string before a specified position.\n*\n* @module @stdlib/string/prev-grapheme-cluster-break\n*\n* @example\n* var prevGraphemeClusterBreak = require( '@stdlib/string/prev-grapheme-cluster-break' );\n*\n* var out = prevGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 0\n*\n* out = prevGraphemeClusterBreak( '\uD83C\uDF37', 1 );\n* // returns -1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar removeFirstCodeUnit = require( './../../base/remove-first' );\nvar removeFirstCodePoint = require( './../../base/remove-first-code-point' );\nvar removeFirstGraphemeCluster = require( './../../base/remove-first-grapheme-cluster' ); // eslint-disable-line id-length\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': removeFirstGraphemeCluster,\n\t'code_point': removeFirstCodePoint,\n\t'code_unit': removeFirstCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Removes the first character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of characters to remove\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} updated string\n*\n* @example\n* var out = removeFirst( 'last man standing' );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election' );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript' );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures' );\n* // returns 'idden Treasures'\n*\n* @example\n* var out = removeFirst( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38'\n*\n* @example\n* var out = removeFirst( 'foo bar', 4 );\n* // returns 'bar'\n*/\nfunction removeFirst( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first character(s) of a string.\n*\n* @module @stdlib/string/remove-first\n*\n* @example\n* var removeFirst = require( '@stdlib/string/remove-first' );\n*\n* var out = removeFirst( 'last man standing' );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures' );\n* // returns 'idden Treasures';\n*\n* out = removeFirst( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC38\uD83D\uDC35\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Removes the last `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*/\nfunction removeLast( str, n ) {\n\treturn str.substring( 0, str.length - n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/remove-last\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Removes the last `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*/\nfunction removeLast( str, n ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\tlen = str.length;\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = len - 1; i >= 0; i-- ) {\n\t\tch1 = str[ i ];\n\t\tcnt += 1;\n\n\t\t// Check for a low UTF-16 surrogate...\n\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === 0 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i-1 ];\n\t\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\ti -= 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/remove-last-code-point\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last-code-point' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require('./../../../next-grapheme-cluster-break');\nvar numGraphemeClusters = require( './../../../num-grapheme-clusters' );\n\n\n// MAIN //\n\n/**\n* Removes the last `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*\n* @example\n* var out = removeLast( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37'\n*\n* @example\n* var out = removeLast( 'foo bar', 5 );\n* // returns 'fo'\n*/\nfunction removeLast( str, n ) {\n\tvar total;\n\tvar num;\n\tvar i;\n\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\n\ttotal = numGraphemeClusters( str );\n\tif ( str === '' || total < n ) {\n\t\treturn '';\n\t}\n\n\ti = 0;\n\tnum = 0;\n\twhile ( num < total - n ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tnum += 1;\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/remove-last-grapheme-cluster\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last-grapheme-cluster' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*\n* out = removeLast( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar removeLastCodeUnit = require( './../../base/remove-last' );\nvar removeLastCodePoint = require( './../../base/remove-last-code-point' );\nvar removeLastGraphemeCluster = require( './../../base/remove-last-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': removeLastGraphemeCluster,\n\t'code_point': removeLastCodePoint,\n\t'code_unit': removeLastCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Removes the last character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of character to remove\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} updated string\n*\n* @example\n* var out = removeLast( 'last man standing' );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election' );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'javaScript' );\n* // returns 'javaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures' );\n* // returns 'Hidden Treasure'\n*\n* @example\n* var out = removeLast( 'leader', 2 );\n* // returns 'lead'\n*/\nfunction removeLast( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last character(s) of a string.\n*\n* @module @stdlib/string/remove-last\n*\n* @example\n* var removeLast = require( '@stdlib/string/remove-last' );\n*\n* var out = removeLast( 'last man standing' );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures' );\n* // returns 'Hidden Treasure';\n*\n* out = removeLast( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 ) );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\n// '\\ufeff' => 1111111011111111 => 0xFEFF => 65279\nvar BOM = 65279;\n\n\n// MAIN //\n\n/**\n* Removes a UTF-8 byte order mark (BOM) from the beginning of a string.\n*\n* ## Notes\n*\n* - A UTF-8 byte order mark ([BOM][1]) is the byte sequence `0xEF,0xBB,0xBF`.\n* - To convert a UTF-8 encoded `Buffer` to a `string`, the `Buffer` must be converted to [UTF-16][2]. The BOM thus gets converted to the single 16-bit code point `'\\ufeff'` (UTF-16 BOM).\n*\n* [1]: https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n* [2]: http://es5.github.io/#x4.3.16\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} string with BOM removed\n*\n* @example\n* var str = removeUTF8BOM( '\\ufeffbeep' );\n* // returns 'beep'\n*/\nfunction removeUTF8BOM( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tif ( str.charCodeAt( 0 ) === BOM ) {\n\t\treturn str.slice( 1 );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeUTF8BOM;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove a UTF-8 byte order mark (BOM) from the beginning of a string.\n*\n* @module @stdlib/string/remove-utf8-bom\n*\n* @example\n* var removeUTF8BOM = require( '@stdlib/string/remove-utf8-bom' );\n*\n* var str = removeUTF8BOM( '\\ufeffbeep' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar removeUTF8BOM = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = removeUTF8BOM;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Converts a string to uppercase.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} uppercase string\n*\n* @example\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\nfunction uppercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn str.toUpperCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = uppercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to uppercase.\n*\n* @module @stdlib/string/uppercase\n*\n* @example\n* var uppercase = require( '@stdlib/string/uppercase' );\n*\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isStringArray = require( '@stdlib/assert/is-string-array' );\nvar uppercase = require( './../../uppercase' );\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar tokenize = require( '@stdlib/nlp/tokenize' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Removes a list of words from a string.\n*\n* @param {string} str - input string\n* @param {StringArray} words - array of words to be removed\n* @param {boolean} [ignoreCase=false] - boolean indicating whether to perform a case-insensitive operation\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an array of strings\n* @throws {TypeError} third argument must be a boolean\n* @returns {string} output string\n*\n* @example\n* var str = 'beep boop Foo bar';\n* var out = removeWords( str, [ 'boop', 'foo' ] );\n* // returns 'beep Foo bar'\n*\n* @example\n* var str = 'beep boop Foo bar';\n* var out = removeWords( str, [ 'boop', 'foo' ], true );\n* // returns 'beep bar'\n*/\nfunction removeWords( str, words, ignoreCase ) {\n\tvar tokens;\n\tvar token;\n\tvar list;\n\tvar flg;\n\tvar out;\n\tvar N;\n\tvar i;\n\tvar j;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isStringArray( words ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an array of strings. Value: `%s`.', words ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isBoolean( ignoreCase ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a boolean. Value: `%s`.', ignoreCase ) );\n\t\t}\n\t}\n\ttokens = tokenize( str, true );\n\tN = words.length;\n\tout = [];\n\tif ( ignoreCase ) {\n\t\tlist = words.slice();\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tlist[ i ] = uppercase( list[ i ] );\n\t\t}\n\t\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\t\tflg = true;\n\t\t\ttoken = uppercase( tokens[ i ] );\n\t\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\t\tif ( list[ j ] === token ) {\n\t\t\t\t\tflg = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( flg ) {\n\t\t\t\tout.push( tokens[ i ] );\n\t\t\t}\n\t\t}\n\t\treturn out.join( '' );\n\t}\n\t// Case: case-sensitive\n\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\ttoken = tokens[ i ];\n\t\tflg = true;\n\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\tif ( words[ j ] === token ) {\n\t\t\t\tflg = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( flg ) {\n\t\t\tout.push( token );\n\t\t}\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeWords;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove a list of words from a string.\n*\n* @module @stdlib/string/remove-words\n*\n* @example\n* var removeWords = require( '@stdlib/string/remove-words' );\n*\n* var str = 'beep boop Foo bar';\n* var words = [ 'boop', 'foo' ];\n*\n* var out = removeWords( str, words );\n* // returns 'beep Foo bar'\n*\n* // Case-insensitive:\n* out = removeWords( str, words, true )\n* //returns 'beep bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/replace-before' );\n\n\n// MAIN //\n\n/**\n* Replaces the substring before the first occurrence of a specified search string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {string} replacement - replacement string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be a string\n* @returns {string} output string\n*\n* @example\n* var out = replaceBefore( 'beep boop', ' ', 'foo' );\n* // returns 'foo boop'\n*\n* @example\n* var out = replaceBefore( 'beep boop', 'p', 'foo' );\n* // returns 'foop boop'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', '', 'foo' );\n* // returns 'Hello World!'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );\n* // returns 'Hello World!'\n*/\nfunction replaceBefore( str, search, replacement ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( !isString( replacement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', replacement ) );\n\t}\n\treturn base( str, search, replacement );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replaceBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace the substring before the first occurrence of a specified search string.\n*\n* @module @stdlib/string/replace-before\n*\n* @example\n* var replaceBefore = require( '@stdlib/string/replace-before' );\n*\n* var str = 'beep boop';\n*\n* var out = replaceBefore( str, ' ', 'foo' );\n* // returns 'foo boop'\n*\n* out = replaceBefore( str, 'o', 'bar' );\n* // returns 'baroop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Reverses the UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @returns {string} output string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'JavaScript' );\n* // returns 'tpircSavaJ'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*/\nfunction reverse( str ) {\n\tvar out;\n\tvar i;\n\n\tout = '';\n\tfor ( i = str.length - 1; i >= 0; i-- ) {\n\t\tout += str[ i ];\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/reverse\n*\n* @example\n* var reverse = require( '@stdlib/string/base/reverse' );\n*\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Reverses the Unicode code points of a string.\n*\n* @param {string} str - input string\n* @returns {string} output string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'JavaScript' );\n* // returns 'tpircSavaJ'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*/\nfunction reverse( str ) {\n\tvar len;\n\tvar out;\n\tvar ch1;\n\tvar ch2;\n\tvar i;\n\n\tlen = str.length;\n\tout = '';\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tout = ch1 + out;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tout = ch1 + ch2 + out;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t} else {\n\t\t\t\tout = ch1 + out;\n\t\t\t}\n\t\t} else {\n\t\t\tout = ch1 + out;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the Unicode code points of a string.\n*\n* @module @stdlib/string/base/reverse-code-points\n*\n* @example\n* var reverse = require( '@stdlib/string/base/reverse-code-points' );\n*\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Reverses the grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @returns {string} output string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'JavaScript' );\n* // returns 'tpircSavaJ'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*\n* @example\n* var out = reverse( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38' );\n* // returns '\uD83D\uDC38\uD83D\uDC30\uD83D\uDC37\uD83D\uDC2E\uD83D\uDC36'\n*/\nfunction reverse( str ) {\n\tvar cluster;\n\tvar out;\n\tvar idx;\n\tvar brk;\n\tvar i;\n\n\tout = '';\n\tidx = 0;\n\twhile ( idx < str.length ) {\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t\tif ( brk === -1 ) {\n\t\t\tbrk = str.length;\n\t\t}\n\t\tcluster = '';\n\t\tfor ( i = idx; i < brk; i++ ) {\n\t\t\tcluster += str.charAt( i );\n\t\t}\n\t\tout = cluster + out;\n\t\tidx = brk;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/reverse-grapheme-clusters\n*\n* @example\n* var reverse = require( '@stdlib/string/base/reverse-grapheme-clusters' );\n*\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*\n* out = reverse( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38' );\n* // returns '\uD83D\uDC38\uD83D\uDC30\uD83D\uDC37\uD83D\uDC2E\uD83D\uDC36'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar reverseCodeUnit = require( './../../base/reverse' );\nvar reverseCodePoints = require( './../../base/reverse-code-points' );\nvar reverseGraphemeClusters = require( './../../base/reverse-grapheme-clusters' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': reverseGraphemeClusters,\n\t'code_point': reverseCodePoints,\n\t'code_unit': reverseCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Reverses a string.\n*\n* @param {string} str - input string\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} reversed string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'javaScript' );\n* // returns 'tpircSavaj'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*/\nfunction reverse( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs > 1 ) {\n\t\toptions = arguments[ 1 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse a string.\n*\n* @module @stdlib/string/reverse\n*\n* @example\n* var reverseString = require( '@stdlib/string/reverse' );\n*\n* var out = reverseString( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverseString( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/right-trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the end of a string.\n*\n* @module @stdlib/string/right-trim\n*\n* @example\n* var rtrim = require( '@stdlib/string/right-trim' );\n*\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar splitGraphemeClusters = require( './../../split-grapheme-clusters' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar replace = require( './../../replace' );\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar WHITESPACE_CHARS = '\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\n\n\n// MAIN //\n\n/**\n* Trims `n` characters from the end of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of characters to trim\n* @param {(string|StringArray)} [chars] - characters to trim (defaults to whitespace characters)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string or an array of strings\n* @returns {string} trimmed string\n*\n* @example\n* var str = ' abc ';\n* var out = rtrimN( str, 2 );\n* // returns ' abc '\n*\n* @example\n* var str = ' abc ';\n* var out = rtrimN( str, str.length );\n* // returns ' abc'\n*\n* @example\n* var str = '~~abc!~~';\n* var out = rtrimN( str, str.length, [ '~', '!' ] );\n* // returns '~~abc'\n*\n* @example\n* var str = '\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8';\n* var out = rtrimN( str, str.length, '\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16' );\n* // returns ''\n*/\nfunction rtrimN( str, n, chars ) {\n\tvar nElems;\n\tvar reStr;\n\tvar isStr;\n\tvar RE;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tisStr = isString( chars );\n\t\tif ( !isStr && !isStringArray( chars ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a string or an array of strings. Value: `%s`.', chars ) );\n\t\t}\n\t\tif ( isStr ) {\n\t\t\tchars = splitGraphemeClusters( chars );\n\t\t}\n\t\tnElems = chars.length - 1;\n\t\treStr = '';\n\t\tfor ( i = 0; i < nElems; i++ ) {\n\t\t\treStr += rescape( chars[ i ] );\n\t\t\treStr += '|';\n\t\t}\n\t\treStr += rescape( chars[ nElems ] );\n\n\t\t// Case: Trim a specific set of characters from the end of a string..\n\t\tRE = new RegExp( '(?:' + reStr + '){0,'+n+'}$' );\n\t} else {\n\t\t// Case: Trim `n` whitespace characters from the end of a string...\n\t\tRE = new RegExp( '[' + WHITESPACE_CHARS + ']{0,'+n+'}$' );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrimN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim `n` characters from the end of a string.\n*\n* @module @stdlib/string/right-trim-n\n*\n* @example\n* var rtrimN = require( '@stdlib/string/right-trim-n' );\n*\n* var str = ' foo ';\n* var out = rtrimN( str, str.length );\n* // returns ' foo'\n*\n* str = '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36';\n* out = rtrimN( str, 4, [ '\uD83D\uDC36', ' ' ] );\n* // returns '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/snakecase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to snake case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} snake-cased string\n*\n* @example\n* var str = snakecase( 'Hello World!' );\n* // returns 'hello_world'\n*\n* @example\n* var str = snakecase( 'foo bar' );\n* // returns 'foo_bar'\n*\n* @example\n* var str = snakecase( 'I am a tiny little teapot' );\n* // returns 'i_am_a_tiny_little_teapot'\n*\n* @example\n* var str = snakecase( 'BEEP boop' );\n* // returns 'beep_boop'\n*\n* @example\n* var str = snakecase( 'isMobile' );\n* // returns 'is_mobile'\n*/\nfunction snakecase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = snakecase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to snake case.\n*\n* @module @stdlib/string/snakecase\n*\n* @example\n* var snakecase = require( '@stdlib/string/snakecase' );\n*\n* var str = snakecase( 'Foo Bar' );\n* // returns 'foo_bar'\n*\n* str = snakecase( 'I am a tiny little house' );\n* // returns 'i_am_a_tiny_little_house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/startcase' );\n\n\n// MAIN //\n\n/**\n* Capitalizes the first letter of each word in an input string.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} start case string\n*\n* @example\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\nfunction startcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first letter of each word in an input string.\n*\n* @module @stdlib/string/startcase\n*\n* @example\n* var startcase = require( '@stdlib/string/startcase' );\n*\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/starts-with' );\n\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [position=0] - position at which to start searching\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember' );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember' );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be' );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be' );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( position ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', position ) );\n\t\t}\n\t\tpos = position;\n\t} else {\n\t\tpos = 0;\n\t}\n\treturn base( str, search, pos );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string starts with the characters of another string.\n*\n* @module @stdlib/string/starts-with\n*\n* @example\n* var startsWith = require( '@stdlib/string/starts-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n* var bool = startsWith( str, 'Fair' );\n* // returns true\n*\n* bool = startsWith( str, 'fair' );\n* // returns false\n*\n* bool = startsWith( str, 'foul', 8 );\n* // returns true\n*\n* bool = startsWith( str, 'filthy', -10 );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string after a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [fromIndex=0] - index at which to start the search\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {string} substring\n*\n* @example\n* var out = substringAfter( 'Hello, world!', ', ' );\n* // returns 'world!'\n*\n* @example\n* var out = substringAfter( 'beep boop', 'beep' );\n* // returns ' boop'\n*\n* @example\n* var out = substringAfter( 'beep boop', 'boop' );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop', 'xyz' );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop', 'beep', 5 );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop beep baz', 'beep', 5 );\n* // returns ' baz'\n*/\nfunction substringAfter( str, search, fromIndex ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = str.indexOf( search, fromIndex );\n\t} else {\n\t\tidx = str.indexOf( search );\n\t}\n\tif ( idx === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( idx+search.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringAfter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string after a specified substring.\n*\n* @module @stdlib/string/substring-after\n*\n* @example\n* var substringAfter = require( '@stdlib/string/substring-after' );\n*\n* var str = 'beep boop';\n* var out = substringAfter( str, 'o' );\n* // returns 'op'\n*\n* out = substringAfter( str, ' ' );\n* // returns 'boop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string after the last occurrence of a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search value\n* @param {integer} [fromIndex=str.length] - index of last character to be considered beginning of a match\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {string} substring\n*\n* @example\n* var out = substringAfterLast( 'beep boop', 'b' );\n* // returns 'oop'\n*\n* @example\n* var out = substringAfterLast( 'beep boop', 'o' );\n* // returns 'p'\n*\n* @example\n* var out = substringAfterLast( 'Hello World', 'o' );\n* // returns 'rld'\n*\n* @example\n* var out = substringAfterLast( 'Hello World', '!' );\n* // returns ''\n*\n* @example\n* var out = substringAfterLast( 'Hello World', '' );\n* // returns ''\n*\n* @example\n* var out = substringAfterLast( 'beep boop baz', 'p b', 6 );\n* // returns 'oop baz'\n*/\nfunction substringAfterLast( str, search, fromIndex ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = str.lastIndexOf( search, fromIndex );\n\t} else {\n\t\tidx = str.lastIndexOf( search );\n\t}\n\tif ( idx === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( idx+search.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringAfterLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string after the last occurrence of a specified substring.\n*\n* @module @stdlib/string/substring-after-last\n*\n* @example\n* var substringAfterLast = require( '@stdlib/string/substring-after-last' );\n*\n* var str = 'beep boop';\n* var out = substringAfterLast( str, 'b' ):\n* // returns 'oop'\n*\n* out = substringAfterLast( str, 'o' ):\n* // returns 'p'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string before a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {string} substring\n*\n* @example\n* var out = substringBefore( 'beep boop', ' ' );\n* // returns 'beep'\n*\n* @example\n* var out = substringBefore( 'beep boop', 'p' );\n* // returns 'bee'\n*\n* @example\n* var out = substringBefore( 'Hello World!', '' );\n* // returns ''\n*\n* @example\n* var out = substringBefore( 'Hello World!', 'XYZ' );\n* // returns 'Hello World!'\n*/\nfunction substringBefore( str, search ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tidx = str.indexOf( search );\n\tif ( idx === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string before a specified substring.\n*\n* @module @stdlib/string/substring-before\n*\n* @example\n* var substringBefore = require( '@stdlib/string/substring-before' );\n*\n* var str = 'beep boop';\n* var out = substringBefore( str, ' ' );\n* // returns 'beep'\n*\n* out = substringBefore( str, 'o' );\n* // returns 'beep b'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string before the last occurrence of a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search value\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {string} substring\n*\n* @example\n* var out = substringBeforeLast( 'abcba', 'b' );\n* // returns 'abc'\n*\n* @example\n* var out = substringBeforeLast( 'Hello World, my friend!', ' ' );\n* // returns 'Hello World, my'\n*\n* @example\n* var out = substringBeforeLast( 'abcba', ' ' );\n* // returns 'abcba'\n*\n* @example\n* var out = substringBeforeLast( 'abcba', '' );\n* // returns 'abcba'\n*/\nfunction substringBeforeLast( str, search ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tidx = str.lastIndexOf( search );\n\tif ( idx === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringBeforeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string before the last occurrence of a specified substring.\n*\n* @module @stdlib/string/substring-before-last\n*\n* @example\n* var substringBeforeLast = require( '@stdlib/string/substring-before-last' );\n*\n* var str = 'Beep Boop Beep';\n* var out = substringBeforeLast( str, 'Beep' );\n* // returns 'Beep Boop '\n*\n* out = substringBeforeLast( str, 'Boop' );\n* // returns 'Beep '\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each grapheme cluster in a string.\n*\n* @param {string} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = graphemeClusters2iterator( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction graphemeClusters2iterator( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar i;\n\tif ( !isString( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be astring. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = 0;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = nextGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': fcn.call( thisArg, src.substring( i ), i, src ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, src.substring( i, j ), i, src );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = nextGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': src.substring( i ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = src.substring( i, j );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn graphemeClusters2iterator( src, fcn, thisArg );\n\t\t}\n\t\treturn graphemeClusters2iterator( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeClusters2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which iterates over grapheme clusters.\n*\n* @module @stdlib/string/to-grapheme-cluster-iterator\n*\n* @example\n* var graphemeClusters2iterator = require( '@stdlib/string/to-grapheme-cluster-iterator' );\n*\n* var iter = graphemeClusters2iterator( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar prevGraphemeClusterBreak = require( './../../prev-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each grapheme cluster in a string.\n*\n* @param {string} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = graphemeClusters2iteratorRight( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction graphemeClusters2iteratorRight( src ) { // eslint-disable-line id-length\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar i;\n\tif ( !isString( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be astring. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = src.length - 1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = prevGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': fcn.call( thisArg, src.substring( j+1, i+1 ), j+1, src ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, src.substring( j+1, i+1 ), j+1, src );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = prevGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': src.substring( j+1, i+1 ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = src.substring( j+1, i+1 );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn graphemeClusters2iteratorRight( src, fcn, thisArg );\n\t\t}\n\t\treturn graphemeClusters2iteratorRight( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeClusters2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which iterates from right to left over grapheme clusters.\n*\n* @module @stdlib/string/to-grapheme-cluster-iterator-right\n*\n* @example\n* var graphemeClusters2iteratorRight = require( '@stdlib/string/to-grapheme-cluster-iterator-right' );\n*\n* var iter = graphemeClusters2iteratorRight( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string/trim\n*\n* @example\n* var trim = require( '@stdlib/string/trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar numGraphemeClusters = require( './../../num-grapheme-clusters' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Truncates a string to a specified length.\n*\n* @param {string} str - input string\n* @param {integer} len - output string length (including ending)\n* @param {string} [ending='...'] - custom ending\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @returns {string} truncated string\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 7 );\n* // returns 'beep...'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 5, '>>>' );\n* // returns 'be>>>'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 10 );\n* // returns 'beep boop'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 0 );\n* // returns ''\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 2 );\n* // returns '..'\n*\n* @example\n* var str = '\uD83D\uDC3A Wolf Brothers \uD83D\uDC3A';\n* var out = truncate( str, 6 );\n* // returns '\uD83D\uDC3A W...'\n*/\nfunction truncate( str, len, ending ) {\n\tvar endingLength;\n\tvar fromIndex;\n\tvar nVisual;\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isString( ending ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', ending ) );\n\t\t}\n\t}\n\tending = ending || '...';\n\tendingLength = numGraphemeClusters( ending );\n\tfromIndex = 0;\n\tif ( len > numGraphemeClusters( str ) ) {\n\t\treturn str;\n\t}\n\tif ( len - endingLength < 0 ) {\n\t\treturn ending.slice( 0, len );\n\t}\n\tnVisual = 0;\n\twhile ( nVisual < len - endingLength ) {\n\t\tidx = nextGraphemeClusterBreak( str, fromIndex );\n\t\tfromIndex = idx;\n\t\tnVisual += 1;\n\t}\n\treturn str.substring( 0, idx ) + ending;\n}\n\n\n// EXPORTS //\n\nmodule.exports = truncate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Truncate a string to a specified length.\n*\n* @module @stdlib/string/truncate\n*\n* @example\n* var truncate = require( '@stdlib/string/truncate' );\n*\n* var out = truncate( 'beep boop', 7 );\n* // returns 'beep...'\n*\n* out = truncate( 'beep boop', 7, '|' );\n* // returns 'beep b|'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar numGraphemeClusters = require( './../../num-grapheme-clusters' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\nvar round = require( '@stdlib/math/base/special/round' );\nvar floor = require( '@stdlib/math/base/special/floor' );\n\n\n// MAIN //\n\n/**\n* Truncates a string in the middle to a specified length.\n*\n* @param {string} str - input string\n* @param {integer} len - output string length (including sequence)\n* @param {string} [seq='...'] - custom replacement sequence\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @returns {string} truncated string\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 5 );\n* // returns 'b...p'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 5, '>>>' );\n* // returns 'b>>>p'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 10 );\n* // returns 'beep boop'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 0 );\n* // returns ''\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 2 );\n* // returns '..'\n*\n* @example\n* var str = '\uD83D\uDC3A Wolf Brothers \uD83D\uDC3A';\n* var out = truncateMiddle( str, 7 );\n* // returns '\uD83D\uDC3A ... \uD83D\uDC3A'\n*/\nfunction truncateMiddle( str, len, seq ) {\n\tvar seqLength;\n\tvar fromIndex;\n\tvar strLength;\n\tvar seqStart;\n\tvar nVisual;\n\tvar seqEnd;\n\tvar idx2;\n\tvar idx1;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isString( seq ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', seq ) );\n\t\t}\n\t}\n\tseq = seq || '...';\n\tseqLength = numGraphemeClusters( seq );\n\tstrLength = numGraphemeClusters( str );\n\tfromIndex = 0;\n\tif ( len > strLength ) {\n\t\treturn str;\n\t}\n\tif ( len - seqLength < 0 ) {\n\t\treturn seq.slice( 0, len );\n\t}\n\tseqStart = round( ( len - seqLength ) / 2 );\n\tseqEnd = strLength - floor( ( len - seqLength ) / 2 );\n\tnVisual = 0;\n\twhile ( nVisual < seqStart ) {\n\t\tidx1 = nextGraphemeClusterBreak( str, fromIndex );\n\t\tfromIndex = idx1;\n\t\tnVisual += 1;\n\t}\n\tidx2 = idx1;\n\twhile ( idx2 > 0 ) {\n\t\tidx2 = nextGraphemeClusterBreak( str, fromIndex );\n\t\tif ( idx2 >= seqEnd + fromIndex - nVisual ) {\n\t\t\tbreak;\n\t\t}\n\t\tfromIndex = idx2;\n\t\tnVisual += 1;\n\t}\n\treturn str.substring( 0, idx1 ) + seq + str.substring( idx2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = truncateMiddle;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Truncate a string in the middle to a specified length.\n*\n* @module @stdlib/string/truncate-middle\n*\n* @example\n* var truncateMiddle = require( '@stdlib/string/truncate-middle' );\n*\n* var out = truncateMiddle( 'beep boop', 7 );\n* // returns 'be...op'\n*\n* out = truncateMiddle( 'beep boop', 7, '|' );\n* // returns 'bee|oop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/uncapitalize' );\n\n\n// MAIN //\n\n/**\n* Uncapitalizes the first character of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} input string with first character converted to lowercase\n*\n* @example\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* @example\n* var out = uncapitalize( 'Presidential election' );\n* // returns 'presidential election'\n*\n* @example\n* var out = uncapitalize( 'JavaScript' );\n* // returns 'javaScript'\n*\n* @example\n* var out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures'\n*/\nfunction uncapitalize( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = uncapitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Uncapitalize the first character of a string.\n*\n* @module @stdlib/string/uncapitalize\n*\n* @example\n* var uncapitalize = require( '@stdlib/string/uncapitalize' );\n*\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n/*\n* The following modules are intentionally not exported: tools\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace string\n*/\nvar string = {};\n\n/**\n* @name acronym\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/acronym}\n*/\nsetReadOnly( string, 'acronym', require( './../acronym' ) );\n\n/**\n* @name base\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base}\n*/\nsetReadOnly( string, 'base', require( './../base' ) );\n\n/**\n* @name camelcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/camelcase}\n*/\nsetReadOnly( string, 'camelcase', require( './../camelcase' ) );\n\n/**\n* @name capitalize\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/capitalize}\n*/\nsetReadOnly( string, 'capitalize', require( './../capitalize' ) );\n\n/**\n* @name codePointAt\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/code-point-at}\n*/\nsetReadOnly( string, 'codePointAt', require( './../code-point-at' ) );\n\n/**\n* @name constantcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/constantcase}\n*/\nsetReadOnly( string, 'constantcase', require( './../constantcase' ) );\n\n/**\n* @name dotcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/dotcase}\n*/\nsetReadOnly( string, 'dotcase', require( './../dotcase' ) );\n\n/**\n* @name endsWith\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/ends-with}\n*/\nsetReadOnly( string, 'endsWith', require( './../ends-with' ) );\n\n/**\n* @name first\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/first}\n*/\nsetReadOnly( string, 'first', require( './../first' ) );\n\n/**\n* @name forEach\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/for-each}\n*/\nsetReadOnly( string, 'forEach', require( './../for-each' ) );\n\n/**\n* @name format\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/format}\n*/\nsetReadOnly( string, 'format', require( './../format' ) );\n\n/**\n* @name fromCodePoint\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/from-code-point}\n*/\nsetReadOnly( string, 'fromCodePoint', require( './../from-code-point' ) );\n\n/**\n* @name headercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/headercase}\n*/\nsetReadOnly( string, 'headercase', require( './../headercase' ) );\n\n/**\n* @name kebabcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/kebabcase}\n*/\nsetReadOnly( string, 'kebabcase', require( './../kebabcase' ) );\n\n/**\n* @name lpad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-pad}\n*/\nsetReadOnly( string, 'lpad', require( './../left-pad' ) );\n\n/**\n* @name ltrim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-trim}\n*/\nsetReadOnly( string, 'ltrim', require( './../left-trim' ) );\n\n/**\n* @name ltrimN\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-trim-n}\n*/\nsetReadOnly( string, 'ltrimN', require( './../left-trim-n' ) );\n\n/**\n* @name lowercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/lowercase}\n*/\nsetReadOnly( string, 'lowercase', require( './../lowercase' ) );\n\n/**\n* @name nextGraphemeClusterBreak\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/next-grapheme-cluster-break}\n*/\nsetReadOnly( string, 'nextGraphemeClusterBreak', require( './../next-grapheme-cluster-break' ) );\n\n/**\n* @name numGraphemeClusters\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/num-grapheme-clusters}\n*/\nsetReadOnly( string, 'numGraphemeClusters', require( './../num-grapheme-clusters' ) );\n\n/**\n* @name num2words\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/num2words}\n*/\nsetReadOnly( string, 'num2words', require( './../num2words' ) );\n\n/**\n* @name pad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/pad}\n*/\nsetReadOnly( string, 'pad', require( './../pad' ) );\n\n/**\n* @name pascalcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/pascalcase}\n*/\nsetReadOnly( string, 'pascalcase', require( './../pascalcase' ) );\n\n/**\n* @name percentEncode\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/percent-encode}\n*/\nsetReadOnly( string, 'percentEncode', require( './../percent-encode' ) );\n\n/**\n* @name prevGraphemeClusterBreak\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/prev-grapheme-cluster-break}\n*/\nsetReadOnly( string, 'prevGraphemeClusterBreak', require( './../prev-grapheme-cluster-break' ) );\n\n/**\n* @name removeFirst\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-first}\n*/\nsetReadOnly( string, 'removeFirst', require( './../remove-first' ) );\n\n/**\n* @name removeLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-last}\n*/\nsetReadOnly( string, 'removeLast', require( './../remove-last' ) );\n\n/**\n* @name removePunctuation\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-punctuation}\n*/\nsetReadOnly( string, 'removePunctuation', require( './../remove-punctuation' ) );\n\n/**\n* @name removeUTF8BOM\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-utf8-bom}\n*/\nsetReadOnly( string, 'removeUTF8BOM', require( './../remove-utf8-bom' ) );\n\n/**\n* @name removeWords\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-words}\n*/\nsetReadOnly( string, 'removeWords', require( './../remove-words' ) );\n\n/**\n* @name repeat\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/repeat}\n*/\nsetReadOnly( string, 'repeat', require( './../repeat' ) );\n\n/**\n* @name replace\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/replace}\n*/\nsetReadOnly( string, 'replace', require( './../replace' ) );\n\n/**\n* @name replaceBefore\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/replace-before}\n*/\nsetReadOnly( string, 'replaceBefore', require( './../replace-before' ) );\n\n/**\n* @name reverseString\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/reverse}\n*/\nsetReadOnly( string, 'reverseString', require( './../reverse' ) );\n\n/**\n* @name rpad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-pad}\n*/\nsetReadOnly( string, 'rpad', require( './../right-pad' ) );\n\n/**\n* @name rtrim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-trim}\n*/\nsetReadOnly( string, 'rtrim', require( './../right-trim' ) );\n\n/**\n* @name rtrimN\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-trim-n}\n*/\nsetReadOnly( string, 'rtrimN', require( './../right-trim-n' ) );\n\n/**\n* @name snakecase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/snakecase}\n*/\nsetReadOnly( string, 'snakecase', require( './../snakecase' ) );\n\n/**\n* @name splitGraphemeClusters\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/split-grapheme-clusters}\n*/\nsetReadOnly( string, 'splitGraphemeClusters', require( './../split-grapheme-clusters' ) );\n\n/**\n* @name startcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/startcase}\n*/\nsetReadOnly( string, 'startcase', require( './../startcase' ) );\n\n/**\n* @name startsWith\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/starts-with}\n*/\nsetReadOnly( string, 'startsWith', require( './../starts-with' ) );\n\n/**\n* @name substringAfter\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-after}\n*/\nsetReadOnly( string, 'substringAfter', require( './../substring-after' ) );\n\n/**\n* @name substringAfterLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-after-last}\n*/\nsetReadOnly( string, 'substringAfterLast', require( './../substring-after-last' ) );\n\n/**\n* @name substringBefore\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-before}\n*/\nsetReadOnly( string, 'substringBefore', require( './../substring-before' ) );\n\n/**\n* @name substringBeforeLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-before-last}\n*/\nsetReadOnly( string, 'substringBeforeLast', require( './../substring-before-last' ) );\n\n/**\n* @name graphemeClusters2iterator\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/to-grapheme-cluster-iterator}\n*/\nsetReadOnly( string, 'graphemeClusters2iterator', require( './../to-grapheme-cluster-iterator' ) );\n\n/**\n* @name graphemeClusters2iteratorRight\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/to-grapheme-cluster-iterator-right}\n*/\nsetReadOnly( string, 'graphemeClusters2iteratorRight', require( './../to-grapheme-cluster-iterator-right' ) );\n\n/**\n* @name trim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/trim}\n*/\nsetReadOnly( string, 'trim', require( './../trim' ) );\n\n/**\n* @name truncate\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/truncate}\n*/\nsetReadOnly( string, 'truncate', require( './../truncate' ) );\n\n/**\n* @name truncateMiddle\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/truncate-middle}\n*/\nsetReadOnly( string, 'truncateMiddle', require( './../truncate-middle' ) );\n\n/**\n* @name uncapitalize\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/uncapitalize}\n*/\nsetReadOnly( string, 'uncapitalize', require( './../uncapitalize' ) );\n\n/**\n* @name uppercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/uppercase}\n*/\nsetReadOnly( string, 'uppercase', require( './../uppercase' ) );\n\n/**\n* @name utf16ToUTF8Array\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/utf16-to-utf8-array}\n*/\nsetReadOnly( string, 'utf16ToUTF8Array', require( './../utf16-to-utf8-array' ) );\n\n\n// EXPORTS //\n\nmodule.exports = string;\n"], + "mappings": "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S,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,KAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,OAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,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AC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,OAEtBF,EAAU,OAGf,QAAWE,GAAQA,GAAQ,OAEtBF,EAAU,kBAGjBE,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,MACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,OACP,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC7BA,IAAS,QACTA,IAAS,OAEFF,EAAU,YAGf,MAAUE,GAAQA,GAAQ,MAC1B,OAAUA,GAAQA,GAAQ,MAErBF,EAAU,EAGf,MAAUE,GAAQA,GAAQ,MAC1B,OAAUA,GAAQA,GAAQ,MAErBF,EAAU,EAGf,MAAUE,GAAQA,GAAQ,MAC1B,OAAUA,GAAQA,GAAQ,MAErBF,EAAU,EAGjBE,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MAEFF,EAAU,GAGf,OAAUE,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,MAErBF,EAAU,IAGjBE,IAAS,K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", + "names": ["require_is_number", "__commonJSMin", "exports", "module", "isNumber", "value", "require_zero_pad", "__commonJSMin", "exports", "module", "startsWithMinus", "str", "zeros", "n", "out", "i", "zeroPad", "width", "right", "negative", "pad", "require_format_integer", "__commonJSMin", "exports", "module", "isNumber", "zeroPad", "lowercase", "uppercase", "formatInteger", "token", "base", "out", "i", "require_is_string", "__commonJSMin", "exports", "module", "isString", "value", "require_format_double", "__commonJSMin", "exports", "module", "isNumber", "abs", "lowercase", "uppercase", "replace", "RE_EXP_POS_DIGITS", "RE_EXP_NEG_DIGITS", "RE_ONLY_DIGITS", "RE_DIGITS_BEFORE_EXP", "RE_TRAILING_PERIOD_ZERO", "RE_PERIOD_ZERO_EXP", "RE_ZERO_BEFORE_EXP", "formatDouble", "token", "digits", "out", "f", "require_space_pad", "__commonJSMin", "exports", "module", "spaces", "n", "out", "i", "spacePad", "str", "width", "right", "pad", "require_main", "__commonJSMin", "exports", "module", "formatInteger", "isString", "formatDouble", "spacePad", "zeroPad", "fromCharCode", "isnan", "isArray", "initialize", "token", "out", "formatInterpolate", "tokens", "hasPeriod", "flags", "flag", "num", "pos", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE", "parse", "match", "token", "formatTokenize", "str", "content", "tokens", "prev", "require_lib", "__commonJSMin", "exports", "module", "main", "require_is_string", "__commonJSMin", "exports", "module", "isString", "value", "require_main", "__commonJSMin", "exports", "module", "interpolate", "tokenize", "isString", "format", "str", "args", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "replace", "str", "search", "newval", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "rescape", "isFunction", "isString", "isRegExp", "format", "base", "replace", "str", "search", "newval", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "replace", "format", "RE", "removePunctuation", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "isStringArray", "isEmptyArray", "format", "validate", "opts", "options", "require_stopwords", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "removePunctuation", "tokenize", "replace", "uppercase", "lowercase", "isString", "contains", "format", "validate", "STOPWORDS", "RE_HYPHEN", "acronym", "str", "options", "isStopWord", "words", "opts", "err", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "capitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_builtin", "__commonJSMin", "exports", "module", "trim", "require_check", "__commonJSMin", "exports", "module", "trim", "str1", "str2", "test", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "trim", "str", "require_main", "__commonJSMin", "exports", "module", "builtin", "trim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "check", "polyfill", "main", "trim", "require_main", "__commonJSMin", "exports", "module", "capitalize", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_TO_CAMEL", "RE_CAMEL", "replacer", "match", "p1", "offset", "camelcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "Ox10000", "Ox400", "OxD800", "OxDBFF", "OxDC00", "OxDFFF", "codePointAt", "str", "idx", "backward", "code", "low", "hi", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "constantcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "min", "levenshteinDistance", "s1", "s2", "temp", "row", "pre", "m", "n", "i", "j", "k", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "dotcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "endsWith", "str", "search", "len", "idx", "N", "i", "require_builtin", "__commonJSMin", "exports", "module", "endsWith", "require_main", "__commonJSMin", "exports", "module", "builtin", "endsWith", "str", "search", "len", "idx", "N", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "endsWith", "require_main", "__commonJSMin", "exports", "module", "first", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_SURROGATE_PAIR", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "first", "str", "n", "len", "out", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isBoolean", "isString", "isInteger", "format", "base", "codePointAt", "str", "idx", "backward", "FLG", "require_lib", "__commonJSMin", "exports", "module", "main", "require_constants", "__commonJSMin", "exports", "module", "consts", "require_break_type", "__commonJSMin", "exports", "module", "constants", "count", "arr", "start", "end", "value", "cnt", "i", "every", "indexOf", "lastIndexOf", "breakType", "breaks", "emoji", "nextEmoji", "next", "prev", "idx", "N", "M", "require_emoji_property", "__commonJSMin", "exports", "module", "constants", "emojiProperty", "code", "require_break_property", "__commonJSMin", "exports", "module", "constants", "graphemeBreakProperty", "code", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "constants", "breakType", "emojiProperty", "breakProperty", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "codePointAt", "hasUTF16SurrogatePairAt", "grapheme", "format", "breakType", "breakProperty", "emojiProperty", "nextGraphemeClusterBreak", "str", "fromIndex", "breaks", "emoji", "len", "idx", "cp", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "first", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "forEach", "str", "clbk", "thisArg", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "forEach", "str", "clbk", "thisArg", "len", "ch1", "ch2", "idx", "ch", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "forEach", "str", "clbk", "thisArg", "len", "idx", "brk", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "reWhitespace", "startcase", "str", "cap", "out", "ch", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "startcase", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "headercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "lowercase", "invcase", "str", "out", "ch", "s", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "kebabCase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "repeat", "str", "n", "rpt", "cnt", "require_builtin", "__commonJSMin", "exports", "module", "repeat", "require_main", "__commonJSMin", "exports", "module", "builtin", "repeat", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "repeat", "require_main", "__commonJSMin", "exports", "module", "repeat", "ceil", "lpad", "str", "len", "pad", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "ltrim", "str", "require_builtin", "__commonJSMin", "exports", "module", "ltrim", "require_main", "__commonJSMin", "exports", "module", "builtin", "ltrim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "ltrim", "require_main", "__commonJSMin", "exports", "module", "capitalize", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_TO_PASCAL", "RE_CAMEL", "replacer", "match", "p1", "pascalcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "Ox3F", "Ox80", "OxC0", "OxE0", "OxF0", "Ox3FF", "Ox800", "OxD800", "OxE000", "Ox10000", "utf16ToUTF8Array", "str", "code", "out", "len", "i", "require_lib", "__commonJSMin", "exports", "module", "utf16ToUTF8Array", "require_main", "__commonJSMin", "exports", "module", "utf16ToUTF8Array", "UNDERSCORE", "PERIOD", "HYPHEN", "TILDE", "ZERO", "NINE", "A", "Z", "a", "z", "percentEncode", "str", "byte", "out", "len", "buf", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "removeFirst", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "removeFirst", "str", "n", "len", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "removeFirst", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "replaceBefore", "str", "search", "replacement", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "repeat", "ceil", "rpad", "str", "len", "pad", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "rtrim", "str", "require_builtin", "__commonJSMin", "exports", "module", "rtrim", "require_main", "__commonJSMin", "exports", "module", "builtin", "rtrim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "rtrim", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "snakecase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "startsWith", "str", "search", "position", "pos", "i", "require_builtin", "__commonJSMin", "exports", "module", "startsWith", "require_main", "__commonJSMin", "exports", "module", "builtin", "startsWith", "str", "search", "position", "pos", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "startsWith", "require_main", "__commonJSMin", "exports", "module", "uncapitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "camelcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "capitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "constantcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "dotcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "base", "endsWith", "str", "search", "len", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "isPlainObject", "hasOwnProp", "contains", "firstCodeUnit", "firstCodePoint", "firstGraphemeCluster", "format", "MODES", "FCNS", "isMode", "first", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isFunction", "isString", "isPlainObject", "hasOwnProp", "contains", "forEachCodeUnit", "forEachCodePoint", "forEachGraphemeCluster", "format", "MODES", "FCNS", "isMode", "forEach", "str", "options", "clbk", "thisArg", "nargs", "opts", "cb", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isCollection", "format", "UNICODE_MAX", "UNICODE_MAX_BMP", "fromCharCode", "Ox10000", "OxD800", "OxDC00", "Ox3FF", "fromCodePoint", "args", "len", "str", "arr", "low", "hi", "pt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "headercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "kebabCase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "FLOAT64_MAX_SAFE_INTEGER", "base", "lpad", "str", "len", "pad", "p", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "ltrim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "nextGraphemeClusterBreak", "format", "splitGraphemeClusters", "str", "idx", "brk", "out", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "splitGraphemeClusters", "isNonNegativeInteger", "isStringArray", "replace", "rescape", "format", "WHITESPACE_CHARS", "ltrimN", "str", "n", "chars", "nElems", "reStr", "isStr", "RE", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "lowercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "nextGraphemeClusterBreak", "format", "numGraphemeClusters", "str", "count", "idx", "brk", "require_lib", "__commonJSMin", "exports", "module", "main", "require_units", "__commonJSMin", "exports", "module", "require_int2words_de", "__commonJSMin", "exports", "module", "floor", "endsWith", "UNITS", "ONES", "TENS", "pluralize", "word", "int2wordsDE", "num", "out", "rem", "i", "require_int2words_en", "__commonJSMin", "exports", "module", "floor", "UNITS", "ONES", "TENS", "int2wordsEN", "num", "out", "word", "rem", "i", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "indexOf", "format", "LANGUAGE_CODES", "validate", "opts", "options", "require_decimals", "__commonJSMin", "exports", "module", "decimals", "x", "fcn", "out", "len", "i", "require_main", "__commonJSMin", "exports", "module", "isNumber", "isInteger", "isfinite", "format", "int2wordsDE", "int2wordsEN", "validate", "decimals", "num2words", "num", "options", "parts", "opts", "err", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "base", "repeat", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "FLOAT64_MAX_SAFE_INTEGER", "base", "rpad", "str", "len", "pad", "p", "require_lib", "__commonJSMin", "exports", "module", "main", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "isString", "isBoolean", "format", "validate", "opts", "options", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "repeat", "format", "floor", "ceil", "lpad", "rpad", "abs", "FLOAT64_MAX_SAFE_INTEGER", "validate", "pad", "str", "len", "options", "nright", "nleft", "isodd", "right", "left", "opts", "err", "tmp", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "pascalcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "percentEncode", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "codePointAt", "hasUTF16SurrogatePairAt", "grapheme", "format", "breakType", "breakProperty", "emojiProperty", "prevGraphemeClusterBreak", "str", "fromIndex", "breaks", "emoji", "ans", "len", "idx", "cp", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "isNonNegativeInteger", "removeFirstCodeUnit", "removeFirstCodePoint", "removeFirstGraphemeCluster", "format", "MODES", "FCNS", "isMode", "removeFirst", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "removeLast", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "removeLast", "str", "n", "len", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "numGraphemeClusters", "removeLast", "str", "n", "total", "num", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "isNonNegativeInteger", "removeLastCodeUnit", "removeLastCodePoint", "removeLastGraphemeCluster", "format", "MODES", "FCNS", "isMode", "removeLast", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "BOM", "removeUTF8BOM", "str", "require_lib", "__commonJSMin", "exports", "module", "removeUTF8BOM", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "uppercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isStringArray", "uppercase", "isBoolean", "isString", "tokenize", "format", "removeWords", "str", "words", "ignoreCase", "tokens", "token", "list", "flg", "out", "N", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "replaceBefore", "str", "search", "replacement", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "reverse", "str", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "reverse", "str", "len", "out", "ch1", "ch2", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "reverse", "str", "cluster", "out", "idx", "brk", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "reverseCodeUnit", "reverseCodePoints", "reverseGraphemeClusters", "format", "MODES", "FCNS", "isMode", "reverse", "str", "options", "nargs", "opts", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "rtrim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "splitGraphemeClusters", "isNonNegativeInteger", "isStringArray", "replace", "rescape", "format", "WHITESPACE_CHARS", "rtrimN", "str", "n", "chars", "nElems", "reStr", "isStr", "RE", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "snakecase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "startcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "base", "startsWith", "str", "search", "position", "pos", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "format", "substringAfter", "str", "search", "fromIndex", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "substringAfterLast", "str", "search", "fromIndex", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "substringBefore", "str", "search", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "substringBeforeLast", "str", "search", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isString", "iteratorSymbol", "nextGraphemeClusterBreak", "format", "graphemeClusters2iterator", "src", "thisArg", "iter", "FLG", "fcn", "i", "next1", "next2", "end", "factory", "v", "j", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isString", "iteratorSymbol", "prevGraphemeClusterBreak", "format", "graphemeClusters2iteratorRight", "src", "thisArg", "iter", "FLG", "fcn", "i", "next1", "next2", "end", "factory", "v", "j", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "trim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "numGraphemeClusters", "nextGraphemeClusterBreak", "format", "truncate", "str", "len", "ending", "endingLength", "fromIndex", "nVisual", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "numGraphemeClusters", "nextGraphemeClusterBreak", "format", "round", "floor", "truncateMiddle", "str", "len", "seq", "seqLength", "fromIndex", "strLength", "seqStart", "nVisual", "seqEnd", "idx2", "idx1", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "uncapitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "setReadOnly", "string"] } diff --git a/format/lib/main.js b/format/lib/main.js index 97d20037..8c26130d 100644 --- a/format/lib/main.js +++ b/format/lib/main.js @@ -45,18 +45,15 @@ var isString = require( './is_string.js' ); * // returns 'Pi: ~3.14' */ function format( str ) { - var tokens; var args; var i; if ( !isString( str ) ) { throw new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) ); } - tokens = tokenize( str ); - args = new Array( arguments.length ); - args[ 0 ] = tokens; - for ( i = 1; i < args.length; i++ ) { - args[ i ] = arguments[ i ]; + args = [ tokenize( str ) ]; + for ( i = 1; i < arguments.length; i++ ) { + args.push( arguments[ i ] ); } return interpolate.apply( null, args ); }