{"version":3,"sources":["xregexp-all.js"],"names":["f","exports","module","define","amd","window","global","self","this","XRegExp","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","subParts","parts","union","conjunction","deanchor","pattern","leadingAnchor","trailingAnchor","test","replace","asXRegExp","value","addFlagX","flags","isRegExp","captureNames","source","build","subs","indexOf","inlineFlags","exec","_clipDuplicates","data","p","hasOwnProperty","sub","names","numPriorCaps","patternAsRegex","numCaps","numOuterCaps","outerCapsMap","outerCapNames","output","$0","$1","$2","$3","$4","capName","intro","localCapIndex","subName","ReferenceError","match","paren","backref","2","row","name","start","end","matchRecursive","str","left","right","options","outerStart","innerStart","leftMatch","rightMatch","esc","sticky","basicFlags","escapeChar","vN","valueNames","openTokens","delimStart","delimEnd","lastOuterEnd","escape","RegExp","index","push","slice","3","unicode","dec","_dec","hex","_hex","pad4","_pad4","normalize","toLowerCase","charCode","chr","charCodeAt","charAt","cacheInvertedBmp","slug","range","lastEnd","bmp","forEach","m","cacheAstral","isNegated","prop","item","combined","isBmpLast","astral","buildAstral","addToken","scope","isAstralMode","SyntaxError","inverseOf","optionalFlags","leadChar","addUnicodeData","alias","cache","flush","_getUnicodeProperty","4","5","6","unicodeData","7","8","./addons/build","./addons/matchrecursive","./addons/unicode-base","./addons/unicode-blocks","./addons/unicode-categories","./addons/unicode-properties","./addons/unicode-scripts","./xregexp","9","features","natives","nativ","prototype","String","split","fixed","regexCache","patternCache","tokens","nativeTokens","default","class","replacementToken","correctExecNpcg","undefined","hasFlagsProp","toString","hasNativeFlag","flag","isSupported","exception","hasNativeU","hasNativeY","registeredFlags","g","y","augment","regex","xSource","xFlags","isInternalOnly","__proto__","sort","join","clipDuplicates","copyRegex","TypeError","xData","getNativeFlags","flagsToAdd","flagsToRemove","xregexpSource","xregexpFlags","removeG","removeY","addG","addY","hasNamedCapture","parseInt","getContextualTokenSeparator","input","pos","needlePattern","patternsToIgnore","isPatternNext","array","len","isType","type","prepareOptions","registerFlag","runTokens","context","result","matchLength","handler","reparse","setAstral","on","setNatives","toObject","isInstalled","applied","prepareFlags","appliedPattern","appliedFlags","token","captures","generated","version","_hasNativeFlag","cacheName","r2","cacheKey","fakeY","lastIndex","pop","callback","globalize","install","feature","matchChain","chain","recurseChain","values","level","matches","addMatch","search","replacement","isRegex","s2","replaceEach","replacements","separator","limit","uninstall","patterns","numPriorCaptures","numCaptures","rewrite","origLastIndex","apply","arguments","args","isNaN","lastLength","lastLastIndex","Array","endIndex"],"mappings":"CAAA,SAAUA,GAAG,GAAoB,iBAAVC,SAAoC,oBAATC,OAAsBA,OAAOD,QAAQD,SAAS,GAAmB,mBAATG,QAAqBA,OAAOC,IAAKD,OAAO,GAAGH,OAAO,EAA0B,oBAATK,OAAwBA,OAA+B,oBAATC,OAAwBA,OAA6B,oBAAPC,KAAsBA,KAAYC,MAAOC,QAAUT,KAA5T,EAAmU,WAAqC,OAAO,SAAUU,EAAEC,EAAEC,EAAEC,GAAG,SAASC,EAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,IAAIE,EAAkB,mBAATC,SAAqBA,QAAQ,IAAIF,GAAGC,EAAE,OAAOA,EAAEF,GAAE,GAAI,GAAGI,EAAE,OAAOA,EAAEJ,GAAE,GAAI,IAAIf,EAAE,IAAIoB,MAAM,uBAAuBL,EAAE,KAAK,MAAMf,EAAEqB,KAAK,mBAAmBrB,EAAE,IAAIsB,EAAEV,EAAEG,GAAG,CAACd,QAAQ,IAAIU,EAAEI,GAAG,GAAGQ,KAAKD,EAAErB,SAAQ,SAASS,GAAG,IAAIE,EAAED,EAAEI,GAAG,GAAGL,GAAG,OAAOI,EAAEF,GAAIF,KAAIY,EAAEA,EAAErB,QAAQS,EAAEC,EAAEC,EAAEC,GAAG,OAAOD,EAAEG,GAAGd,QAAkD,IAA1C,IAAIkB,EAAkB,mBAATD,SAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,IAAI,OAAOD,EAAvb,CAA2b,CAACW,EAAE,CAAC,SAASP,EAAQhB,EAAOD;;;;;;;AAQt0BC,EAAOD,QAAU,SAASQ,GACtB,aAEA,IACIiB,EAAW,8DACXC,EAAQlB,EAAQmB,MAAM,CAAC,gCAAiCF,GAAW,IAAK,CACxEG,YAAa,OAUjB,SAASC,EAASC,GAGd,IAAIC,EAAgB,kBAChBC,EAAiB,kBAErB,OACID,EAAcE,KAAKH,IACnBE,EAAeC,KAAKH,IAEpBE,EAAeC,KAAKH,EAAQI,QAAQ,YAAa,KAE1CJ,EAAQI,QAAQH,EAAe,IAAIG,QAAQF,EAAgB,IAG/DF,EAYX,SAASK,EAAUC,EAAOC,GACtB,IAAIC,EAAQD,EAAW,IAAM,GAC7B,OAAO7B,EAAQ+B,SAASH,GACnBA,EAAgB,SAAKA,EAAgB,QAAEI,aAEpCJ,EAEA5B,EAAQ4B,EAAMK,OAAQH,GAG1B9B,EAAQ4B,EAAOE,GA4BvB9B,EAAQkC,MAAQ,SAASZ,EAASa,EAAML,GAKpC,IAAID,GAJJC,EAAQA,GAAS,IAIIM,QAAQ,MAAQ,EACjCC,EAAc,kBAAkBC,KAAKhB,GAErCe,IACAP,EAAQ9B,EAAQuC,gBAAgBT,EAAQO,EAAY,KAGxD,IAAIG,EAAO,GACX,IAAK,IAAIC,KAAKN,EACV,GAAIA,EAAKO,eAAeD,GAAI,CAKxB,IAAIE,EAAMhB,EAAUQ,EAAKM,GAAIZ,GAC7BW,EAAKC,GAAK,CAGNnB,QAASD,EAASsB,EAAIV,QACtBW,MAAOD,EAAc,QAAEX,cAAgB,IAOnD,IAIIa,EAJAC,EAAiBnB,EAAUL,EAASO,GAGpCkB,EAAU,EAEVC,EAAe,EACfC,EAAe,CAAC,GAChBC,EAAgBJ,EAAyB,QAAEd,cAAgB,GAC3DmB,EAASL,EAAeb,OAAOP,QAAQR,GAAO,SAASkC,EAAIC,EAAIC,EAAIC,EAAIC,GACvE,IACIC,EACAC,EACAC,EAHAC,EAAUP,GAAMC,EAKpB,GAAIM,EAAS,CACT,IAAKpB,EAAKE,eAAekB,GACrB,MAAM,IAAIC,eAAe,sBAAwBT,GAarD,OAVIC,GACAI,EAAUP,EAAcF,GACxBC,IAAeD,KAAkBD,EAGjCW,EAAQ,OAASD,GAAWG,GAAW,KAEvCF,EAAQ,MAEZb,EAAeE,EACRW,EAAQlB,EAAKoB,GAAStC,QAAQI,QAAQT,GAAU,SAAS6C,EAAOC,EAAOC,GAE1E,GAAID,GAIA,GAHAN,EAAUjB,EAAKoB,GAAShB,MAAMG,EAAUF,KACtCE,EAEEU,EACA,MAAO,MAAQA,EAAU,SAG1B,GAAIO,EAGP,OAFAL,GAAiBK,EAAU,EAEpBxB,EAAKoB,GAAShB,MAAMe,GAEvB,OAASnB,EAAKoB,GAAShB,MAAMe,GAAiB,IAC9C,OAASK,EAAUnB,GAE3B,OAAOiB,KACN,IAGT,GAAIP,GAIA,GAHAE,EAAUP,EAAcF,GACxBC,IAAeD,KAAkBD,EAE7BU,EACA,MAAO,MAAQA,EAAU,SAG1B,GAAID,EAGP,OAAON,EAFPS,GAAiBH,EAAK,GAIlB,OAASN,EAAcS,GAAiB,IACxC,KAAOV,GAAcO,GAE7B,OAAOJ,KAGX,OAAOpD,EAAQmD,EAAQrB,MAK7B,IAAImC,EAAE,CAAC,SAASxD,EAAQhB,EAAOD;;;;;;AAOjCC,EAAOD,QAAU,SAASQ,GACtB,aAOA,SAASkE,EAAIC,EAAMvC,EAAOwC,EAAOC,GAC7B,MAAO,CACHF,KAAMA,EACNvC,MAAOA,EACPwC,MAAOA,EACPC,IAAKA,GAsDbrE,EAAQsE,eAAiB,SAASC,EAAKC,EAAMC,EAAO3C,EAAO4C,GAEvDA,EAAUA,GAAW,GACrB,IAWIC,EACAC,EACAC,EACAC,EACAC,EAfAlF,GAFJiC,EAAQA,GAAS,IAEEM,QAAQ,MAAQ,EAC/B4C,EAASlD,EAAMM,QAAQ,MAAQ,EAE/B6C,EAAanD,EAAMJ,QAAQ,KAAM,IACjCwD,EAAaR,EAAQQ,WACrBC,EAAKT,EAAQU,WACbjC,EAAS,GACTkC,EAAa,EACbC,EAAa,EACbC,EAAW,EACXC,EAAe,EASnB,GAHAhB,EAAOxE,EAAQwE,EAAMS,GACrBR,EAAQzE,EAAQyE,EAAOQ,GAEnBC,EAAY,CACZ,GAAIA,EAAWnE,OAAS,EACpB,MAAM,IAAIJ,MAAM,6CAEpBuE,EAAalF,EAAQyF,OAAOP,GAM5BH,EAAM,IAAIW,OACN,MAAQR,EAAa,kBAKjBlF,EAAQmB,MAAM,CAACqD,EAAMC,GAAQ,GAAI,CAACrD,YAAa,OAAOa,OACtD,MAAQiD,EAAa,QAEzBpD,EAAMJ,QAAQ,WAAY,KAIlC,OAAa,CA0BT,GAvBIwD,IACAK,IAAavF,EAAQsC,KAAKiC,EAAKQ,EAAKQ,EAAU,WAAa,CAAC,KAAK,GAAGxE,QAExE8D,EAAY7E,EAAQsC,KAAKiC,EAAKC,EAAMe,GACpCT,EAAa9E,EAAQsC,KAAKiC,EAAKE,EAAOc,GAElCV,GAAaC,IACTD,EAAUc,OAASb,EAAWa,MAC9Bb,EAAa,KAEbD,EAAY,MAahBA,GAAaC,EAEbS,GADAD,GAAcT,GAAaC,GAAYa,QACdd,GAAaC,GAAY,GAAG/D,YAClD,IAAKsE,EACR,MAEJ,GAAIL,IAAWK,GAAcC,EAAaE,EACtC,MAEJ,GAAIX,EACKQ,IACDV,EAAaW,EACbV,EAAaW,KAEfF,MACC,CAAA,IAAIP,IAAcO,EAwBrB,MAAM,IAAI1E,MAAM,wCAvBhB,MAAO0E,IACCF,GACIA,EAAG,IAAMR,EAAaa,GACtBrC,EAAOyC,KAAK1B,EAAIiB,EAAG,GAAIZ,EAAIsB,MAAML,EAAcb,GAAaa,EAAcb,IAE1EQ,EAAG,IACHhC,EAAOyC,KAAK1B,EAAIiB,EAAG,GAAIZ,EAAIsB,MAAMlB,EAAYC,GAAaD,EAAYC,IAEtEO,EAAG,IACHhC,EAAOyC,KAAK1B,EAAIiB,EAAG,GAAIZ,EAAIsB,MAAMjB,EAAYU,GAAaV,EAAYU,IAEtEH,EAAG,IACHhC,EAAOyC,KAAK1B,EAAIiB,EAAG,GAAIZ,EAAIsB,MAAMP,EAAYC,GAAWD,EAAYC,KAGxEpC,EAAOyC,KAAKrB,EAAIsB,MAAMjB,EAAYU,IAEtCE,EAAeD,GACV1F,GACD,MAORyF,IAAeC,KACbA,EAQV,OAJI1F,IAAWmF,GAAUG,GAAMA,EAAG,IAAMZ,EAAIxD,OAASyE,GACjDrC,EAAOyC,KAAK1B,EAAIiB,EAAG,GAAIZ,EAAIsB,MAAML,GAAeA,EAAcjB,EAAIxD,SAG/DoC,KAKb,IAAI2C,EAAE,CAAC,SAASrF,EAAQhB,EAAOD;;;;;;AAOjCC,EAAOD,QAAU,SAASQ,GACtB,aAqBA,IAAI+F,EAAU,GAGVC,EAAMhG,EAAQiG,KACdC,EAAMlG,EAAQmG,KACdC,EAAOpG,EAAQqG,MAGnB,SAASC,EAAUnC,GACf,OAAOA,EAAKzC,QAAQ,UAAW,IAAI6E,cAIvC,SAASC,EAASC,GACd,IAAI1B,EAAM,cAAczC,KAAKmE,GAC7B,OAAO1B,EACHiB,EAAIjB,EAAI,IACR0B,EAAIC,WAA6B,OAAlBD,EAAIE,OAAO,GAAc,EAAI,GAkCpD,SAASC,EAAiBC,GACtB,IA/BeC,EACX3D,EACA4D,EA8BJ,OACIhB,EAAQc,GAFD,QAGNd,EAAQc,GAHF,OA/BIC,EAkCsBf,EAAQc,GAAMG,IAjC/C7D,EAAS,GACT4D,GAAW,EAEf/G,EAAQiH,QACJH,EACA,4DACA,SAASI,GACL,IAAI9C,EAAQoC,EAASU,EAAE,IACnB9C,EAAS2C,EAAU,IACnB5D,GAAU,MAAQiD,EAAKF,EAAIa,EAAU,IACjC3C,EAAS2C,EAAU,IACnB5D,GAAU,OAASiD,EAAKF,EAAI9B,EAAQ,MAG5C2C,EAAUP,EAASU,EAAE,IAAMA,EAAE,OAIjCH,EAAU,QACV5D,GAAU,MAAQiD,EAAKF,EAAIa,EAAU,IACjCA,EAAU,QACV5D,GAAU,aAIXA,IAkCX,SAASgE,EAAYN,EAAMO,GACvB,IAAIC,EAAOD,EAAY,KAAO,KAC9B,OACIrB,EAAQc,GAAMQ,KACbtB,EAAQc,GAAMQ,GAzBvB,SAAqBR,EAAMO,GACvB,IAAIE,EAAOvB,EAAQc,GACfU,EAAW,GAaf,OAXID,EAAKN,MAAQM,EAAKE,YAClBD,EAAW,IAAMD,EAAKN,IAAM,KAAOM,EAAKG,OAAS,IAAM,KAEvDH,EAAKG,SACLF,GAAYD,EAAKG,QAEjBH,EAAKE,WAAaF,EAAKN,MACvBO,IAAaD,EAAKG,OAAS,IAAM,IAAM,IAAMH,EAAKN,IAAM,KAIrDI,EACH,SAAWG,EAAW,8CACtB,MAAQA,EAAW,IAQIG,CAAYb,EAAMO,IAWjDpH,EAAQ2H,SAEJ,yCACA,SAAS7D,EAAO8D,EAAO9F,GACnB,IAMIsF,EAAyB,MAAbtD,EAAM,MAAgBA,EAAM,GAExC+D,EAAe/F,EAAMM,QAAQ,MAAQ,EAErCyE,EAAOP,EAAUxC,EAAM,IAAMA,EAAM,IAEnCwD,EAAOvB,EAAQc,GAEnB,GAAiB,MAAb/C,EAAM,IAAcA,EAAM,GAC1B,MAAM,IAAIgE,YAfO,2BAesBhE,EAAM,IAEjD,IAAKiC,EAAQrD,eAAemE,GACxB,MAAM,IAAIiB,YAjBS,yBAiBsBhE,EAAM,IAInD,GAAIwD,EAAKS,UAAW,CAEhB,GADAlB,EAAOP,EAAUgB,EAAKS,YACjBhC,EAAQrD,eAAemE,GACxB,MAAM,IAAIhD,eAvBI,8BAuB6BC,EAAM,GAAK,OAASwD,EAAKS,WAExET,EAAOvB,EAAQc,GACfO,GAAaA,EAGjB,IAAME,EAAKN,MAAOa,EACd,MAAM,IAAIC,YA7BQ,0CA6BsBhE,EAAM,IAElD,GAAI+D,EAAc,CACd,GAAc,UAAVD,EACA,MAAM,IAAIE,YAhCQ,wEAmCtB,OAAOX,EAAYN,EAAMO,GAG7B,MAAiB,UAAVQ,EACFR,EAAYR,EAAiBC,GAAQS,EAAKN,KAC1CI,EAAY,KAAO,KAAOE,EAAKN,IAAM,MAE9C,CACIY,MAAO,MACPI,cAAe,IACfC,SAAU,OAgClBjI,EAAQkI,eAAiB,SAAS1F,GAK9B,IAJA,IAEI8E,EAEK5G,EAAI,EAAGA,EAAI8B,EAAKzB,SAAUL,EAAG,CAElC,KADA4G,EAAO9E,EAAK9B,IACFyD,KACN,MAAM,IAAIxD,MAPA,+BASd,KAAM2G,EAAKS,WAAaT,EAAKN,KAAOM,EAAKG,QACrC,MAAM,IAAI9G,MATA,uCASoB2G,EAAKnD,MAEvC4B,EAAQO,EAAUgB,EAAKnD,OAASmD,EAC5BA,EAAKa,QACLpC,EAAQO,EAAUgB,EAAKa,QAAUb,GAMzCtH,EAAQoI,MAAMC,MAAM,aAwBxBrI,EAAQsI,oBAAsB,SAASnE,GACnC,IAAI0C,EAAOP,EAAUnC,GACrB,OAAO4B,EAAQc,MAKrB,IAAI0B,EAAE,CAAC,SAAS9H,EAAQhB,EAAOD;;;;;;;AAQjCC,EAAOD,QAAU,SAASQ,GACtB,aAYA,IAAKA,EAAQkI,eACT,MAAM,IAAIrE,eAAe,qDAG7B7D,EAAQkI,eAAe,CACnB,CACI/D,KAAM,UACNsD,OAAQ,yBAEZ,CACItD,KAAM,mBACNsD,OAAQ,yBAEZ,CACItD,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,uBACNsD,OAAQ,yBAEZ,CACItD,KAAM,kCACN6C,IAAK,OAET,CACI7C,KAAM,0BACNsD,OAAQ,yBAEZ,CACItD,KAAM,mCACNsD,OAAQ,yBAEZ,CACItD,KAAM,0BACNsD,OAAQ,yBAEZ,CACItD,KAAM,oBACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,sBACN6C,IAAK,OAET,CACI7C,KAAM,2CACNsD,OAAQ,yBAEZ,CACItD,KAAM,gCACN6C,IAAK,OAET,CACI7C,KAAM,gCACN6C,IAAK,YAET,CACI7C,KAAM,sBACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,qBACNsD,OAAQ,yBAEZ,CACItD,KAAM,gBACN6C,IAAK,QAET,CACI7C,KAAM,cACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,YACN6C,IAAK,OAET,CACI7C,KAAM,cACNsD,OAAQ,yBAEZ,CACItD,KAAM,mBACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,sBACN6C,IAAK,OAET,CACI7C,KAAM,gBACN6C,IAAK,OAET,CACI7C,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,8BACNsD,OAAQ,yBAEZ,CACItD,KAAM,sBACN6C,IAAK,OAET,CACI7C,KAAM,4BACN6C,IAAK,OAET,CACI7C,KAAM,iCACN6C,IAAK,OAET,CACI7C,KAAM,4CACNsD,OAAQ,yBAEZ,CACItD,KAAM,4BACN6C,IAAK,OAET,CACI7C,KAAM,gBACN6C,IAAK,OAET,CACI7C,KAAM,gCACN6C,IAAK,OAET,CACI7C,KAAM,2BACN6C,IAAK,OAET,CACI7C,KAAM,uCACN6C,IAAK,OAET,CACI7C,KAAM,uCACNsD,OAAQ,wDAEZ,CACItD,KAAM,uCACNsD,OAAQ,8EAEZ,CACItD,KAAM,uCACNsD,OAAQ,+CAEZ,CACItD,KAAM,uCACNsD,OAAQ,8EAEZ,CACItD,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,uBACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,SACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,gCACN6C,IAAK,OAET,CACI7C,KAAM,yCACN6C,IAAK,OAET,CACI7C,KAAM,2CACN6C,IAAK,OAET,CACI7C,KAAM,4CACN6C,IAAK,OAET,CACI7C,KAAM,yBACN6C,IAAK,OAET,CACI7C,KAAM,8BACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,yBACNsD,OAAQ,yBAEZ,CACItD,KAAM,0BACNsD,OAAQ,yBAEZ,CACItD,KAAM,cACNsD,OAAQ,yBAEZ,CACItD,KAAM,sCACNsD,OAAQ,yBAEZ,CACItD,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,sBACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,eACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,iBACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACNsD,OAAQ,yBAEZ,CACItD,KAAM,6BACNsD,OAAQ,yBAEZ,CACItD,KAAM,yBACNsD,OAAQ,+CAEZ,CACItD,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,cACNsD,OAAQ,yBAEZ,CACItD,KAAM,qCACNsD,OAAQ,yBAEZ,CACItD,KAAM,2BACN6C,IAAK,OAET,CACI7C,KAAM,oCACN6C,IAAK,OAET,CACI7C,KAAM,oCACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,sBACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,8BACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,eACN6C,IAAK,OAET,CACI7C,KAAM,0BACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,mBACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,kCACN6C,IAAK,OAET,CACI7C,KAAM,8BACN6C,IAAK,OAET,CACI7C,KAAM,gBACN6C,IAAK,OAET,CACI7C,KAAM,2BACN6C,IAAK,OAET,CACI7C,KAAM,2BACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,YACN6C,IAAK,OAET,CACI7C,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,gCACN6C,IAAK,iBAET,CACI7C,KAAM,oBACN6C,IAAK,iBAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,mBACN6C,IAAK,OAET,CACI7C,KAAM,uCACN6C,IAAK,OAET,CACI7C,KAAM,wCACNsD,OAAQ,yBAEZ,CACItD,KAAM,qBACNsD,OAAQ,yBAEZ,CACItD,KAAM,0BACNsD,OAAQ,yBAEZ,CACItD,KAAM,2BACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,oBACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,oBACN6C,IAAK,OAET,CACI7C,KAAM,YACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,iCACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,eACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,kBACN6C,IAAK,OAET,CACI7C,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,cACNsD,OAAQ,yBAEZ,CACItD,KAAM,QACN6C,IAAK,OAET,CACI7C,KAAM,8BACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,uBACN6C,IAAK,OAET,CACI7C,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,uBACN6C,IAAK,OAET,CACI7C,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,aACNsD,OAAQ,yBAEZ,CACItD,KAAM,uBACNsD,OAAQ,yBAEZ,CACItD,KAAM,uBACNsD,OAAQ,yBAEZ,CACItD,KAAM,SACN6C,IAAK,OAET,CACI7C,KAAM,mBACN6C,IAAK,iBAET,CACI7C,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACNsD,OAAQ,yBAEZ,CACItD,KAAM,kBACNsD,OAAQ,yBAEZ,CACItD,KAAM,cACN6C,IAAK,OAET,CACI7C,KAAM,YACN6C,IAAK,OAET,CACI7C,KAAM,eACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,sCACNsD,OAAQ,yBAEZ,CACItD,KAAM,2BACN6C,IAAK,OAET,CACI7C,KAAM,iBACN6C,IAAK,OAET,CACI7C,KAAM,4BACN6C,IAAK,OAET,CACI7C,KAAM,kBACNsD,OAAQ,yBAEZ,CACItD,KAAM,qBACNsD,OAAQ,yBAEZ,CACItD,KAAM,yBACNsD,OAAQ,yBAEZ,CACItD,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,yCACN6C,IAAK,OAET,CACI7C,KAAM,yCACN6C,IAAK,OAET,CACI7C,KAAM,0BACN6C,IAAK,OAET,CACI7C,KAAM,qCACN6C,IAAK,OAET,CACI7C,KAAM,0CACNsD,OAAQ,+CAEZ,CACItD,KAAM,4BACN6C,IAAK,OAET,CACI7C,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,0BACN6C,IAAK,OAET,CACI7C,KAAM,cACN6C,IAAK,OAET,CACI7C,KAAM,yBACNsD,OAAQ,yBAEZ,CACItD,KAAM,QACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,oBACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACN6C,IAAK,OAET,CACI7C,KAAM,uBACN6C,IAAK,OAET,CACI7C,KAAM,uBACN6C,IAAK,OAET,CACI7C,KAAM,QACN6C,IAAK,OAET,CACI7C,KAAM,cACNsD,OAAQ,yBAEZ,CACItD,KAAM,gBACN6C,IAAK,OAET,CACI7C,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,iBACN6C,IAAK,OAET,CACI7C,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,kBACNsD,OAAQ,yBAEZ,CACItD,KAAM,eACNsD,OAAQ,yBAEZ,CACItD,KAAM,sBACNsD,OAAQ,yBAEZ,CACItD,KAAM,eACNsD,OAAQ,yBAEZ,CACItD,KAAM,gBACNsD,OAAQ,yBAEZ,CACItD,KAAM,sBACNsD,OAAQ,yBAEZ,CACItD,KAAM,eACNsD,OAAQ,yBAEZ,CACItD,KAAM,kCACN6C,IAAK,OAET,CACI7C,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,wBACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,iBACNsD,OAAQ,yBAEZ,CACItD,KAAM,cACNsD,OAAQ,yBAEZ,CACItD,KAAM,gBACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,kBACNsD,OAAQ,yBAEZ,CACItD,KAAM,eACNsD,OAAQ,yBAEZ,CACItD,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,mCACN6C,IAAK,OAET,CACI7C,KAAM,kBACNsD,OAAQ,yBAEZ,CACItD,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,oBACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,yBACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,cACN6C,IAAK,OAET,CACI7C,KAAM,eACN6C,IAAK,OAET,CACI7C,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,8BACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACN6C,IAAK,OAET,CACI7C,KAAM,4BACNsD,OAAQ,yBAEZ,CACItD,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,iBACNsD,OAAQ,yBAEZ,CACItD,KAAM,6BACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,cACN6C,IAAK,OAET,CACI7C,KAAM,yBACN6C,IAAK,OAET,CACI7C,KAAM,gCACN6C,IAAK,OAET,CACI7C,KAAM,0BACN6C,IAAK,OAET,CACI7C,KAAM,0BACN6C,IAAK,OAET,CACI7C,KAAM,0BACNsD,OAAQ,yBAEZ,CACItD,KAAM,wCACN6C,IAAK,OAET,CACI7C,KAAM,6BACN6C,IAAK,OAET,CACI7C,KAAM,yCACNsD,OAAQ,yBAEZ,CACItD,KAAM,qCACNsD,OAAQ,kCAEZ,CACItD,KAAM,qCACNsD,OAAQ,kCAEZ,CACItD,KAAM,uBACNsD,OAAQ,yBAEZ,CACItD,KAAM,iBACN6C,IAAK,OAET,CACI7C,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,YACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,0BACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,WACNsD,OAAQ,kCAEZ,CACItD,KAAM,sBACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,SACN6C,IAAK,OAET,CACI7C,KAAM,YACN6C,IAAK,OAET,CACI7C,KAAM,aACN6C,IAAK,OAET,CACI7C,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,8BACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACNsD,OAAQ,yBAEZ,CACItD,KAAM,0CACN6C,IAAK,OAET,CACI7C,KAAM,mDACN6C,IAAK,OAET,CACI7C,KAAM,QACN6C,IAAK,OAET,CACI7C,KAAM,wBACN6C,IAAK,OAET,CACI7C,KAAM,mCACNsD,OAAQ,yBAEZ,CACItD,KAAM,qBACN6C,IAAK,OAET,CACI7C,KAAM,mBACN6C,IAAK,OAET,CACI7C,KAAM,gBACNsD,OAAQ,yBAEZ,CACItD,KAAM,gBACN6C,IAAK,OAET,CACI7C,KAAM,iBACN6C,IAAK,OAET,CACI7C,KAAM,4BACN6C,IAAK,WAMf,IAAIwB,EAAE,CAAC,SAAS/H,EAAQhB,EAAOD;;;;;;;AAQjCC,EAAOD,QAAU,SAASQ,GACtB,aAYA,IAAKA,EAAQkI,eACT,MAAM,IAAIrE,eAAe,yDAG7B7D,EAAQkI,eAAe,CACnB,CACI/D,KAAM,IACNgE,MAAO,QACPX,WAAW,EACXR,IAAK,qvBACLS,OAAQ,21GAEZ,CACItD,KAAM,KACNgE,MAAO,UACPnB,IAAK,WAET,CACI7C,KAAM,KACNgE,MAAO,SACPnB,IAAK,iCACLS,OAAQ,8EAEZ,CACItD,KAAM,KACNgE,MAAO,aACPnB,IAAK,guBACLS,OAAQ,w3GAEZ,CACItD,KAAM,KACNgE,MAAO,cACPnB,IAAK,MACLS,OAAQ,6EAEZ,CACItD,KAAM,KACNgE,MAAO,YACPnB,IAAK,iBAET,CACI7C,KAAM,IACNgE,MAAO,SACPnB,IAAK,66BACLS,OAAQ,2gFAEZ,CACItD,KAAM,KACNgE,MAAO,mBACPnB,IAAK,mtBACLS,OAAQ,+cAEZ,CACItD,KAAM,KACNgE,MAAO,kBACPnB,IAAK,yFACLS,OAAQ,qDAEZ,CACItD,KAAM,KACNgE,MAAO,eACPnB,IAAK,8tBACLS,OAAQ,qiEAEZ,CACItD,KAAM,KACNgE,MAAO,mBACPnB,IAAK,oBAET,CACI7C,KAAM,KACNgE,MAAO,mBACPnB,IAAK,krBACLS,OAAQ,oeAEZ,CACItD,KAAM,IACNgE,MAAO,OACPnB,IAAK,ubACLS,OAAQ,s6BAEZ,CACItD,KAAM,KACNgE,MAAO,eACPnB,IAAK,qNACLS,OAAQ,8eAEZ,CACItD,KAAM,KACNgE,MAAO,iBACPnB,IAAK,gBAET,CACI7C,KAAM,KACNgE,MAAO,kBACPnB,IAAK,2ZACLS,OAAQ,0hCAEZ,CACItD,KAAM,IACNgE,MAAO,SACPnB,IAAK,mMACLS,OAAQ,guBAEZ,CACItD,KAAM,KACNgE,MAAO,iBACPnB,IAAK,kHACLS,OAAQ,wSAEZ,CACItD,KAAM,KACNgE,MAAO,gBACPnB,IAAK,sBACLS,OAAQ,wEAEZ,CACItD,KAAM,KACNgE,MAAO,eACPnB,IAAK,+EACLS,OAAQ,qfAEZ,CACItD,KAAM,IACNgE,MAAO,cACPnB,IAAK,iSACLS,OAAQ,8eAEZ,CACItD,KAAM,KACNgE,MAAO,wBACPnB,IAAK,cAET,CACI7C,KAAM,KACNgE,MAAO,mBACPnB,IAAK,6BAET,CACI7C,KAAM,KACNgE,MAAO,oBACPnB,IAAK,qFAET,CACI7C,KAAM,KACNgE,MAAO,oBACPnB,IAAK,cAET,CACI7C,KAAM,KACNgE,MAAO,sBACPnB,IAAK,gBAET,CACI7C,KAAM,KACNgE,MAAO,oBACPnB,IAAK,iRACLS,OAAQ,8eAEZ,CACItD,KAAM,KACNgE,MAAO,mBACPnB,IAAK,2FAET,CACI7C,KAAM,IACNgE,MAAO,SACPnB,IAAK,kVACLS,OAAQ,k2BAEZ,CACItD,KAAM,KACNgE,MAAO,kBACPnB,IAAK,gCAET,CACI7C,KAAM,KACNgE,MAAO,kBACPnB,IAAK,4DACLS,OAAQ,yBAEZ,CACItD,KAAM,KACNgE,MAAO,cACPnB,IAAK,+GACLS,OAAQ,6FAEZ,CACItD,KAAM,KACNgE,MAAO,eACPnB,IAAK,kQACLS,OAAQ,wwBAEZ,CACItD,KAAM,IACNgE,MAAO,YACPnB,IAAK,yBAET,CACI7C,KAAM,KACNgE,MAAO,iBACPnB,IAAK,UAET,CACI7C,KAAM,KACNgE,MAAO,sBACPnB,IAAK,UAET,CACI7C,KAAM,KACNgE,MAAO,kBACPnB,IAAK,iBAMf,IAAIyB,EAAE,CAAC,SAAShI,EAAQhB,EAAOD;;;;;;;AAQjCC,EAAOD,QAAU,SAASQ,GACtB,aAyCA,IAAKA,EAAQkI,eACT,MAAM,IAAIrE,eAAe,yDAG7B,IAAI6E,EAAc,CACd,CACIvE,KAAM,QACN6C,IAAK,QAET,CACI7C,KAAM,aACN6C,IAAK,2kCACLS,OAAQ,s1FAEZ,CACItD,KAAM,MACNqD,WAAW,EACXR,IAAK,OACLS,OAAQ,kCAEZ,CACItD,KAAM,+BACN6C,IAAK,oCACLS,OAAQ,8EAEZ,CACItD,KAAM,YACN6C,IAAK,muBACLS,OAAQ,+cAEZ,CACItD,KAAM,0BACN6C,IAAK,QACLS,OAAQ,oHAEZ,CACItD,KAAM,YACN6C,IAAK,wrBACLS,OAAQ,ohBAEZ,CACItD,KAAM,cACN6C,IAAK,gCAKb0B,EAAY9C,KAAK,CACbzB,KAAM,WAGN4D,UAAW,OAGf/H,EAAQkI,eAAeQ,KAIzB,IAAIC,EAAE,CAAC,SAASlI,EAAQhB,EAAOD;;;;;;;AAQjCC,EAAOD,QAAU,SAASQ,GACtB,aAWA,IAAKA,EAAQkI,eACT,MAAM,IAAIrE,eAAe,sDAG7B7D,EAAQkI,eAAe,CACnB,CACI/D,KAAM,QACNsD,OAAQ,kDAEZ,CACItD,KAAM,OACNsD,OAAQ,mDAEZ,CACItD,KAAM,wBACNsD,OAAQ,yBAEZ,CACItD,KAAM,SACN6C,IAAK,gEACLS,OAAQ,wWAEZ,CACItD,KAAM,WACN6C,IAAK,oBAET,CACI7C,KAAM,UACNsD,OAAQ,sCAEZ,CACItD,KAAM,WACN6C,IAAK,UAET,CACI7C,KAAM,QACN6C,IAAK,MACLS,OAAQ,yBAEZ,CACItD,KAAM,YACNsD,OAAQ,sCAEZ,CACItD,KAAM,QACN6C,IAAK,UAET,CACI7C,KAAM,UACN6C,IAAK,uCAET,CACI7C,KAAM,YACNsD,OAAQ,gEAEZ,CACItD,KAAM,WACN6C,IAAK,YAET,CACI7C,KAAM,SACNsD,OAAQ,4CAEZ,CACItD,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,WACN6C,IAAK,SAET,CACI7C,KAAM,QACN6C,IAAK,OAET,CACI7C,KAAM,sBACN6C,IAAK,UAET,CACI7C,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,qBACNsD,OAAQ,+BAEZ,CACItD,KAAM,SACNsD,OAAQ,sCAEZ,CACItD,KAAM,OACN6C,IAAK,gBAET,CACI7C,KAAM,WACN6C,IAAK,aAET,CACI7C,KAAM,SACN6C,IAAK,6OACLS,OAAQ,i9BAEZ,CACItD,KAAM,SACN6C,IAAK,aAET,CACI7C,KAAM,YACNsD,OAAQ,yEAEZ,CACItD,KAAM,UACNsD,OAAQ,oEAEZ,CACItD,KAAM,WACN6C,IAAK,uBAET,CACI7C,KAAM,UACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACN6C,IAAK,gBAET,CACI7C,KAAM,WACNsD,OAAQ,6EAEZ,CACItD,KAAM,uBACNsD,OAAQ,+CAEZ,CACItD,KAAM,UACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACN6C,IAAK,gGAET,CACI7C,KAAM,WACN6C,IAAK,oBAET,CACI7C,KAAM,aACN6C,IAAK,SACLS,OAAQ,4EAEZ,CACItD,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACNsD,OAAQ,8LAEZ,CACItD,KAAM,QACN6C,IAAK,kFACLS,OAAQ,qDAEZ,CACItD,KAAM,WACN6C,IAAK,yCAET,CACI7C,KAAM,WACN6C,IAAK,yCAET,CACI7C,KAAM,MACN6C,IAAK,gCACLS,OAAQ,iNAEZ,CACItD,KAAM,SACN6C,IAAK,6CAET,CACI7C,KAAM,UACN6C,IAAK,OAET,CACI7C,KAAM,SACNsD,OAAQ,kDAEZ,CACItD,KAAM,SACN6C,IAAK,2BAET,CACI7C,KAAM,WACN6C,IAAK,SACLS,OAAQ,SAEZ,CACItD,KAAM,mBACNsD,OAAQ,sCAEZ,CACItD,KAAM,YACN6C,IAAK,oDACLS,OAAQ,2GAEZ,CACItD,KAAM,wBACNsD,OAAQ,sCAEZ,CACItD,KAAM,yBACNsD,OAAQ,sCAEZ,CACItD,KAAM,WACN6C,IAAK,YAET,CACI7C,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACN6C,IAAK,0CAET,CACI7C,KAAM,WACN6C,IAAK,wBACLS,OAAQ,MAEZ,CACItD,KAAM,WACN6C,IAAK,QAET,CACI7C,KAAM,aACNsD,OAAQ,mHAEZ,CACItD,KAAM,QACN6C,IAAK,gBAET,CACI7C,KAAM,SACNsD,OAAQ,sCAEZ,CACItD,KAAM,YACNsD,OAAQ,sCAEZ,CACItD,KAAM,MACN6C,IAAK,2CAET,CACI7C,KAAM,QACN6C,IAAK,oFAET,CACI7C,KAAM,SACN6C,IAAK,aAET,CACI7C,KAAM,QACN6C,IAAK,iBAET,CACI7C,KAAM,WACNsD,OAAQ,mDAEZ,CACItD,KAAM,WACNsD,OAAQ,sGAEZ,CACItD,KAAM,OACN6C,IAAK,OAET,CACI7C,KAAM,SACNsD,OAAQ,yBAEZ,CACItD,KAAM,SACNsD,OAAQ,+BAEZ,CACItD,KAAM,WACNsD,OAAQ,yBAEZ,CACItD,KAAM,YACN6C,IAAK,+BAET,CACI7C,KAAM,UACN6C,IAAK,QAET,CACI7C,KAAM,aACNsD,OAAQ,sCAEZ,CACItD,KAAM,UACNsD,OAAQ,mDAEZ,CACItD,KAAM,eACN6C,IAAK,aAET,CACI7C,KAAM,gBACNsD,OAAQ,sCAEZ,CACItD,KAAM,mBACNsD,OAAQ,mDAEZ,CACItD,KAAM,uBACNsD,OAAQ,yBAEZ,CACItD,KAAM,OACNsD,OAAQ,mDAEZ,CACItD,KAAM,OACNsD,OAAQ,sCAEZ,CACItD,KAAM,YACN6C,IAAK,kBACLS,OAAQ,yBAEZ,CACItD,KAAM,MACNsD,OAAQ,kDAEZ,CACItD,KAAM,UACNsD,OAAQ,sEAEZ,CACItD,KAAM,UACN6C,IAAK,aAET,CACI7C,KAAM,YACNsD,OAAQ,sCAEZ,CACItD,KAAM,cACN6C,IAAK,eAET,CACI7C,KAAM,OACNsD,OAAQ,qCAEZ,CACItD,KAAM,MACN6C,IAAK,OAET,CACI7C,KAAM,QACN6C,IAAK,OAET,CACI7C,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,gBACNsD,OAAQ,mDAEZ,CACItD,KAAM,aACNsD,OAAQ,yBAEZ,CACItD,KAAM,oBACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACNsD,OAAQ,yBAEZ,CACItD,KAAM,cACNsD,OAAQ,sCAEZ,CACItD,KAAM,oBACNsD,OAAQ,yBAEZ,CACItD,KAAM,aACNsD,OAAQ,yBAEZ,CACItD,KAAM,QACN6C,IAAK,yCAET,CACI7C,KAAM,QACNsD,OAAQ,sCAEZ,CACItD,KAAM,UACNsD,OAAQ,sCAEZ,CACItD,KAAM,eACNsD,OAAQ,6EAEZ,CACItD,KAAM,YACNsD,OAAQ,yBAEZ,CACItD,KAAM,cACNsD,OAAQ,yBAEZ,CACItD,KAAM,WACN6C,IAAK,OAET,CACI7C,KAAM,aACNsD,OAAQ,+BAEZ,CACItD,KAAM,kBACNsD,OAAQ,mDAEZ,CACItD,KAAM,SACN6C,IAAK,QAET,CACI7C,KAAM,QACN6C,IAAK,UAET,CACI7C,KAAM,YACN6C,IAAK,UAET,CACI7C,KAAM,aACN6C,IAAK,UAET,CACI7C,KAAM,UACNsD,OAAQ,sCAEZ,CACItD,KAAM,UACNsD,OAAQ,yBAEZ,CACItD,KAAM,UACNsD,OAAQ,sCAEZ,CACItD,KAAM,cACNsD,OAAQ,mDAEZ,CACItD,KAAM,UACN6C,IAAK,gCACLS,OAAQ,yBAEZ,CACItD,KAAM,eACNsD,OAAQ,sCAEZ,CACItD,KAAM,YACN6C,IAAK,UAET,CACI7C,KAAM,eACN6C,IAAK,OAET,CACI7C,KAAM,SACN6C,IAAK,aAET,CACI7C,KAAM,UACN6C,IAAK,UAET,CACI7C,KAAM,WACN6C,IAAK,YAET,CACI7C,KAAM,SACN6C,IAAK,UAET,CACI7C,KAAM,WACN6C,IAAK,mBAET,CACI7C,KAAM,WACN6C,IAAK,UAET,CACI7C,KAAM,QACNsD,OAAQ,sCAEZ,CACItD,KAAM,QACN6C,IAAK,0CAET,CACI7C,KAAM,SACNsD,OAAQ,iFAEZ,CACItD,KAAM,SACN6C,IAAK,0CAET,CACI7C,KAAM,SACN6C,IAAK,OAET,CACI7C,KAAM,OACN6C,IAAK,UAET,CACI7C,KAAM,UACN6C,IAAK,wBAET,CACI7C,KAAM,WACN6C,IAAK,UAET,CACI7C,KAAM,UACNsD,OAAQ,sCAEZ,CACItD,KAAM,WACNsD,OAAQ,+BAEZ,CACItD,KAAM,MACN6C,IAAK,OAET,CACI7C,KAAM,cACNsD,OAAQ,+BAEZ,CACItD,KAAM,KACN6C,IAAK,cAMf,IAAI4B,EAAE,CAAC,SAASnI,EAAQhB,EAAOD,GACjC,IAAIQ,EAAUS,EAAQ,aAEtBA,EAAQ,iBAARA,CAA0BT,GAC1BS,EAAQ,0BAARA,CAAmCT,GACnCS,EAAQ,wBAARA,CAAiCT,GACjCS,EAAQ,0BAARA,CAAmCT,GACnCS,EAAQ,8BAARA,CAAuCT,GACvCS,EAAQ,8BAARA,CAAuCT,GACvCS,EAAQ,2BAARA,CAAoCT,GAEpCP,EAAOD,QAAUQ,GAEf,CAAC6I,iBAAiB,EAAEC,0BAA0B,EAAEC,wBAAwB,EAAEC,0BAA0B,EAAEC,8BAA8B,EAAEC,8BAA8B,EAAEC,2BAA2B,EAAEC,YAAY,IAAIC,EAAE,CAAC,SAAS5I,EAAQhB,EAAOD;;;;;;AAOhP,aAcA,IAEI8J,EAAW,CACX7B,QAAQ,EACR8B,SAAS,GAGTC,EAAQ,CACRlH,KAAMoD,OAAO+D,UAAUnH,KACvBb,KAAMiE,OAAO+D,UAAUhI,KACvBqC,MAAO4F,OAAOD,UAAU3F,MACxBpC,QAASgI,OAAOD,UAAU/H,QAC1BiI,MAAOD,OAAOD,UAAUE,OAGxBC,EAAQ,GAERC,EAAa,GAEbC,EAAe,GAEfC,EAAS,GAKTC,EAAe,CAEfC,QAAW,yKAEXC,MAAS,6GAGTC,EAAmB,mCAEnBC,OAAqDC,IAAnCb,EAAMlH,KAAKxB,KAAK,OAAQ,IAAI,GAE9CwJ,OAA6BD,IAAd,IAAIvI,MAEnByI,EAAW,GAAGA,SAElB,SAASC,EAAcC,GAKnB,IAAIC,GAAc,EAClB,IAGI,IAAIhF,OAAO,GAAI+E,GACjB,MAAOE,GACLD,GAAc,EAElB,OAAOA,EAGX,IAAIE,EAAaJ,EAAc,KAE3BK,EAAaL,EAAc,KAE3BM,EAAkB,CAClBC,GAAG,EACHrK,GAAG,EACHwG,GAAG,EACH3G,EAAGqK,EACHI,EAAGH,GAgBP,SAASI,EAAQC,EAAOlJ,EAAcmJ,EAASC,EAAQC,GACnD,IAAI5I,EAMJ,GAJAyI,EAAgB,QAAI,CAChBlJ,aAAcA,GAGdqJ,EACA,OAAOH,EAIX,GAAIA,EAAMI,UACNJ,EAAMI,UAAYtL,EAAQyJ,eAE1B,IAAKhH,KAAKzC,EAAQyJ,UAIdyB,EAAMzI,GAAKzC,EAAQyJ,UAAUhH,GAQrC,OAJAyI,EAAgB,QAAEjJ,OAASkJ,EAE3BD,EAAgB,QAAEpJ,MAAQsJ,EAASA,EAAOzB,MAAM,IAAI4B,OAAOC,KAAK,IAAMJ,EAE/DF,EAUX,SAASO,EAAelH,GACpB,OAAOiF,EAAM9H,QAAQZ,KAAKyD,EAAK,yBAA0B,IAqB7D,SAASmH,EAAUR,EAAOxG,GACtB,IAAK1E,EAAQ+B,SAASmJ,GAClB,MAAM,IAAIS,UAAU,wBAGxB,IAAIC,EAAQV,EAAgB,SAAK,GAC7BpJ,EA6FR,SAAwBoJ,GACpB,OAAOZ,EACHY,EAAMpJ,MAIN0H,EAAMlH,KAAKxB,KAAK,eAAgB4E,OAAO+D,UAAUc,SAASzJ,KAAKoK,IAAQ,GAnG/DW,CAAeX,GACvBY,EAAa,GACbC,EAAgB,GAChBC,EAAgB,KAChBC,EAAe,KAyCnB,OAvCAvH,EAAUA,GAAW,IAETwH,UAAUH,GAAiB,KACnCrH,EAAQyH,UAAUJ,GAAiB,KACnCA,IACAjK,EAAQ0H,EAAM9H,QAAQZ,KAAKgB,EAAO,IAAI4D,OAAO,IAAMqG,EAAgB,KAAM,KAAM,KAG/ErH,EAAQ0H,OAAON,GAAc,KAC7BpH,EAAQ2H,OAAOP,GAAc,KAC7BA,IACAhK,EAAQ2J,EAAe3J,EAAQgK,IAG9BpH,EAAQ2G,sBACYhB,IAAjBuB,EAAM3J,SACN+J,EAAgBJ,EAAM3J,QAIP,MAAf2J,EAAM9J,QAGNmK,EAAeH,EAAaL,EAAeG,EAAM9J,MAAQgK,GAAcF,EAAM9J,QAQrFoJ,EAAQD,EACJ,IAAIvF,OAAOhB,EAAQzC,QAAUiJ,EAAMjJ,OAAQH,GAuEnD,SAAyBoJ,GACrB,SAAUA,EAAgB,UAAKA,EAAgB,QAAElJ,cAvE7CsK,CAAgBpB,GAASU,EAAM5J,aAAa6D,MAAM,GAAK,KACvDmG,EACAC,EACAvH,EAAQ2G,gBAahB,SAASrF,EAAIE,GACT,OAAOqG,SAASrG,EAAK,IAczB,SAASsG,EAA4B1I,EAAO8D,EAAO9F,GAC/C,MAE4C,MAAxCgC,EAAM2I,MAAM9F,OAAO7C,EAAM6B,MAAQ,IACqB,MAAtD7B,EAAM2I,MAAM9F,OAAO7C,EAAM6B,MAAQ7B,EAAM,GAAG/C,SAkFlD,SAAuBO,EAASoL,EAAK5K,EAAO6K,GACxC,IAEIC,EAAmB9K,EAAMM,QAAQ,MAAQ,EAEzC,CAAC,MAHoB,YADE,mBAMvB,CANuB,mBAO3B,OAAOoH,EAAM/H,KAAKX,KACd,IAAI4E,OAAO,OAASkH,EAAiBpB,KAAK,KAAO,QAAUmB,EAAgB,KAC3ErL,EAAQuE,MAAM6G,IA1FdG,CAAc/I,EAAM2I,MAAO3I,EAAM6B,MAAQ7B,EAAM,GAAG/C,OAAQe,EAAO,0BAE1D,GAKJ,OAqCX,SAASoE,EAAIF,GACT,OAAOuG,SAASvG,EAAK,IAAIuE,SAAS,IAWtC,SAASnI,EAAQ0K,EAAOlL,GACpB,IACIlB,EADAqM,EAAMD,EAAM/L,OAGhB,IAAKL,EAAI,EAAGA,EAAIqM,IAAOrM,EACnB,GAAIoM,EAAMpM,KAAOkB,EACb,OAAOlB,EAIf,OAAQ,EAoCZ,SAASsM,EAAOpL,EAAOqL,GACnB,OAAO1C,EAASzJ,KAAKc,KAAW,WAAaqL,EAAO,IAUxD,SAAS7G,EAAK7B,GACV,KAAOA,EAAIxD,OAAS,GAChBwD,EAAM,IAAMA,EAEhB,OAAOA,EAkDX,SAAS2I,EAAetL,GACpB,IAAI8C,EAAU,GAEd,OAAIsI,EAAOpL,EAAO,WACd5B,EAAQiH,QAAQrF,EAAO,WAAW,SAASkC,GACvCY,EAAQZ,IAAS,KAGdY,GAGJ9C,EASX,SAASuL,EAAa1C,GAClB,IAAK,UAAUhJ,KAAKgJ,GAChB,MAAM,IAAI9J,MAAM,+CAGpBmK,EAAgBL,IAAQ,EAe5B,SAAS2C,EAAU9L,EAASQ,EAAO4K,EAAK9E,EAAOyF,GAQ3C,IAPA,IAGIvJ,EACA5D,EAJAQ,EAAIqJ,EAAOhJ,OACXkH,EAAW3G,EAAQqF,OAAO+F,GAC1BY,EAAS,KAKN5M,KAEH,MADAR,EAAI6J,EAAOrJ,IAEJuH,UAAY/H,EAAE+H,WAAaA,GAC7B/H,EAAE0H,QAAUA,GAAqB,QAAZ1H,EAAE0H,OACvB1H,EAAEuK,OAAmC,IAA3B3I,EAAMM,QAAQlC,EAAEuK,SAK/B3G,EAAQ9D,EAAQsC,KAAKhB,EAASpB,EAAEgL,MAAOwB,EAAK,WACjC,CACPY,EAAS,CACLC,YAAazJ,EAAM,GAAG/C,OACtBoC,OAAQjD,EAAEsN,QAAQ1M,KAAKuM,EAASvJ,EAAO8D,EAAO9F,GAC9C2L,QAASvN,EAAEuN,SAGf,MAIR,OAAOH,EAWX,SAASI,EAAUC,GACfrE,EAAS7B,OAASkG,EAStB,SAASC,EAAWD,GAChBjI,OAAO+D,UAAUnH,MAAQqL,EAAK/D,EAAQJ,GAAOlH,KAC7CoD,OAAO+D,UAAUhI,MAAQkM,EAAK/D,EAAQJ,GAAO/H,KAC7CiI,OAAOD,UAAU3F,OAAS6J,EAAK/D,EAAQJ,GAAO1F,MAC9C4F,OAAOD,UAAU/H,SAAWiM,EAAK/D,EAAQJ,GAAO9H,QAChDgI,OAAOD,UAAUE,OAASgE,EAAK/D,EAAQJ,GAAOG,MAE9CL,EAASC,QAAUoE,EAWvB,SAASE,EAASjM,GAEd,GAAa,MAATA,EACA,MAAM,IAAI+J,UAAU,8CAGxB,OAAO/J,EAyCX,SAAS5B,EAAQsB,EAASQ,GACtB,GAAI9B,EAAQ+B,SAAST,GAAU,CAC3B,QAAc+I,IAAVvI,EACA,MAAM,IAAI6J,UAAU,6CAExB,OAAOD,EAAUpK,GAgBrB,GAZAA,OAAsB+I,IAAZ/I,EAAwB,GAAKoI,OAAOpI,GAC9CQ,OAAkBuI,IAAVvI,EAAsB,GAAK4H,OAAO5H,GAEtC9B,EAAQ8N,YAAY,YAAqC,IAAxBhM,EAAMM,QAAQ,OAE/CN,GAAS,KAGRgI,EAAaxI,KACdwI,EAAaxI,GAAW,KAGvBwI,EAAaxI,GAASQ,GAAQ,CAiB/B,IAhBA,IAOIwL,EAPAD,EAAU,CACVf,iBAAiB,EACjBtK,aAAc,IAEd4F,EAriBO,UAsiBPzE,EAAS,GACTuJ,EAAM,EAINqB,EAlOZ,SAAsBzM,EAASQ,GAC3B,IAAIpB,EAGJ,GAAI+K,EAAe3J,KAAWA,EAC1B,MAAM,IAAIgG,YAAY,gCAAkChG,GAc5D,IAVAR,EAAUkI,EAAM9H,QAAQZ,KAAKQ,EAAS,mBAAmB,SAAS8B,EAAIC,GAClE,GAAImG,EAAM/H,KAAKX,KAAK,OAAQuC,GACxB,MAAM,IAAIyE,YAAY,2CAA6C1E,GAIvE,OADAtB,EAAQ2J,EAAe3J,EAAQuB,GACxB,MAIN3C,EAAI,EAAGA,EAAIoB,EAAMf,SAAUL,EAC5B,IAAKoK,EAAgBhJ,EAAM6E,OAAOjG,IAC9B,MAAM,IAAIoH,YAAY,sBAAwBhG,EAAM6E,OAAOjG,IAInE,MAAO,CACHY,QAASA,EACTQ,MAAOA,GAuMOkM,CAAa1M,EAASQ,GAChCmM,EAAiBF,EAAQzM,QACzB4M,EAAeH,EAAQjM,MAIpB4K,EAAMuB,EAAelN,QAAQ,CAChC,IAEIuM,EAASF,EAAUa,EAAgBC,EAAcxB,EAAK9E,EAAOyF,KAG/CC,EAAOG,UACjBQ,EAAiBA,EAAepI,MAAM,EAAG6G,GACrCY,EAAOnK,OACP8K,EAAepI,MAAM6G,EAAMY,EAAOC,oBAErCD,GAAUA,EAAOG,SAE1B,GAAIH,EACAnK,GAAUmK,EAAOnK,OACjBuJ,GAAQY,EAAOC,aAAe,MAC3B,CAEH,IAAIY,EAAQnO,EAAQsC,KAAK2L,EAAgBjE,EAAapC,GAAQ8E,EAAK,UAAU,GAC7EvJ,GAAUgL,EACVzB,GAAOyB,EAAMpN,OACC,MAAVoN,GAtkBD,YAskBkBvG,EACjBA,EAtkBH,QAukBoB,MAAVuG,GAvkBV,UAukB2BvG,IACxBA,EAzkBD,YA8kBXkC,EAAaxI,GAASQ,GAAS,CAI3BR,QAASkI,EAAM9H,QAAQZ,KAAKqC,EAAQ,gBAAiB,QAErDrB,MAAO0H,EAAM9H,QAAQZ,KAAKoN,EAAc,aAAc,IAEtDE,SAAUf,EAAQf,gBAAkBe,EAAQrL,aAAe,MAInE,IAAIqM,EAAYvE,EAAaxI,GAASQ,GACtC,OAAOmJ,EACH,IAAIvF,OAAO2I,EAAU/M,QAAS+M,EAAUvM,OACxCuM,EAAUD,SACV9M,EACAQ,GAKR9B,EAAQyJ,UAAY,IAAI/D,OAcxB1F,EAAQsO,QAAU,QAOlBtO,EAAQuC,gBAAkBkJ,EAC1BzL,EAAQuO,eAAiB/D,EACzBxK,EAAQiG,KAAOD,EACfhG,EAAQmG,KAAOD,EACflG,EAAQqG,MAAQD,EAmDhBpG,EAAQ2H,SAAW,SAASuD,EAAOsC,EAAS9I,GAExC,IACIhE,EADAsH,GADJtD,EAAUA,GAAW,IACOsD,cAO5B,GAJItD,EAAQ+F,MACR0C,EAAazI,EAAQ+F,MAGrBzC,EAEA,IADAA,EAAgBwB,EAAMG,MAAM7I,KAAKkH,EAAe,IAC3CtH,EAAI,EAAGA,EAAIsH,EAAcjH,SAAUL,EACpCyM,EAAanF,EAActH,IAKnCqJ,EAAOnE,KAAK,CACRsF,MAAOQ,EAAUR,EAAO,CACpBkB,MAAM,EACNC,KAAMxB,EACNQ,gBAAgB,IAEpBmC,QAASA,EACT5F,MAAOlD,EAAQkD,OAxsBJ,UAysBX6C,KAAM/F,EAAQ+F,KACdgD,QAAS/I,EAAQ+I,QACjBxF,SAAUvD,EAAQuD,WAKtBjI,EAAQoI,MAAMC,MAAM,aAiBxBrI,EAAQoI,MAAQ,SAAS9G,EAASQ,GAI9B,OAHK+H,EAAWvI,KACZuI,EAAWvI,GAAW,IAEnBuI,EAAWvI,GAASQ,KACvB+H,EAAWvI,GAASQ,GAAS9B,EAAQsB,EAASQ,KAKtD9B,EAAQoI,MAAMC,MAAQ,SAASmG,GACT,aAAdA,EAEA1E,EAAe,GAGfD,EAAa,IAgBrB7J,EAAQyF,OAAS,SAASlB,GACtB,OAAOiF,EAAM9H,QAAQZ,KAAK+M,EAAStJ,GAAM,4BAA6B,SAgC1EvE,EAAQsC,KAAO,SAASiC,EAAK2G,EAAOwB,EAAK1H,GACrC,IACIqH,EAEAvI,EACA2K,EAJAC,EAAW,IAEXC,GAAQ,EA8CZ,OA1CAtC,EAAOxB,MAAiB7F,GAAWkG,EAAMlG,SAAqB,IAAXA,IAE/C0J,GAAY,IACL1J,IAMP2J,GAAQ,EACRD,GAAY,SAGhBxD,EAAgB,QAAIA,EAAgB,SAAK,GAazCwB,EAAMA,GAAO,GAVb+B,EAAKvD,EAAgB,QAAEwD,KACnBxD,EAAgB,QAAEwD,GAAYhD,EAAUR,EAAO,CAC3CkB,MAAM,EACNC,KAAMA,EACNpK,OAAQ0M,EAAQzD,EAAMjJ,OAAS,WAAQoI,EACvC8B,SAAoB,IAAXnH,EACTqG,gBAAgB,MAKrBuD,UAAYlC,EAGf5I,EAAQ8F,EAAMtH,KAAKxB,KAAK2N,EAAIlK,GAIxBoK,GAAS7K,GAAyB,KAAhBA,EAAM+K,QACxB/K,EAAQ,MAGRoH,EAAMrL,SACNqL,EAAM0D,UAAY9K,EAAQ2K,EAAGG,UAAY,GAGtC9K,GAyBX9D,EAAQiH,QAAU,SAAS1C,EAAK2G,EAAO4D,GAKnC,IAJA,IAEIhL,EAFA4I,EAAM,EACNhM,GAAK,EAGDoD,EAAQ9D,EAAQsC,KAAKiC,EAAK2G,EAAOwB,IAOrCoC,EAAShL,IAASpD,EAAG6D,EAAK2G,GAE1BwB,EAAM5I,EAAM6B,OAAS7B,EAAM,GAAG/C,QAAU,IAiBhDf,EAAQ+O,UAAY,SAAS7D,GACzB,OAAOQ,EAAUR,EAAO,CAACkB,MAAM,KAuBnCpM,EAAQgP,QAAU,SAAStK,GACvBA,EAAUwI,EAAexI,IAEpB4E,EAAS7B,QAAU/C,EAAQ+C,QAC5BiG,GAAU,IAGTpE,EAASC,SAAW7E,EAAQ6E,SAC7BqE,GAAW,IAgBnB5N,EAAQ8N,YAAc,SAASmB,GAC3B,QAAU3F,EAAS2F,IAiBvBjP,EAAQ+B,SAAW,SAASH,GACxB,MAAgC,oBAAzB2I,EAASzJ,KAAKc,IA+BzB5B,EAAQ8D,MAAQ,SAASS,EAAK2G,EAAOtD,GACjC,IAEI0F,EACAmB,EAHA5O,EAAUqL,EAAMrL,QAAoB,QAAV+H,GAA8B,QAAVA,EAC9C8G,GAAa7O,EAAS,IAAM,KAAOqL,EAAMlG,OAAS,IAAM,KAAQ,OAyBpE,OArBAkG,EAAgB,QAAIA,EAAgB,SAAK,GAGzCuD,EAAKvD,EAAgB,QAAEwD,KACnBxD,EAAgB,QAAEwD,GAAYhD,EAAUR,EAAO,CAC3CkB,OAAQvM,EACRqM,QAAmB,QAAVtE,EACTyD,gBAAgB,KAIxBiC,EAAS9D,EAAM1F,MAAMhD,KAAK+M,EAAStJ,GAAMkK,GAErCvD,EAAMrL,SACNqL,EAAM0D,UACS,QAAVhH,GAAmB0F,EAEfA,EAAO3H,MAAQ2H,EAAO,GAAGvM,OAAU,GAIzClB,EAAUyN,GAAU,GAAOA,GAAUA,EAAO,IA+BvDtN,EAAQkP,WAAa,SAAS3K,EAAK4K,GAC/B,OAAQ,SAASC,EAAaC,EAAQC,GAClC,IAAIhI,EAAO6H,EAAMG,GAAOpE,MAAQiE,EAAMG,GAAS,CAACpE,MAAOiE,EAAMG,IACzDC,EAAU,GAEd,SAASC,EAAS1L,GACd,GAAIwD,EAAKtD,QAAS,CAMd,KAAMF,EAAMpB,eAAe4E,EAAKtD,WAAasD,EAAKtD,QAAUF,EAAM/C,QAC9D,MAAM,IAAI8C,eAAe,qCAAuCyD,EAAKtD,SAGzEuL,EAAQ3J,KAAK9B,EAAMwD,EAAKtD,UAAY,SAEpCuL,EAAQ3J,KAAK9B,EAAM,IAI3B,IAAK,IAAIpD,EAAI,EAAGA,EAAI2O,EAAOtO,SAAUL,EACjCV,EAAQiH,QAAQoI,EAAO3O,GAAI4G,EAAK4D,MAAOsE,GAG3C,OAASF,IAAUH,EAAMpO,OAAS,GAAOwO,EAAQxO,OAE7CqO,EAAaG,EAASD,EAAQ,GAD9BC,EA1BD,CA4BL,CAAChL,GAAM,IAkDbvE,EAAQ0B,QAAU,SAAS6C,EAAKkL,EAAQC,EAAa9H,GACjD,IAII0F,EAJAqC,EAAU3P,EAAQ+B,SAAS0N,GAC3B5P,EAAU4P,EAAO5P,QAAoB,QAAV+H,GAA8B,QAAVA,EAC/C8G,GAAa7O,EAAS,IAAM,KAAO4P,EAAOzK,OAAS,IAAM,KAAQ,OACjE4K,EAAKH,EA2BT,OAxBIE,GACAF,EAAiB,QAAIA,EAAiB,SAAK,GAI3CG,EAAKH,EAAiB,QAAEf,KACpBe,EAAiB,QAAEf,GAAYhD,EAAU+D,EAAQ,CAC7CrD,OAAQvM,EACRqM,QAAmB,QAAVtE,EACTyD,gBAAgB,MAGjBxL,IACP+P,EAAK,IAAIlK,OAAO1F,EAAQyF,OAAOiE,OAAO+F,IAAU,MAIpDnC,EAAS1D,EAAMlI,QAAQZ,KAAK+M,EAAStJ,GAAMqL,EAAIF,GAE3CC,GAAWF,EAAO5P,SAElB4P,EAAOb,UAAY,GAGhBtB,GA2BXtN,EAAQ6P,YAAc,SAAStL,EAAKuL,GAChC,IAAIpP,EACAN,EAEJ,IAAKM,EAAI,EAAGA,EAAIoP,EAAa/O,SAAUL,EACnCN,EAAI0P,EAAapP,GACjB6D,EAAMvE,EAAQ0B,QAAQ6C,EAAKnE,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAG7C,OAAOmE,GA6BXvE,EAAQ2J,MAAQ,SAASpF,EAAKwL,EAAWC,GACrC,OAAOpG,EAAMD,MAAM7I,KAAK+M,EAAStJ,GAAMwL,EAAWC,IA0BtDhQ,EAAQyB,KAAO,SAAS8C,EAAK2G,EAAOwB,EAAK1H,GAErC,QAAShF,EAAQsC,KAAKiC,EAAK2G,EAAOwB,EAAK1H,IAuB3ChF,EAAQiQ,UAAY,SAASvL,GACzBA,EAAUwI,EAAexI,GAErB4E,EAAS7B,QAAU/C,EAAQ+C,QAC3BiG,GAAU,GAGVpE,EAASC,SAAW7E,EAAQ6E,SAC5BqE,GAAW,IAyBnB5N,EAAQmB,MAAQ,SAAS+O,EAAUpO,EAAO4C,GAEtC,IAEIyL,EACAnO,EAHAZ,GADJsD,EAAUA,GAAW,IACKtD,aAAe,KACrCgP,EAAc,EAIlB,SAASC,EAAQvM,EAAOC,EAAOC,GAC3B,IAAIG,EAAOnC,EAAaoO,EAAcD,GAGtC,GAAIpM,GAGA,KAFEqM,EAEEjM,EACA,MAAO,MAAQA,EAAO,SAGvB,GAAIH,EAEP,MAAO,OAASA,EAAUmM,GAG9B,OAAOrM,EAGX,IAAMkJ,EAAOkD,EAAU,WAAYA,EAASnP,OACxC,MAAM,IAAI4K,UAAU,sDAMxB,IAHA,IAEIrK,EAFAJ,EAAQ,8DACRiC,EAAS,GAEJzC,EAAI,EAAGA,EAAIwP,EAASnP,SAAUL,EACnCY,EAAU4O,EAASxP,GAEfV,EAAQ+B,SAAST,IACjB6O,EAAmBC,EACnBpO,EAAgBV,EAAkB,SAAKA,EAAkB,QAAEU,cAAiB,GAI5EmB,EAAOyC,KAAK4D,EAAM9H,QAAQZ,KAAKd,EAAQsB,EAAQW,QAAQA,OAAQf,EAAOmP,KAEtElN,EAAOyC,KAAK5F,EAAQyF,OAAOnE,IAInC,IAAIyO,EAA4B,SAAhB3O,EAAyB,GAAK,IAC9C,OAAOpB,EAAQmD,EAAOqI,KAAKuE,GAAYjO,IAgB3C8H,EAAMtH,KAAO,SAASiC,GAClB,IAEIJ,EACAsK,EACA/N,EAJA4P,EAAgBvQ,KAAK6O,UACrB9K,EAAQ0F,EAAMlH,KAAKiO,MAAMxQ,KAAMyQ,WAKnC,GAAI1M,EAAO,CAwBP,IApBKsG,GAAmBtG,EAAM/C,OAAS,GAAKqB,EAAQ0B,EAAO,KAAO,IAC9D2K,EAAK/C,EAAU3L,KAAM,CACjBmM,SAAS,EACTb,gBAAgB,IAIpB7B,EAAM9H,QAAQZ,KAAK4I,OAAOnF,GAAKsB,MAAM/B,EAAM6B,OAAQ8I,GAAI,WACnD,IACI/N,EADAqM,EAAMyD,UAAUzP,OAGpB,IAAKL,EAAI,EAAGA,EAAIqM,EAAM,IAAKrM,OACF2J,IAAjBmG,UAAU9P,KACVoD,EAAMpD,QAAK2J,OAOvBtK,KAAe,SAAKA,KAAe,QAAEiC,aAErC,IAAKtB,EAAI,EAAGA,EAAIoD,EAAM/C,SAAUL,GAC5ByD,EAAOpE,KAAe,QAAEiC,aAAatB,EAAI,MAErCoD,EAAMK,GAAQL,EAAMpD,IAM5BX,KAAKF,SAAWiE,EAAM,GAAG/C,QAAWhB,KAAK6O,UAAY9K,EAAM6B,QAC3D5F,KAAK6O,UAAY9K,EAAM6B,OAS/B,OALK5F,KAAKF,SAENE,KAAK6O,UAAY0B,GAGdxM,GAWX8F,EAAMnI,KAAO,SAAS8C,GAElB,QAASqF,EAAMtH,KAAKxB,KAAKf,KAAMwE,IAanCqF,EAAM9F,MAAQ,SAASoH,GACnB,IAAIoC,EAEJ,GAAKtN,EAAQ+B,SAASmJ,IAGf,GAAIA,EAAMrL,OAKb,OAJAyN,EAAS9D,EAAM1F,MAAMyM,MAAMxQ,KAAMyQ,WAEjCtF,EAAM0D,UAAY,EAEXtB,OANPpC,EAAQ,IAAIxF,OAAOwF,GASvB,OAAOtB,EAAMtH,KAAKxB,KAAKoK,EAAO2C,EAAS9N,QAiB3C6J,EAAMlI,QAAU,SAAS+N,EAAQC,GAC7B,IACIY,EACAtO,EACAsL,EAHAqC,EAAU3P,EAAQ+B,SAAS0N,GAwH/B,OAnHIE,GACIF,EAAiB,UACjBzN,EAAeyN,EAAiB,QAAEzN,cAGtCsO,EAAgBb,EAAOb,WAEvBa,GAAU,GAOVnC,EAHAN,EAAO0C,EAAa,YAGXlG,EAAM9H,QAAQZ,KAAK4I,OAAO3J,MAAO0P,GAAQ,WAC9C,IACI/O,EADA+P,EAAOD,UAEX,GAAIxO,EAKA,IAFAyO,EAAK,GAAK,IAAI/G,OAAO+G,EAAK,IAErB/P,EAAI,EAAGA,EAAIsB,EAAajB,SAAUL,EAC/BsB,EAAatB,KACb+P,EAAK,GAAGzO,EAAatB,IAAM+P,EAAK/P,EAAI,IAUhD,OAJIiP,GAAWF,EAAO5P,SAClB4P,EAAOb,UAAY6B,EAAKA,EAAK1P,OAAS,GAAK0P,EAAK,GAAG1P,QAGhD2O,EAAYa,WAAMlG,EAAWoG,MAK/BjH,EAAM9H,QAAQZ,KAAa,MAARf,KAAeA,KAAO2J,OAAO3J,MAAO0P,GAAQ,WAEpE,IAAIgB,EAAOD,UACX,OAAOhH,EAAM9H,QAAQZ,KAAK4I,OAAOgG,GAAcvF,GAAkB,SAAS/G,EAAIC,EAAIC,GAC9E,IAAInD,EAEJ,GAAIkD,EAAI,CAWJ,IADAlD,GAAKkD,IACIoN,EAAK1P,OAAS,EACnB,OAAO0P,EAAKtQ,IAAM,GAItB,IADAA,EAAI6B,EAAeI,EAAQJ,EAAcqB,IAAO,GACxC,EACJ,MAAM,IAAIyE,YAAY,oCAAsC1E,GAEhE,OAAOqN,EAAKtQ,EAAI,IAAM,GAG1B,GAAW,MAAPmD,EACA,MAAO,IAEX,GAAW,MAAPA,GAAsB,IAAPA,EACf,OAAOmN,EAAK,GAEhB,GAAW,MAAPnN,EACA,OAAOmN,EAAKA,EAAK1P,OAAS,GAAG8E,MAAM,EAAG4K,EAAKA,EAAK1P,OAAS,IAE7D,GAAW,MAAPuC,EACA,OAAOmN,EAAKA,EAAK1P,OAAS,GAAG8E,MAAM4K,EAAKA,EAAK1P,OAAS,GAAK0P,EAAK,GAAG1P,QAgBvE,GAbAuC,GAAMA,GAaDoN,MAAMpN,GAAK,CACZ,GAAIA,EAAKmN,EAAK1P,OAAS,EACnB,MAAM,IAAI+G,YAAY,oCAAsC1E,GAEhE,OAAOqN,EAAKnN,IAAO,GAGvB,MAAM,IAAIwE,YAAY,iBAAmB1E,SAKjDuM,IACIF,EAAO5P,OAEP4P,EAAOb,UAAY,EAGnBa,EAAOb,UAAY0B,GAIpBhD,GAYX1D,EAAMD,MAAQ,SAASoG,EAAWC,GAC9B,IAAKhQ,EAAQ+B,SAASgO,GAElB,OAAOvG,EAAMG,MAAM4G,MAAMxQ,KAAMyQ,WAGnC,IAIIG,EAJApM,EAAMmF,OAAO3J,MACboD,EAAS,GACTmN,EAAgBP,EAAUnB,UAC1BgC,EAAgB,EAkCpB,OAvBAZ,QAAmB3F,IAAV2F,GAAuB,EAAIA,KAAW,EAE/ChQ,EAAQiH,QAAQ1C,EAAKwL,GAAW,SAASjM,GAEhCA,EAAM6B,MAAQ7B,EAAM,GAAG/C,OAAU6P,IAClCzN,EAAOyC,KAAKrB,EAAIsB,MAAM+K,EAAe9M,EAAM6B,QACvC7B,EAAM/C,OAAS,GAAK+C,EAAM6B,MAAQpB,EAAIxD,QACtC8P,MAAMpH,UAAU7D,KAAK2K,MAAMpN,EAAQW,EAAM+B,MAAM,IAEnD8K,EAAa7M,EAAM,GAAG/C,OACtB6P,EAAgB9M,EAAM6B,MAAQgL,MAIlCC,IAAkBrM,EAAIxD,OACjByI,EAAM/H,KAAKX,KAAKiP,EAAW,MAAOY,GACnCxN,EAAOyC,KAAK,IAGhBzC,EAAOyC,KAAKrB,EAAIsB,MAAM+K,IAG1Bb,EAAUnB,UAAY0B,EACfnN,EAAOpC,OAASiP,EAAQ7M,EAAO0C,MAAM,EAAGmK,GAAS7M,GAY5DnD,EAAQ2H,SACJ,kGACA,SAAS7D,EAAO8D,GAEZ,GAAiB,MAAb9D,EAAM,IAzpDC,YAypDa8D,EACpB,OAAO9D,EAAM,GAEjB,MAAM,IAAIgE,YAAY,kBAAoBhE,EAAM,MAEpD,CACI8D,MAAO,MACPK,SAAU,OAYlBjI,EAAQ2H,SACJ,sBACA,SAAS7D,EAAO8D,EAAO9F,GACnB,IAAIlB,EAAOoF,EAAIlC,EAAM,IACrB,GAAIlD,EAAO,QACP,MAAM,IAAIkH,YAAY,8BAAgChE,EAAM,IAEhE,GAAIlD,GAAQ,MAGR,MAAO,MAAQwF,EAAKF,EAAItF,IAG5B,GAAIgK,GAAc9I,EAAMM,QAAQ,MAAQ,EACpC,OAAO0B,EAAM,GAEjB,MAAM,IAAIgE,YAAY,kEAE1B,CACIF,MAAO,MACPK,SAAU,OASlBjI,EAAQ2H,SACJ,aACA,SAAS7D,GAGL,OAAOA,EAAM,GAAK,WAAa,WAEnC,CAACmE,SAAU,MAOfjI,EAAQ2H,SACJ,eACA6E,EACA,CAACvE,SAAU,MAMfjI,EAAQ2H,SACJ,iBACA6E,EACA,CAAC/B,KAAM,MAMXzK,EAAQ2H,SACJ,MACA,WACI,MAAO,aAEX,CACI8C,KAAM,IACNxC,SAAU,MAQlBjI,EAAQ2H,SACJ,iBACA,SAAS7D,GAEL,IAAI6B,EAAQ+K,MAAM5M,EAAM,IAAO1B,EAAQrC,KAAKiC,aAAc8B,EAAM,IAAM,GAAMA,EAAM,GAC9EgN,EAAWhN,EAAM6B,MAAQ7B,EAAM,GAAG/C,OACtC,IAAK4E,GAASA,EAAQ5F,KAAKiC,aAAajB,OACpC,MAAM,IAAI+G,YAAY,oCAAsChE,EAAM,IAItE,MAAO,KAAO6B,GACVmL,IAAahN,EAAM2I,MAAM1L,QAAU2P,MAAM5M,EAAM2I,MAAM9F,OAAOmK,IACxD,GAAK,UAGjB,CAAC7I,SAAU,OAQfjI,EAAQ2H,SACJ,WACA,SAAS7D,EAAO8D,GACZ,KAnxDW,YAqxDHA,GACA,SAASnG,KAAKqC,EAAM,MACnBA,EAAM,IAAM/D,KAAKiC,aAAajB,SAEtB,MAAb+C,EAAM,GAEN,MAAM,IAAIgE,YAAY,+DAClBhE,EAAM,IAEd,OAAOA,EAAM,KAEjB,CACI8D,MAAO,MACPK,SAAU,OAWlBjI,EAAQ2H,SACJ,oBACA,SAAS7D,GAGL,IAAK4M,MAAM5M,EAAM,IACb,MAAM,IAAIgE,YAAY,sCAAwChE,EAAM,IAExE,GAAiB,WAAbA,EAAM,IAAgC,cAAbA,EAAM,GAC/B,MAAM,IAAIgE,YAAY,4CAA8ChE,EAAM,IAE9E,GAAI1B,EAAQrC,KAAKiC,aAAc8B,EAAM,KAAO,EACxC,MAAM,IAAIgE,YAAY,4CAA8ChE,EAAM,IAI9E,OAFA/D,KAAKiC,aAAa4D,KAAK9B,EAAM,IAC7B/D,KAAKuM,iBAAkB,EAChB,MAEX,CAACrE,SAAU,MAOfjI,EAAQ2H,SACJ,YACA,SAAS7D,EAAO8D,EAAO9F,GACnB,OAAIA,EAAMM,QAAQ,MAAQ,EACf,OAEXrC,KAAKiC,aAAa4D,KAAK,MAChB,OAEX,CACIoC,cAAe,IACfC,SAAU,MAIlBxI,EAAOD,QAAUQ,GAEf,KAAK,GAAG,CAAC,GA1iJoW,CA0iJhW","file":"xregexp-all.js","sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.XRegExp = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o\r\n * Steven Levithan (c) 2012-2017 MIT License\r\n * Inspired by Lea Verou's RegExp.create \r\n */\r\n\r\nmodule.exports = function(XRegExp) {\r\n 'use strict';\r\n\r\n var REGEX_DATA = 'xregexp';\r\n var subParts = /(\\()(?!\\?)|\\\\([1-9]\\d*)|\\\\[\\s\\S]|\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/g;\r\n var parts = XRegExp.union([/\\({{([\\w$]+)}}\\)|{{([\\w$]+)}}/, subParts], 'g', {\r\n conjunction: 'or'\r\n });\r\n\r\n /**\r\n * Strips a leading `^` and trailing unescaped `$`, if both are present.\r\n *\r\n * @private\r\n * @param {String} pattern Pattern to process.\r\n * @returns {String} Pattern with edge anchors removed.\r\n */\r\n function deanchor(pattern) {\r\n // Allow any number of empty noncapturing groups before/after anchors, because regexes\r\n // built/generated by XRegExp sometimes include them\r\n var leadingAnchor = /^(?:\\(\\?:\\))*\\^/;\r\n var trailingAnchor = /\\$(?:\\(\\?:\\))*$/;\r\n\r\n if (\r\n leadingAnchor.test(pattern) &&\r\n trailingAnchor.test(pattern) &&\r\n // Ensure that the trailing `$` isn't escaped\r\n trailingAnchor.test(pattern.replace(/\\\\[\\s\\S]/g, ''))\r\n ) {\r\n return pattern.replace(leadingAnchor, '').replace(trailingAnchor, '');\r\n }\r\n\r\n return pattern;\r\n }\r\n\r\n /**\r\n * Converts the provided value to an XRegExp. Native RegExp flags are not preserved.\r\n *\r\n * @private\r\n * @param {String|RegExp} value Value to convert.\r\n * @param {Boolean} [addFlagX] Whether to apply the `x` flag in cases when `value` is not\r\n * already a regex generated by XRegExp\r\n * @returns {RegExp} XRegExp object with XRegExp syntax applied.\r\n */\r\n function asXRegExp(value, addFlagX) {\r\n var flags = addFlagX ? 'x' : '';\r\n return XRegExp.isRegExp(value) ?\r\n (value[REGEX_DATA] && value[REGEX_DATA].captureNames ?\r\n // Don't recompile, to preserve capture names\r\n value :\r\n // Recompile as XRegExp\r\n XRegExp(value.source, flags)\r\n ) :\r\n // Compile string as XRegExp\r\n XRegExp(value, flags);\r\n }\r\n\r\n /**\r\n * Builds regexes using named subpatterns, for readability and pattern reuse. Backreferences in\r\n * the outer pattern and provided subpatterns are automatically renumbered to work correctly.\r\n * Native flags used by provided subpatterns are ignored in favor of the `flags` argument.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} pattern XRegExp pattern using `{{name}}` for embedded subpatterns. Allows\r\n * `({{name}})` as shorthand for `(?{{name}})`. Patterns cannot be embedded within\r\n * character classes.\r\n * @param {Object} subs Lookup object for named subpatterns. Values can be strings or regexes. A\r\n * leading `^` and trailing unescaped `$` are stripped from subpatterns, if both are present.\r\n * @param {String} [flags] Any combination of XRegExp flags.\r\n * @returns {RegExp} Regex with interpolated subpatterns.\r\n * @example\r\n *\r\n * var time = XRegExp.build('(?x)^ {{hours}} ({{minutes}}) $', {\r\n * hours: XRegExp.build('{{h12}} : | {{h24}}', {\r\n * h12: /1[0-2]|0?[1-9]/,\r\n * h24: /2[0-3]|[01][0-9]/\r\n * }, 'x'),\r\n * minutes: /^[0-5][0-9]$/\r\n * });\r\n * time.test('10:59'); // -> true\r\n * XRegExp.exec('10:59', time).minutes; // -> '59'\r\n */\r\n XRegExp.build = function(pattern, subs, flags) {\r\n flags = flags || '';\r\n // Used with `asXRegExp` calls for `pattern` and subpatterns in `subs`, to work around how\r\n // some browsers convert `RegExp('\\n')` to a regex that contains the literal characters `\\`\r\n // and `n`. See more details at .\r\n var addFlagX = flags.indexOf('x') > -1;\r\n var inlineFlags = /^\\(\\?([\\w$]+)\\)/.exec(pattern);\r\n // Add flags within a leading mode modifier to the overall pattern's flags\r\n if (inlineFlags) {\r\n flags = XRegExp._clipDuplicates(flags + inlineFlags[1]);\r\n }\r\n\r\n var data = {};\r\n for (var p in subs) {\r\n if (subs.hasOwnProperty(p)) {\r\n // Passing to XRegExp enables extended syntax and ensures independent validity,\r\n // lest an unescaped `(`, `)`, `[`, or trailing `\\` breaks the `(?:)` wrapper. For\r\n // subpatterns provided as native regexes, it dies on octals and adds the property\r\n // used to hold extended regex instance data, for simplicity.\r\n var sub = asXRegExp(subs[p], addFlagX);\r\n data[p] = {\r\n // Deanchoring allows embedding independently useful anchored regexes. If you\r\n // really need to keep your anchors, double them (i.e., `^^...$$`).\r\n pattern: deanchor(sub.source),\r\n names: sub[REGEX_DATA].captureNames || []\r\n };\r\n }\r\n }\r\n\r\n // Passing to XRegExp dies on octals and ensures the outer pattern is independently valid;\r\n // helps keep this simple. Named captures will be put back.\r\n var patternAsRegex = asXRegExp(pattern, addFlagX);\r\n\r\n // 'Caps' is short for 'captures'\r\n var numCaps = 0;\r\n var numPriorCaps;\r\n var numOuterCaps = 0;\r\n var outerCapsMap = [0];\r\n var outerCapNames = patternAsRegex[REGEX_DATA].captureNames || [];\r\n var output = patternAsRegex.source.replace(parts, function($0, $1, $2, $3, $4) {\r\n var subName = $1 || $2;\r\n var capName;\r\n var intro;\r\n var localCapIndex;\r\n // Named subpattern\r\n if (subName) {\r\n if (!data.hasOwnProperty(subName)) {\r\n throw new ReferenceError('Undefined property ' + $0);\r\n }\r\n // Named subpattern was wrapped in a capturing group\r\n if ($1) {\r\n capName = outerCapNames[numOuterCaps];\r\n outerCapsMap[++numOuterCaps] = ++numCaps;\r\n // If it's a named group, preserve the name. Otherwise, use the subpattern name\r\n // as the capture name\r\n intro = '(?<' + (capName || subName) + '>';\r\n } else {\r\n intro = '(?:';\r\n }\r\n numPriorCaps = numCaps;\r\n return intro + data[subName].pattern.replace(subParts, function(match, paren, backref) {\r\n // Capturing group\r\n if (paren) {\r\n capName = data[subName].names[numCaps - numPriorCaps];\r\n ++numCaps;\r\n // If the current capture has a name, preserve the name\r\n if (capName) {\r\n return '(?<' + capName + '>';\r\n }\r\n // Backreference\r\n } else if (backref) {\r\n localCapIndex = +backref - 1;\r\n // Rewrite the backreference\r\n return data[subName].names[localCapIndex] ?\r\n // Need to preserve the backreference name in case using flag `n`\r\n '\\\\k<' + data[subName].names[localCapIndex] + '>' :\r\n '\\\\' + (+backref + numPriorCaps);\r\n }\r\n return match;\r\n }) + ')';\r\n }\r\n // Capturing group\r\n if ($3) {\r\n capName = outerCapNames[numOuterCaps];\r\n outerCapsMap[++numOuterCaps] = ++numCaps;\r\n // If the current capture has a name, preserve the name\r\n if (capName) {\r\n return '(?<' + capName + '>';\r\n }\r\n // Backreference\r\n } else if ($4) {\r\n localCapIndex = +$4 - 1;\r\n // Rewrite the backreference\r\n return outerCapNames[localCapIndex] ?\r\n // Need to preserve the backreference name in case using flag `n`\r\n '\\\\k<' + outerCapNames[localCapIndex] + '>' :\r\n '\\\\' + outerCapsMap[+$4];\r\n }\r\n return $0;\r\n });\r\n\r\n return XRegExp(output, flags);\r\n };\r\n\r\n};\r\n\n},{}],2:[function(require,module,exports){\n/*!\r\n * XRegExp.matchRecursive 3.2.0\r\n * \r\n * Steven Levithan (c) 2009-2017 MIT License\r\n */\r\n\r\nmodule.exports = function(XRegExp) {\r\n 'use strict';\r\n\r\n /**\r\n * Returns a match detail object composed of the provided values.\r\n *\r\n * @private\r\n */\r\n function row(name, value, start, end) {\r\n return {\r\n name: name,\r\n value: value,\r\n start: start,\r\n end: end\r\n };\r\n }\r\n\r\n /**\r\n * Returns an array of match strings between outermost left and right delimiters, or an array of\r\n * objects with detailed match parts and position data. An error is thrown if delimiters are\r\n * unbalanced within the data.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to search.\r\n * @param {String} left Left delimiter as an XRegExp pattern.\r\n * @param {String} right Right delimiter as an XRegExp pattern.\r\n * @param {String} [flags] Any native or XRegExp flags, used for the left and right delimiters.\r\n * @param {Object} [options] Lets you specify `valueNames` and `escapeChar` options.\r\n * @returns {Array} Array of matches, or an empty array.\r\n * @example\r\n *\r\n * // Basic usage\r\n * var str = '(t((e))s)t()(ing)';\r\n * XRegExp.matchRecursive(str, '\\\\(', '\\\\)', 'g');\r\n * // -> ['t((e))s', '', 'ing']\r\n *\r\n * // Extended information mode with valueNames\r\n * str = 'Here is
an
example';\r\n * XRegExp.matchRecursive(str, '', '', 'gi', {\r\n * valueNames: ['between', 'left', 'match', 'right']\r\n * });\r\n * // -> [\r\n * // {name: 'between', value: 'Here is ', start: 0, end: 8},\r\n * // {name: 'left', value: '
', start: 8, end: 13},\r\n * // {name: 'match', value: '
an
', start: 13, end: 27},\r\n * // {name: 'right', value: '
', start: 27, end: 33},\r\n * // {name: 'between', value: ' example', start: 33, end: 41}\r\n * // ]\r\n *\r\n * // Omitting unneeded parts with null valueNames, and using escapeChar\r\n * str = '...{1}.\\\\{{function(x,y){return {y:x}}}';\r\n * XRegExp.matchRecursive(str, '{', '}', 'g', {\r\n * valueNames: ['literal', null, 'value', null],\r\n * escapeChar: '\\\\'\r\n * });\r\n * // -> [\r\n * // {name: 'literal', value: '...', start: 0, end: 3},\r\n * // {name: 'value', value: '1', start: 4, end: 5},\r\n * // {name: 'literal', value: '.\\\\{', start: 6, end: 9},\r\n * // {name: 'value', value: 'function(x,y){return {y:x}}', start: 10, end: 37}\r\n * // ]\r\n *\r\n * // Sticky mode via flag y\r\n * str = '<1><<<2>>><3>4<5>';\r\n * XRegExp.matchRecursive(str, '<', '>', 'gy');\r\n * // -> ['1', '<<2>>', '3']\r\n */\r\n XRegExp.matchRecursive = function(str, left, right, flags, options) {\r\n flags = flags || '';\r\n options = options || {};\r\n var global = flags.indexOf('g') > -1;\r\n var sticky = flags.indexOf('y') > -1;\r\n // Flag `y` is controlled internally\r\n var basicFlags = flags.replace(/y/g, '');\r\n var escapeChar = options.escapeChar;\r\n var vN = options.valueNames;\r\n var output = [];\r\n var openTokens = 0;\r\n var delimStart = 0;\r\n var delimEnd = 0;\r\n var lastOuterEnd = 0;\r\n var outerStart;\r\n var innerStart;\r\n var leftMatch;\r\n var rightMatch;\r\n var esc;\r\n left = XRegExp(left, basicFlags);\r\n right = XRegExp(right, basicFlags);\r\n\r\n if (escapeChar) {\r\n if (escapeChar.length > 1) {\r\n throw new Error('Cannot use more than one escape character');\r\n }\r\n escapeChar = XRegExp.escape(escapeChar);\r\n // Example of concatenated `esc` regex:\r\n // `escapeChar`: '%'\r\n // `left`: '<'\r\n // `right`: '>'\r\n // Regex is: /(?:%[\\S\\s]|(?:(?!<|>)[^%])+)+/\r\n esc = new RegExp(\r\n '(?:' + escapeChar + '[\\\\S\\\\s]|(?:(?!' +\r\n // Using `XRegExp.union` safely rewrites backreferences in `left` and `right`.\r\n // Intentionally not passing `basicFlags` to `XRegExp.union` since any syntax\r\n // transformation resulting from those flags was already applied to `left` and\r\n // `right` when they were passed through the XRegExp constructor above.\r\n XRegExp.union([left, right], '', {conjunction: 'or'}).source +\r\n ')[^' + escapeChar + '])+)+',\r\n // Flags `gy` not needed here\r\n flags.replace(/[^imu]+/g, '')\r\n );\r\n }\r\n\r\n while (true) {\r\n // If using an escape character, advance to the delimiter's next starting position,\r\n // skipping any escaped characters in between\r\n if (escapeChar) {\r\n delimEnd += (XRegExp.exec(str, esc, delimEnd, 'sticky') || [''])[0].length;\r\n }\r\n leftMatch = XRegExp.exec(str, left, delimEnd);\r\n rightMatch = XRegExp.exec(str, right, delimEnd);\r\n // Keep the leftmost match only\r\n if (leftMatch && rightMatch) {\r\n if (leftMatch.index <= rightMatch.index) {\r\n rightMatch = null;\r\n } else {\r\n leftMatch = null;\r\n }\r\n }\r\n // Paths (LM: leftMatch, RM: rightMatch, OT: openTokens):\r\n // LM | RM | OT | Result\r\n // 1 | 0 | 1 | loop\r\n // 1 | 0 | 0 | loop\r\n // 0 | 1 | 1 | loop\r\n // 0 | 1 | 0 | throw\r\n // 0 | 0 | 1 | throw\r\n // 0 | 0 | 0 | break\r\n // The paths above don't include the sticky mode special case. The loop ends after the\r\n // first completed match if not `global`.\r\n if (leftMatch || rightMatch) {\r\n delimStart = (leftMatch || rightMatch).index;\r\n delimEnd = delimStart + (leftMatch || rightMatch)[0].length;\r\n } else if (!openTokens) {\r\n break;\r\n }\r\n if (sticky && !openTokens && delimStart > lastOuterEnd) {\r\n break;\r\n }\r\n if (leftMatch) {\r\n if (!openTokens) {\r\n outerStart = delimStart;\r\n innerStart = delimEnd;\r\n }\r\n ++openTokens;\r\n } else if (rightMatch && openTokens) {\r\n if (!--openTokens) {\r\n if (vN) {\r\n if (vN[0] && outerStart > lastOuterEnd) {\r\n output.push(row(vN[0], str.slice(lastOuterEnd, outerStart), lastOuterEnd, outerStart));\r\n }\r\n if (vN[1]) {\r\n output.push(row(vN[1], str.slice(outerStart, innerStart), outerStart, innerStart));\r\n }\r\n if (vN[2]) {\r\n output.push(row(vN[2], str.slice(innerStart, delimStart), innerStart, delimStart));\r\n }\r\n if (vN[3]) {\r\n output.push(row(vN[3], str.slice(delimStart, delimEnd), delimStart, delimEnd));\r\n }\r\n } else {\r\n output.push(str.slice(innerStart, delimStart));\r\n }\r\n lastOuterEnd = delimEnd;\r\n if (!global) {\r\n break;\r\n }\r\n }\r\n } else {\r\n throw new Error('Unbalanced delimiter found in string');\r\n }\r\n // If the delimiter matched an empty string, avoid an infinite loop\r\n if (delimStart === delimEnd) {\r\n ++delimEnd;\r\n }\r\n }\r\n\r\n if (global && !sticky && vN && vN[0] && str.length > lastOuterEnd) {\r\n output.push(row(vN[0], str.slice(lastOuterEnd), lastOuterEnd, str.length));\r\n }\r\n\r\n return output;\r\n };\r\n\r\n};\r\n\n},{}],3:[function(require,module,exports){\n/*!\r\n * XRegExp Unicode Base 3.2.0\r\n * \r\n * Steven Levithan (c) 2008-2017 MIT License\r\n */\r\n\r\nmodule.exports = function(XRegExp) {\r\n 'use strict';\r\n\r\n /**\r\n * Adds base support for Unicode matching:\r\n * - Adds syntax `\\p{..}` for matching Unicode tokens. Tokens can be inverted using `\\P{..}` or\r\n * `\\p{^..}`. Token names ignore case, spaces, hyphens, and underscores. You can omit the\r\n * braces for token names that are a single letter (e.g. `\\pL` or `PL`).\r\n * - Adds flag A (astral), which enables 21-bit Unicode support.\r\n * - Adds the `XRegExp.addUnicodeData` method used by other addons to provide character data.\r\n *\r\n * Unicode Base relies on externally provided Unicode character data. Official addons are\r\n * available to provide data for Unicode categories, scripts, blocks, and properties.\r\n *\r\n * @requires XRegExp\r\n */\r\n\r\n // ==--------------------------==\r\n // Private stuff\r\n // ==--------------------------==\r\n\r\n // Storage for Unicode data\r\n var unicode = {};\r\n\r\n // Reuse utils\r\n var dec = XRegExp._dec;\r\n var hex = XRegExp._hex;\r\n var pad4 = XRegExp._pad4;\r\n\r\n // Generates a token lookup name: lowercase, with hyphens, spaces, and underscores removed\r\n function normalize(name) {\r\n return name.replace(/[- _]+/g, '').toLowerCase();\r\n }\r\n\r\n // Gets the decimal code of a literal code unit, \\xHH, \\uHHHH, or a backslash-escaped literal\r\n function charCode(chr) {\r\n var esc = /^\\\\[xu](.+)/.exec(chr);\r\n return esc ?\r\n dec(esc[1]) :\r\n chr.charCodeAt(chr.charAt(0) === '\\\\' ? 1 : 0);\r\n }\r\n\r\n // Inverts a list of ordered BMP characters and ranges\r\n function invertBmp(range) {\r\n var output = '';\r\n var lastEnd = -1;\r\n\r\n XRegExp.forEach(\r\n range,\r\n /(\\\\x..|\\\\u....|\\\\?[\\s\\S])(?:-(\\\\x..|\\\\u....|\\\\?[\\s\\S]))?/,\r\n function(m) {\r\n var start = charCode(m[1]);\r\n if (start > (lastEnd + 1)) {\r\n output += '\\\\u' + pad4(hex(lastEnd + 1));\r\n if (start > (lastEnd + 2)) {\r\n output += '-\\\\u' + pad4(hex(start - 1));\r\n }\r\n }\r\n lastEnd = charCode(m[2] || m[1]);\r\n }\r\n );\r\n\r\n if (lastEnd < 0xFFFF) {\r\n output += '\\\\u' + pad4(hex(lastEnd + 1));\r\n if (lastEnd < 0xFFFE) {\r\n output += '-\\\\uFFFF';\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n // Generates an inverted BMP range on first use\r\n function cacheInvertedBmp(slug) {\r\n var prop = 'b!';\r\n return (\r\n unicode[slug][prop] ||\r\n (unicode[slug][prop] = invertBmp(unicode[slug].bmp))\r\n );\r\n }\r\n\r\n // Combines and optionally negates BMP and astral data\r\n function buildAstral(slug, isNegated) {\r\n var item = unicode[slug];\r\n var combined = '';\r\n\r\n if (item.bmp && !item.isBmpLast) {\r\n combined = '[' + item.bmp + ']' + (item.astral ? '|' : '');\r\n }\r\n if (item.astral) {\r\n combined += item.astral;\r\n }\r\n if (item.isBmpLast && item.bmp) {\r\n combined += (item.astral ? '|' : '') + '[' + item.bmp + ']';\r\n }\r\n\r\n // Astral Unicode tokens always match a code point, never a code unit\r\n return isNegated ?\r\n '(?:(?!' + combined + ')(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\0-\\uFFFF]))' :\r\n '(?:' + combined + ')';\r\n }\r\n\r\n // Builds a complete astral pattern on first use\r\n function cacheAstral(slug, isNegated) {\r\n var prop = isNegated ? 'a!' : 'a=';\r\n return (\r\n unicode[slug][prop] ||\r\n (unicode[slug][prop] = buildAstral(slug, isNegated))\r\n );\r\n }\r\n\r\n // ==--------------------------==\r\n // Core functionality\r\n // ==--------------------------==\r\n\r\n /*\r\n * Add astral mode (flag A) and Unicode token syntax: `\\p{..}`, `\\P{..}`, `\\p{^..}`, `\\pC`.\r\n */\r\n XRegExp.addToken(\r\n // Use `*` instead of `+` to avoid capturing `^` as the token name in `\\p{^}`\r\n /\\\\([pP])(?:{(\\^?)([^}]*)}|([A-Za-z]))/,\r\n function(match, scope, flags) {\r\n var ERR_DOUBLE_NEG = 'Invalid double negation ';\r\n var ERR_UNKNOWN_NAME = 'Unknown Unicode token ';\r\n var ERR_UNKNOWN_REF = 'Unicode token missing data ';\r\n var ERR_ASTRAL_ONLY = 'Astral mode required for Unicode token ';\r\n var ERR_ASTRAL_IN_CLASS = 'Astral mode does not support Unicode tokens within character classes';\r\n // Negated via \\P{..} or \\p{^..}\r\n var isNegated = match[1] === 'P' || !!match[2];\r\n // Switch from BMP (0-FFFF) to astral (0-10FFFF) mode via flag A\r\n var isAstralMode = flags.indexOf('A') > -1;\r\n // Token lookup name. Check `[4]` first to avoid passing `undefined` via `\\p{}`\r\n var slug = normalize(match[4] || match[3]);\r\n // Token data object\r\n var item = unicode[slug];\r\n\r\n if (match[1] === 'P' && match[2]) {\r\n throw new SyntaxError(ERR_DOUBLE_NEG + match[0]);\r\n }\r\n if (!unicode.hasOwnProperty(slug)) {\r\n throw new SyntaxError(ERR_UNKNOWN_NAME + match[0]);\r\n }\r\n\r\n // Switch to the negated form of the referenced Unicode token\r\n if (item.inverseOf) {\r\n slug = normalize(item.inverseOf);\r\n if (!unicode.hasOwnProperty(slug)) {\r\n throw new ReferenceError(ERR_UNKNOWN_REF + match[0] + ' -> ' + item.inverseOf);\r\n }\r\n item = unicode[slug];\r\n isNegated = !isNegated;\r\n }\r\n\r\n if (!(item.bmp || isAstralMode)) {\r\n throw new SyntaxError(ERR_ASTRAL_ONLY + match[0]);\r\n }\r\n if (isAstralMode) {\r\n if (scope === 'class') {\r\n throw new SyntaxError(ERR_ASTRAL_IN_CLASS);\r\n }\r\n\r\n return cacheAstral(slug, isNegated);\r\n }\r\n\r\n return scope === 'class' ?\r\n (isNegated ? cacheInvertedBmp(slug) : item.bmp) :\r\n (isNegated ? '[^' : '[') + item.bmp + ']';\r\n },\r\n {\r\n scope: 'all',\r\n optionalFlags: 'A',\r\n leadChar: '\\\\'\r\n }\r\n );\r\n\r\n /**\r\n * Adds to the list of Unicode tokens that XRegExp regexes can match via `\\p` or `\\P`.\r\n *\r\n * @memberOf XRegExp\r\n * @param {Array} data Objects with named character ranges. Each object may have properties\r\n * `name`, `alias`, `isBmpLast`, `inverseOf`, `bmp`, and `astral`. All but `name` are\r\n * optional, although one of `bmp` or `astral` is required (unless `inverseOf` is set). If\r\n * `astral` is absent, the `bmp` data is used for BMP and astral modes. If `bmp` is absent,\r\n * the name errors in BMP mode but works in astral mode. If both `bmp` and `astral` are\r\n * provided, the `bmp` data only is used in BMP mode, and the combination of `bmp` and\r\n * `astral` data is used in astral mode. `isBmpLast` is needed when a token matches orphan\r\n * high surrogates *and* uses surrogate pairs to match astral code points. The `bmp` and\r\n * `astral` data should be a combination of literal characters and `\\xHH` or `\\uHHHH` escape\r\n * sequences, with hyphens to create ranges. Any regex metacharacters in the data should be\r\n * escaped, apart from range-creating hyphens. The `astral` data can additionally use\r\n * character classes and alternation, and should use surrogate pairs to represent astral code\r\n * points. `inverseOf` can be used to avoid duplicating character data if a Unicode token is\r\n * defined as the exact inverse of another token.\r\n * @example\r\n *\r\n * // Basic use\r\n * XRegExp.addUnicodeData([{\r\n * name: 'XDigit',\r\n * alias: 'Hexadecimal',\r\n * bmp: '0-9A-Fa-f'\r\n * }]);\r\n * XRegExp('\\\\p{XDigit}:\\\\p{Hexadecimal}+').test('0:3D'); // -> true\r\n */\r\n XRegExp.addUnicodeData = function(data) {\r\n var ERR_NO_NAME = 'Unicode token requires name';\r\n var ERR_NO_DATA = 'Unicode token has no character data ';\r\n var item;\r\n\r\n for (var i = 0; i < data.length; ++i) {\r\n item = data[i];\r\n if (!item.name) {\r\n throw new Error(ERR_NO_NAME);\r\n }\r\n if (!(item.inverseOf || item.bmp || item.astral)) {\r\n throw new Error(ERR_NO_DATA + item.name);\r\n }\r\n unicode[normalize(item.name)] = item;\r\n if (item.alias) {\r\n unicode[normalize(item.alias)] = item;\r\n }\r\n }\r\n\r\n // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and\r\n // flags might now produce different results\r\n XRegExp.cache.flush('patterns');\r\n };\r\n\r\n /**\r\n * @ignore\r\n *\r\n * Return a reference to the internal Unicode definition structure for the given Unicode\r\n * Property if the given name is a legal Unicode Property for use in XRegExp `\\p` or `\\P` regex\r\n * constructs.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} name Name by which the Unicode Property may be recognized (case-insensitive),\r\n * e.g. `'N'` or `'Number'`. The given name is matched against all registered Unicode\r\n * Properties and Property Aliases.\r\n * @returns {Object} Reference to definition structure when the name matches a Unicode Property.\r\n *\r\n * @note\r\n * For more info on Unicode Properties, see also http://unicode.org/reports/tr18/#Categories.\r\n *\r\n * @note\r\n * This method is *not* part of the officially documented API and may change or be removed in\r\n * the future. It is meant for userland code that wishes to reuse the (large) internal Unicode\r\n * structures set up by XRegExp.\r\n */\r\n XRegExp._getUnicodeProperty = function(name) {\r\n var slug = normalize(name);\r\n return unicode[slug];\r\n };\r\n\r\n};\r\n\n},{}],4:[function(require,module,exports){\n/*!\r\n * XRegExp Unicode Blocks 3.2.0\r\n * \r\n * Steven Levithan (c) 2010-2017 MIT License\r\n * Unicode data by Mathias Bynens \r\n */\r\n\r\nmodule.exports = function(XRegExp) {\r\n 'use strict';\r\n\r\n /**\r\n * Adds support for all Unicode blocks. Block names use the prefix 'In'. E.g.,\r\n * `\\p{InBasicLatin}`. Token names are case insensitive, and any spaces, hyphens, and\r\n * underscores are ignored.\r\n *\r\n * Uses Unicode 9.0.0.\r\n *\r\n * @requires XRegExp, Unicode Base\r\n */\r\n\r\n if (!XRegExp.addUnicodeData) {\r\n throw new ReferenceError('Unicode Base must be loaded before Unicode Blocks');\r\n }\r\n\r\n XRegExp.addUnicodeData([\r\n {\r\n name: 'InAdlam',\r\n astral: '\\uD83A[\\uDD00-\\uDD5F]'\r\n },\r\n {\r\n name: 'InAegean_Numbers',\r\n astral: '\\uD800[\\uDD00-\\uDD3F]'\r\n },\r\n {\r\n name: 'InAhom',\r\n astral: '\\uD805[\\uDF00-\\uDF3F]'\r\n },\r\n {\r\n name: 'InAlchemical_Symbols',\r\n astral: '\\uD83D[\\uDF00-\\uDF7F]'\r\n },\r\n {\r\n name: 'InAlphabetic_Presentation_Forms',\r\n bmp: '\\uFB00-\\uFB4F'\r\n },\r\n {\r\n name: 'InAnatolian_Hieroglyphs',\r\n astral: '\\uD811[\\uDC00-\\uDE7F]'\r\n },\r\n {\r\n name: 'InAncient_Greek_Musical_Notation',\r\n astral: '\\uD834[\\uDE00-\\uDE4F]'\r\n },\r\n {\r\n name: 'InAncient_Greek_Numbers',\r\n astral: '\\uD800[\\uDD40-\\uDD8F]'\r\n },\r\n {\r\n name: 'InAncient_Symbols',\r\n astral: '\\uD800[\\uDD90-\\uDDCF]'\r\n },\r\n {\r\n name: 'InArabic',\r\n bmp: '\\u0600-\\u06FF'\r\n },\r\n {\r\n name: 'InArabic_Extended_A',\r\n bmp: '\\u08A0-\\u08FF'\r\n },\r\n {\r\n name: 'InArabic_Mathematical_Alphabetic_Symbols',\r\n astral: '\\uD83B[\\uDE00-\\uDEFF]'\r\n },\r\n {\r\n name: 'InArabic_Presentation_Forms_A',\r\n bmp: '\\uFB50-\\uFDFF'\r\n },\r\n {\r\n name: 'InArabic_Presentation_Forms_B',\r\n bmp: '\\uFE70-\\uFEFF'\r\n },\r\n {\r\n name: 'InArabic_Supplement',\r\n bmp: '\\u0750-\\u077F'\r\n },\r\n {\r\n name: 'InArmenian',\r\n bmp: '\\u0530-\\u058F'\r\n },\r\n {\r\n name: 'InArrows',\r\n bmp: '\\u2190-\\u21FF'\r\n },\r\n {\r\n name: 'InAvestan',\r\n astral: '\\uD802[\\uDF00-\\uDF3F]'\r\n },\r\n {\r\n name: 'InBalinese',\r\n bmp: '\\u1B00-\\u1B7F'\r\n },\r\n {\r\n name: 'InBamum',\r\n bmp: '\\uA6A0-\\uA6FF'\r\n },\r\n {\r\n name: 'InBamum_Supplement',\r\n astral: '\\uD81A[\\uDC00-\\uDE3F]'\r\n },\r\n {\r\n name: 'InBasic_Latin',\r\n bmp: '\\0-\\x7F'\r\n },\r\n {\r\n name: 'InBassa_Vah',\r\n astral: '\\uD81A[\\uDED0-\\uDEFF]'\r\n },\r\n {\r\n name: 'InBatak',\r\n bmp: '\\u1BC0-\\u1BFF'\r\n },\r\n {\r\n name: 'InBengali',\r\n bmp: '\\u0980-\\u09FF'\r\n },\r\n {\r\n name: 'InBhaiksuki',\r\n astral: '\\uD807[\\uDC00-\\uDC6F]'\r\n },\r\n {\r\n name: 'InBlock_Elements',\r\n bmp: '\\u2580-\\u259F'\r\n },\r\n {\r\n name: 'InBopomofo',\r\n bmp: '\\u3100-\\u312F'\r\n },\r\n {\r\n name: 'InBopomofo_Extended',\r\n bmp: '\\u31A0-\\u31BF'\r\n },\r\n {\r\n name: 'InBox_Drawing',\r\n bmp: '\\u2500-\\u257F'\r\n },\r\n {\r\n name: 'InBrahmi',\r\n astral: '\\uD804[\\uDC00-\\uDC7F]'\r\n },\r\n {\r\n name: 'InBraille_Patterns',\r\n bmp: '\\u2800-\\u28FF'\r\n },\r\n {\r\n name: 'InBuginese',\r\n bmp: '\\u1A00-\\u1A1F'\r\n },\r\n {\r\n name: 'InBuhid',\r\n bmp: '\\u1740-\\u175F'\r\n },\r\n {\r\n name: 'InByzantine_Musical_Symbols',\r\n astral: '\\uD834[\\uDC00-\\uDCFF]'\r\n },\r\n {\r\n name: 'InCJK_Compatibility',\r\n bmp: '\\u3300-\\u33FF'\r\n },\r\n {\r\n name: 'InCJK_Compatibility_Forms',\r\n bmp: '\\uFE30-\\uFE4F'\r\n },\r\n {\r\n name: 'InCJK_Compatibility_Ideographs',\r\n bmp: '\\uF900-\\uFAFF'\r\n },\r\n {\r\n name: 'InCJK_Compatibility_Ideographs_Supplement',\r\n astral: '\\uD87E[\\uDC00-\\uDE1F]'\r\n },\r\n {\r\n name: 'InCJK_Radicals_Supplement',\r\n bmp: '\\u2E80-\\u2EFF'\r\n },\r\n {\r\n name: 'InCJK_Strokes',\r\n bmp: '\\u31C0-\\u31EF'\r\n },\r\n {\r\n name: 'InCJK_Symbols_and_Punctuation',\r\n bmp: '\\u3000-\\u303F'\r\n },\r\n {\r\n name: 'InCJK_Unified_Ideographs',\r\n bmp: '\\u4E00-\\u9FFF'\r\n },\r\n {\r\n name: 'InCJK_Unified_Ideographs_Extension_A',\r\n bmp: '\\u3400-\\u4DBF'\r\n },\r\n {\r\n name: 'InCJK_Unified_Ideographs_Extension_B',\r\n astral: '[\\uD840-\\uD868][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDEDF]'\r\n },\r\n {\r\n name: 'InCJK_Unified_Ideographs_Extension_C',\r\n astral: '\\uD869[\\uDF00-\\uDFFF]|[\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF3F]'\r\n },\r\n {\r\n name: 'InCJK_Unified_Ideographs_Extension_D',\r\n astral: '\\uD86D[\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1F]'\r\n },\r\n {\r\n name: 'InCJK_Unified_Ideographs_Extension_E',\r\n astral: '\\uD86E[\\uDC20-\\uDFFF]|[\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD873[\\uDC00-\\uDEAF]'\r\n },\r\n {\r\n name: 'InCarian',\r\n astral: '\\uD800[\\uDEA0-\\uDEDF]'\r\n },\r\n {\r\n name: 'InCaucasian_Albanian',\r\n astral: '\\uD801[\\uDD30-\\uDD6F]'\r\n },\r\n {\r\n name: 'InChakma',\r\n astral: '\\uD804[\\uDD00-\\uDD4F]'\r\n },\r\n {\r\n name: 'InCham',\r\n bmp: '\\uAA00-\\uAA5F'\r\n },\r\n {\r\n name: 'InCherokee',\r\n bmp: '\\u13A0-\\u13FF'\r\n },\r\n {\r\n name: 'InCherokee_Supplement',\r\n bmp: '\\uAB70-\\uABBF'\r\n },\r\n {\r\n name: 'InCombining_Diacritical_Marks',\r\n bmp: '\\u0300-\\u036F'\r\n },\r\n {\r\n name: 'InCombining_Diacritical_Marks_Extended',\r\n bmp: '\\u1AB0-\\u1AFF'\r\n },\r\n {\r\n name: 'InCombining_Diacritical_Marks_Supplement',\r\n bmp: '\\u1DC0-\\u1DFF'\r\n },\r\n {\r\n name: 'InCombining_Diacritical_Marks_for_Symbols',\r\n bmp: '\\u20D0-\\u20FF'\r\n },\r\n {\r\n name: 'InCombining_Half_Marks',\r\n bmp: '\\uFE20-\\uFE2F'\r\n },\r\n {\r\n name: 'InCommon_Indic_Number_Forms',\r\n bmp: '\\uA830-\\uA83F'\r\n },\r\n {\r\n name: 'InControl_Pictures',\r\n bmp: '\\u2400-\\u243F'\r\n },\r\n {\r\n name: 'InCoptic',\r\n bmp: '\\u2C80-\\u2CFF'\r\n },\r\n {\r\n name: 'InCoptic_Epact_Numbers',\r\n astral: '\\uD800[\\uDEE0-\\uDEFF]'\r\n },\r\n {\r\n name: 'InCounting_Rod_Numerals',\r\n astral: '\\uD834[\\uDF60-\\uDF7F]'\r\n },\r\n {\r\n name: 'InCuneiform',\r\n astral: '\\uD808[\\uDC00-\\uDFFF]'\r\n },\r\n {\r\n name: 'InCuneiform_Numbers_and_Punctuation',\r\n astral: '\\uD809[\\uDC00-\\uDC7F]'\r\n },\r\n {\r\n name: 'InCurrency_Symbols',\r\n bmp: '\\u20A0-\\u20CF'\r\n },\r\n {\r\n name: 'InCypriot_Syllabary',\r\n astral: '\\uD802[\\uDC00-\\uDC3F]'\r\n },\r\n {\r\n name: 'InCyrillic',\r\n bmp: '\\u0400-\\u04FF'\r\n },\r\n {\r\n name: 'InCyrillic_Extended_A',\r\n bmp: '\\u2DE0-\\u2DFF'\r\n },\r\n {\r\n name: 'InCyrillic_Extended_B',\r\n bmp: '\\uA640-\\uA69F'\r\n },\r\n {\r\n name: 'InCyrillic_Extended_C',\r\n bmp: '\\u1C80-\\u1C8F'\r\n },\r\n {\r\n name: 'InCyrillic_Supplement',\r\n bmp: '\\u0500-\\u052F'\r\n },\r\n {\r\n name: 'InDeseret',\r\n astral: '\\uD801[\\uDC00-\\uDC4F]'\r\n },\r\n {\r\n name: 'InDevanagari',\r\n bmp: '\\u0900-\\u097F'\r\n },\r\n {\r\n name: 'InDevanagari_Extended',\r\n bmp: '\\uA8E0-\\uA8FF'\r\n },\r\n {\r\n name: 'InDingbats',\r\n bmp: '\\u2700-\\u27BF'\r\n },\r\n {\r\n name: 'InDomino_Tiles',\r\n astral: '\\uD83C[\\uDC30-\\uDC9F]'\r\n },\r\n {\r\n name: 'InDuployan',\r\n astral: '\\uD82F[\\uDC00-\\uDC9F]'\r\n },\r\n {\r\n name: 'InEarly_Dynastic_Cuneiform',\r\n astral: '\\uD809[\\uDC80-\\uDD4F]'\r\n },\r\n {\r\n name: 'InEgyptian_Hieroglyphs',\r\n astral: '\\uD80C[\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F]'\r\n },\r\n {\r\n name: 'InElbasan',\r\n astral: '\\uD801[\\uDD00-\\uDD2F]'\r\n },\r\n {\r\n name: 'InEmoticons',\r\n astral: '\\uD83D[\\uDE00-\\uDE4F]'\r\n },\r\n {\r\n name: 'InEnclosed_Alphanumeric_Supplement',\r\n astral: '\\uD83C[\\uDD00-\\uDDFF]'\r\n },\r\n {\r\n name: 'InEnclosed_Alphanumerics',\r\n bmp: '\\u2460-\\u24FF'\r\n },\r\n {\r\n name: 'InEnclosed_CJK_Letters_and_Months',\r\n bmp: '\\u3200-\\u32FF'\r\n },\r\n {\r\n name: 'InEnclosed_Ideographic_Supplement',\r\n astral: '\\uD83C[\\uDE00-\\uDEFF]'\r\n },\r\n {\r\n name: 'InEthiopic',\r\n bmp: '\\u1200-\\u137F'\r\n },\r\n {\r\n name: 'InEthiopic_Extended',\r\n bmp: '\\u2D80-\\u2DDF'\r\n },\r\n {\r\n name: 'InEthiopic_Extended_A',\r\n bmp: '\\uAB00-\\uAB2F'\r\n },\r\n {\r\n name: 'InEthiopic_Supplement',\r\n bmp: '\\u1380-\\u139F'\r\n },\r\n {\r\n name: 'InGeneral_Punctuation',\r\n bmp: '\\u2000-\\u206F'\r\n },\r\n {\r\n name: 'InGeometric_Shapes',\r\n bmp: '\\u25A0-\\u25FF'\r\n },\r\n {\r\n name: 'InGeometric_Shapes_Extended',\r\n astral: '\\uD83D[\\uDF80-\\uDFFF]'\r\n },\r\n {\r\n name: 'InGeorgian',\r\n bmp: '\\u10A0-\\u10FF'\r\n },\r\n {\r\n name: 'InGeorgian_Supplement',\r\n bmp: '\\u2D00-\\u2D2F'\r\n },\r\n {\r\n name: 'InGlagolitic',\r\n bmp: '\\u2C00-\\u2C5F'\r\n },\r\n {\r\n name: 'InGlagolitic_Supplement',\r\n astral: '\\uD838[\\uDC00-\\uDC2F]'\r\n },\r\n {\r\n name: 'InGothic',\r\n astral: '\\uD800[\\uDF30-\\uDF4F]'\r\n },\r\n {\r\n name: 'InGrantha',\r\n astral: '\\uD804[\\uDF00-\\uDF7F]'\r\n },\r\n {\r\n name: 'InGreek_Extended',\r\n bmp: '\\u1F00-\\u1FFF'\r\n },\r\n {\r\n name: 'InGreek_and_Coptic',\r\n bmp: '\\u0370-\\u03FF'\r\n },\r\n {\r\n name: 'InGujarati',\r\n bmp: '\\u0A80-\\u0AFF'\r\n },\r\n {\r\n name: 'InGurmukhi',\r\n bmp: '\\u0A00-\\u0A7F'\r\n },\r\n {\r\n name: 'InHalfwidth_and_Fullwidth_Forms',\r\n bmp: '\\uFF00-\\uFFEF'\r\n },\r\n {\r\n name: 'InHangul_Compatibility_Jamo',\r\n bmp: '\\u3130-\\u318F'\r\n },\r\n {\r\n name: 'InHangul_Jamo',\r\n bmp: '\\u1100-\\u11FF'\r\n },\r\n {\r\n name: 'InHangul_Jamo_Extended_A',\r\n bmp: '\\uA960-\\uA97F'\r\n },\r\n {\r\n name: 'InHangul_Jamo_Extended_B',\r\n bmp: '\\uD7B0-\\uD7FF'\r\n },\r\n {\r\n name: 'InHangul_Syllables',\r\n bmp: '\\uAC00-\\uD7AF'\r\n },\r\n {\r\n name: 'InHanunoo',\r\n bmp: '\\u1720-\\u173F'\r\n },\r\n {\r\n name: 'InHatran',\r\n astral: '\\uD802[\\uDCE0-\\uDCFF]'\r\n },\r\n {\r\n name: 'InHebrew',\r\n bmp: '\\u0590-\\u05FF'\r\n },\r\n {\r\n name: 'InHigh_Private_Use_Surrogates',\r\n bmp: '\\uDB80-\\uDBFF'\r\n },\r\n {\r\n name: 'InHigh_Surrogates',\r\n bmp: '\\uD800-\\uDB7F'\r\n },\r\n {\r\n name: 'InHiragana',\r\n bmp: '\\u3040-\\u309F'\r\n },\r\n {\r\n name: 'InIPA_Extensions',\r\n bmp: '\\u0250-\\u02AF'\r\n },\r\n {\r\n name: 'InIdeographic_Description_Characters',\r\n bmp: '\\u2FF0-\\u2FFF'\r\n },\r\n {\r\n name: 'InIdeographic_Symbols_and_Punctuation',\r\n astral: '\\uD81B[\\uDFE0-\\uDFFF]'\r\n },\r\n {\r\n name: 'InImperial_Aramaic',\r\n astral: '\\uD802[\\uDC40-\\uDC5F]'\r\n },\r\n {\r\n name: 'InInscriptional_Pahlavi',\r\n astral: '\\uD802[\\uDF60-\\uDF7F]'\r\n },\r\n {\r\n name: 'InInscriptional_Parthian',\r\n astral: '\\uD802[\\uDF40-\\uDF5F]'\r\n },\r\n {\r\n name: 'InJavanese',\r\n bmp: '\\uA980-\\uA9DF'\r\n },\r\n {\r\n name: 'InKaithi',\r\n astral: '\\uD804[\\uDC80-\\uDCCF]'\r\n },\r\n {\r\n name: 'InKana_Supplement',\r\n astral: '\\uD82C[\\uDC00-\\uDCFF]'\r\n },\r\n {\r\n name: 'InKanbun',\r\n bmp: '\\u3190-\\u319F'\r\n },\r\n {\r\n name: 'InKangxi_Radicals',\r\n bmp: '\\u2F00-\\u2FDF'\r\n },\r\n {\r\n name: 'InKannada',\r\n bmp: '\\u0C80-\\u0CFF'\r\n },\r\n {\r\n name: 'InKatakana',\r\n bmp: '\\u30A0-\\u30FF'\r\n },\r\n {\r\n name: 'InKatakana_Phonetic_Extensions',\r\n bmp: '\\u31F0-\\u31FF'\r\n },\r\n {\r\n name: 'InKayah_Li',\r\n bmp: '\\uA900-\\uA92F'\r\n },\r\n {\r\n name: 'InKharoshthi',\r\n astral: '\\uD802[\\uDE00-\\uDE5F]'\r\n },\r\n {\r\n name: 'InKhmer',\r\n bmp: '\\u1780-\\u17FF'\r\n },\r\n {\r\n name: 'InKhmer_Symbols',\r\n bmp: '\\u19E0-\\u19FF'\r\n },\r\n {\r\n name: 'InKhojki',\r\n astral: '\\uD804[\\uDE00-\\uDE4F]'\r\n },\r\n {\r\n name: 'InKhudawadi',\r\n astral: '\\uD804[\\uDEB0-\\uDEFF]'\r\n },\r\n {\r\n name: 'InLao',\r\n bmp: '\\u0E80-\\u0EFF'\r\n },\r\n {\r\n name: 'InLatin_Extended_Additional',\r\n bmp: '\\u1E00-\\u1EFF'\r\n },\r\n {\r\n name: 'InLatin_Extended_A',\r\n bmp: '\\u0100-\\u017F'\r\n },\r\n {\r\n name: 'InLatin_Extended_B',\r\n bmp: '\\u0180-\\u024F'\r\n },\r\n {\r\n name: 'InLatin_Extended_C',\r\n bmp: '\\u2C60-\\u2C7F'\r\n },\r\n {\r\n name: 'InLatin_Extended_D',\r\n bmp: '\\uA720-\\uA7FF'\r\n },\r\n {\r\n name: 'InLatin_Extended_E',\r\n bmp: '\\uAB30-\\uAB6F'\r\n },\r\n {\r\n name: 'InLatin_1_Supplement',\r\n bmp: '\\x80-\\xFF'\r\n },\r\n {\r\n name: 'InLepcha',\r\n bmp: '\\u1C00-\\u1C4F'\r\n },\r\n {\r\n name: 'InLetterlike_Symbols',\r\n bmp: '\\u2100-\\u214F'\r\n },\r\n {\r\n name: 'InLimbu',\r\n bmp: '\\u1900-\\u194F'\r\n },\r\n {\r\n name: 'InLinear_A',\r\n astral: '\\uD801[\\uDE00-\\uDF7F]'\r\n },\r\n {\r\n name: 'InLinear_B_Ideograms',\r\n astral: '\\uD800[\\uDC80-\\uDCFF]'\r\n },\r\n {\r\n name: 'InLinear_B_Syllabary',\r\n astral: '\\uD800[\\uDC00-\\uDC7F]'\r\n },\r\n {\r\n name: 'InLisu',\r\n bmp: '\\uA4D0-\\uA4FF'\r\n },\r\n {\r\n name: 'InLow_Surrogates',\r\n bmp: '\\uDC00-\\uDFFF'\r\n },\r\n {\r\n name: 'InLycian',\r\n astral: '\\uD800[\\uDE80-\\uDE9F]'\r\n },\r\n {\r\n name: 'InLydian',\r\n astral: '\\uD802[\\uDD20-\\uDD3F]'\r\n },\r\n {\r\n name: 'InMahajani',\r\n astral: '\\uD804[\\uDD50-\\uDD7F]'\r\n },\r\n {\r\n name: 'InMahjong_Tiles',\r\n astral: '\\uD83C[\\uDC00-\\uDC2F]'\r\n },\r\n {\r\n name: 'InMalayalam',\r\n bmp: '\\u0D00-\\u0D7F'\r\n },\r\n {\r\n name: 'InMandaic',\r\n bmp: '\\u0840-\\u085F'\r\n },\r\n {\r\n name: 'InManichaean',\r\n astral: '\\uD802[\\uDEC0-\\uDEFF]'\r\n },\r\n {\r\n name: 'InMarchen',\r\n astral: '\\uD807[\\uDC70-\\uDCBF]'\r\n },\r\n {\r\n name: 'InMathematical_Alphanumeric_Symbols',\r\n astral: '\\uD835[\\uDC00-\\uDFFF]'\r\n },\r\n {\r\n name: 'InMathematical_Operators',\r\n bmp: '\\u2200-\\u22FF'\r\n },\r\n {\r\n name: 'InMeetei_Mayek',\r\n bmp: '\\uABC0-\\uABFF'\r\n },\r\n {\r\n name: 'InMeetei_Mayek_Extensions',\r\n bmp: '\\uAAE0-\\uAAFF'\r\n },\r\n {\r\n name: 'InMende_Kikakui',\r\n astral: '\\uD83A[\\uDC00-\\uDCDF]'\r\n },\r\n {\r\n name: 'InMeroitic_Cursive',\r\n astral: '\\uD802[\\uDDA0-\\uDDFF]'\r\n },\r\n {\r\n name: 'InMeroitic_Hieroglyphs',\r\n astral: '\\uD802[\\uDD80-\\uDD9F]'\r\n },\r\n {\r\n name: 'InMiao',\r\n astral: '\\uD81B[\\uDF00-\\uDF9F]'\r\n },\r\n {\r\n name: 'InMiscellaneous_Mathematical_Symbols_A',\r\n bmp: '\\u27C0-\\u27EF'\r\n },\r\n {\r\n name: 'InMiscellaneous_Mathematical_Symbols_B',\r\n bmp: '\\u2980-\\u29FF'\r\n },\r\n {\r\n name: 'InMiscellaneous_Symbols',\r\n bmp: '\\u2600-\\u26FF'\r\n },\r\n {\r\n name: 'InMiscellaneous_Symbols_and_Arrows',\r\n bmp: '\\u2B00-\\u2BFF'\r\n },\r\n {\r\n name: 'InMiscellaneous_Symbols_and_Pictographs',\r\n astral: '\\uD83C[\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDDFF]'\r\n },\r\n {\r\n name: 'InMiscellaneous_Technical',\r\n bmp: '\\u2300-\\u23FF'\r\n },\r\n {\r\n name: 'InModi',\r\n astral: '\\uD805[\\uDE00-\\uDE5F]'\r\n },\r\n {\r\n name: 'InModifier_Tone_Letters',\r\n bmp: '\\uA700-\\uA71F'\r\n },\r\n {\r\n name: 'InMongolian',\r\n bmp: '\\u1800-\\u18AF'\r\n },\r\n {\r\n name: 'InMongolian_Supplement',\r\n astral: '\\uD805[\\uDE60-\\uDE7F]'\r\n },\r\n {\r\n name: 'InMro',\r\n astral: '\\uD81A[\\uDE40-\\uDE6F]'\r\n },\r\n {\r\n name: 'InMultani',\r\n astral: '\\uD804[\\uDE80-\\uDEAF]'\r\n },\r\n {\r\n name: 'InMusical_Symbols',\r\n astral: '\\uD834[\\uDD00-\\uDDFF]'\r\n },\r\n {\r\n name: 'InMyanmar',\r\n bmp: '\\u1000-\\u109F'\r\n },\r\n {\r\n name: 'InMyanmar_Extended_A',\r\n bmp: '\\uAA60-\\uAA7F'\r\n },\r\n {\r\n name: 'InMyanmar_Extended_B',\r\n bmp: '\\uA9E0-\\uA9FF'\r\n },\r\n {\r\n name: 'InNKo',\r\n bmp: '\\u07C0-\\u07FF'\r\n },\r\n {\r\n name: 'InNabataean',\r\n astral: '\\uD802[\\uDC80-\\uDCAF]'\r\n },\r\n {\r\n name: 'InNew_Tai_Lue',\r\n bmp: '\\u1980-\\u19DF'\r\n },\r\n {\r\n name: 'InNewa',\r\n astral: '\\uD805[\\uDC00-\\uDC7F]'\r\n },\r\n {\r\n name: 'InNumber_Forms',\r\n bmp: '\\u2150-\\u218F'\r\n },\r\n {\r\n name: 'InOgham',\r\n bmp: '\\u1680-\\u169F'\r\n },\r\n {\r\n name: 'InOl_Chiki',\r\n bmp: '\\u1C50-\\u1C7F'\r\n },\r\n {\r\n name: 'InOld_Hungarian',\r\n astral: '\\uD803[\\uDC80-\\uDCFF]'\r\n },\r\n {\r\n name: 'InOld_Italic',\r\n astral: '\\uD800[\\uDF00-\\uDF2F]'\r\n },\r\n {\r\n name: 'InOld_North_Arabian',\r\n astral: '\\uD802[\\uDE80-\\uDE9F]'\r\n },\r\n {\r\n name: 'InOld_Permic',\r\n astral: '\\uD800[\\uDF50-\\uDF7F]'\r\n },\r\n {\r\n name: 'InOld_Persian',\r\n astral: '\\uD800[\\uDFA0-\\uDFDF]'\r\n },\r\n {\r\n name: 'InOld_South_Arabian',\r\n astral: '\\uD802[\\uDE60-\\uDE7F]'\r\n },\r\n {\r\n name: 'InOld_Turkic',\r\n astral: '\\uD803[\\uDC00-\\uDC4F]'\r\n },\r\n {\r\n name: 'InOptical_Character_Recognition',\r\n bmp: '\\u2440-\\u245F'\r\n },\r\n {\r\n name: 'InOriya',\r\n bmp: '\\u0B00-\\u0B7F'\r\n },\r\n {\r\n name: 'InOrnamental_Dingbats',\r\n astral: '\\uD83D[\\uDE50-\\uDE7F]'\r\n },\r\n {\r\n name: 'InOsage',\r\n astral: '\\uD801[\\uDCB0-\\uDCFF]'\r\n },\r\n {\r\n name: 'InOsmanya',\r\n astral: '\\uD801[\\uDC80-\\uDCAF]'\r\n },\r\n {\r\n name: 'InPahawh_Hmong',\r\n astral: '\\uD81A[\\uDF00-\\uDF8F]'\r\n },\r\n {\r\n name: 'InPalmyrene',\r\n astral: '\\uD802[\\uDC60-\\uDC7F]'\r\n },\r\n {\r\n name: 'InPau_Cin_Hau',\r\n astral: '\\uD806[\\uDEC0-\\uDEFF]'\r\n },\r\n {\r\n name: 'InPhags_pa',\r\n bmp: '\\uA840-\\uA87F'\r\n },\r\n {\r\n name: 'InPhaistos_Disc',\r\n astral: '\\uD800[\\uDDD0-\\uDDFF]'\r\n },\r\n {\r\n name: 'InPhoenician',\r\n astral: '\\uD802[\\uDD00-\\uDD1F]'\r\n },\r\n {\r\n name: 'InPhonetic_Extensions',\r\n bmp: '\\u1D00-\\u1D7F'\r\n },\r\n {\r\n name: 'InPhonetic_Extensions_Supplement',\r\n bmp: '\\u1D80-\\u1DBF'\r\n },\r\n {\r\n name: 'InPlaying_Cards',\r\n astral: '\\uD83C[\\uDCA0-\\uDCFF]'\r\n },\r\n {\r\n name: 'InPrivate_Use_Area',\r\n bmp: '\\uE000-\\uF8FF'\r\n },\r\n {\r\n name: 'InPsalter_Pahlavi',\r\n astral: '\\uD802[\\uDF80-\\uDFAF]'\r\n },\r\n {\r\n name: 'InRejang',\r\n bmp: '\\uA930-\\uA95F'\r\n },\r\n {\r\n name: 'InRumi_Numeral_Symbols',\r\n astral: '\\uD803[\\uDE60-\\uDE7F]'\r\n },\r\n {\r\n name: 'InRunic',\r\n bmp: '\\u16A0-\\u16FF'\r\n },\r\n {\r\n name: 'InSamaritan',\r\n bmp: '\\u0800-\\u083F'\r\n },\r\n {\r\n name: 'InSaurashtra',\r\n bmp: '\\uA880-\\uA8DF'\r\n },\r\n {\r\n name: 'InSharada',\r\n astral: '\\uD804[\\uDD80-\\uDDDF]'\r\n },\r\n {\r\n name: 'InShavian',\r\n astral: '\\uD801[\\uDC50-\\uDC7F]'\r\n },\r\n {\r\n name: 'InShorthand_Format_Controls',\r\n astral: '\\uD82F[\\uDCA0-\\uDCAF]'\r\n },\r\n {\r\n name: 'InSiddham',\r\n astral: '\\uD805[\\uDD80-\\uDDFF]'\r\n },\r\n {\r\n name: 'InSinhala',\r\n bmp: '\\u0D80-\\u0DFF'\r\n },\r\n {\r\n name: 'InSinhala_Archaic_Numbers',\r\n astral: '\\uD804[\\uDDE0-\\uDDFF]'\r\n },\r\n {\r\n name: 'InSmall_Form_Variants',\r\n bmp: '\\uFE50-\\uFE6F'\r\n },\r\n {\r\n name: 'InSora_Sompeng',\r\n astral: '\\uD804[\\uDCD0-\\uDCFF]'\r\n },\r\n {\r\n name: 'InSpacing_Modifier_Letters',\r\n bmp: '\\u02B0-\\u02FF'\r\n },\r\n {\r\n name: 'InSpecials',\r\n bmp: '\\uFFF0-\\uFFFF'\r\n },\r\n {\r\n name: 'InSundanese',\r\n bmp: '\\u1B80-\\u1BBF'\r\n },\r\n {\r\n name: 'InSundanese_Supplement',\r\n bmp: '\\u1CC0-\\u1CCF'\r\n },\r\n {\r\n name: 'InSuperscripts_and_Subscripts',\r\n bmp: '\\u2070-\\u209F'\r\n },\r\n {\r\n name: 'InSupplemental_Arrows_A',\r\n bmp: '\\u27F0-\\u27FF'\r\n },\r\n {\r\n name: 'InSupplemental_Arrows_B',\r\n bmp: '\\u2900-\\u297F'\r\n },\r\n {\r\n name: 'InSupplemental_Arrows_C',\r\n astral: '\\uD83E[\\uDC00-\\uDCFF]'\r\n },\r\n {\r\n name: 'InSupplemental_Mathematical_Operators',\r\n bmp: '\\u2A00-\\u2AFF'\r\n },\r\n {\r\n name: 'InSupplemental_Punctuation',\r\n bmp: '\\u2E00-\\u2E7F'\r\n },\r\n {\r\n name: 'InSupplemental_Symbols_and_Pictographs',\r\n astral: '\\uD83E[\\uDD00-\\uDDFF]'\r\n },\r\n {\r\n name: 'InSupplementary_Private_Use_Area_A',\r\n astral: '[\\uDB80-\\uDBBF][\\uDC00-\\uDFFF]'\r\n },\r\n {\r\n name: 'InSupplementary_Private_Use_Area_B',\r\n astral: '[\\uDBC0-\\uDBFF][\\uDC00-\\uDFFF]'\r\n },\r\n {\r\n name: 'InSutton_SignWriting',\r\n astral: '\\uD836[\\uDC00-\\uDEAF]'\r\n },\r\n {\r\n name: 'InSyloti_Nagri',\r\n bmp: '\\uA800-\\uA82F'\r\n },\r\n {\r\n name: 'InSyriac',\r\n bmp: '\\u0700-\\u074F'\r\n },\r\n {\r\n name: 'InTagalog',\r\n bmp: '\\u1700-\\u171F'\r\n },\r\n {\r\n name: 'InTagbanwa',\r\n bmp: '\\u1760-\\u177F'\r\n },\r\n {\r\n name: 'InTags',\r\n astral: '\\uDB40[\\uDC00-\\uDC7F]'\r\n },\r\n {\r\n name: 'InTai_Le',\r\n bmp: '\\u1950-\\u197F'\r\n },\r\n {\r\n name: 'InTai_Tham',\r\n bmp: '\\u1A20-\\u1AAF'\r\n },\r\n {\r\n name: 'InTai_Viet',\r\n bmp: '\\uAA80-\\uAADF'\r\n },\r\n {\r\n name: 'InTai_Xuan_Jing_Symbols',\r\n astral: '\\uD834[\\uDF00-\\uDF5F]'\r\n },\r\n {\r\n name: 'InTakri',\r\n astral: '\\uD805[\\uDE80-\\uDECF]'\r\n },\r\n {\r\n name: 'InTamil',\r\n bmp: '\\u0B80-\\u0BFF'\r\n },\r\n {\r\n name: 'InTangut',\r\n astral: '[\\uD81C-\\uD821][\\uDC00-\\uDFFF]'\r\n },\r\n {\r\n name: 'InTangut_Components',\r\n astral: '\\uD822[\\uDC00-\\uDEFF]'\r\n },\r\n {\r\n name: 'InTelugu',\r\n bmp: '\\u0C00-\\u0C7F'\r\n },\r\n {\r\n name: 'InThaana',\r\n bmp: '\\u0780-\\u07BF'\r\n },\r\n {\r\n name: 'InThai',\r\n bmp: '\\u0E00-\\u0E7F'\r\n },\r\n {\r\n name: 'InTibetan',\r\n bmp: '\\u0F00-\\u0FFF'\r\n },\r\n {\r\n name: 'InTifinagh',\r\n bmp: '\\u2D30-\\u2D7F'\r\n },\r\n {\r\n name: 'InTirhuta',\r\n astral: '\\uD805[\\uDC80-\\uDCDF]'\r\n },\r\n {\r\n name: 'InTransport_and_Map_Symbols',\r\n astral: '\\uD83D[\\uDE80-\\uDEFF]'\r\n },\r\n {\r\n name: 'InUgaritic',\r\n astral: '\\uD800[\\uDF80-\\uDF9F]'\r\n },\r\n {\r\n name: 'InUnified_Canadian_Aboriginal_Syllabics',\r\n bmp: '\\u1400-\\u167F'\r\n },\r\n {\r\n name: 'InUnified_Canadian_Aboriginal_Syllabics_Extended',\r\n bmp: '\\u18B0-\\u18FF'\r\n },\r\n {\r\n name: 'InVai',\r\n bmp: '\\uA500-\\uA63F'\r\n },\r\n {\r\n name: 'InVariation_Selectors',\r\n bmp: '\\uFE00-\\uFE0F'\r\n },\r\n {\r\n name: 'InVariation_Selectors_Supplement',\r\n astral: '\\uDB40[\\uDD00-\\uDDEF]'\r\n },\r\n {\r\n name: 'InVedic_Extensions',\r\n bmp: '\\u1CD0-\\u1CFF'\r\n },\r\n {\r\n name: 'InVertical_Forms',\r\n bmp: '\\uFE10-\\uFE1F'\r\n },\r\n {\r\n name: 'InWarang_Citi',\r\n astral: '\\uD806[\\uDCA0-\\uDCFF]'\r\n },\r\n {\r\n name: 'InYi_Radicals',\r\n bmp: '\\uA490-\\uA4CF'\r\n },\r\n {\r\n name: 'InYi_Syllables',\r\n bmp: '\\uA000-\\uA48F'\r\n },\r\n {\r\n name: 'InYijing_Hexagram_Symbols',\r\n bmp: '\\u4DC0-\\u4DFF'\r\n }\r\n ]);\r\n\r\n};\r\n\n},{}],5:[function(require,module,exports){\n/*!\r\n * XRegExp Unicode Categories 3.2.0\r\n * \r\n * Steven Levithan (c) 2010-2017 MIT License\r\n * Unicode data by Mathias Bynens \r\n */\r\n\r\nmodule.exports = function(XRegExp) {\r\n 'use strict';\r\n\r\n /**\r\n * Adds support for Unicode's general categories. E.g., `\\p{Lu}` or `\\p{Uppercase Letter}`. See\r\n * category descriptions in UAX #44 . Token\r\n * names are case insensitive, and any spaces, hyphens, and underscores are ignored.\r\n *\r\n * Uses Unicode 9.0.0.\r\n *\r\n * @requires XRegExp, Unicode Base\r\n */\r\n\r\n if (!XRegExp.addUnicodeData) {\r\n throw new ReferenceError('Unicode Base must be loaded before Unicode Categories');\r\n }\r\n\r\n XRegExp.addUnicodeData([\r\n {\r\n name: 'C',\r\n alias: 'Other',\r\n isBmpLast: true,\r\n bmp: '\\0-\\x1F\\x7F-\\x9F\\xAD\\u0378\\u0379\\u0380-\\u0383\\u038B\\u038D\\u03A2\\u0530\\u0557\\u0558\\u0560\\u0588\\u058B\\u058C\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EF\\u05F5-\\u0605\\u061C\\u061D\\u06DD\\u070E\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07FB-\\u07FF\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F-\\u089F\\u08B5\\u08BE-\\u08D3\\u08E2\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FC-\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0AF8\\u0AFA-\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B55\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0BFF\\u0C04\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C77\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0D00\\u0D04\\u0D0D\\u0D11\\u0D3B\\u0D3C\\u0D45\\u0D49\\u0D50-\\u0D53\\u0D64\\u0D65\\u0D80\\u0D81\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E86\\u0E89\\u0E8B\\u0E8C\\u0E8E-\\u0E93\\u0E98\\u0EA0\\u0EA4\\u0EA6\\u0EA8\\u0EA9\\u0EAC\\u0EBA\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F6\\u13F7\\u13FE\\u13FF\\u169D-\\u169F\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180E\\u180F\\u181A-\\u181F\\u1878-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE\\u1AAF\\u1ABF-\\u1AFF\\u1B4C-\\u1B4F\\u1B7D-\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C89-\\u1CBF\\u1CC8-\\u1CCF\\u1CF7\\u1CFA-\\u1CFF\\u1DF6-\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20BF-\\u20CF\\u20F1-\\u20FF\\u218C-\\u218F\\u23FF\\u2427-\\u243F\\u244B-\\u245F\\u2B74\\u2B75\\u2B96\\u2B97\\u2BBA-\\u2BBC\\u2BC9\\u2BD2-\\u2BEB\\u2BF0-\\u2BFF\\u2C2F\\u2C5F\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E45-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u312E-\\u3130\\u318F\\u31BB-\\u31BF\\u31E4-\\u31EF\\u321F\\u32FF\\u4DB6-\\u4DBF\\u9FD6-\\u9FFF\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA6F8-\\uA6FF\\uA7AF\\uA7B8-\\uA7F6\\uA82C-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C6-\\uA8CD\\uA8DA-\\uA8DF\\uA8FE\\uA8FF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB66-\\uAB6F\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC2-\\uFBD2\\uFD40-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFE\\uFDFF\\uFE1A-\\uFE1F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD-\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF',\r\n astral: '\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDCFF\\uDD03-\\uDD06\\uDD34-\\uDD36\\uDD8F\\uDD9C-\\uDD9F\\uDDA1-\\uDDCF\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEFC-\\uDEFF\\uDF24-\\uDF2F\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDFC4-\\uDFC7\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDD6E\\uDD70-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56\\uDC9F-\\uDCA6\\uDCB0-\\uDCDF\\uDCF3\\uDCF6-\\uDCFA\\uDD1C-\\uDD1E\\uDD3A-\\uDD3E\\uDD40-\\uDD7F\\uDDB8-\\uDDBB\\uDDD0\\uDDD1\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE34-\\uDE37\\uDE3B-\\uDE3E\\uDE48-\\uDE4F\\uDE59-\\uDE5F\\uDEA0-\\uDEBF\\uDEE7-\\uDEEA\\uDEF7-\\uDEFF\\uDF36-\\uDF38\\uDF56\\uDF57\\uDF73-\\uDF77\\uDF92-\\uDF98\\uDF9D-\\uDFA8\\uDFB0-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCF9\\uDD00-\\uDE5F\\uDE7F-\\uDFFF]|\\uD804[\\uDC4E-\\uDC51\\uDC70-\\uDC7E\\uDCBD\\uDCC2-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD44-\\uDD4F\\uDD77-\\uDD7F\\uDDCE\\uDDCF\\uDDE0\\uDDF5-\\uDDFF\\uDE12\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEAA-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF3B\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC5A\\uDC5C\\uDC5E-\\uDC7F\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDDE-\\uDDFF\\uDE45-\\uDE4F\\uDE5A-\\uDE5F\\uDE6D-\\uDE7F\\uDEB8-\\uDEBF\\uDECA-\\uDEFF\\uDF1A-\\uDF1C\\uDF2C-\\uDF2F\\uDF40-\\uDFFF]|\\uD806[\\uDC00-\\uDC9F\\uDCF3-\\uDCFE\\uDD00-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC46-\\uDC4F\\uDC6D-\\uDC6F\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F\\uDC75-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD823-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83F\\uD874-\\uD87D\\uD87F-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDE6D\\uDE70-\\uDECF\\uDEEE\\uDEEF\\uDEF6-\\uDEFF\\uDF46-\\uDF4F\\uDF5A\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDEFF\\uDF45-\\uDF4F\\uDF7F-\\uDF8E\\uDFA0-\\uDFDF\\uDFE1-\\uDFFF]|\\uD821[\\uDFED-\\uDFFF]|\\uD822[\\uDEF3-\\uDFFF]|\\uD82C[\\uDC02-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A\\uDC9B\\uDCA0-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD73-\\uDD7A\\uDDE9-\\uDDFF\\uDE46-\\uDEFF\\uDF57-\\uDF5F\\uDF72-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]|\\uD836[\\uDE8C-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDFFF]|\\uD83A[\\uDCC5\\uDCC6\\uDCD7-\\uDCFF\\uDD4B-\\uDD4F\\uDD5A-\\uDD5D\\uDD60-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD6F\\uDDAD-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDEFF]|\\uD83D[\\uDED3-\\uDEDF\\uDEED-\\uDEEF\\uDEF7-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDD0F\\uDD1F\\uDD28-\\uDD2F\\uDD31\\uDD32\\uDD3F\\uDD4C-\\uDD4F\\uDD5F-\\uDD7F\\uDD92-\\uDDBF\\uDDC1-\\uDFFF]|\\uD869[\\uDED7-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]'\r\n },\r\n {\r\n name: 'Cc',\r\n alias: 'Control',\r\n bmp: '\\0-\\x1F\\x7F-\\x9F'\r\n },\r\n {\r\n name: 'Cf',\r\n alias: 'Format',\r\n bmp: '\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB',\r\n astral: '\\uD804\\uDCBD|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]'\r\n },\r\n {\r\n name: 'Cn',\r\n alias: 'Unassigned',\r\n bmp: '\\u0378\\u0379\\u0380-\\u0383\\u038B\\u038D\\u03A2\\u0530\\u0557\\u0558\\u0560\\u0588\\u058B\\u058C\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EF\\u05F5-\\u05FF\\u061D\\u070E\\u074B\\u074C\\u07B2-\\u07BF\\u07FB-\\u07FF\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F-\\u089F\\u08B5\\u08BE-\\u08D3\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FC-\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0AF8\\u0AFA-\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B55\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0BFF\\u0C04\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C77\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0D00\\u0D04\\u0D0D\\u0D11\\u0D3B\\u0D3C\\u0D45\\u0D49\\u0D50-\\u0D53\\u0D64\\u0D65\\u0D80\\u0D81\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E86\\u0E89\\u0E8B\\u0E8C\\u0E8E-\\u0E93\\u0E98\\u0EA0\\u0EA4\\u0EA6\\u0EA8\\u0EA9\\u0EAC\\u0EBA\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F6\\u13F7\\u13FE\\u13FF\\u169D-\\u169F\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180F\\u181A-\\u181F\\u1878-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE\\u1AAF\\u1ABF-\\u1AFF\\u1B4C-\\u1B4F\\u1B7D-\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C89-\\u1CBF\\u1CC8-\\u1CCF\\u1CF7\\u1CFA-\\u1CFF\\u1DF6-\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u2065\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20BF-\\u20CF\\u20F1-\\u20FF\\u218C-\\u218F\\u23FF\\u2427-\\u243F\\u244B-\\u245F\\u2B74\\u2B75\\u2B96\\u2B97\\u2BBA-\\u2BBC\\u2BC9\\u2BD2-\\u2BEB\\u2BF0-\\u2BFF\\u2C2F\\u2C5F\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E45-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u312E-\\u3130\\u318F\\u31BB-\\u31BF\\u31E4-\\u31EF\\u321F\\u32FF\\u4DB6-\\u4DBF\\u9FD6-\\u9FFF\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA6F8-\\uA6FF\\uA7AF\\uA7B8-\\uA7F6\\uA82C-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C6-\\uA8CD\\uA8DA-\\uA8DF\\uA8FE\\uA8FF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB66-\\uAB6F\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC2-\\uFBD2\\uFD40-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFE\\uFDFF\\uFE1A-\\uFE1F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD\\uFEFE\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFF8\\uFFFE\\uFFFF',\r\n astral: '\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDCFF\\uDD03-\\uDD06\\uDD34-\\uDD36\\uDD8F\\uDD9C-\\uDD9F\\uDDA1-\\uDDCF\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEFC-\\uDEFF\\uDF24-\\uDF2F\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDFC4-\\uDFC7\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDD6E\\uDD70-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56\\uDC9F-\\uDCA6\\uDCB0-\\uDCDF\\uDCF3\\uDCF6-\\uDCFA\\uDD1C-\\uDD1E\\uDD3A-\\uDD3E\\uDD40-\\uDD7F\\uDDB8-\\uDDBB\\uDDD0\\uDDD1\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE34-\\uDE37\\uDE3B-\\uDE3E\\uDE48-\\uDE4F\\uDE59-\\uDE5F\\uDEA0-\\uDEBF\\uDEE7-\\uDEEA\\uDEF7-\\uDEFF\\uDF36-\\uDF38\\uDF56\\uDF57\\uDF73-\\uDF77\\uDF92-\\uDF98\\uDF9D-\\uDFA8\\uDFB0-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCF9\\uDD00-\\uDE5F\\uDE7F-\\uDFFF]|\\uD804[\\uDC4E-\\uDC51\\uDC70-\\uDC7E\\uDCC2-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD44-\\uDD4F\\uDD77-\\uDD7F\\uDDCE\\uDDCF\\uDDE0\\uDDF5-\\uDDFF\\uDE12\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEAA-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF3B\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC5A\\uDC5C\\uDC5E-\\uDC7F\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDDE-\\uDDFF\\uDE45-\\uDE4F\\uDE5A-\\uDE5F\\uDE6D-\\uDE7F\\uDEB8-\\uDEBF\\uDECA-\\uDEFF\\uDF1A-\\uDF1C\\uDF2C-\\uDF2F\\uDF40-\\uDFFF]|\\uD806[\\uDC00-\\uDC9F\\uDCF3-\\uDCFE\\uDD00-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC46-\\uDC4F\\uDC6D-\\uDC6F\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F\\uDC75-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD823-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83F\\uD874-\\uD87D\\uD87F-\\uDB3F\\uDB41-\\uDB7F][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDE6D\\uDE70-\\uDECF\\uDEEE\\uDEEF\\uDEF6-\\uDEFF\\uDF46-\\uDF4F\\uDF5A\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDEFF\\uDF45-\\uDF4F\\uDF7F-\\uDF8E\\uDFA0-\\uDFDF\\uDFE1-\\uDFFF]|\\uD821[\\uDFED-\\uDFFF]|\\uD822[\\uDEF3-\\uDFFF]|\\uD82C[\\uDC02-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A\\uDC9B\\uDCA4-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDDE9-\\uDDFF\\uDE46-\\uDEFF\\uDF57-\\uDF5F\\uDF72-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]|\\uD836[\\uDE8C-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDFFF]|\\uD83A[\\uDCC5\\uDCC6\\uDCD7-\\uDCFF\\uDD4B-\\uDD4F\\uDD5A-\\uDD5D\\uDD60-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD6F\\uDDAD-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDEFF]|\\uD83D[\\uDED3-\\uDEDF\\uDEED-\\uDEEF\\uDEF7-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDD0F\\uDD1F\\uDD28-\\uDD2F\\uDD31\\uDD32\\uDD3F\\uDD4C-\\uDD4F\\uDD5F-\\uDD7F\\uDD92-\\uDDBF\\uDDC1-\\uDFFF]|\\uD869[\\uDED7-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uDB40[\\uDC00\\uDC02-\\uDC1F\\uDC80-\\uDCFF\\uDDF0-\\uDFFF]|[\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]'\r\n },\r\n {\r\n name: 'Co',\r\n alias: 'Private_Use',\r\n bmp: '\\uE000-\\uF8FF',\r\n astral: '[\\uDB80-\\uDBBE\\uDBC0-\\uDBFE][\\uDC00-\\uDFFF]|[\\uDBBF\\uDBFF][\\uDC00-\\uDFFD]'\r\n },\r\n {\r\n name: 'Cs',\r\n alias: 'Surrogate',\r\n bmp: '\\uD800-\\uDFFF'\r\n },\r\n {\r\n name: 'L',\r\n alias: 'Letter',\r\n bmp: 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\r\n astral: '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]'\r\n },\r\n {\r\n name: 'Ll',\r\n alias: 'Lowercase_Letter',\r\n bmp: 'a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0561-\\u0587\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7B5\\uA7B7\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB65\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A',\r\n astral: '\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD83A[\\uDD22-\\uDD43]'\r\n },\r\n {\r\n name: 'Lm',\r\n alias: 'Modifier_Letter',\r\n bmp: '\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D6A\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA69C\\uA69D\\uA717-\\uA71F\\uA770\\uA788\\uA7F8\\uA7F9\\uA9CF\\uA9E6\\uAA70\\uAADD\\uAAF3\\uAAF4\\uAB5C-\\uAB5F\\uFF70\\uFF9E\\uFF9F',\r\n astral: '\\uD81A[\\uDF40-\\uDF43]|\\uD81B[\\uDF93-\\uDF9F\\uDFE0]'\r\n },\r\n {\r\n name: 'Lo',\r\n alias: 'Other_Letter',\r\n bmp: '\\xAA\\xBA\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10D0-\\u10FA\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u2135-\\u2138\\u2D30-\\u2D67\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA78F\\uA7F7\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9E0-\\uA9E4\\uA9E7-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAAE0-\\uAAEA\\uAAF2\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\r\n astral: '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC50-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]'\r\n },\r\n {\r\n name: 'Lt',\r\n alias: 'Titlecase_Letter',\r\n bmp: '\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC'\r\n },\r\n {\r\n name: 'Lu',\r\n alias: 'Uppercase_Letter',\r\n bmp: 'A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uFF21-\\uFF3A',\r\n astral: '\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21]'\r\n },\r\n {\r\n name: 'M',\r\n alias: 'Mark',\r\n bmp: '\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F',\r\n astral: '\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDDCA-\\uDDCC\\uDE2C-\\uDE37\\uDE3E\\uDEDF-\\uDEEA\\uDF00-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC35-\\uDC46\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDDDC\\uDDDD\\uDE30-\\uDE40\\uDEAB-\\uDEB7\\uDF1D-\\uDF2B]|\\uD807[\\uDC2F-\\uDC36\\uDC38-\\uDC3F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uDB40[\\uDD00-\\uDDEF]'\r\n },\r\n {\r\n name: 'Mc',\r\n alias: 'Spacing_Mark',\r\n bmp: '\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\u1CF3\\u302E\\u302F\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uAA7D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC',\r\n astral: '\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3E\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB0-\\uDCB2\\uDCB9\\uDCBB-\\uDCBE\\uDCC1\\uDDAF-\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF20\\uDF21\\uDF26]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4]|\\uD81B[\\uDF51-\\uDF7E]|\\uD834[\\uDD65\\uDD66\\uDD6D-\\uDD72]'\r\n },\r\n {\r\n name: 'Me',\r\n alias: 'Enclosing_Mark',\r\n bmp: '\\u0488\\u0489\\u1ABE\\u20DD-\\u20E0\\u20E2-\\u20E4\\uA670-\\uA672'\r\n },\r\n {\r\n name: 'Mn',\r\n alias: 'Nonspacing_Mark',\r\n bmp: '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D01\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABD\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F',\r\n astral: '\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDCA-\\uDDCC\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3C\\uDF40\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDCB3-\\uDCB8\\uDCBA\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uDB40[\\uDD00-\\uDDEF]'\r\n },\r\n {\r\n name: 'N',\r\n alias: 'Number',\r\n bmp: '0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19',\r\n astral: '\\uD800[\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD801[\\uDCA0-\\uDCA9]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE47\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDE60-\\uDE7E]|\\uD804[\\uDC52-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDDE1-\\uDDF4\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF3B]|\\uD806[\\uDCE0-\\uDCF2]|\\uD807[\\uDC50-\\uDC6C]|\\uD809[\\uDC00-\\uDC6E]|\\uD81A[\\uDE60-\\uDE69\\uDF50-\\uDF59\\uDF5B-\\uDF61]|\\uD834[\\uDF60-\\uDF71]|\\uD835[\\uDFCE-\\uDFFF]|\\uD83A[\\uDCC7-\\uDCCF\\uDD50-\\uDD59]|\\uD83C[\\uDD00-\\uDD0C]'\r\n },\r\n {\r\n name: 'Nd',\r\n alias: 'Decimal_Number',\r\n bmp: '0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19',\r\n astral: '\\uD801[\\uDCA0-\\uDCA9]|\\uD804[\\uDC66-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF39]|\\uD806[\\uDCE0-\\uDCE9]|\\uD807[\\uDC50-\\uDC59]|\\uD81A[\\uDE60-\\uDE69\\uDF50-\\uDF59]|\\uD835[\\uDFCE-\\uDFFF]|\\uD83A[\\uDD50-\\uDD59]'\r\n },\r\n {\r\n name: 'Nl',\r\n alias: 'Letter_Number',\r\n bmp: '\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF',\r\n astral: '\\uD800[\\uDD40-\\uDD74\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD809[\\uDC00-\\uDC6E]'\r\n },\r\n {\r\n name: 'No',\r\n alias: 'Other_Number',\r\n bmp: '\\xB2\\xB3\\xB9\\xBC-\\xBE\\u09F4-\\u09F9\\u0B72-\\u0B77\\u0BF0-\\u0BF2\\u0C78-\\u0C7E\\u0D58-\\u0D5E\\u0D70-\\u0D78\\u0F2A-\\u0F33\\u1369-\\u137C\\u17F0-\\u17F9\\u19DA\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u215F\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA830-\\uA835',\r\n astral: '\\uD800[\\uDD07-\\uDD33\\uDD75-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE47\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDE60-\\uDE7E]|\\uD804[\\uDC52-\\uDC65\\uDDE1-\\uDDF4]|\\uD805[\\uDF3A\\uDF3B]|\\uD806[\\uDCEA-\\uDCF2]|\\uD807[\\uDC5A-\\uDC6C]|\\uD81A[\\uDF5B-\\uDF61]|\\uD834[\\uDF60-\\uDF71]|\\uD83A[\\uDCC7-\\uDCCF]|\\uD83C[\\uDD00-\\uDD0C]'\r\n },\r\n {\r\n name: 'P',\r\n alias: 'Punctuation',\r\n bmp: '\\x21-\\x23\\x25-\\\\x2A\\x2C-\\x2F\\x3A\\x3B\\\\x3F\\x40\\\\x5B-\\\\x5D\\x5F\\\\x7B\\x7D\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E44\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65',\r\n astral: '\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]'\r\n },\r\n {\r\n name: 'Pc',\r\n alias: 'Connector_Punctuation',\r\n bmp: '\\x5F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F'\r\n },\r\n {\r\n name: 'Pd',\r\n alias: 'Dash_Punctuation',\r\n bmp: '\\\\x2D\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2E17\\u2E1A\\u2E3A\\u2E3B\\u2E40\\u301C\\u3030\\u30A0\\uFE31\\uFE32\\uFE58\\uFE63\\uFF0D'\r\n },\r\n {\r\n name: 'Pe',\r\n alias: 'Close_Punctuation',\r\n bmp: '\\\\x29\\\\x5D\\x7D\\u0F3B\\u0F3D\\u169C\\u2046\\u207E\\u208E\\u2309\\u230B\\u232A\\u2769\\u276B\\u276D\\u276F\\u2771\\u2773\\u2775\\u27C6\\u27E7\\u27E9\\u27EB\\u27ED\\u27EF\\u2984\\u2986\\u2988\\u298A\\u298C\\u298E\\u2990\\u2992\\u2994\\u2996\\u2998\\u29D9\\u29DB\\u29FD\\u2E23\\u2E25\\u2E27\\u2E29\\u3009\\u300B\\u300D\\u300F\\u3011\\u3015\\u3017\\u3019\\u301B\\u301E\\u301F\\uFD3E\\uFE18\\uFE36\\uFE38\\uFE3A\\uFE3C\\uFE3E\\uFE40\\uFE42\\uFE44\\uFE48\\uFE5A\\uFE5C\\uFE5E\\uFF09\\uFF3D\\uFF5D\\uFF60\\uFF63'\r\n },\r\n {\r\n name: 'Pf',\r\n alias: 'Final_Punctuation',\r\n bmp: '\\xBB\\u2019\\u201D\\u203A\\u2E03\\u2E05\\u2E0A\\u2E0D\\u2E1D\\u2E21'\r\n },\r\n {\r\n name: 'Pi',\r\n alias: 'Initial_Punctuation',\r\n bmp: '\\xAB\\u2018\\u201B\\u201C\\u201F\\u2039\\u2E02\\u2E04\\u2E09\\u2E0C\\u2E1C\\u2E20'\r\n },\r\n {\r\n name: 'Po',\r\n alias: 'Other_Punctuation',\r\n bmp: '\\x21-\\x23\\x25-\\x27\\\\x2A\\x2C\\\\x2E\\x2F\\x3A\\x3B\\\\x3F\\x40\\\\x5C\\xA1\\xA7\\xB6\\xB7\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u166D\\u166E\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u1805\\u1807-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2016\\u2017\\u2020-\\u2027\\u2030-\\u2038\\u203B-\\u203E\\u2041-\\u2043\\u2047-\\u2051\\u2053\\u2055-\\u205E\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00\\u2E01\\u2E06-\\u2E08\\u2E0B\\u2E0E-\\u2E16\\u2E18\\u2E19\\u2E1B\\u2E1E\\u2E1F\\u2E2A-\\u2E2E\\u2E30-\\u2E39\\u2E3C-\\u2E3F\\u2E41\\u2E43\\u2E44\\u3001-\\u3003\\u303D\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFE10-\\uFE16\\uFE19\\uFE30\\uFE45\\uFE46\\uFE49-\\uFE4C\\uFE50-\\uFE52\\uFE54-\\uFE57\\uFE5F-\\uFE61\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF07\\uFF0A\\uFF0C\\uFF0E\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3C\\uFF61\\uFF64\\uFF65',\r\n astral: '\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]'\r\n },\r\n {\r\n name: 'Ps',\r\n alias: 'Open_Punctuation',\r\n bmp: '\\\\x28\\\\x5B\\\\x7B\\u0F3A\\u0F3C\\u169B\\u201A\\u201E\\u2045\\u207D\\u208D\\u2308\\u230A\\u2329\\u2768\\u276A\\u276C\\u276E\\u2770\\u2772\\u2774\\u27C5\\u27E6\\u27E8\\u27EA\\u27EC\\u27EE\\u2983\\u2985\\u2987\\u2989\\u298B\\u298D\\u298F\\u2991\\u2993\\u2995\\u2997\\u29D8\\u29DA\\u29FC\\u2E22\\u2E24\\u2E26\\u2E28\\u2E42\\u3008\\u300A\\u300C\\u300E\\u3010\\u3014\\u3016\\u3018\\u301A\\u301D\\uFD3F\\uFE17\\uFE35\\uFE37\\uFE39\\uFE3B\\uFE3D\\uFE3F\\uFE41\\uFE43\\uFE47\\uFE59\\uFE5B\\uFE5D\\uFF08\\uFF3B\\uFF5B\\uFF5F\\uFF62'\r\n },\r\n {\r\n name: 'S',\r\n alias: 'Symbol',\r\n bmp: '\\\\x24\\\\x2B\\x3C-\\x3E\\\\x5E\\x60\\\\x7C\\x7E\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20BE\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u23FE\\u2400-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BB9\\u2BBD-\\u2BC8\\u2BCA-\\u2BD1\\u2BEC-\\u2BEF\\u2CE5-\\u2CEA\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u32FE\\u3300-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uFB29\\uFBB2-\\uFBC1\\uFDFC\\uFDFD\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD',\r\n astral: '\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9B\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDE8\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD83B[\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD10-\\uDD2E\\uDD30-\\uDD6B\\uDD70-\\uDDAC\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED2\\uDEE0-\\uDEEC\\uDEF0-\\uDEF6\\uDF00-\\uDF73\\uDF80-\\uDFD4]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDD10-\\uDD1E\\uDD20-\\uDD27\\uDD30\\uDD33-\\uDD3E\\uDD40-\\uDD4B\\uDD50-\\uDD5E\\uDD80-\\uDD91\\uDDC0]'\r\n },\r\n {\r\n name: 'Sc',\r\n alias: 'Currency_Symbol',\r\n bmp: '\\\\x24\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BE\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6'\r\n },\r\n {\r\n name: 'Sk',\r\n alias: 'Modifier_Symbol',\r\n bmp: '\\\\x5E\\x60\\xA8\\xAF\\xB4\\xB8\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u309B\\u309C\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uAB5B\\uFBB2-\\uFBC1\\uFF3E\\uFF40\\uFFE3',\r\n astral: '\\uD83C[\\uDFFB-\\uDFFF]'\r\n },\r\n {\r\n name: 'Sm',\r\n alias: 'Math_Symbol',\r\n bmp: '\\\\x2B\\x3C-\\x3E\\\\x7C\\x7E\\xAC\\xB1\\xD7\\xF7\\u03F6\\u0606-\\u0608\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u2118\\u2140-\\u2144\\u214B\\u2190-\\u2194\\u219A\\u219B\\u21A0\\u21A3\\u21A6\\u21AE\\u21CE\\u21CF\\u21D2\\u21D4\\u21F4-\\u22FF\\u2320\\u2321\\u237C\\u239B-\\u23B3\\u23DC-\\u23E1\\u25B7\\u25C1\\u25F8-\\u25FF\\u266F\\u27C0-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u27FF\\u2900-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2AFF\\u2B30-\\u2B44\\u2B47-\\u2B4C\\uFB29\\uFE62\\uFE64-\\uFE66\\uFF0B\\uFF1C-\\uFF1E\\uFF5C\\uFF5E\\uFFE2\\uFFE9-\\uFFEC',\r\n astral: '\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD83B[\\uDEF0\\uDEF1]'\r\n },\r\n {\r\n name: 'So',\r\n alias: 'Other_Symbol',\r\n bmp: '\\xA6\\xA9\\xAE\\xB0\\u0482\\u058D\\u058E\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u09FA\\u0B70\\u0BF3-\\u0BF8\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116\\u2117\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u214A\\u214C\\u214D\\u214F\\u218A\\u218B\\u2195-\\u2199\\u219C-\\u219F\\u21A1\\u21A2\\u21A4\\u21A5\\u21A7-\\u21AD\\u21AF-\\u21CD\\u21D0\\u21D1\\u21D3\\u21D5-\\u21F3\\u2300-\\u2307\\u230C-\\u231F\\u2322-\\u2328\\u232B-\\u237B\\u237D-\\u239A\\u23B4-\\u23DB\\u23E2-\\u23FE\\u2400-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u25B6\\u25B8-\\u25C0\\u25C2-\\u25F7\\u2600-\\u266E\\u2670-\\u2767\\u2794-\\u27BF\\u2800-\\u28FF\\u2B00-\\u2B2F\\u2B45\\u2B46\\u2B4D-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BB9\\u2BBD-\\u2BC8\\u2BCA-\\u2BD1\\u2BEC-\\u2BEF\\u2CE5-\\u2CEA\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u32FE\\u3300-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA828-\\uA82B\\uA836\\uA837\\uA839\\uAA77-\\uAA79\\uFDFD\\uFFE4\\uFFE8\\uFFED\\uFFEE\\uFFFC\\uFFFD',\r\n astral: '\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9B\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDE8\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD10-\\uDD2E\\uDD30-\\uDD6B\\uDD70-\\uDDAC\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDF00-\\uDFFA]|\\uD83D[\\uDC00-\\uDED2\\uDEE0-\\uDEEC\\uDEF0-\\uDEF6\\uDF00-\\uDF73\\uDF80-\\uDFD4]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDD10-\\uDD1E\\uDD20-\\uDD27\\uDD30\\uDD33-\\uDD3E\\uDD40-\\uDD4B\\uDD50-\\uDD5E\\uDD80-\\uDD91\\uDDC0]'\r\n },\r\n {\r\n name: 'Z',\r\n alias: 'Separator',\r\n bmp: '\\x20\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\r\n },\r\n {\r\n name: 'Zl',\r\n alias: 'Line_Separator',\r\n bmp: '\\u2028'\r\n },\r\n {\r\n name: 'Zp',\r\n alias: 'Paragraph_Separator',\r\n bmp: '\\u2029'\r\n },\r\n {\r\n name: 'Zs',\r\n alias: 'Space_Separator',\r\n bmp: '\\x20\\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000'\r\n }\r\n ]);\r\n\r\n};\r\n\n},{}],6:[function(require,module,exports){\n/*!\r\n * XRegExp Unicode Properties 3.2.0\r\n * \r\n * Steven Levithan (c) 2012-2017 MIT License\r\n * Unicode data by Mathias Bynens \r\n */\r\n\r\nmodule.exports = function(XRegExp) {\r\n 'use strict';\r\n\r\n /**\r\n * Adds properties to meet the UTS #18 Level 1 RL1.2 requirements for Unicode regex support. See\r\n * . Following are definitions of these properties from\r\n * UAX #44 :\r\n *\r\n * - Alphabetic\r\n * Characters with the Alphabetic property. Generated from: Lowercase + Uppercase + Lt + Lm +\r\n * Lo + Nl + Other_Alphabetic.\r\n *\r\n * - Default_Ignorable_Code_Point\r\n * For programmatic determination of default ignorable code points. New characters that should\r\n * be ignored in rendering (unless explicitly supported) will be assigned in these ranges,\r\n * permitting programs to correctly handle the default rendering of such characters when not\r\n * otherwise supported.\r\n *\r\n * - Lowercase\r\n * Characters with the Lowercase property. Generated from: Ll + Other_Lowercase.\r\n *\r\n * - Noncharacter_Code_Point\r\n * Code points permanently reserved for internal use.\r\n *\r\n * - Uppercase\r\n * Characters with the Uppercase property. Generated from: Lu + Other_Uppercase.\r\n *\r\n * - White_Space\r\n * Spaces, separator characters and other control characters which should be treated by\r\n * programming languages as \"white space\" for the purpose of parsing elements.\r\n *\r\n * The properties ASCII, Any, and Assigned are also included but are not defined in UAX #44. UTS\r\n * #18 RL1.2 additionally requires support for Unicode scripts and general categories. These are\r\n * included in XRegExp's Unicode Categories and Unicode Scripts addons.\r\n *\r\n * Token names are case insensitive, and any spaces, hyphens, and underscores are ignored.\r\n *\r\n * Uses Unicode 9.0.0.\r\n *\r\n * @requires XRegExp, Unicode Base\r\n */\r\n\r\n if (!XRegExp.addUnicodeData) {\r\n throw new ReferenceError('Unicode Base must be loaded before Unicode Properties');\r\n }\r\n\r\n var unicodeData = [\r\n {\r\n name: 'ASCII',\r\n bmp: '\\0-\\x7F'\r\n },\r\n {\r\n name: 'Alphabetic',\r\n bmp: 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0345\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05B0-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0657\\u0659-\\u065F\\u066E-\\u06D3\\u06D5-\\u06DC\\u06E1-\\u06E8\\u06ED-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710-\\u073F\\u074D-\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0817\\u081A-\\u082C\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08DF\\u08E3-\\u08E9\\u08F0-\\u093B\\u093D-\\u094C\\u094E-\\u0950\\u0955-\\u0963\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C4\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09F0\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B\\u0A4C\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A70-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0-\\u0AE3\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D-\\u0B44\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4C\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCC\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E46\\u0E4D\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ECD\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F81\\u0F88-\\u0F97\\u0F99-\\u0FBC\\u1000-\\u1036\\u1038\\u103B-\\u103F\\u1050-\\u1062\\u1065-\\u1068\\u106E-\\u1086\\u108E\\u109C\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1713\\u1720-\\u1733\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17B3\\u17B6-\\u17C8\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u1938\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A61-\\u1A74\\u1AA7\\u1B00-\\u1B33\\u1B35-\\u1B43\\u1B45-\\u1B4B\\u1B80-\\u1BA9\\u1BAC-\\u1BAF\\u1BBA-\\u1BE5\\u1BE7-\\u1BF1\\u1C00-\\u1C35\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1DE7-\\u1DF4\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u24B6-\\u24E9\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA674-\\uA67B\\uA67F-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA827\\uA840-\\uA873\\uA880-\\uA8C3\\uA8C5\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA92A\\uA930-\\uA952\\uA960-\\uA97C\\uA980-\\uA9B2\\uA9B4-\\uA9BF\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAABE\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\r\n astral: '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC45\\uDC82-\\uDCB8\\uDCD0-\\uDCE8\\uDD00-\\uDD32\\uDD50-\\uDD72\\uDD76\\uDD80-\\uDDBF\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE34\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEE8\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D-\\uDF44\\uDF47\\uDF48\\uDF4B\\uDF4C\\uDF50\\uDF57\\uDF5D-\\uDF63]|\\uD805[\\uDC00-\\uDC41\\uDC43-\\uDC45\\uDC47-\\uDC4A\\uDC80-\\uDCC1\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDB5\\uDDB8-\\uDDBE\\uDDD8-\\uDDDD\\uDE00-\\uDE3E\\uDE40\\uDE44\\uDE80-\\uDEB5\\uDF00-\\uDF19\\uDF1D-\\uDF2A]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC3E\\uDC40\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF93-\\uDF9F\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9E]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD47]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD30-\\uDD49\\uDD50-\\uDD69\\uDD70-\\uDD89]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]'\r\n },\r\n {\r\n name: 'Any',\r\n isBmpLast: true,\r\n bmp: '\\0-\\uFFFF',\r\n astral: '[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]'\r\n },\r\n {\r\n name: 'Default_Ignorable_Code_Point',\r\n bmp: '\\xAD\\u034F\\u061C\\u115F\\u1160\\u17B4\\u17B5\\u180B-\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u3164\\uFE00-\\uFE0F\\uFEFF\\uFFA0\\uFFF0-\\uFFF8',\r\n astral: '\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|[\\uDB40-\\uDB43][\\uDC00-\\uDFFF]'\r\n },\r\n {\r\n name: 'Lowercase',\r\n bmp: 'a-z\\xAA\\xB5\\xBA\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02B8\\u02C0\\u02C1\\u02E0-\\u02E4\\u0345\\u0371\\u0373\\u0377\\u037A-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0561-\\u0587\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1DBF\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u2071\\u207F\\u2090-\\u209C\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2170-\\u217F\\u2184\\u24D0-\\u24E9\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7D\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B-\\uA69D\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7B5\\uA7B7\\uA7F8-\\uA7FA\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A',\r\n astral: '\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD83A[\\uDD22-\\uDD43]'\r\n },\r\n {\r\n name: 'Noncharacter_Code_Point',\r\n bmp: '\\uFDD0-\\uFDEF\\uFFFE\\uFFFF',\r\n astral: '[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]'\r\n },\r\n {\r\n name: 'Uppercase',\r\n bmp: 'A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2160-\\u216F\\u2183\\u24B6-\\u24CF\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uFF21-\\uFF3A',\r\n astral: '\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21]|\\uD83C[\\uDD30-\\uDD49\\uDD50-\\uDD69\\uDD70-\\uDD89]'\r\n },\r\n {\r\n name: 'White_Space',\r\n bmp: '\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\r\n }\r\n ];\r\n\r\n // Add non-generated data\r\n unicodeData.push({\r\n name: 'Assigned',\r\n // Since this is defined as the inverse of Unicode category Cn (Unassigned), the Unicode\r\n // Categories addon is required to use this property\r\n inverseOf: 'Cn'\r\n });\r\n\r\n XRegExp.addUnicodeData(unicodeData);\r\n\r\n};\r\n\n},{}],7:[function(require,module,exports){\n/*!\r\n * XRegExp Unicode Scripts 3.2.0\r\n * \r\n * Steven Levithan (c) 2010-2017 MIT License\r\n * Unicode data by Mathias Bynens \r\n */\r\n\r\nmodule.exports = function(XRegExp) {\r\n 'use strict';\r\n\r\n /**\r\n * Adds support for all Unicode scripts. E.g., `\\p{Latin}`. Token names are case insensitive,\r\n * and any spaces, hyphens, and underscores are ignored.\r\n *\r\n * Uses Unicode 9.0.0.\r\n *\r\n * @requires XRegExp, Unicode Base\r\n */\r\n\r\n if (!XRegExp.addUnicodeData) {\r\n throw new ReferenceError('Unicode Base must be loaded before Unicode Scripts');\r\n }\r\n\r\n XRegExp.addUnicodeData([\r\n {\r\n name: 'Adlam',\r\n astral: '\\uD83A[\\uDD00-\\uDD4A\\uDD50-\\uDD59\\uDD5E\\uDD5F]'\r\n },\r\n {\r\n name: 'Ahom',\r\n astral: '\\uD805[\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF3F]'\r\n },\r\n {\r\n name: 'Anatolian_Hieroglyphs',\r\n astral: '\\uD811[\\uDC00-\\uDE46]'\r\n },\r\n {\r\n name: 'Arabic',\r\n bmp: '\\u0600-\\u0604\\u0606-\\u060B\\u060D-\\u061A\\u061E\\u0620-\\u063F\\u0641-\\u064A\\u0656-\\u066F\\u0671-\\u06DC\\u06DE-\\u06FF\\u0750-\\u077F\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u08FF\\uFB50-\\uFBC1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFD\\uFE70-\\uFE74\\uFE76-\\uFEFC',\r\n astral: '\\uD803[\\uDE60-\\uDE7E]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB\\uDEF0\\uDEF1]'\r\n },\r\n {\r\n name: 'Armenian',\r\n bmp: '\\u0531-\\u0556\\u0559-\\u055F\\u0561-\\u0587\\u058A\\u058D-\\u058F\\uFB13-\\uFB17'\r\n },\r\n {\r\n name: 'Avestan',\r\n astral: '\\uD802[\\uDF00-\\uDF35\\uDF39-\\uDF3F]'\r\n },\r\n {\r\n name: 'Balinese',\r\n bmp: '\\u1B00-\\u1B4B\\u1B50-\\u1B7C'\r\n },\r\n {\r\n name: 'Bamum',\r\n bmp: '\\uA6A0-\\uA6F7',\r\n astral: '\\uD81A[\\uDC00-\\uDE38]'\r\n },\r\n {\r\n name: 'Bassa_Vah',\r\n astral: '\\uD81A[\\uDED0-\\uDEED\\uDEF0-\\uDEF5]'\r\n },\r\n {\r\n name: 'Batak',\r\n bmp: '\\u1BC0-\\u1BF3\\u1BFC-\\u1BFF'\r\n },\r\n {\r\n name: 'Bengali',\r\n bmp: '\\u0980-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09FB'\r\n },\r\n {\r\n name: 'Bhaiksuki',\r\n astral: '\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC45\\uDC50-\\uDC6C]'\r\n },\r\n {\r\n name: 'Bopomofo',\r\n bmp: '\\u02EA\\u02EB\\u3105-\\u312D\\u31A0-\\u31BA'\r\n },\r\n {\r\n name: 'Brahmi',\r\n astral: '\\uD804[\\uDC00-\\uDC4D\\uDC52-\\uDC6F\\uDC7F]'\r\n },\r\n {\r\n name: 'Braille',\r\n bmp: '\\u2800-\\u28FF'\r\n },\r\n {\r\n name: 'Buginese',\r\n bmp: '\\u1A00-\\u1A1B\\u1A1E\\u1A1F'\r\n },\r\n {\r\n name: 'Buhid',\r\n bmp: '\\u1740-\\u1753'\r\n },\r\n {\r\n name: 'Canadian_Aboriginal',\r\n bmp: '\\u1400-\\u167F\\u18B0-\\u18F5'\r\n },\r\n {\r\n name: 'Carian',\r\n astral: '\\uD800[\\uDEA0-\\uDED0]'\r\n },\r\n {\r\n name: 'Caucasian_Albanian',\r\n astral: '\\uD801[\\uDD30-\\uDD63\\uDD6F]'\r\n },\r\n {\r\n name: 'Chakma',\r\n astral: '\\uD804[\\uDD00-\\uDD34\\uDD36-\\uDD43]'\r\n },\r\n {\r\n name: 'Cham',\r\n bmp: '\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F'\r\n },\r\n {\r\n name: 'Cherokee',\r\n bmp: '\\u13A0-\\u13F5\\u13F8-\\u13FD\\uAB70-\\uABBF'\r\n },\r\n {\r\n name: 'Common',\r\n bmp: '\\0-\\x40\\\\x5B-\\x60\\\\x7B-\\xA9\\xAB-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02B9-\\u02DF\\u02E5-\\u02E9\\u02EC-\\u02FF\\u0374\\u037E\\u0385\\u0387\\u0589\\u0605\\u060C\\u061B\\u061C\\u061F\\u0640\\u06DD\\u08E2\\u0964\\u0965\\u0E3F\\u0FD5-\\u0FD8\\u10FB\\u16EB-\\u16ED\\u1735\\u1736\\u1802\\u1803\\u1805\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u2000-\\u200B\\u200E-\\u2064\\u2066-\\u2070\\u2074-\\u207E\\u2080-\\u208E\\u20A0-\\u20BE\\u2100-\\u2125\\u2127-\\u2129\\u212C-\\u2131\\u2133-\\u214D\\u214F-\\u215F\\u2189-\\u218B\\u2190-\\u23FE\\u2400-\\u2426\\u2440-\\u244A\\u2460-\\u27FF\\u2900-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BB9\\u2BBD-\\u2BC8\\u2BCA-\\u2BD1\\u2BEC-\\u2BEF\\u2E00-\\u2E44\\u2FF0-\\u2FFB\\u3000-\\u3004\\u3006\\u3008-\\u3020\\u3030-\\u3037\\u303C-\\u303F\\u309B\\u309C\\u30A0\\u30FB\\u30FC\\u3190-\\u319F\\u31C0-\\u31E3\\u3220-\\u325F\\u327F-\\u32CF\\u3358-\\u33FF\\u4DC0-\\u4DFF\\uA700-\\uA721\\uA788-\\uA78A\\uA830-\\uA839\\uA92E\\uA9CF\\uAB5B\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFEFF\\uFF01-\\uFF20\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\uFF70\\uFF9E\\uFF9F\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD',\r\n astral: '\\uD800[\\uDD00-\\uDD02\\uDD07-\\uDD33\\uDD37-\\uDD3F\\uDD90-\\uDD9B\\uDDD0-\\uDDFC\\uDEE1-\\uDEFB]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD66\\uDD6A-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDE8\\uDF00-\\uDF56\\uDF60-\\uDF71]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDFCB\\uDFCE-\\uDFFF]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD00-\\uDD0C\\uDD10-\\uDD2E\\uDD30-\\uDD6B\\uDD70-\\uDDAC\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED2\\uDEE0-\\uDEEC\\uDEF0-\\uDEF6\\uDF00-\\uDF73\\uDF80-\\uDFD4]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDD10-\\uDD1E\\uDD20-\\uDD27\\uDD30\\uDD33-\\uDD3E\\uDD40-\\uDD4B\\uDD50-\\uDD5E\\uDD80-\\uDD91\\uDDC0]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]'\r\n },\r\n {\r\n name: 'Coptic',\r\n bmp: '\\u03E2-\\u03EF\\u2C80-\\u2CF3\\u2CF9-\\u2CFF'\r\n },\r\n {\r\n name: 'Cuneiform',\r\n astral: '\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC70-\\uDC74\\uDC80-\\uDD43]'\r\n },\r\n {\r\n name: 'Cypriot',\r\n astral: '\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F]'\r\n },\r\n {\r\n name: 'Cyrillic',\r\n bmp: '\\u0400-\\u0484\\u0487-\\u052F\\u1C80-\\u1C88\\u1D2B\\u1D78\\u2DE0-\\u2DFF\\uA640-\\uA69F\\uFE2E\\uFE2F'\r\n },\r\n {\r\n name: 'Deseret',\r\n astral: '\\uD801[\\uDC00-\\uDC4F]'\r\n },\r\n {\r\n name: 'Devanagari',\r\n bmp: '\\u0900-\\u0950\\u0953-\\u0963\\u0966-\\u097F\\uA8E0-\\uA8FD'\r\n },\r\n {\r\n name: 'Duployan',\r\n astral: '\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9C-\\uDC9F]'\r\n },\r\n {\r\n name: 'Egyptian_Hieroglyphs',\r\n astral: '\\uD80C[\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]'\r\n },\r\n {\r\n name: 'Elbasan',\r\n astral: '\\uD801[\\uDD00-\\uDD27]'\r\n },\r\n {\r\n name: 'Ethiopic',\r\n bmp: '\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u137C\\u1380-\\u1399\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E'\r\n },\r\n {\r\n name: 'Georgian',\r\n bmp: '\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u10FF\\u2D00-\\u2D25\\u2D27\\u2D2D'\r\n },\r\n {\r\n name: 'Glagolitic',\r\n bmp: '\\u2C00-\\u2C2E\\u2C30-\\u2C5E',\r\n astral: '\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]'\r\n },\r\n {\r\n name: 'Gothic',\r\n astral: '\\uD800[\\uDF30-\\uDF4A]'\r\n },\r\n {\r\n name: 'Grantha',\r\n astral: '\\uD804[\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]'\r\n },\r\n {\r\n name: 'Greek',\r\n bmp: '\\u0370-\\u0373\\u0375-\\u0377\\u037A-\\u037D\\u037F\\u0384\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03E1\\u03F0-\\u03FF\\u1D26-\\u1D2A\\u1D5D-\\u1D61\\u1D66-\\u1D6A\\u1DBF\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u2126\\uAB65',\r\n astral: '\\uD800[\\uDD40-\\uDD8E\\uDDA0]|\\uD834[\\uDE00-\\uDE45]'\r\n },\r\n {\r\n name: 'Gujarati',\r\n bmp: '\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AF1\\u0AF9'\r\n },\r\n {\r\n name: 'Gurmukhi',\r\n bmp: '\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75'\r\n },\r\n {\r\n name: 'Han',\r\n bmp: '\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u3005\\u3007\\u3021-\\u3029\\u3038-\\u303B\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uF900-\\uFA6D\\uFA70-\\uFAD9',\r\n astral: '[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]'\r\n },\r\n {\r\n name: 'Hangul',\r\n bmp: '\\u1100-\\u11FF\\u302E\\u302F\\u3131-\\u318E\\u3200-\\u321E\\u3260-\\u327E\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC'\r\n },\r\n {\r\n name: 'Hanunoo',\r\n bmp: '\\u1720-\\u1734'\r\n },\r\n {\r\n name: 'Hatran',\r\n astral: '\\uD802[\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDCFF]'\r\n },\r\n {\r\n name: 'Hebrew',\r\n bmp: '\\u0591-\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F4\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4F'\r\n },\r\n {\r\n name: 'Hiragana',\r\n bmp: '\\u3041-\\u3096\\u309D-\\u309F',\r\n astral: '\\uD82C\\uDC01|\\uD83C\\uDE00'\r\n },\r\n {\r\n name: 'Imperial_Aramaic',\r\n astral: '\\uD802[\\uDC40-\\uDC55\\uDC57-\\uDC5F]'\r\n },\r\n {\r\n name: 'Inherited',\r\n bmp: '\\u0300-\\u036F\\u0485\\u0486\\u064B-\\u0655\\u0670\\u0951\\u0952\\u1AB0-\\u1ABE\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u200C\\u200D\\u20D0-\\u20F0\\u302A-\\u302D\\u3099\\u309A\\uFE00-\\uFE0F\\uFE20-\\uFE2D',\r\n astral: '\\uD800[\\uDDFD\\uDEE0]|\\uD834[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD]|\\uDB40[\\uDD00-\\uDDEF]'\r\n },\r\n {\r\n name: 'Inscriptional_Pahlavi',\r\n astral: '\\uD802[\\uDF60-\\uDF72\\uDF78-\\uDF7F]'\r\n },\r\n {\r\n name: 'Inscriptional_Parthian',\r\n astral: '\\uD802[\\uDF40-\\uDF55\\uDF58-\\uDF5F]'\r\n },\r\n {\r\n name: 'Javanese',\r\n bmp: '\\uA980-\\uA9CD\\uA9D0-\\uA9D9\\uA9DE\\uA9DF'\r\n },\r\n {\r\n name: 'Kaithi',\r\n astral: '\\uD804[\\uDC80-\\uDCC1]'\r\n },\r\n {\r\n name: 'Kannada',\r\n bmp: '\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2'\r\n },\r\n {\r\n name: 'Katakana',\r\n bmp: '\\u30A1-\\u30FA\\u30FD-\\u30FF\\u31F0-\\u31FF\\u32D0-\\u32FE\\u3300-\\u3357\\uFF66-\\uFF6F\\uFF71-\\uFF9D',\r\n astral: '\\uD82C\\uDC00'\r\n },\r\n {\r\n name: 'Kayah_Li',\r\n bmp: '\\uA900-\\uA92D\\uA92F'\r\n },\r\n {\r\n name: 'Kharoshthi',\r\n astral: '\\uD802[\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F-\\uDE47\\uDE50-\\uDE58]'\r\n },\r\n {\r\n name: 'Khmer',\r\n bmp: '\\u1780-\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u19E0-\\u19FF'\r\n },\r\n {\r\n name: 'Khojki',\r\n astral: '\\uD804[\\uDE00-\\uDE11\\uDE13-\\uDE3E]'\r\n },\r\n {\r\n name: 'Khudawadi',\r\n astral: '\\uD804[\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9]'\r\n },\r\n {\r\n name: 'Lao',\r\n bmp: '\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF'\r\n },\r\n {\r\n name: 'Latin',\r\n bmp: 'A-Za-z\\xAA\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02E0-\\u02E4\\u1D00-\\u1D25\\u1D2C-\\u1D5C\\u1D62-\\u1D65\\u1D6B-\\u1D77\\u1D79-\\u1DBE\\u1E00-\\u1EFF\\u2071\\u207F\\u2090-\\u209C\\u212A\\u212B\\u2132\\u214E\\u2160-\\u2188\\u2C60-\\u2C7F\\uA722-\\uA787\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA7FF\\uAB30-\\uAB5A\\uAB5C-\\uAB64\\uFB00-\\uFB06\\uFF21-\\uFF3A\\uFF41-\\uFF5A'\r\n },\r\n {\r\n name: 'Lepcha',\r\n bmp: '\\u1C00-\\u1C37\\u1C3B-\\u1C49\\u1C4D-\\u1C4F'\r\n },\r\n {\r\n name: 'Limbu',\r\n bmp: '\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1940\\u1944-\\u194F'\r\n },\r\n {\r\n name: 'Linear_A',\r\n astral: '\\uD801[\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]'\r\n },\r\n {\r\n name: 'Linear_B',\r\n astral: '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA]'\r\n },\r\n {\r\n name: 'Lisu',\r\n bmp: '\\uA4D0-\\uA4FF'\r\n },\r\n {\r\n name: 'Lycian',\r\n astral: '\\uD800[\\uDE80-\\uDE9C]'\r\n },\r\n {\r\n name: 'Lydian',\r\n astral: '\\uD802[\\uDD20-\\uDD39\\uDD3F]'\r\n },\r\n {\r\n name: 'Mahajani',\r\n astral: '\\uD804[\\uDD50-\\uDD76]'\r\n },\r\n {\r\n name: 'Malayalam',\r\n bmp: '\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4F\\u0D54-\\u0D63\\u0D66-\\u0D7F'\r\n },\r\n {\r\n name: 'Mandaic',\r\n bmp: '\\u0840-\\u085B\\u085E'\r\n },\r\n {\r\n name: 'Manichaean',\r\n astral: '\\uD802[\\uDEC0-\\uDEE6\\uDEEB-\\uDEF6]'\r\n },\r\n {\r\n name: 'Marchen',\r\n astral: '\\uD807[\\uDC70-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6]'\r\n },\r\n {\r\n name: 'Meetei_Mayek',\r\n bmp: '\\uAAE0-\\uAAF6\\uABC0-\\uABED\\uABF0-\\uABF9'\r\n },\r\n {\r\n name: 'Mende_Kikakui',\r\n astral: '\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCD6]'\r\n },\r\n {\r\n name: 'Meroitic_Cursive',\r\n astral: '\\uD802[\\uDDA0-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDDFF]'\r\n },\r\n {\r\n name: 'Meroitic_Hieroglyphs',\r\n astral: '\\uD802[\\uDD80-\\uDD9F]'\r\n },\r\n {\r\n name: 'Miao',\r\n astral: '\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]'\r\n },\r\n {\r\n name: 'Modi',\r\n astral: '\\uD805[\\uDE00-\\uDE44\\uDE50-\\uDE59]'\r\n },\r\n {\r\n name: 'Mongolian',\r\n bmp: '\\u1800\\u1801\\u1804\\u1806-\\u180E\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA',\r\n astral: '\\uD805[\\uDE60-\\uDE6C]'\r\n },\r\n {\r\n name: 'Mro',\r\n astral: '\\uD81A[\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE6E\\uDE6F]'\r\n },\r\n {\r\n name: 'Multani',\r\n astral: '\\uD804[\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA9]'\r\n },\r\n {\r\n name: 'Myanmar',\r\n bmp: '\\u1000-\\u109F\\uA9E0-\\uA9FE\\uAA60-\\uAA7F'\r\n },\r\n {\r\n name: 'Nabataean',\r\n astral: '\\uD802[\\uDC80-\\uDC9E\\uDCA7-\\uDCAF]'\r\n },\r\n {\r\n name: 'New_Tai_Lue',\r\n bmp: '\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u19DE\\u19DF'\r\n },\r\n {\r\n name: 'Newa',\r\n astral: '\\uD805[\\uDC00-\\uDC59\\uDC5B\\uDC5D]'\r\n },\r\n {\r\n name: 'Nko',\r\n bmp: '\\u07C0-\\u07FA'\r\n },\r\n {\r\n name: 'Ogham',\r\n bmp: '\\u1680-\\u169C'\r\n },\r\n {\r\n name: 'Ol_Chiki',\r\n bmp: '\\u1C50-\\u1C7F'\r\n },\r\n {\r\n name: 'Old_Hungarian',\r\n astral: '\\uD803[\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDCFF]'\r\n },\r\n {\r\n name: 'Old_Italic',\r\n astral: '\\uD800[\\uDF00-\\uDF23]'\r\n },\r\n {\r\n name: 'Old_North_Arabian',\r\n astral: '\\uD802[\\uDE80-\\uDE9F]'\r\n },\r\n {\r\n name: 'Old_Permic',\r\n astral: '\\uD800[\\uDF50-\\uDF7A]'\r\n },\r\n {\r\n name: 'Old_Persian',\r\n astral: '\\uD800[\\uDFA0-\\uDFC3\\uDFC8-\\uDFD5]'\r\n },\r\n {\r\n name: 'Old_South_Arabian',\r\n astral: '\\uD802[\\uDE60-\\uDE7F]'\r\n },\r\n {\r\n name: 'Old_Turkic',\r\n astral: '\\uD803[\\uDC00-\\uDC48]'\r\n },\r\n {\r\n name: 'Oriya',\r\n bmp: '\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B77'\r\n },\r\n {\r\n name: 'Osage',\r\n astral: '\\uD801[\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB]'\r\n },\r\n {\r\n name: 'Osmanya',\r\n astral: '\\uD801[\\uDC80-\\uDC9D\\uDCA0-\\uDCA9]'\r\n },\r\n {\r\n name: 'Pahawh_Hmong',\r\n astral: '\\uD81A[\\uDF00-\\uDF45\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]'\r\n },\r\n {\r\n name: 'Palmyrene',\r\n astral: '\\uD802[\\uDC60-\\uDC7F]'\r\n },\r\n {\r\n name: 'Pau_Cin_Hau',\r\n astral: '\\uD806[\\uDEC0-\\uDEF8]'\r\n },\r\n {\r\n name: 'Phags_Pa',\r\n bmp: '\\uA840-\\uA877'\r\n },\r\n {\r\n name: 'Phoenician',\r\n astral: '\\uD802[\\uDD00-\\uDD1B\\uDD1F]'\r\n },\r\n {\r\n name: 'Psalter_Pahlavi',\r\n astral: '\\uD802[\\uDF80-\\uDF91\\uDF99-\\uDF9C\\uDFA9-\\uDFAF]'\r\n },\r\n {\r\n name: 'Rejang',\r\n bmp: '\\uA930-\\uA953\\uA95F'\r\n },\r\n {\r\n name: 'Runic',\r\n bmp: '\\u16A0-\\u16EA\\u16EE-\\u16F8'\r\n },\r\n {\r\n name: 'Samaritan',\r\n bmp: '\\u0800-\\u082D\\u0830-\\u083E'\r\n },\r\n {\r\n name: 'Saurashtra',\r\n bmp: '\\uA880-\\uA8C5\\uA8CE-\\uA8D9'\r\n },\r\n {\r\n name: 'Sharada',\r\n astral: '\\uD804[\\uDD80-\\uDDCD\\uDDD0-\\uDDDF]'\r\n },\r\n {\r\n name: 'Shavian',\r\n astral: '\\uD801[\\uDC50-\\uDC7F]'\r\n },\r\n {\r\n name: 'Siddham',\r\n astral: '\\uD805[\\uDD80-\\uDDB5\\uDDB8-\\uDDDD]'\r\n },\r\n {\r\n name: 'SignWriting',\r\n astral: '\\uD836[\\uDC00-\\uDE8B\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]'\r\n },\r\n {\r\n name: 'Sinhala',\r\n bmp: '\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4',\r\n astral: '\\uD804[\\uDDE1-\\uDDF4]'\r\n },\r\n {\r\n name: 'Sora_Sompeng',\r\n astral: '\\uD804[\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9]'\r\n },\r\n {\r\n name: 'Sundanese',\r\n bmp: '\\u1B80-\\u1BBF\\u1CC0-\\u1CC7'\r\n },\r\n {\r\n name: 'Syloti_Nagri',\r\n bmp: '\\uA800-\\uA82B'\r\n },\r\n {\r\n name: 'Syriac',\r\n bmp: '\\u0700-\\u070D\\u070F-\\u074A\\u074D-\\u074F'\r\n },\r\n {\r\n name: 'Tagalog',\r\n bmp: '\\u1700-\\u170C\\u170E-\\u1714'\r\n },\r\n {\r\n name: 'Tagbanwa',\r\n bmp: '\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773'\r\n },\r\n {\r\n name: 'Tai_Le',\r\n bmp: '\\u1950-\\u196D\\u1970-\\u1974'\r\n },\r\n {\r\n name: 'Tai_Tham',\r\n bmp: '\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD'\r\n },\r\n {\r\n name: 'Tai_Viet',\r\n bmp: '\\uAA80-\\uAAC2\\uAADB-\\uAADF'\r\n },\r\n {\r\n name: 'Takri',\r\n astral: '\\uD805[\\uDE80-\\uDEB7\\uDEC0-\\uDEC9]'\r\n },\r\n {\r\n name: 'Tamil',\r\n bmp: '\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BFA'\r\n },\r\n {\r\n name: 'Tangut',\r\n astral: '\\uD81B\\uDFE0|[\\uD81C-\\uD820][\\uDC00-\\uDFFF]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]'\r\n },\r\n {\r\n name: 'Telugu',\r\n bmp: '\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C78-\\u0C7F'\r\n },\r\n {\r\n name: 'Thaana',\r\n bmp: '\\u0780-\\u07B1'\r\n },\r\n {\r\n name: 'Thai',\r\n bmp: '\\u0E01-\\u0E3A\\u0E40-\\u0E5B'\r\n },\r\n {\r\n name: 'Tibetan',\r\n bmp: '\\u0F00-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F97\\u0F99-\\u0FBC\\u0FBE-\\u0FCC\\u0FCE-\\u0FD4\\u0FD9\\u0FDA'\r\n },\r\n {\r\n name: 'Tifinagh',\r\n bmp: '\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D7F'\r\n },\r\n {\r\n name: 'Tirhuta',\r\n astral: '\\uD805[\\uDC80-\\uDCC7\\uDCD0-\\uDCD9]'\r\n },\r\n {\r\n name: 'Ugaritic',\r\n astral: '\\uD800[\\uDF80-\\uDF9D\\uDF9F]'\r\n },\r\n {\r\n name: 'Vai',\r\n bmp: '\\uA500-\\uA62B'\r\n },\r\n {\r\n name: 'Warang_Citi',\r\n astral: '\\uD806[\\uDCA0-\\uDCF2\\uDCFF]'\r\n },\r\n {\r\n name: 'Yi',\r\n bmp: '\\uA000-\\uA48C\\uA490-\\uA4C6'\r\n }\r\n ]);\r\n\r\n};\r\n\n},{}],8:[function(require,module,exports){\nvar XRegExp = require('./xregexp');\r\n\r\nrequire('./addons/build')(XRegExp);\r\nrequire('./addons/matchrecursive')(XRegExp);\r\nrequire('./addons/unicode-base')(XRegExp);\r\nrequire('./addons/unicode-blocks')(XRegExp);\r\nrequire('./addons/unicode-categories')(XRegExp);\r\nrequire('./addons/unicode-properties')(XRegExp);\r\nrequire('./addons/unicode-scripts')(XRegExp);\r\n\r\nmodule.exports = XRegExp;\r\n\n},{\"./addons/build\":1,\"./addons/matchrecursive\":2,\"./addons/unicode-base\":3,\"./addons/unicode-blocks\":4,\"./addons/unicode-categories\":5,\"./addons/unicode-properties\":6,\"./addons/unicode-scripts\":7,\"./xregexp\":9}],9:[function(require,module,exports){\n/*!\r\n * XRegExp 3.2.0\r\n * \r\n * Steven Levithan (c) 2007-2017 MIT License\r\n */\r\n\r\n'use strict';\r\n\r\n/**\r\n * XRegExp provides augmented, extensible regular expressions. You get additional regex syntax and\r\n * flags, beyond what browsers support natively. XRegExp is also a regex utility belt with tools to\r\n * make your client-side grepping simpler and more powerful, while freeing you from related\r\n * cross-browser inconsistencies.\r\n */\r\n\r\n// ==--------------------------==\r\n// Private stuff\r\n// ==--------------------------==\r\n\r\n// Property name used for extended regex instance data\r\nvar REGEX_DATA = 'xregexp';\r\n// Optional features that can be installed and uninstalled\r\nvar features = {\r\n astral: false,\r\n natives: false\r\n};\r\n// Native methods to use and restore ('native' is an ES3 reserved keyword)\r\nvar nativ = {\r\n exec: RegExp.prototype.exec,\r\n test: RegExp.prototype.test,\r\n match: String.prototype.match,\r\n replace: String.prototype.replace,\r\n split: String.prototype.split\r\n};\r\n// Storage for fixed/extended native methods\r\nvar fixed = {};\r\n// Storage for regexes cached by `XRegExp.cache`\r\nvar regexCache = {};\r\n// Storage for pattern details cached by the `XRegExp` constructor\r\nvar patternCache = {};\r\n// Storage for regex syntax tokens added internally or by `XRegExp.addToken`\r\nvar tokens = [];\r\n// Token scopes\r\nvar defaultScope = 'default';\r\nvar classScope = 'class';\r\n// Regexes that match native regex syntax, including octals\r\nvar nativeTokens = {\r\n // Any native multicharacter token in default scope, or any single character\r\n 'default': /\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\d*|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|\\(\\?(?:[:=!]|<[=!])|[?*+]\\?|{\\d+(?:,\\d*)?}\\??|[\\s\\S]/,\r\n // Any native multicharacter token in character class scope, or any single character\r\n 'class': /\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|[\\s\\S]/\r\n};\r\n// Any backreference or dollar-prefixed character in replacement strings\r\nvar replacementToken = /\\$(?:{([\\w$]+)}|(\\d\\d?|[\\s\\S]))/g;\r\n// Check for correct `exec` handling of nonparticipating capturing groups\r\nvar correctExecNpcg = nativ.exec.call(/()??/, '')[1] === undefined;\r\n// Check for ES6 `flags` prop support\r\nvar hasFlagsProp = /x/.flags !== undefined;\r\n// Shortcut to `Object.prototype.toString`\r\nvar toString = {}.toString;\r\n\r\nfunction hasNativeFlag(flag) {\r\n // Can't check based on the presence of properties/getters since browsers might support such\r\n // properties even when they don't support the corresponding flag in regex construction (tested\r\n // in Chrome 48, where `'unicode' in /x/` is true but trying to construct a regex with flag `u`\r\n // throws an error)\r\n var isSupported = true;\r\n try {\r\n // Can't use regex literals for testing even in a `try` because regex literals with\r\n // unsupported flags cause a compilation error in IE\r\n new RegExp('', flag);\r\n } catch (exception) {\r\n isSupported = false;\r\n }\r\n return isSupported;\r\n}\r\n// Check for ES6 `u` flag support\r\nvar hasNativeU = hasNativeFlag('u');\r\n// Check for ES6 `y` flag support\r\nvar hasNativeY = hasNativeFlag('y');\r\n// Tracker for known flags, including addon flags\r\nvar registeredFlags = {\r\n g: true,\r\n i: true,\r\n m: true,\r\n u: hasNativeU,\r\n y: hasNativeY\r\n};\r\n\r\n/**\r\n * Attaches extended data and `XRegExp.prototype` properties to a regex object.\r\n *\r\n * @private\r\n * @param {RegExp} regex Regex to augment.\r\n * @param {Array} captureNames Array with capture names, or `null`.\r\n * @param {String} xSource XRegExp pattern used to generate `regex`, or `null` if N/A.\r\n * @param {String} xFlags XRegExp flags used to generate `regex`, or `null` if N/A.\r\n * @param {Boolean} [isInternalOnly=false] Whether the regex will be used only for internal\r\n * operations, and never exposed to users. For internal-only regexes, we can improve perf by\r\n * skipping some operations like attaching `XRegExp.prototype` properties.\r\n * @returns {RegExp} Augmented regex.\r\n */\r\nfunction augment(regex, captureNames, xSource, xFlags, isInternalOnly) {\r\n var p;\r\n\r\n regex[REGEX_DATA] = {\r\n captureNames: captureNames\r\n };\r\n\r\n if (isInternalOnly) {\r\n return regex;\r\n }\r\n\r\n // Can't auto-inherit these since the XRegExp constructor returns a nonprimitive value\r\n if (regex.__proto__) {\r\n regex.__proto__ = XRegExp.prototype;\r\n } else {\r\n for (p in XRegExp.prototype) {\r\n // An `XRegExp.prototype.hasOwnProperty(p)` check wouldn't be worth it here, since this\r\n // is performance sensitive, and enumerable `Object.prototype` or `RegExp.prototype`\r\n // extensions exist on `regex.prototype` anyway\r\n regex[p] = XRegExp.prototype[p];\r\n }\r\n }\r\n\r\n regex[REGEX_DATA].source = xSource;\r\n // Emulate the ES6 `flags` prop by ensuring flags are in alphabetical order\r\n regex[REGEX_DATA].flags = xFlags ? xFlags.split('').sort().join('') : xFlags;\r\n\r\n return regex;\r\n}\r\n\r\n/**\r\n * Removes any duplicate characters from the provided string.\r\n *\r\n * @private\r\n * @param {String} str String to remove duplicate characters from.\r\n * @returns {String} String with any duplicate characters removed.\r\n */\r\nfunction clipDuplicates(str) {\r\n return nativ.replace.call(str, /([\\s\\S])(?=[\\s\\S]*\\1)/g, '');\r\n}\r\n\r\n/**\r\n * Copies a regex object while preserving extended data and augmenting with `XRegExp.prototype`\r\n * properties. The copy has a fresh `lastIndex` property (set to zero). Allows adding and removing\r\n * flags g and y while copying the regex.\r\n *\r\n * @private\r\n * @param {RegExp} regex Regex to copy.\r\n * @param {Object} [options] Options object with optional properties:\r\n * - `addG` {Boolean} Add flag g while copying the regex.\r\n * - `addY` {Boolean} Add flag y while copying the regex.\r\n * - `removeG` {Boolean} Remove flag g while copying the regex.\r\n * - `removeY` {Boolean} Remove flag y while copying the regex.\r\n * - `isInternalOnly` {Boolean} Whether the copied regex will be used only for internal\r\n * operations, and never exposed to users. For internal-only regexes, we can improve perf by\r\n * skipping some operations like attaching `XRegExp.prototype` properties.\r\n * - `source` {String} Overrides `.source`, for special cases.\r\n * @returns {RegExp} Copy of the provided regex, possibly with modified flags.\r\n */\r\nfunction copyRegex(regex, options) {\r\n if (!XRegExp.isRegExp(regex)) {\r\n throw new TypeError('Type RegExp expected');\r\n }\r\n\r\n var xData = regex[REGEX_DATA] || {};\r\n var flags = getNativeFlags(regex);\r\n var flagsToAdd = '';\r\n var flagsToRemove = '';\r\n var xregexpSource = null;\r\n var xregexpFlags = null;\r\n\r\n options = options || {};\r\n\r\n if (options.removeG) {flagsToRemove += 'g';}\r\n if (options.removeY) {flagsToRemove += 'y';}\r\n if (flagsToRemove) {\r\n flags = nativ.replace.call(flags, new RegExp('[' + flagsToRemove + ']+', 'g'), '');\r\n }\r\n\r\n if (options.addG) {flagsToAdd += 'g';}\r\n if (options.addY) {flagsToAdd += 'y';}\r\n if (flagsToAdd) {\r\n flags = clipDuplicates(flags + flagsToAdd);\r\n }\r\n\r\n if (!options.isInternalOnly) {\r\n if (xData.source !== undefined) {\r\n xregexpSource = xData.source;\r\n }\r\n // null or undefined; don't want to add to `flags` if the previous value was null, since\r\n // that indicates we're not tracking original precompilation flags\r\n if (xData.flags != null) {\r\n // Flags are only added for non-internal regexes by `XRegExp.globalize`. Flags are never\r\n // removed for non-internal regexes, so don't need to handle it\r\n xregexpFlags = flagsToAdd ? clipDuplicates(xData.flags + flagsToAdd) : xData.flags;\r\n }\r\n }\r\n\r\n // Augment with `XRegExp.prototype` properties, but use the native `RegExp` constructor to avoid\r\n // searching for special tokens. That would be wrong for regexes constructed by `RegExp`, and\r\n // unnecessary for regexes constructed by `XRegExp` because the regex has already undergone the\r\n // translation to native regex syntax\r\n regex = augment(\r\n new RegExp(options.source || regex.source, flags),\r\n hasNamedCapture(regex) ? xData.captureNames.slice(0) : null,\r\n xregexpSource,\r\n xregexpFlags,\r\n options.isInternalOnly\r\n );\r\n\r\n return regex;\r\n}\r\n\r\n/**\r\n * Converts hexadecimal to decimal.\r\n *\r\n * @private\r\n * @param {String} hex\r\n * @returns {Number}\r\n */\r\nfunction dec(hex) {\r\n return parseInt(hex, 16);\r\n}\r\n\r\n/**\r\n * Returns a pattern that can be used in a native RegExp in place of an ignorable token such as an\r\n * inline comment or whitespace with flag x. This is used directly as a token handler function\r\n * passed to `XRegExp.addToken`.\r\n *\r\n * @private\r\n * @param {String} match Match arg of `XRegExp.addToken` handler\r\n * @param {String} scope Scope arg of `XRegExp.addToken` handler\r\n * @param {String} flags Flags arg of `XRegExp.addToken` handler\r\n * @returns {String} Either '' or '(?:)', depending on which is needed in the context of the match.\r\n */\r\nfunction getContextualTokenSeparator(match, scope, flags) {\r\n if (\r\n // No need to separate tokens if at the beginning or end of a group\r\n match.input.charAt(match.index - 1) === '(' ||\r\n match.input.charAt(match.index + match[0].length) === ')' ||\r\n // Avoid separating tokens when the following token is a quantifier\r\n isPatternNext(match.input, match.index + match[0].length, flags, '[?*+]|{\\\\d+(?:,\\\\d*)?}')\r\n ) {\r\n return '';\r\n }\r\n // Keep tokens separated. This avoids e.g. inadvertedly changing `\\1 1` or `\\1(?#)1` to `\\11`.\r\n // This also ensures all tokens remain as discrete atoms, e.g. it avoids converting the syntax\r\n // error `(? :` into `(?:`.\r\n return '(?:)';\r\n}\r\n\r\n/**\r\n * Returns native `RegExp` flags used by a regex object.\r\n *\r\n * @private\r\n * @param {RegExp} regex Regex to check.\r\n * @returns {String} Native flags in use.\r\n */\r\nfunction getNativeFlags(regex) {\r\n return hasFlagsProp ?\r\n regex.flags :\r\n // Explicitly using `RegExp.prototype.toString` (rather than e.g. `String` or concatenation\r\n // with an empty string) allows this to continue working predictably when\r\n // `XRegExp.proptotype.toString` is overridden\r\n nativ.exec.call(/\\/([a-z]*)$/i, RegExp.prototype.toString.call(regex))[1];\r\n}\r\n\r\n/**\r\n * Determines whether a regex has extended instance data used to track capture names.\r\n *\r\n * @private\r\n * @param {RegExp} regex Regex to check.\r\n * @returns {Boolean} Whether the regex uses named capture.\r\n */\r\nfunction hasNamedCapture(regex) {\r\n return !!(regex[REGEX_DATA] && regex[REGEX_DATA].captureNames);\r\n}\r\n\r\n/**\r\n * Converts decimal to hexadecimal.\r\n *\r\n * @private\r\n * @param {Number|String} dec\r\n * @returns {String}\r\n */\r\nfunction hex(dec) {\r\n return parseInt(dec, 10).toString(16);\r\n}\r\n\r\n/**\r\n * Returns the first index at which a given value can be found in an array.\r\n *\r\n * @private\r\n * @param {Array} array Array to search.\r\n * @param {*} value Value to locate in the array.\r\n * @returns {Number} Zero-based index at which the item is found, or -1.\r\n */\r\nfunction indexOf(array, value) {\r\n var len = array.length;\r\n var i;\r\n\r\n for (i = 0; i < len; ++i) {\r\n if (array[i] === value) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n}\r\n\r\n/**\r\n * Checks whether the next nonignorable token after the specified position matches the\r\n * `needlePattern`\r\n *\r\n * @private\r\n * @param {String} pattern Pattern to search within.\r\n * @param {Number} pos Index in `pattern` to search at.\r\n * @param {String} flags Flags used by the pattern.\r\n * @param {String} needlePattern Pattern to match the next token against.\r\n * @returns {Boolean} Whether the next nonignorable token matches `needlePattern`\r\n */\r\nfunction isPatternNext(pattern, pos, flags, needlePattern) {\r\n var inlineCommentPattern = '\\\\(\\\\?#[^)]*\\\\)';\r\n var lineCommentPattern = '#[^#\\\\n]*';\r\n var patternsToIgnore = flags.indexOf('x') > -1 ?\r\n // Ignore any leading whitespace, line comments, and inline comments\r\n ['\\\\s', lineCommentPattern, inlineCommentPattern] :\r\n // Ignore any leading inline comments\r\n [inlineCommentPattern];\r\n return nativ.test.call(\r\n new RegExp('^(?:' + patternsToIgnore.join('|') + ')*(?:' + needlePattern + ')'),\r\n pattern.slice(pos)\r\n );\r\n}\r\n\r\n/**\r\n * Determines whether a value is of the specified type, by resolving its internal [[Class]].\r\n *\r\n * @private\r\n * @param {*} value Object to check.\r\n * @param {String} type Type to check for, in TitleCase.\r\n * @returns {Boolean} Whether the object matches the type.\r\n */\r\nfunction isType(value, type) {\r\n return toString.call(value) === '[object ' + type + ']';\r\n}\r\n\r\n/**\r\n * Adds leading zeros if shorter than four characters. Used for fixed-length hexadecimal values.\r\n *\r\n * @private\r\n * @param {String} str\r\n * @returns {String}\r\n */\r\nfunction pad4(str) {\r\n while (str.length < 4) {\r\n str = '0' + str;\r\n }\r\n return str;\r\n}\r\n\r\n/**\r\n * Checks for flag-related errors, and strips/applies flags in a leading mode modifier. Offloads\r\n * the flag preparation logic from the `XRegExp` constructor.\r\n *\r\n * @private\r\n * @param {String} pattern Regex pattern, possibly with a leading mode modifier.\r\n * @param {String} flags Any combination of flags.\r\n * @returns {Object} Object with properties `pattern` and `flags`.\r\n */\r\nfunction prepareFlags(pattern, flags) {\r\n var i;\r\n\r\n // Recent browsers throw on duplicate flags, so copy this behavior for nonnative flags\r\n if (clipDuplicates(flags) !== flags) {\r\n throw new SyntaxError('Invalid duplicate regex flag ' + flags);\r\n }\r\n\r\n // Strip and apply a leading mode modifier with any combination of flags except g or y\r\n pattern = nativ.replace.call(pattern, /^\\(\\?([\\w$]+)\\)/, function($0, $1) {\r\n if (nativ.test.call(/[gy]/, $1)) {\r\n throw new SyntaxError('Cannot use flag g or y in mode modifier ' + $0);\r\n }\r\n // Allow duplicate flags within the mode modifier\r\n flags = clipDuplicates(flags + $1);\r\n return '';\r\n });\r\n\r\n // Throw on unknown native or nonnative flags\r\n for (i = 0; i < flags.length; ++i) {\r\n if (!registeredFlags[flags.charAt(i)]) {\r\n throw new SyntaxError('Unknown regex flag ' + flags.charAt(i));\r\n }\r\n }\r\n\r\n return {\r\n pattern: pattern,\r\n flags: flags\r\n };\r\n}\r\n\r\n/**\r\n * Prepares an options object from the given value.\r\n *\r\n * @private\r\n * @param {String|Object} value Value to convert to an options object.\r\n * @returns {Object} Options object.\r\n */\r\nfunction prepareOptions(value) {\r\n var options = {};\r\n\r\n if (isType(value, 'String')) {\r\n XRegExp.forEach(value, /[^\\s,]+/, function(match) {\r\n options[match] = true;\r\n });\r\n\r\n return options;\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * Registers a flag so it doesn't throw an 'unknown flag' error.\r\n *\r\n * @private\r\n * @param {String} flag Single-character flag to register.\r\n */\r\nfunction registerFlag(flag) {\r\n if (!/^[\\w$]$/.test(flag)) {\r\n throw new Error('Flag must be a single character A-Za-z0-9_$');\r\n }\r\n\r\n registeredFlags[flag] = true;\r\n}\r\n\r\n/**\r\n * Runs built-in and custom regex syntax tokens in reverse insertion order at the specified\r\n * position, until a match is found.\r\n *\r\n * @private\r\n * @param {String} pattern Original pattern from which an XRegExp object is being built.\r\n * @param {String} flags Flags being used to construct the regex.\r\n * @param {Number} pos Position to search for tokens within `pattern`.\r\n * @param {Number} scope Regex scope to apply: 'default' or 'class'.\r\n * @param {Object} context Context object to use for token handler functions.\r\n * @returns {Object} Object with properties `matchLength`, `output`, and `reparse`; or `null`.\r\n */\r\nfunction runTokens(pattern, flags, pos, scope, context) {\r\n var i = tokens.length;\r\n var leadChar = pattern.charAt(pos);\r\n var result = null;\r\n var match;\r\n var t;\r\n\r\n // Run in reverse insertion order\r\n while (i--) {\r\n t = tokens[i];\r\n if (\r\n (t.leadChar && t.leadChar !== leadChar) ||\r\n (t.scope !== scope && t.scope !== 'all') ||\r\n (t.flag && flags.indexOf(t.flag) === -1)\r\n ) {\r\n continue;\r\n }\r\n\r\n match = XRegExp.exec(pattern, t.regex, pos, 'sticky');\r\n if (match) {\r\n result = {\r\n matchLength: match[0].length,\r\n output: t.handler.call(context, match, scope, flags),\r\n reparse: t.reparse\r\n };\r\n // Finished with token tests\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Enables or disables implicit astral mode opt-in. When enabled, flag A is automatically added to\r\n * all new regexes created by XRegExp. This causes an error to be thrown when creating regexes if\r\n * the Unicode Base addon is not available, since flag A is registered by that addon.\r\n *\r\n * @private\r\n * @param {Boolean} on `true` to enable; `false` to disable.\r\n */\r\nfunction setAstral(on) {\r\n features.astral = on;\r\n}\r\n\r\n/**\r\n * Enables or disables native method overrides.\r\n *\r\n * @private\r\n * @param {Boolean} on `true` to enable; `false` to disable.\r\n */\r\nfunction setNatives(on) {\r\n RegExp.prototype.exec = (on ? fixed : nativ).exec;\r\n RegExp.prototype.test = (on ? fixed : nativ).test;\r\n String.prototype.match = (on ? fixed : nativ).match;\r\n String.prototype.replace = (on ? fixed : nativ).replace;\r\n String.prototype.split = (on ? fixed : nativ).split;\r\n\r\n features.natives = on;\r\n}\r\n\r\n/**\r\n * Returns the object, or throws an error if it is `null` or `undefined`. This is used to follow\r\n * the ES5 abstract operation `ToObject`.\r\n *\r\n * @private\r\n * @param {*} value Object to check and return.\r\n * @returns {*} The provided object.\r\n */\r\nfunction toObject(value) {\r\n // null or undefined\r\n if (value == null) {\r\n throw new TypeError('Cannot convert null or undefined to object');\r\n }\r\n\r\n return value;\r\n}\r\n\r\n// ==--------------------------==\r\n// Constructor\r\n// ==--------------------------==\r\n\r\n/**\r\n * Creates an extended regular expression object for matching text with a pattern. Differs from a\r\n * native regular expression in that additional syntax and flags are supported. The returned object\r\n * is in fact a native `RegExp` and works with all native methods.\r\n *\r\n * @class XRegExp\r\n * @constructor\r\n * @param {String|RegExp} pattern Regex pattern string, or an existing regex object to copy.\r\n * @param {String} [flags] Any combination of flags.\r\n * Native flags:\r\n * - `g` - global\r\n * - `i` - ignore case\r\n * - `m` - multiline anchors\r\n * - `u` - unicode (ES6)\r\n * - `y` - sticky (Firefox 3+, ES6)\r\n * Additional XRegExp flags:\r\n * - `n` - explicit capture\r\n * - `s` - dot matches all (aka singleline)\r\n * - `x` - free-spacing and line comments (aka extended)\r\n * - `A` - astral (requires the Unicode Base addon)\r\n * Flags cannot be provided when constructing one `RegExp` from another.\r\n * @returns {RegExp} Extended regular expression object.\r\n * @example\r\n *\r\n * // With named capture and flag x\r\n * XRegExp('(? [0-9]{4} ) -? # year \\n\\\r\n * (? [0-9]{2} ) -? # month \\n\\\r\n * (? [0-9]{2} ) # day ', 'x');\r\n *\r\n * // Providing a regex object copies it. Native regexes are recompiled using native (not XRegExp)\r\n * // syntax. Copies maintain extended data, are augmented with `XRegExp.prototype` properties, and\r\n * // have fresh `lastIndex` properties (set to zero).\r\n * XRegExp(/regex/);\r\n */\r\nfunction XRegExp(pattern, flags) {\r\n if (XRegExp.isRegExp(pattern)) {\r\n if (flags !== undefined) {\r\n throw new TypeError('Cannot supply flags when copying a RegExp');\r\n }\r\n return copyRegex(pattern);\r\n }\r\n\r\n // Copy the argument behavior of `RegExp`\r\n pattern = pattern === undefined ? '' : String(pattern);\r\n flags = flags === undefined ? '' : String(flags);\r\n\r\n if (XRegExp.isInstalled('astral') && flags.indexOf('A') === -1) {\r\n // This causes an error to be thrown if the Unicode Base addon is not available\r\n flags += 'A';\r\n }\r\n\r\n if (!patternCache[pattern]) {\r\n patternCache[pattern] = {};\r\n }\r\n\r\n if (!patternCache[pattern][flags]) {\r\n var context = {\r\n hasNamedCapture: false,\r\n captureNames: []\r\n };\r\n var scope = defaultScope;\r\n var output = '';\r\n var pos = 0;\r\n var result;\r\n\r\n // Check for flag-related errors, and strip/apply flags in a leading mode modifier\r\n var applied = prepareFlags(pattern, flags);\r\n var appliedPattern = applied.pattern;\r\n var appliedFlags = applied.flags;\r\n\r\n // Use XRegExp's tokens to translate the pattern to a native regex pattern.\r\n // `appliedPattern.length` may change on each iteration if tokens use `reparse`\r\n while (pos < appliedPattern.length) {\r\n do {\r\n // Check for custom tokens at the current position\r\n result = runTokens(appliedPattern, appliedFlags, pos, scope, context);\r\n // If the matched token used the `reparse` option, splice its output into the\r\n // pattern before running tokens again at the same position\r\n if (result && result.reparse) {\r\n appliedPattern = appliedPattern.slice(0, pos) +\r\n result.output +\r\n appliedPattern.slice(pos + result.matchLength);\r\n }\r\n } while (result && result.reparse);\r\n\r\n if (result) {\r\n output += result.output;\r\n pos += (result.matchLength || 1);\r\n } else {\r\n // Get the native token at the current position\r\n var token = XRegExp.exec(appliedPattern, nativeTokens[scope], pos, 'sticky')[0];\r\n output += token;\r\n pos += token.length;\r\n if (token === '[' && scope === defaultScope) {\r\n scope = classScope;\r\n } else if (token === ']' && scope === classScope) {\r\n scope = defaultScope;\r\n }\r\n }\r\n }\r\n\r\n patternCache[pattern][flags] = {\r\n // Use basic cleanup to collapse repeated empty groups like `(?:)(?:)` to `(?:)`. Empty\r\n // groups are sometimes inserted during regex transpilation in order to keep tokens\r\n // separated. However, more than one empty group in a row is never needed.\r\n pattern: nativ.replace.call(output, /(?:\\(\\?:\\))+/g, '(?:)'),\r\n // Strip all but native flags\r\n flags: nativ.replace.call(appliedFlags, /[^gimuy]+/g, ''),\r\n // `context.captureNames` has an item for each capturing group, even if unnamed\r\n captures: context.hasNamedCapture ? context.captureNames : null\r\n };\r\n }\r\n\r\n var generated = patternCache[pattern][flags];\r\n return augment(\r\n new RegExp(generated.pattern, generated.flags),\r\n generated.captures,\r\n pattern,\r\n flags\r\n );\r\n}\r\n\r\n// Add `RegExp.prototype` to the prototype chain\r\nXRegExp.prototype = new RegExp();\r\n\r\n// ==--------------------------==\r\n// Public properties\r\n// ==--------------------------==\r\n\r\n/**\r\n * The XRegExp version number as a string containing three dot-separated parts. For example,\r\n * '2.0.0-beta-3'.\r\n *\r\n * @static\r\n * @memberOf XRegExp\r\n * @type String\r\n */\r\nXRegExp.version = '3.2.0';\r\n\r\n// ==--------------------------==\r\n// Public methods\r\n// ==--------------------------==\r\n\r\n// Intentionally undocumented; used in tests and addons\r\nXRegExp._clipDuplicates = clipDuplicates;\r\nXRegExp._hasNativeFlag = hasNativeFlag;\r\nXRegExp._dec = dec;\r\nXRegExp._hex = hex;\r\nXRegExp._pad4 = pad4;\r\n\r\n/**\r\n * Extends XRegExp syntax and allows custom flags. This is used internally and can be used to\r\n * create XRegExp addons. If more than one token can match the same string, the last added wins.\r\n *\r\n * @memberOf XRegExp\r\n * @param {RegExp} regex Regex object that matches the new token.\r\n * @param {Function} handler Function that returns a new pattern string (using native regex syntax)\r\n * to replace the matched token within all future XRegExp regexes. Has access to persistent\r\n * properties of the regex being built, through `this`. Invoked with three arguments:\r\n * - The match array, with named backreference properties.\r\n * - The regex scope where the match was found: 'default' or 'class'.\r\n * - The flags used by the regex, including any flags in a leading mode modifier.\r\n * The handler function becomes part of the XRegExp construction process, so be careful not to\r\n * construct XRegExps within the function or you will trigger infinite recursion.\r\n * @param {Object} [options] Options object with optional properties:\r\n * - `scope` {String} Scope where the token applies: 'default', 'class', or 'all'.\r\n * - `flag` {String} Single-character flag that triggers the token. This also registers the\r\n * flag, which prevents XRegExp from throwing an 'unknown flag' error when the flag is used.\r\n * - `optionalFlags` {String} Any custom flags checked for within the token `handler` that are\r\n * not required to trigger the token. This registers the flags, to prevent XRegExp from\r\n * throwing an 'unknown flag' error when any of the flags are used.\r\n * - `reparse` {Boolean} Whether the `handler` function's output should not be treated as\r\n * final, and instead be reparseable by other tokens (including the current token). Allows\r\n * token chaining or deferring.\r\n * - `leadChar` {String} Single character that occurs at the beginning of any successful match\r\n * of the token (not always applicable). This doesn't change the behavior of the token unless\r\n * you provide an erroneous value. However, providing it can increase the token's performance\r\n * since the token can be skipped at any positions where this character doesn't appear.\r\n * @example\r\n *\r\n * // Basic usage: Add \\a for the ALERT control code\r\n * XRegExp.addToken(\r\n * /\\\\a/,\r\n * function() {return '\\\\x07';},\r\n * {scope: 'all'}\r\n * );\r\n * XRegExp('\\\\a[\\\\a-\\\\n]+').test('\\x07\\n\\x07'); // -> true\r\n *\r\n * // Add the U (ungreedy) flag from PCRE and RE2, which reverses greedy and lazy quantifiers.\r\n * // Since `scope` is not specified, it uses 'default' (i.e., transformations apply outside of\r\n * // character classes only)\r\n * XRegExp.addToken(\r\n * /([?*+]|{\\d+(?:,\\d*)?})(\\??)/,\r\n * function(match) {return match[1] + (match[2] ? '' : '?');},\r\n * {flag: 'U'}\r\n * );\r\n * XRegExp('a+', 'U').exec('aaa')[0]; // -> 'a'\r\n * XRegExp('a+?', 'U').exec('aaa')[0]; // -> 'aaa'\r\n */\r\nXRegExp.addToken = function(regex, handler, options) {\r\n options = options || {};\r\n var optionalFlags = options.optionalFlags;\r\n var i;\r\n\r\n if (options.flag) {\r\n registerFlag(options.flag);\r\n }\r\n\r\n if (optionalFlags) {\r\n optionalFlags = nativ.split.call(optionalFlags, '');\r\n for (i = 0; i < optionalFlags.length; ++i) {\r\n registerFlag(optionalFlags[i]);\r\n }\r\n }\r\n\r\n // Add to the private list of syntax tokens\r\n tokens.push({\r\n regex: copyRegex(regex, {\r\n addG: true,\r\n addY: hasNativeY,\r\n isInternalOnly: true\r\n }),\r\n handler: handler,\r\n scope: options.scope || defaultScope,\r\n flag: options.flag,\r\n reparse: options.reparse,\r\n leadChar: options.leadChar\r\n });\r\n\r\n // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and flags\r\n // might now produce different results\r\n XRegExp.cache.flush('patterns');\r\n};\r\n\r\n/**\r\n * Caches and returns the result of calling `XRegExp(pattern, flags)`. On any subsequent call with\r\n * the same pattern and flag combination, the cached copy of the regex is returned.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} pattern Regex pattern string.\r\n * @param {String} [flags] Any combination of XRegExp flags.\r\n * @returns {RegExp} Cached XRegExp object.\r\n * @example\r\n *\r\n * while (match = XRegExp.cache('.', 'gs').exec(str)) {\r\n * // The regex is compiled once only\r\n * }\r\n */\r\nXRegExp.cache = function(pattern, flags) {\r\n if (!regexCache[pattern]) {\r\n regexCache[pattern] = {};\r\n }\r\n return regexCache[pattern][flags] || (\r\n regexCache[pattern][flags] = XRegExp(pattern, flags)\r\n );\r\n};\r\n\r\n// Intentionally undocumented; used in tests\r\nXRegExp.cache.flush = function(cacheName) {\r\n if (cacheName === 'patterns') {\r\n // Flush the pattern cache used by the `XRegExp` constructor\r\n patternCache = {};\r\n } else {\r\n // Flush the regex cache populated by `XRegExp.cache`\r\n regexCache = {};\r\n }\r\n};\r\n\r\n/**\r\n * Escapes any regular expression metacharacters, for use when matching literal strings. The result\r\n * can safely be used at any point within a regex that uses any flags.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to escape.\r\n * @returns {String} String with regex metacharacters escaped.\r\n * @example\r\n *\r\n * XRegExp.escape('Escaped? <.>');\r\n * // -> 'Escaped\\?\\ <\\.>'\r\n */\r\nXRegExp.escape = function(str) {\r\n return nativ.replace.call(toObject(str), /[-\\[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n};\r\n\r\n/**\r\n * Executes a regex search in a specified string. Returns a match array or `null`. If the provided\r\n * regex uses named capture, named backreference properties are included on the match array.\r\n * Optional `pos` and `sticky` arguments specify the search start position, and whether the match\r\n * must start at the specified position only. The `lastIndex` property of the provided regex is not\r\n * used, but is updated for compatibility. Also fixes browser bugs compared to the native\r\n * `RegExp.prototype.exec` and can be used reliably cross-browser.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to search.\r\n * @param {RegExp} regex Regex to search with.\r\n * @param {Number} [pos=0] Zero-based index at which to start the search.\r\n * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position\r\n * only. The string `'sticky'` is accepted as an alternative to `true`.\r\n * @returns {Array} Match array with named backreference properties, or `null`.\r\n * @example\r\n *\r\n * // Basic use, with named backreference\r\n * var match = XRegExp.exec('U+2620', XRegExp('U\\\\+(?[0-9A-F]{4})'));\r\n * match.hex; // -> '2620'\r\n *\r\n * // With pos and sticky, in a loop\r\n * var pos = 2, result = [], match;\r\n * while (match = XRegExp.exec('<1><2><3><4>5<6>', /<(\\d)>/, pos, 'sticky')) {\r\n * result.push(match[1]);\r\n * pos = match.index + match[0].length;\r\n * }\r\n * // result -> ['2', '3', '4']\r\n */\r\nXRegExp.exec = function(str, regex, pos, sticky) {\r\n var cacheKey = 'g';\r\n var addY = false;\r\n var fakeY = false;\r\n var match;\r\n var r2;\r\n\r\n addY = hasNativeY && !!(sticky || (regex.sticky && sticky !== false));\r\n if (addY) {\r\n cacheKey += 'y';\r\n } else if (sticky) {\r\n // Simulate sticky matching by appending an empty capture to the original regex. The\r\n // resulting regex will succeed no matter what at the current index (set with `lastIndex`),\r\n // and will not search the rest of the subject string. We'll know that the original regex\r\n // has failed if that last capture is `''` rather than `undefined` (i.e., if that last\r\n // capture participated in the match).\r\n fakeY = true;\r\n cacheKey += 'FakeY';\r\n }\r\n\r\n regex[REGEX_DATA] = regex[REGEX_DATA] || {};\r\n\r\n // Shares cached copies with `XRegExp.match`/`replace`\r\n r2 = regex[REGEX_DATA][cacheKey] || (\r\n regex[REGEX_DATA][cacheKey] = copyRegex(regex, {\r\n addG: true,\r\n addY: addY,\r\n source: fakeY ? regex.source + '|()' : undefined,\r\n removeY: sticky === false,\r\n isInternalOnly: true\r\n })\r\n );\r\n\r\n pos = pos || 0;\r\n r2.lastIndex = pos;\r\n\r\n // Fixed `exec` required for `lastIndex` fix, named backreferences, etc.\r\n match = fixed.exec.call(r2, str);\r\n\r\n // Get rid of the capture added by the pseudo-sticky matcher if needed. An empty string means\r\n // the original regexp failed (see above).\r\n if (fakeY && match && match.pop() === '') {\r\n match = null;\r\n }\r\n\r\n if (regex.global) {\r\n regex.lastIndex = match ? r2.lastIndex : 0;\r\n }\r\n\r\n return match;\r\n};\r\n\r\n/**\r\n * Executes a provided function once per regex match. Searches always start at the beginning of the\r\n * string and continue until the end, regardless of the state of the regex's `global` property and\r\n * initial `lastIndex`.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to search.\r\n * @param {RegExp} regex Regex to search with.\r\n * @param {Function} callback Function to execute for each match. Invoked with four arguments:\r\n * - The match array, with named backreference properties.\r\n * - The zero-based match index.\r\n * - The string being traversed.\r\n * - The regex object being used to traverse the string.\r\n * @example\r\n *\r\n * // Extracts every other digit from a string\r\n * var evens = [];\r\n * XRegExp.forEach('1a2345', /\\d/, function(match, i) {\r\n * if (i % 2) evens.push(+match[0]);\r\n * });\r\n * // evens -> [2, 4]\r\n */\r\nXRegExp.forEach = function(str, regex, callback) {\r\n var pos = 0;\r\n var i = -1;\r\n var match;\r\n\r\n while ((match = XRegExp.exec(str, regex, pos))) {\r\n // Because `regex` is provided to `callback`, the function could use the deprecated/\r\n // nonstandard `RegExp.prototype.compile` to mutate the regex. However, since `XRegExp.exec`\r\n // doesn't use `lastIndex` to set the search position, this can't lead to an infinite loop,\r\n // at least. Actually, because of the way `XRegExp.exec` caches globalized versions of\r\n // regexes, mutating the regex will not have any effect on the iteration or matched strings,\r\n // which is a nice side effect that brings extra safety.\r\n callback(match, ++i, str, regex);\r\n\r\n pos = match.index + (match[0].length || 1);\r\n }\r\n};\r\n\r\n/**\r\n * Copies a regex object and adds flag `g`. The copy maintains extended data, is augmented with\r\n * `XRegExp.prototype` properties, and has a fresh `lastIndex` property (set to zero). Native\r\n * regexes are not recompiled using XRegExp syntax.\r\n *\r\n * @memberOf XRegExp\r\n * @param {RegExp} regex Regex to globalize.\r\n * @returns {RegExp} Copy of the provided regex with flag `g` added.\r\n * @example\r\n *\r\n * var globalCopy = XRegExp.globalize(/regex/);\r\n * globalCopy.global; // -> true\r\n */\r\nXRegExp.globalize = function(regex) {\r\n return copyRegex(regex, {addG: true});\r\n};\r\n\r\n/**\r\n * Installs optional features according to the specified options. Can be undone using\r\n * `XRegExp.uninstall`.\r\n *\r\n * @memberOf XRegExp\r\n * @param {Object|String} options Options object or string.\r\n * @example\r\n *\r\n * // With an options object\r\n * XRegExp.install({\r\n * // Enables support for astral code points in Unicode addons (implicitly sets flag A)\r\n * astral: true,\r\n *\r\n * // DEPRECATED: Overrides native regex methods with fixed/extended versions\r\n * natives: true\r\n * });\r\n *\r\n * // With an options string\r\n * XRegExp.install('astral natives');\r\n */\r\nXRegExp.install = function(options) {\r\n options = prepareOptions(options);\r\n\r\n if (!features.astral && options.astral) {\r\n setAstral(true);\r\n }\r\n\r\n if (!features.natives && options.natives) {\r\n setNatives(true);\r\n }\r\n};\r\n\r\n/**\r\n * Checks whether an individual optional feature is installed.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} feature Name of the feature to check. One of:\r\n * - `astral`\r\n * - `natives`\r\n * @returns {Boolean} Whether the feature is installed.\r\n * @example\r\n *\r\n * XRegExp.isInstalled('astral');\r\n */\r\nXRegExp.isInstalled = function(feature) {\r\n return !!(features[feature]);\r\n};\r\n\r\n/**\r\n * Returns `true` if an object is a regex; `false` if it isn't. This works correctly for regexes\r\n * created in another frame, when `instanceof` and `constructor` checks would fail.\r\n *\r\n * @memberOf XRegExp\r\n * @param {*} value Object to check.\r\n * @returns {Boolean} Whether the object is a `RegExp` object.\r\n * @example\r\n *\r\n * XRegExp.isRegExp('string'); // -> false\r\n * XRegExp.isRegExp(/regex/i); // -> true\r\n * XRegExp.isRegExp(RegExp('^', 'm')); // -> true\r\n * XRegExp.isRegExp(XRegExp('(?s).')); // -> true\r\n */\r\nXRegExp.isRegExp = function(value) {\r\n return toString.call(value) === '[object RegExp]';\r\n //return isType(value, 'RegExp');\r\n};\r\n\r\n/**\r\n * Returns the first matched string, or in global mode, an array containing all matched strings.\r\n * This is essentially a more convenient re-implementation of `String.prototype.match` that gives\r\n * the result types you actually want (string instead of `exec`-style array in match-first mode,\r\n * and an empty array instead of `null` when no matches are found in match-all mode). It also lets\r\n * you override flag g and ignore `lastIndex`, and fixes browser bugs.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to search.\r\n * @param {RegExp} regex Regex to search with.\r\n * @param {String} [scope='one'] Use 'one' to return the first match as a string. Use 'all' to\r\n * return an array of all matched strings. If not explicitly specified and `regex` uses flag g,\r\n * `scope` is 'all'.\r\n * @returns {String|Array} In match-first mode: First match as a string, or `null`. In match-all\r\n * mode: Array of all matched strings, or an empty array.\r\n * @example\r\n *\r\n * // Match first\r\n * XRegExp.match('abc', /\\w/); // -> 'a'\r\n * XRegExp.match('abc', /\\w/g, 'one'); // -> 'a'\r\n * XRegExp.match('abc', /x/g, 'one'); // -> null\r\n *\r\n * // Match all\r\n * XRegExp.match('abc', /\\w/g); // -> ['a', 'b', 'c']\r\n * XRegExp.match('abc', /\\w/, 'all'); // -> ['a', 'b', 'c']\r\n * XRegExp.match('abc', /x/, 'all'); // -> []\r\n */\r\nXRegExp.match = function(str, regex, scope) {\r\n var global = (regex.global && scope !== 'one') || scope === 'all';\r\n var cacheKey = ((global ? 'g' : '') + (regex.sticky ? 'y' : '')) || 'noGY';\r\n var result;\r\n var r2;\r\n\r\n regex[REGEX_DATA] = regex[REGEX_DATA] || {};\r\n\r\n // Shares cached copies with `XRegExp.exec`/`replace`\r\n r2 = regex[REGEX_DATA][cacheKey] || (\r\n regex[REGEX_DATA][cacheKey] = copyRegex(regex, {\r\n addG: !!global,\r\n removeG: scope === 'one',\r\n isInternalOnly: true\r\n })\r\n );\r\n\r\n result = nativ.match.call(toObject(str), r2);\r\n\r\n if (regex.global) {\r\n regex.lastIndex = (\r\n (scope === 'one' && result) ?\r\n // Can't use `r2.lastIndex` since `r2` is nonglobal in this case\r\n (result.index + result[0].length) : 0\r\n );\r\n }\r\n\r\n return global ? (result || []) : (result && result[0]);\r\n};\r\n\r\n/**\r\n * Retrieves the matches from searching a string using a chain of regexes that successively search\r\n * within previous matches. The provided `chain` array can contain regexes and or objects with\r\n * `regex` and `backref` properties. When a backreference is specified, the named or numbered\r\n * backreference is passed forward to the next regex or returned.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to search.\r\n * @param {Array} chain Regexes that each search for matches within preceding results.\r\n * @returns {Array} Matches by the last regex in the chain, or an empty array.\r\n * @example\r\n *\r\n * // Basic usage; matches numbers within tags\r\n * XRegExp.matchChain('1 2 3 4 a 56', [\r\n * XRegExp('(?is).*?'),\r\n * /\\d+/\r\n * ]);\r\n * // -> ['2', '4', '56']\r\n *\r\n * // Passing forward and returning specific backreferences\r\n * html = 'XRegExp\\\r\n * Google';\r\n * XRegExp.matchChain(html, [\r\n * {regex: //i, backref: 1},\r\n * {regex: XRegExp('(?i)^https?://(?[^/?#]+)'), backref: 'domain'}\r\n * ]);\r\n * // -> ['xregexp.com', 'www.google.com']\r\n */\r\nXRegExp.matchChain = function(str, chain) {\r\n return (function recurseChain(values, level) {\r\n var item = chain[level].regex ? chain[level] : {regex: chain[level]};\r\n var matches = [];\r\n\r\n function addMatch(match) {\r\n if (item.backref) {\r\n // Safari 4.0.5 (but not 5.0.5+) inappropriately uses sparse arrays to hold the\r\n // `undefined`s for backreferences to nonparticipating capturing groups. In such\r\n // cases, a `hasOwnProperty` or `in` check on its own would inappropriately throw\r\n // the exception, so also check if the backreference is a number that is within the\r\n // bounds of the array.\r\n if (!(match.hasOwnProperty(item.backref) || +item.backref < match.length)) {\r\n throw new ReferenceError('Backreference to undefined group: ' + item.backref);\r\n }\r\n\r\n matches.push(match[item.backref] || '');\r\n } else {\r\n matches.push(match[0]);\r\n }\r\n }\r\n\r\n for (var i = 0; i < values.length; ++i) {\r\n XRegExp.forEach(values[i], item.regex, addMatch);\r\n }\r\n\r\n return ((level === chain.length - 1) || !matches.length) ?\r\n matches :\r\n recurseChain(matches, level + 1);\r\n }([str], 0));\r\n};\r\n\r\n/**\r\n * Returns a new string with one or all matches of a pattern replaced. The pattern can be a string\r\n * or regex, and the replacement can be a string or a function to be called for each match. To\r\n * perform a global search and replace, use the optional `scope` argument or include flag g if using\r\n * a regex. Replacement strings can use `${n}` for named and numbered backreferences. Replacement\r\n * functions can use named backreferences via `arguments[0].name`. Also fixes browser bugs compared\r\n * to the native `String.prototype.replace` and can be used reliably cross-browser.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to search.\r\n * @param {RegExp|String} search Search pattern to be replaced.\r\n * @param {String|Function} replacement Replacement string or a function invoked to create it.\r\n * Replacement strings can include special replacement syntax:\r\n * - $$ - Inserts a literal $ character.\r\n * - $&, $0 - Inserts the matched substring.\r\n * - $` - Inserts the string that precedes the matched substring (left context).\r\n * - $' - Inserts the string that follows the matched substring (right context).\r\n * - $n, $nn - Where n/nn are digits referencing an existent capturing group, inserts\r\n * backreference n/nn.\r\n * - ${n} - Where n is a name or any number of digits that reference an existent capturing\r\n * group, inserts backreference n.\r\n * Replacement functions are invoked with three or more arguments:\r\n * - The matched substring (corresponds to $& above). Named backreferences are accessible as\r\n * properties of this first argument.\r\n * - 0..n arguments, one for each backreference (corresponding to $1, $2, etc. above).\r\n * - The zero-based index of the match within the total search string.\r\n * - The total string being searched.\r\n * @param {String} [scope='one'] Use 'one' to replace the first match only, or 'all'. If not\r\n * explicitly specified and using a regex with flag g, `scope` is 'all'.\r\n * @returns {String} New string with one or all matches replaced.\r\n * @example\r\n *\r\n * // Regex search, using named backreferences in replacement string\r\n * var name = XRegExp('(?\\\\w+) (?\\\\w+)');\r\n * XRegExp.replace('John Smith', name, '${last}, ${first}');\r\n * // -> 'Smith, John'\r\n *\r\n * // Regex search, using named backreferences in replacement function\r\n * XRegExp.replace('John Smith', name, function(match) {\r\n * return match.last + ', ' + match.first;\r\n * });\r\n * // -> 'Smith, John'\r\n *\r\n * // String search, with replace-all\r\n * XRegExp.replace('RegExp builds RegExps', 'RegExp', 'XRegExp', 'all');\r\n * // -> 'XRegExp builds XRegExps'\r\n */\r\nXRegExp.replace = function(str, search, replacement, scope) {\r\n var isRegex = XRegExp.isRegExp(search);\r\n var global = (search.global && scope !== 'one') || scope === 'all';\r\n var cacheKey = ((global ? 'g' : '') + (search.sticky ? 'y' : '')) || 'noGY';\r\n var s2 = search;\r\n var result;\r\n\r\n if (isRegex) {\r\n search[REGEX_DATA] = search[REGEX_DATA] || {};\r\n\r\n // Shares cached copies with `XRegExp.exec`/`match`. Since a copy is used, `search`'s\r\n // `lastIndex` isn't updated *during* replacement iterations\r\n s2 = search[REGEX_DATA][cacheKey] || (\r\n search[REGEX_DATA][cacheKey] = copyRegex(search, {\r\n addG: !!global,\r\n removeG: scope === 'one',\r\n isInternalOnly: true\r\n })\r\n );\r\n } else if (global) {\r\n s2 = new RegExp(XRegExp.escape(String(search)), 'g');\r\n }\r\n\r\n // Fixed `replace` required for named backreferences, etc.\r\n result = fixed.replace.call(toObject(str), s2, replacement);\r\n\r\n if (isRegex && search.global) {\r\n // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)\r\n search.lastIndex = 0;\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Performs batch processing of string replacements. Used like `XRegExp.replace`, but accepts an\r\n * array of replacement details. Later replacements operate on the output of earlier replacements.\r\n * Replacement details are accepted as an array with a regex or string to search for, the\r\n * replacement string or function, and an optional scope of 'one' or 'all'. Uses the XRegExp\r\n * replacement text syntax, which supports named backreference properties via `${name}`.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to search.\r\n * @param {Array} replacements Array of replacement detail arrays.\r\n * @returns {String} New string with all replacements.\r\n * @example\r\n *\r\n * str = XRegExp.replaceEach(str, [\r\n * [XRegExp('(?a)'), 'z${name}'],\r\n * [/b/gi, 'y'],\r\n * [/c/g, 'x', 'one'], // scope 'one' overrides /g\r\n * [/d/, 'w', 'all'], // scope 'all' overrides lack of /g\r\n * ['e', 'v', 'all'], // scope 'all' allows replace-all for strings\r\n * [/f/g, function($0) {\r\n * return $0.toUpperCase();\r\n * }]\r\n * ]);\r\n */\r\nXRegExp.replaceEach = function(str, replacements) {\r\n var i;\r\n var r;\r\n\r\n for (i = 0; i < replacements.length; ++i) {\r\n r = replacements[i];\r\n str = XRegExp.replace(str, r[0], r[1], r[2]);\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Splits a string into an array of strings using a regex or string separator. Matches of the\r\n * separator are not included in the result array. However, if `separator` is a regex that contains\r\n * capturing groups, backreferences are spliced into the result each time `separator` is matched.\r\n * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably\r\n * cross-browser.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to split.\r\n * @param {RegExp|String} separator Regex or string to use for separating the string.\r\n * @param {Number} [limit] Maximum number of items to include in the result array.\r\n * @returns {Array} Array of substrings.\r\n * @example\r\n *\r\n * // Basic use\r\n * XRegExp.split('a b c', ' ');\r\n * // -> ['a', 'b', 'c']\r\n *\r\n * // With limit\r\n * XRegExp.split('a b c', ' ', 2);\r\n * // -> ['a', 'b']\r\n *\r\n * // Backreferences in result array\r\n * XRegExp.split('..word1..', /([a-z]+)(\\d+)/i);\r\n * // -> ['..', 'word', '1', '..']\r\n */\r\nXRegExp.split = function(str, separator, limit) {\r\n return fixed.split.call(toObject(str), separator, limit);\r\n};\r\n\r\n/**\r\n * Executes a regex search in a specified string. Returns `true` or `false`. Optional `pos` and\r\n * `sticky` arguments specify the search start position, and whether the match must start at the\r\n * specified position only. The `lastIndex` property of the provided regex is not used, but is\r\n * updated for compatibility. Also fixes browser bugs compared to the native\r\n * `RegExp.prototype.test` and can be used reliably cross-browser.\r\n *\r\n * @memberOf XRegExp\r\n * @param {String} str String to search.\r\n * @param {RegExp} regex Regex to search with.\r\n * @param {Number} [pos=0] Zero-based index at which to start the search.\r\n * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position\r\n * only. The string `'sticky'` is accepted as an alternative to `true`.\r\n * @returns {Boolean} Whether the regex matched the provided value.\r\n * @example\r\n *\r\n * // Basic use\r\n * XRegExp.test('abc', /c/); // -> true\r\n *\r\n * // With pos and sticky\r\n * XRegExp.test('abc', /c/, 0, 'sticky'); // -> false\r\n * XRegExp.test('abc', /c/, 2, 'sticky'); // -> true\r\n */\r\nXRegExp.test = function(str, regex, pos, sticky) {\r\n // Do this the easy way :-)\r\n return !!XRegExp.exec(str, regex, pos, sticky);\r\n};\r\n\r\n/**\r\n * Uninstalls optional features according to the specified options. All optional features start out\r\n * uninstalled, so this is used to undo the actions of `XRegExp.install`.\r\n *\r\n * @memberOf XRegExp\r\n * @param {Object|String} options Options object or string.\r\n * @example\r\n *\r\n * // With an options object\r\n * XRegExp.uninstall({\r\n * // Disables support for astral code points in Unicode addons\r\n * astral: true,\r\n *\r\n * // DEPRECATED: Restores native regex methods\r\n * natives: true\r\n * });\r\n *\r\n * // With an options string\r\n * XRegExp.uninstall('astral natives');\r\n */\r\nXRegExp.uninstall = function(options) {\r\n options = prepareOptions(options);\r\n\r\n if (features.astral && options.astral) {\r\n setAstral(false);\r\n }\r\n\r\n if (features.natives && options.natives) {\r\n setNatives(false);\r\n }\r\n};\r\n\r\n/**\r\n * Returns an XRegExp object that is the union of the given patterns. Patterns can be provided as\r\n * regex objects or strings. Metacharacters are escaped in patterns provided as strings.\r\n * Backreferences in provided regex objects are automatically renumbered to work correctly within\r\n * the larger combined pattern. Native flags used by provided regexes are ignored in favor of the\r\n * `flags` argument.\r\n *\r\n * @memberOf XRegExp\r\n * @param {Array} patterns Regexes and strings to combine.\r\n * @param {String} [flags] Any combination of XRegExp flags.\r\n * @param {Object} [options] Options object with optional properties:\r\n * - `conjunction` {String} Type of conjunction to use: 'or' (default) or 'none'.\r\n * @returns {RegExp} Union of the provided regexes and strings.\r\n * @example\r\n *\r\n * XRegExp.union(['a+b*c', /(dogs)\\1/, /(cats)\\1/], 'i');\r\n * // -> /a\\+b\\*c|(dogs)\\1|(cats)\\2/i\r\n *\r\n * XRegExp.union([/man/, /bear/, /pig/], 'i', {conjunction: 'none'});\r\n * // -> /manbearpig/i\r\n */\r\nXRegExp.union = function(patterns, flags, options) {\r\n options = options || {};\r\n var conjunction = options.conjunction || 'or';\r\n var numCaptures = 0;\r\n var numPriorCaptures;\r\n var captureNames;\r\n\r\n function rewrite(match, paren, backref) {\r\n var name = captureNames[numCaptures - numPriorCaptures];\r\n\r\n // Capturing group\r\n if (paren) {\r\n ++numCaptures;\r\n // If the current capture has a name, preserve the name\r\n if (name) {\r\n return '(?<' + name + '>';\r\n }\r\n // Backreference\r\n } else if (backref) {\r\n // Rewrite the backreference\r\n return '\\\\' + (+backref + numPriorCaptures);\r\n }\r\n\r\n return match;\r\n }\r\n\r\n if (!(isType(patterns, 'Array') && patterns.length)) {\r\n throw new TypeError('Must provide a nonempty array of patterns to merge');\r\n }\r\n\r\n var parts = /(\\()(?!\\?)|\\\\([1-9]\\d*)|\\\\[\\s\\S]|\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/g;\r\n var output = [];\r\n var pattern;\r\n for (var i = 0; i < patterns.length; ++i) {\r\n pattern = patterns[i];\r\n\r\n if (XRegExp.isRegExp(pattern)) {\r\n numPriorCaptures = numCaptures;\r\n captureNames = (pattern[REGEX_DATA] && pattern[REGEX_DATA].captureNames) || [];\r\n\r\n // Rewrite backreferences. Passing to XRegExp dies on octals and ensures patterns are\r\n // independently valid; helps keep this simple. Named captures are put back\r\n output.push(nativ.replace.call(XRegExp(pattern.source).source, parts, rewrite));\r\n } else {\r\n output.push(XRegExp.escape(pattern));\r\n }\r\n }\r\n\r\n var separator = conjunction === 'none' ? '' : '|';\r\n return XRegExp(output.join(separator), flags);\r\n};\r\n\r\n// ==--------------------------==\r\n// Fixed/extended native methods\r\n// ==--------------------------==\r\n\r\n/**\r\n * Adds named capture support (with backreferences returned as `result.name`), and fixes browser\r\n * bugs in the native `RegExp.prototype.exec`. Calling `XRegExp.install('natives')` uses this to\r\n * override the native method. Use via `XRegExp.exec` without overriding natives.\r\n *\r\n * @memberOf RegExp\r\n * @param {String} str String to search.\r\n * @returns {Array} Match array with named backreference properties, or `null`.\r\n */\r\nfixed.exec = function(str) {\r\n var origLastIndex = this.lastIndex;\r\n var match = nativ.exec.apply(this, arguments);\r\n var name;\r\n var r2;\r\n var i;\r\n\r\n if (match) {\r\n // Fix browsers whose `exec` methods don't return `undefined` for nonparticipating capturing\r\n // groups. This fixes IE 5.5-8, but not IE 9's quirks mode or emulation of older IEs. IE 9\r\n // in standards mode follows the spec.\r\n if (!correctExecNpcg && match.length > 1 && indexOf(match, '') > -1) {\r\n r2 = copyRegex(this, {\r\n removeG: true,\r\n isInternalOnly: true\r\n });\r\n // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed\r\n // matching due to characters outside the match\r\n nativ.replace.call(String(str).slice(match.index), r2, function() {\r\n var len = arguments.length;\r\n var i;\r\n // Skip index 0 and the last 2\r\n for (i = 1; i < len - 2; ++i) {\r\n if (arguments[i] === undefined) {\r\n match[i] = undefined;\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Attach named capture properties\r\n if (this[REGEX_DATA] && this[REGEX_DATA].captureNames) {\r\n // Skip index 0\r\n for (i = 1; i < match.length; ++i) {\r\n name = this[REGEX_DATA].captureNames[i - 1];\r\n if (name) {\r\n match[name] = match[i];\r\n }\r\n }\r\n }\r\n\r\n // Fix browsers that increment `lastIndex` after zero-length matches\r\n if (this.global && !match[0].length && (this.lastIndex > match.index)) {\r\n this.lastIndex = match.index;\r\n }\r\n }\r\n\r\n if (!this.global) {\r\n // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)\r\n this.lastIndex = origLastIndex;\r\n }\r\n\r\n return match;\r\n};\r\n\r\n/**\r\n * Fixes browser bugs in the native `RegExp.prototype.test`. Calling `XRegExp.install('natives')`\r\n * uses this to override the native method.\r\n *\r\n * @memberOf RegExp\r\n * @param {String} str String to search.\r\n * @returns {Boolean} Whether the regex matched the provided value.\r\n */\r\nfixed.test = function(str) {\r\n // Do this the easy way :-)\r\n return !!fixed.exec.call(this, str);\r\n};\r\n\r\n/**\r\n * Adds named capture support (with backreferences returned as `result.name`), and fixes browser\r\n * bugs in the native `String.prototype.match`. Calling `XRegExp.install('natives')` uses this to\r\n * override the native method.\r\n *\r\n * @memberOf String\r\n * @param {RegExp|*} regex Regex to search with. If not a regex object, it is passed to `RegExp`.\r\n * @returns {Array} If `regex` uses flag g, an array of match strings or `null`. Without flag g,\r\n * the result of calling `regex.exec(this)`.\r\n */\r\nfixed.match = function(regex) {\r\n var result;\r\n\r\n if (!XRegExp.isRegExp(regex)) {\r\n // Use the native `RegExp` rather than `XRegExp`\r\n regex = new RegExp(regex);\r\n } else if (regex.global) {\r\n result = nativ.match.apply(this, arguments);\r\n // Fixes IE bug\r\n regex.lastIndex = 0;\r\n\r\n return result;\r\n }\r\n\r\n return fixed.exec.call(regex, toObject(this));\r\n};\r\n\r\n/**\r\n * Adds support for `${n}` tokens for named and numbered backreferences in replacement text, and\r\n * provides named backreferences to replacement functions as `arguments[0].name`. Also fixes browser\r\n * bugs in replacement text syntax when performing a replacement using a nonregex search value, and\r\n * the value of a replacement regex's `lastIndex` property during replacement iterations and upon\r\n * completion. Calling `XRegExp.install('natives')` uses this to override the native method. Note\r\n * that this doesn't support SpiderMonkey's proprietary third (`flags`) argument. Use via\r\n * `XRegExp.replace` without overriding natives.\r\n *\r\n * @memberOf String\r\n * @param {RegExp|String} search Search pattern to be replaced.\r\n * @param {String|Function} replacement Replacement string or a function invoked to create it.\r\n * @returns {String} New string with one or all matches replaced.\r\n */\r\nfixed.replace = function(search, replacement) {\r\n var isRegex = XRegExp.isRegExp(search);\r\n var origLastIndex;\r\n var captureNames;\r\n var result;\r\n\r\n if (isRegex) {\r\n if (search[REGEX_DATA]) {\r\n captureNames = search[REGEX_DATA].captureNames;\r\n }\r\n // Only needed if `search` is nonglobal\r\n origLastIndex = search.lastIndex;\r\n } else {\r\n search += ''; // Type-convert\r\n }\r\n\r\n // Don't use `typeof`; some older browsers return 'function' for regex objects\r\n if (isType(replacement, 'Function')) {\r\n // Stringifying `this` fixes a bug in IE < 9 where the last argument in replacement\r\n // functions isn't type-converted to a string\r\n result = nativ.replace.call(String(this), search, function() {\r\n var args = arguments;\r\n var i;\r\n if (captureNames) {\r\n // Change the `arguments[0]` string primitive to a `String` object that can store\r\n // properties. This really does need to use `String` as a constructor\r\n args[0] = new String(args[0]);\r\n // Store named backreferences on the first argument\r\n for (i = 0; i < captureNames.length; ++i) {\r\n if (captureNames[i]) {\r\n args[0][captureNames[i]] = args[i + 1];\r\n }\r\n }\r\n }\r\n // Update `lastIndex` before calling `replacement`. Fixes IE, Chrome, Firefox, Safari\r\n // bug (last tested IE 9, Chrome 17, Firefox 11, Safari 5.1)\r\n if (isRegex && search.global) {\r\n search.lastIndex = args[args.length - 2] + args[0].length;\r\n }\r\n // ES6 specs the context for replacement functions as `undefined`\r\n return replacement.apply(undefined, args);\r\n });\r\n } else {\r\n // Ensure that the last value of `args` will be a string when given nonstring `this`,\r\n // while still throwing on null or undefined context\r\n result = nativ.replace.call(this == null ? this : String(this), search, function() {\r\n // Keep this function's `arguments` available through closure\r\n var args = arguments;\r\n return nativ.replace.call(String(replacement), replacementToken, function($0, $1, $2) {\r\n var n;\r\n // Named or numbered backreference with curly braces\r\n if ($1) {\r\n // XRegExp behavior for `${n}`:\r\n // 1. Backreference to numbered capture, if `n` is an integer. Use `0` for the\r\n // entire match. Any number of leading zeros may be used.\r\n // 2. Backreference to named capture `n`, if it exists and is not an integer\r\n // overridden by numbered capture. In practice, this does not overlap with\r\n // numbered capture since XRegExp does not allow named capture to use a bare\r\n // integer as the name.\r\n // 3. If the name or number does not refer to an existing capturing group, it's\r\n // an error.\r\n n = +$1; // Type-convert; drop leading zeros\r\n if (n <= args.length - 3) {\r\n return args[n] || '';\r\n }\r\n // Groups with the same name is an error, else would need `lastIndexOf`\r\n n = captureNames ? indexOf(captureNames, $1) : -1;\r\n if (n < 0) {\r\n throw new SyntaxError('Backreference to undefined group ' + $0);\r\n }\r\n return args[n + 1] || '';\r\n }\r\n // Else, special variable or numbered backreference without curly braces\r\n if ($2 === '$') { // $$\r\n return '$';\r\n }\r\n if ($2 === '&' || +$2 === 0) { // $&, $0 (not followed by 1-9), $00\r\n return args[0];\r\n }\r\n if ($2 === '`') { // $` (left context)\r\n return args[args.length - 1].slice(0, args[args.length - 2]);\r\n }\r\n if ($2 === \"'\") { // $' (right context)\r\n return args[args.length - 1].slice(args[args.length - 2] + args[0].length);\r\n }\r\n // Else, numbered backreference without curly braces\r\n $2 = +$2; // Type-convert; drop leading zero\r\n // XRegExp behavior for `$n` and `$nn`:\r\n // - Backrefs end after 1 or 2 digits. Use `${..}` for more digits.\r\n // - `$1` is an error if no capturing groups.\r\n // - `$10` is an error if less than 10 capturing groups. Use `${1}0` instead.\r\n // - `$01` is `$1` if at least one capturing group, else it's an error.\r\n // - `$0` (not followed by 1-9) and `$00` are the entire match.\r\n // Native behavior, for comparison:\r\n // - Backrefs end after 1 or 2 digits. Cannot reference capturing group 100+.\r\n // - `$1` is a literal `$1` if no capturing groups.\r\n // - `$10` is `$1` followed by a literal `0` if less than 10 capturing groups.\r\n // - `$01` is `$1` if at least one capturing group, else it's a literal `$01`.\r\n // - `$0` is a literal `$0`.\r\n if (!isNaN($2)) {\r\n if ($2 > args.length - 3) {\r\n throw new SyntaxError('Backreference to undefined group ' + $0);\r\n }\r\n return args[$2] || '';\r\n }\r\n // `$` followed by an unsupported char is an error, unlike native JS\r\n throw new SyntaxError('Invalid token ' + $0);\r\n });\r\n });\r\n }\r\n\r\n if (isRegex) {\r\n if (search.global) {\r\n // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)\r\n search.lastIndex = 0;\r\n } else {\r\n // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)\r\n search.lastIndex = origLastIndex;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Fixes browser bugs in the native `String.prototype.split`. Calling `XRegExp.install('natives')`\r\n * uses this to override the native method. Use via `XRegExp.split` without overriding natives.\r\n *\r\n * @memberOf String\r\n * @param {RegExp|String} separator Regex or string to use for separating the string.\r\n * @param {Number} [limit] Maximum number of items to include in the result array.\r\n * @returns {Array} Array of substrings.\r\n */\r\nfixed.split = function(separator, limit) {\r\n if (!XRegExp.isRegExp(separator)) {\r\n // Browsers handle nonregex split correctly, so use the faster native method\r\n return nativ.split.apply(this, arguments);\r\n }\r\n\r\n var str = String(this);\r\n var output = [];\r\n var origLastIndex = separator.lastIndex;\r\n var lastLastIndex = 0;\r\n var lastLength;\r\n\r\n // Values for `limit`, per the spec:\r\n // If undefined: pow(2,32) - 1\r\n // If 0, Infinity, or NaN: 0\r\n // If positive number: limit = floor(limit); if (limit >= pow(2,32)) limit -= pow(2,32);\r\n // If negative number: pow(2,32) - floor(abs(limit))\r\n // If other: Type-convert, then use the above rules\r\n // This line fails in very strange ways for some values of `limit` in Opera 10.5-10.63, unless\r\n // Opera Dragonfly is open (go figure). It works in at least Opera 9.5-10.1 and 11+\r\n limit = (limit === undefined ? -1 : limit) >>> 0;\r\n\r\n XRegExp.forEach(str, separator, function(match) {\r\n // This condition is not the same as `if (match[0].length)`\r\n if ((match.index + match[0].length) > lastLastIndex) {\r\n output.push(str.slice(lastLastIndex, match.index));\r\n if (match.length > 1 && match.index < str.length) {\r\n Array.prototype.push.apply(output, match.slice(1));\r\n }\r\n lastLength = match[0].length;\r\n lastLastIndex = match.index + lastLength;\r\n }\r\n });\r\n\r\n if (lastLastIndex === str.length) {\r\n if (!nativ.test.call(separator, '') || lastLength) {\r\n output.push('');\r\n }\r\n } else {\r\n output.push(str.slice(lastLastIndex));\r\n }\r\n\r\n separator.lastIndex = origLastIndex;\r\n return output.length > limit ? output.slice(0, limit) : output;\r\n};\r\n\r\n// ==--------------------------==\r\n// Built-in syntax/flag tokens\r\n// ==--------------------------==\r\n\r\n/*\r\n * Letter escapes that natively match literal characters: `\\a`, `\\A`, etc. These should be\r\n * SyntaxErrors but are allowed in web reality. XRegExp makes them errors for cross-browser\r\n * consistency and to reserve their syntax, but lets them be superseded by addons.\r\n */\r\nXRegExp.addToken(\r\n /\\\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|x(?![\\dA-Fa-f]{2}))/,\r\n function(match, scope) {\r\n // \\B is allowed in default scope only\r\n if (match[1] === 'B' && scope === defaultScope) {\r\n return match[0];\r\n }\r\n throw new SyntaxError('Invalid escape ' + match[0]);\r\n },\r\n {\r\n scope: 'all',\r\n leadChar: '\\\\'\r\n }\r\n);\r\n\r\n/*\r\n * Unicode code point escape with curly braces: `\\u{N..}`. `N..` is any one or more digit\r\n * hexadecimal number from 0-10FFFF, and can include leading zeros. Requires the native ES6 `u` flag\r\n * to support code points greater than U+FFFF. Avoids converting code points above U+FFFF to\r\n * surrogate pairs (which could be done without flag `u`), since that could lead to broken behavior\r\n * if you follow a `\\u{N..}` token that references a code point above U+FFFF with a quantifier, or\r\n * if you use the same in a character class.\r\n */\r\nXRegExp.addToken(\r\n /\\\\u{([\\dA-Fa-f]+)}/,\r\n function(match, scope, flags) {\r\n var code = dec(match[1]);\r\n if (code > 0x10FFFF) {\r\n throw new SyntaxError('Invalid Unicode code point ' + match[0]);\r\n }\r\n if (code <= 0xFFFF) {\r\n // Converting to \\uNNNN avoids needing to escape the literal character and keep it\r\n // separate from preceding tokens\r\n return '\\\\u' + pad4(hex(code));\r\n }\r\n // If `code` is between 0xFFFF and 0x10FFFF, require and defer to native handling\r\n if (hasNativeU && flags.indexOf('u') > -1) {\r\n return match[0];\r\n }\r\n throw new SyntaxError('Cannot use Unicode code point above \\\\u{FFFF} without flag u');\r\n },\r\n {\r\n scope: 'all',\r\n leadChar: '\\\\'\r\n }\r\n);\r\n\r\n/*\r\n * Empty character class: `[]` or `[^]`. This fixes a critical cross-browser syntax inconsistency.\r\n * Unless this is standardized (per the ES spec), regex syntax can't be accurately parsed because\r\n * character class endings can't be determined.\r\n */\r\nXRegExp.addToken(\r\n /\\[(\\^?)\\]/,\r\n function(match) {\r\n // For cross-browser compatibility with ES3, convert [] to \\b\\B and [^] to [\\s\\S].\r\n // (?!) should work like \\b\\B, but is unreliable in some versions of Firefox\r\n return match[1] ? '[\\\\s\\\\S]' : '\\\\b\\\\B';\r\n },\r\n {leadChar: '['}\r\n);\r\n\r\n/*\r\n * Comment pattern: `(?# )`. Inline comments are an alternative to the line comments allowed in\r\n * free-spacing mode (flag x).\r\n */\r\nXRegExp.addToken(\r\n /\\(\\?#[^)]*\\)/,\r\n getContextualTokenSeparator,\r\n {leadChar: '('}\r\n);\r\n\r\n/*\r\n * Whitespace and line comments, in free-spacing mode (aka extended mode, flag x) only.\r\n */\r\nXRegExp.addToken(\r\n /\\s+|#[^\\n]*\\n?/,\r\n getContextualTokenSeparator,\r\n {flag: 'x'}\r\n);\r\n\r\n/*\r\n * Dot, in dotall mode (aka singleline mode, flag s) only.\r\n */\r\nXRegExp.addToken(\r\n /\\./,\r\n function() {\r\n return '[\\\\s\\\\S]';\r\n },\r\n {\r\n flag: 's',\r\n leadChar: '.'\r\n }\r\n);\r\n\r\n/*\r\n * Named backreference: `\\k`. Backreference names can use the characters A-Z, a-z, 0-9, _,\r\n * and $ only. Also allows numbered backreferences as `\\k`.\r\n */\r\nXRegExp.addToken(\r\n /\\\\k<([\\w$]+)>/,\r\n function(match) {\r\n // Groups with the same name is an error, else would need `lastIndexOf`\r\n var index = isNaN(match[1]) ? (indexOf(this.captureNames, match[1]) + 1) : +match[1];\r\n var endIndex = match.index + match[0].length;\r\n if (!index || index > this.captureNames.length) {\r\n throw new SyntaxError('Backreference to undefined group ' + match[0]);\r\n }\r\n // Keep backreferences separate from subsequent literal numbers. This avoids e.g.\r\n // inadvertedly changing `(?)\\k1` to `()\\11`.\r\n return '\\\\' + index + (\r\n endIndex === match.input.length || isNaN(match.input.charAt(endIndex)) ?\r\n '' : '(?:)'\r\n );\r\n },\r\n {leadChar: '\\\\'}\r\n);\r\n\r\n/*\r\n * Numbered backreference or octal, plus any following digits: `\\0`, `\\11`, etc. Octals except `\\0`\r\n * not followed by 0-9 and backreferences to unopened capture groups throw an error. Other matches\r\n * are returned unaltered. IE < 9 doesn't support backreferences above `\\99` in regex syntax.\r\n */\r\nXRegExp.addToken(\r\n /\\\\(\\d+)/,\r\n function(match, scope) {\r\n if (\r\n !(\r\n scope === defaultScope &&\r\n /^[1-9]/.test(match[1]) &&\r\n +match[1] <= this.captureNames.length\r\n ) &&\r\n match[1] !== '0'\r\n ) {\r\n throw new SyntaxError('Cannot use octal escape or backreference to undefined group ' +\r\n match[0]);\r\n }\r\n return match[0];\r\n },\r\n {\r\n scope: 'all',\r\n leadChar: '\\\\'\r\n }\r\n);\r\n\r\n/*\r\n * Named capturing group; match the opening delimiter only: `(?`. Capture names can use the\r\n * characters A-Z, a-z, 0-9, _, and $ only. Names can't be integers. Supports Python-style\r\n * `(?P` as an alternate syntax to avoid issues in some older versions of Opera which natively\r\n * supported the Python-style syntax. Otherwise, XRegExp might treat numbered backreferences to\r\n * Python-style named capture as octals.\r\n */\r\nXRegExp.addToken(\r\n /\\(\\?P?<([\\w$]+)>/,\r\n function(match) {\r\n // Disallow bare integers as names because named backreferences are added to match arrays\r\n // and therefore numeric properties may lead to incorrect lookups\r\n if (!isNaN(match[1])) {\r\n throw new SyntaxError('Cannot use integer as capture name ' + match[0]);\r\n }\r\n if (match[1] === 'length' || match[1] === '__proto__') {\r\n throw new SyntaxError('Cannot use reserved word as capture name ' + match[0]);\r\n }\r\n if (indexOf(this.captureNames, match[1]) > -1) {\r\n throw new SyntaxError('Cannot use same name for multiple groups ' + match[0]);\r\n }\r\n this.captureNames.push(match[1]);\r\n this.hasNamedCapture = true;\r\n return '(';\r\n },\r\n {leadChar: '('}\r\n);\r\n\r\n/*\r\n * Capturing group; match the opening parenthesis only. Required for support of named capturing\r\n * groups. Also adds explicit capture mode (flag n).\r\n */\r\nXRegExp.addToken(\r\n /\\((?!\\?)/,\r\n function(match, scope, flags) {\r\n if (flags.indexOf('n') > -1) {\r\n return '(?:';\r\n }\r\n this.captureNames.push(null);\r\n return '(';\r\n },\r\n {\r\n optionalFlags: 'n',\r\n leadChar: '('\r\n }\r\n);\r\n\r\nmodule.exports = XRegExp;\r\n\n},{}]},{},[8])(8)\n});"]}